A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | offset | offset | len | SATA | PCIe | ||||||||||
2 | byte | bit | word | bit | bits | mode | rst | 20 | 100 | rst | 100 | type | name | description | comment |
3 | PLL config | ||||||||||||||
4 | 00 | 0 | 00 | 0 | 1 | rw | 0 | 0 | 0 | 0 | 0 | bool | ENPLL | Enable PLL | |
5 | 00 | 1 | 00 | 1 | 1 | rw | 0 | 0 | 0 | 0 | 0 | bool | ENPLLLDO | Enable PLL LDO | |
6 | 00 | 2 | 00 | 2 | 1 | rw | 0 | 0 | 0 | 0 | 0 | bool | ENBGSC_REF | Enable switched cap bias current module/REFGEN | |
7 | 00 | 3 | 00 | 3 | 1 | rw | 0 | 0 | 0 | 0 | 0 | bool | APLL_CP_CURR | Increase the APLL CP current | Added after PG1.0. Presumably for a reason? |
8 | 00 | 4 | 00 | 4 | 1 | rw | 0 | 0 | 0 | 0 | 0 | bool | ENDIGLDO | Enable DIG LDO. Required to wake pll up for pll dig | |
9 | 00 | 5 | 00 | 5 | 1 | rw | 1 | 1 | 1 | 0 | 0 | u1 | C1_2X | Increase filter capacitance by 2x in low reference (20 MHz) clock: 0 = 120 pF for PCIe 1 = 240 pF for SATA and SSC | Sounds like this should be zero when using a 100 MHz refclk? |
10 | 00 | 6 | 00 | 6 | 2 | rw | 1 | 1 | 1 | 0 | 0 | u2 | RESVALUE | Sets loop filter resistor value: 0 = 1.00 kΩ for PCIe 1 = 1.67 kΩ for SATA 2 = 2.50 kΩ for SSC | Is this still right when using 100 MHz refclk for SATA? |
11 | 01 | 0 | 00 | 8 | 4 | rw | 0 | 0 | 0 | 0 | 0 | u4 | CP_CTRL | Charge pump control 0b0000 = Nom 0b0001 = +13% 0b0010 = +27% 0b0011 = +50% 0b0100 = −20% 0b1000 = −27% 0b1010 = −50% | |
12 | 01 | 4 | 00 | 12 | 2 | rw | 3 | 3 | 3 | 3 | 3 | u2 | EN_LATCH | Enables output latch in differential ring to control power. Designer should be contacted while changing this value: 0 = All latch on 1 = Remove 33% 2 = Remove 16% 3 = Remove 50% | |
13 | 01 | 6 | 00 | 14 | 1 | rw | 1 | 1 | 1 | 1 | 1 | bool | EN_MEAS | Enable measurement circuit inside APLL ANA to control AMUX output. | Why is this enabled even though the AMUX output pads (U8, V8) are listed as "Reserved Pins - Leave unconnected" in the datasheet? |
14 | 01 | 7 | 00 | 15 | 1 | rw | 0 | 0 | 0 | 0 | 0 | bool | EN_RTRIM | Enable resistor calibration | since RTRIM control loop is configured for PCIe, shouldn't this be enabled then? |
15 | 02 | 0 | 00 | 16 | 1 | rw | 0 | 0 | 0 | 0 | 0 | bool | CLK_FLIP | Invert clock output | |
16 | 02 | 1 | 00 | 17 | 1 | rw | 0 | 0 | 0 | 0 | 0 | bool | PFD_CLR | Reset phase-frequency detector (open PLL loop) | |
17 | 02 | 2 | 00 | 18 | 1 | rw | 0 | 0 | 0 | 0 | 0 | bool | EN_3P | Enables the SC circuit in the APLL LF | PG1.0 usage was for "3-phase ring oscillator". Still reflected in name. |
18 | 02 | 3 | 00 | 19 | 1 | rw | 0 | 0 | 0 | 0 | 0 | bool | DIS_REFCLK | Disable CML that control FREF output clock buffer. | |
19 | 02 | 4 | 00 | 20 | 2 | rw | 0 | 0 | 0 | 0 | 0 | u2 | APLL_MISC_CTRL | 0 = No step 1 = 75% to 100% 2 = 75% to 87.5% to 100% in 60, 20 , 20 cycle steps 3 = same as 0b10 but in 40, 40, 40 cycle steps | |
20 | 02 | 6 | 00 | 22 | 1 | rw | 0 | 0 | 0 | 0 | 0 | u1 | APLL_MISC_CTRL | power saving : 0 = Default mode 1 = Used for debug | |
21 | 02 | 7 | 00 | 23 | 1 | rw | 0 | 0 | 0 | 0 | 0 | u1 | APLL_MISC_CTRL | 0 = fixed divider 1 = programmable divider | |
22 | 03 | 0 | 00 | 24 | 1 | rw | 0 | 0 | 0 | 0 | 0 | bool | APLL_MISC_CTRL | 50 MHz rtrim disable | |
23 | 03 | 1 | 00 | 25 | 1 | rw | 0 | 0 | 0 | 0 | 0 | u1 | APLL_MISC_CTRL | lock speed : 0 = 128 clock 1 = 256 clock | |
24 | 03 | 2 | 00 | 26 | 1 | rw | 0 | 0 | 0 | 0 | 0 | u1 | TESTCLKMUXSEL | Selects test clock mux : 0 = REF Clock 1 = Divided clock | |
25 | 03 | 3 | 00 | 27 | 1 | rw | 0 | 0 | 0 | 0 | 0 | u1 | AMUXSEL | AMUX select : 0 = KVCO 1 = VRTRIM | |
26 | 03 | 4 | 00 | 28 | 2 | rw | 0 | 0 | 0 | 0 | 3 | TRM says reserved, but init procedure for PCIe sets these two bits with the comment "Configure proxy TXLDO and RXLDO enables" | |||
27 | 03 | 6 | 00 | 30 | 1 | rw | 1 | 0 | 0 | 1 | 0 | bool | DIGCLRZ | CLRZ for APLL DIG and DLL DIG. When low resets flops and state machines | |
28 | 03 | 7 | 00 | 31 | 1 | rw | 1 | 1 | 0 | 0 | 0 | u1 | SEL_IN_FREQ | Select input frequency: 0 = 100 MHz 1 = 20 MHz | This probably selects which refclk input is used. |
29 | 04 | 0 | 04 | 0 | 1 | rw | 0 | 0 | 0 | 0 | 0 | u1 | MDIVPULSE | Update M div when pulse is high | |
30 | 04 | 1 | 04 | 1 | 1 | rw | 0 | 0 | 0 | 0 | 0 | bool | ENSSC | Enable spread spectrum | |
31 | 04 | 2 | 04 | 2 | 1 | rw | 0 | 1 | 1 | 0 | 0 | bool | EN_CLK50m | Enable 50 MHz clock (used by Ethernet) | |
32 | 04 | 3 | 04 | 3 | 1 | rw | 0 | 1 | 1 | 0 | 0 | bool | EN_CLK100m | Enable 100 MHz clock | ... for? |
33 | 04 | 4 | 04 | 4 | 1 | rw | 0 | 1 | 1 | 0 | 0 | bool | EN_CLK125m | Enable 125 MHz clock (used by Ethernet) | |
34 | 04 | 5 | 04 | 5 | 1 | rw | 0 | 1 | 1 | 0 | 0 | bool | EN_CLKAUX | Enable auxiliary clock (testclk) | ? |
35 | 04 | 6 | 04 | 6 | 12 | rw | 0 | 0 | 0 | 0 | 0 | u12 | MDIVFRAC | Fractional part of feedback divider (osc/ref) | |
36 | 06 | 2 | 04 | 18 | 8 | rw | 300 | 300 | 300 | 100 | 100 | u8 | MDIVINT | Integer part of feedback divider (osc/ref). Must be >= 4. | Ignored since fixed feedback divider is used |
37 | 07 | 2 | 04 | 26 | 4 | rw | 0 | 0 | 0 | 0 | 0 | u4 | NP1_DIV_INT | Integer part of N+1 divider 0 value maps to 1 4 value maps to 5 | |
38 | 07 | 6 | 04 | 30 | 1 | rw | 0 | 1 | 0 | 0 | 0 | u1 | PLLREFSEL | Chose reference clock value 0 = 100 MHz / 1 = 20 MHz (Note: only needs to be set if using fixed FB divider) For fixed divider mode [31:30] defines division ratio as: 0b00 = 25 0b01 = 125 0b10 = 15 0b11 = 75 | |
39 | 07 | 7 | 04 | 31 | 1 | rw | 1 | 1 | 1 | 0 | 0 | u1 | ENSATAMODE | Mode select: 0 = PCIe (2.5 GHz) 1 = SATA (1.5 GHz) Used by APLLDIG and TRX_DIG for different purpose. Needs to configure this bit to get ethernet clocks | |
40 | Spread-spectrum config | ||||||||||||||
41 | 08 | 0 | 08 | 0 | 21 | rw | 0 | 0 | 0 | 0 | 0 | u21 | SSCFRSPREAD | SSC frequency spread | |
42 | 0a | 5 | 08 | 21 | 3 | rw | 0 | 0 | 0 | 0 | 0 | u3 | SSCEXPO | Exponent portion of the modified frequency in SSC operation | |
43 | 0b | 0 | 08 | 24 | 7 | rw | 0 | 0 | 0 | 0 | 0 | u7 | SSCMANT | Mantissa portion of the modified frequency in SSC operation | |
44 | 0b | 7 | 08 | 31 | 1 | rw | 0 | 0 | 0 | 0 | 0 | bool | SSCDNSPREAD | SSC downspread | |
45 | PLL LDO config | ||||||||||||||
46 | 0c | 0 | 0c | 0 | 1 | rw | 0 | 0 | 0 | 0 | 0 | u1 | PLLLDO_CTRL_0_UNUSED | — | |
47 | 0c | 1 | 0c | 1 | 5 | rw | 0 | 16 | 16 | 0 | 16 | u5 | PLLLDO_CTRL_TRIM | TRIM_BITS vout: 0 = 1.000V 1 = 1.025V ... 16 = 1.400V ... 24 = 1.600V | |
48 | 0c | 6 | 0c | 6 | 1 | rw | 0 | 1 | 1 | 0 | 1 | bool | PLLLDO_EN_LP | Enable low power mode | |
49 | 0c | 7 | 0c | 7 | 1 | rw | 0 | 1 | 1 | 0 | 1 | bool | PLLLDO_EN_BUF_CUR | Enable increased buffer current | ? |
50 | 0d | 0 | 0c | 8 | 1 | rw | 0 | 0 | 0 | 0 | 0 | bool | PLLLDO_EN_EXT_CAP | Enable external cap mode | |
51 | 0d | 1 | 0c | 9 | 1 | rw | 0 | 0 | 0 | 0 | 0 | bool | PLLLDO_EN_SC_PROT | Enable short circuit protection | Enable? Disable more likely? |
52 | 0d | 2 | 0c | 10 | 1 | rw | 0 | 0 | 0 | 0 | 0 | bool | PLLLDO_EN_BYPASS | Enable bypass mode (see warning below) | |
53 | 0d | 3 | 0c | 11 | 1 | rw | 0 | 1 | 1 | 0 | 1 | bool | PLLLDO_EN_LDO_STABLE | LDO Stable Signal | ? |
54 | 0d | 4 | 0c | 12 | 1 | rw | 0 | 0 | 0 | 0 | 0 | bool | PLLLDO_EN_RETENTION | Enable retention mode | |
55 | 0d | 5 | 0c | 13 | 3 | rw | 0 | 0 | 0 | 0 | 0 | u3 | PLLLDO_CTRL_15_14_13 | — | |
56 | DIG LDO config | ||||||||||||||
57 | 0e | 0 | 0c | 16 | 5 | rw | 0 | 0 | 0 | 0 | 0 | s5 | DIGLDO_VSET | VDDAR adjustment: −16 = 1.05V −15 = 1.06V ... −1 = 1.20V 0 = 1.21V (default) ... 15 = 1.36V | |
58 | 0e | 5 | 0c | 21 | 1 | rw | 0 | 0 | 0 | 0 | 0 | bool | DIGLDO_EN_LP_CAPLESSMODE | Enables low power capless mode. Quiescent LDO current decreases by 240μA typical. | |
59 | 0e | 6 | 0c | 22 | 1 | rw | 0 | 1 | 1 | 0 | 1 | bool | DIGLDO_EN_CAPLESSMODE | Enables capless mode. In particular: 1. The 800 fF capacitor between VDDAR and the gate of the power FET is bypassed. 2. The output of the error amplifier connects to a 30 pF capacitor which connects to VSSA via a 40 kΩ resistor. This resistor is also bypassed. | ? |
60 | 0e | 7 | 0c | 23 | 1 | rw | 0 | 0 | 0 | 0 | 0 | bool | DIGLDO_EN_HP_CAPLESSMODE | Enables high performance capless mode. Quiescent LDO current increases by 240 μA. | |
61 | 0f | 0 | 0c | 24 | 1 | rw | 0 | 0 | 0 | 0 | 0 | bool | DIGLDO_EN_SUB_REGULATION | Disables sub regulation | |
62 | 0f | 1 | 0c | 25 | 1 | rw | 0 | 0 | 0 | 0 | 0 | bool | DIGLDO_DIS_SC_PROT | Disables short circuit protection | |
63 | 0f | 2 | 0c | 26 | 1 | rw | 1 | 0 | 0 | 1 | 0 | bool | DIGLDO_PULLDOWNZ | Enables LDO output pulldown | |
64 | 0f | 3 | 0c | 27 | 1 | rw | 0 | 0 | 0 | 0 | 0 | bool | DIGLDO_BYPASS | Puts the DIG LDO in bypass mode. Need to be careful while exercising this mode, the 1.8V external supply must be lowered before asserting this bit. | |
65 | 0f | 4 | 0c | 28 | 4 | rw | 0 | 0 | 0 | 0 | 0 | — | |||
66 | VTUNE control loop | ||||||||||||||
67 | 10 | 0 | 10 | 0 | 4 | rw | 0 | 0 | 0 | 0 | −4 | s4 | VTUNE_EXT_VAL | Initial control loop value: -4 (min) .. 0 (default) ... 4 (max) | always seems to land at -4 if control loop enabled |
68 | 10 | 4 | 10 | 4 | 1 | rw | 0 | 0 | 0 | 0 | 1 | bool | VTUNE_MODE | Enable loop in continuous mode (takes precedence over next bit) | |
69 | 10 | 5 | 10 | 5 | 1 | rw | 0 | 0 | 0 | 0 | 0 | bool | VTUNE_MODE | Enable loop until locked, then freeze | |
70 | 10 | 6 | 10 | 6 | 1 | rw | 0 | 0 | 0 | 0 | 0 | u1 | VTUNE_SPEED | # of REFCLKs to wait after previous update: 0 = 128 1 = 256 | |
71 | 10 | 7 | 10 | 7 | 1 | rw | 0 | 0 | 0 | 0 | 1 | u1 | VTUNE_EXT_EN | Select loop starting point. 0 = default 0000 1 = VTUNE_EXT_VAL | |
72 | 11 | 0 | 10 | 8 | 2 | rw | 0 | 0 | 0 | 0 | 0 | u2 | VTUNE_RANGE | 0 = 0.9-0.8 1 = 1.0-0.9 2 = 1.1-1.0 3 = 1.1-0.9 | |
73 | RTRIM control loop | ||||||||||||||
74 | 11 | 2 | 10 | 10 | 4 | rw | 0 | 0 | 0 | 0 | −8 | s4 | RTRIM_EXT_VAL | Initial control loop value: −8 (min) .. 0 (default) ... 7 (max) | |
75 | 11 | 6 | 10 | 14 | 1 | rw | 0 | 0 | 0 | 0 | 1 | bool | RTRIM_MODE | Enable loop in continuous mode (takes precedence over next bit) | |
76 | 11 | 7 | 10 | 15 | 1 | rw | 0 | 0 | 0 | 0 | 0 | bool | RTRIM_MODE | Enable loop until locked, then freeze | |
77 | 12 | 0 | 10 | 16 | 1 | rw | 0 | 0 | 0 | 0 | 0 | u1 | RTRIM_SPEED | # of REFCLKs to wait after previous update: 0 = 128 1 = 256 | |
78 | 12 | 1 | 10 | 17 | 1 | rw | 0 | 0 | 0 | 0 | 0 | u1 | RTRIM_EXT_EN | Select loop starting point. 0 = default 0000 1 = RTRIM_EXT_VAL | |
79 | 12 | 2 | 10 | 18 | 2 | rw | 0 | 0 | 0 | 0 | 0 | u2 | RTRIM_RANGE | 0 = 0.9-0.8 1 = 1.0-0.9 2 = 1.1-1.0 3 = 1.1-0.9 | |
80 | AUX clock | ||||||||||||||
81 | 12 | 4 | 10 | 20 | 5 | rw | 0 | 0 | 0 | 0 | 0 | u5 | AUX_DIV | Aux divider; Valid range is 2-31 | |
82 | 13 | 1 | 10 | 25 | 1 | rw | 0 | 0 | 0 | 0 | 0 | u1 | AUX_CLK_SEL | 0=Divided, 1=ref-clk | |
83 | 13 | 2 | 10 | 26 | 6 | rw | 0 | 0 | 0 | 0 | 0 | — | |||
84 | PLL status | ||||||||||||||
85 | 14 | 0 | 14 | 0 | 1 | r- | 0 | 0 | bool | PLL_LOCK | APLL locked | ||||
86 | 14 | 1 | 14 | 1 | 1 | r- | 0 | 0 | bool | PLLSSC_EN | SSC is engaged | ||||
87 | 14 | 2 | 14 | 2 | 1 | r- | 0 | 0 | bool | PLLANA_EN | Analog EN. Same as APLL DIG STS 4 internally | ||||
88 | 14 | 3 | 14 | 3 | 1 | r- | 0 | 0 | bool | PLLDIG_EN | Digital EN. Same as APLL DIG STS 2 internally | ||||
89 | 14 | 4 | 14 | 4 | 4 | r- | 0 | 0 | s4 | VTUNESTS | Value of the vtune control loop (may not be static in continuous mode of operation) | ||||
90 | 15 | 0 | 14 | 8 | 4 | r- | 0 | 0 | s4 | RTRIMSTS | Value of the rtrim control loop (may not be static in continuous mode of operation) | ||||
91 | 15 | 4 | 14 | 12 | 1 | r- | 0 | 0 | bool | SATA: high when DIG on and reset, toggles when PLL enabled | |||||
92 | 15 | 5 | 14 | 13 | 1 | r- | 0 | 0 | bool | SATA: DIG on, very briefly low after turning PLL off | |||||
93 | 15 | 6 | 14 | 14 | 1 | r- | 0 | 0 | bool | SATA: briefly high after PLL enabled // PCIe: toggles when PLL enabled | |||||
94 | 15 | 7 | 14 | 15 | 1 | r- | 0 | 0 | bool | SATA: high when PLL enabled // PCIe: DIG on, very briefly low after turning PLL off | |||||
95 | 16 | 0 | 14 | 16 | 16 | r- | 0 | 0 | — | ||||||
96 | RX serdes status | ||||||||||||||
97 | 18 | 0 | 18 | 0 | 1 | r- | 0 | 0 | u1 | TESTFAIL | Test failure. Driven high when an error is encountered during a test sequence executed on channel i. Synchronous to RXBCLKIN[i]. | ||||
98 | 18 | 1 | 18 | 1 | 31 | r- | 0 | 0 | — | ||||||
99 | TX serdes status | ||||||||||||||
100 | 1c | 0 | 1c | 0 | 1 | r- | 0 | 0 | u1 | TESTFAIL | Test failure. Driven high when an error is encountered during a test sequence executed on channel i, or if an over or underflow occurs in the Tx serialiser when ENFTP = 0. Synchronous to TXBCLKIN[i]. |