This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

LMK04832: LOS for CLKin1 Only Works if LOS_EN = 1 and PLL2 Lock Time is 1600ms! [Should be 8,192/100MHz]

Part Number: LMK04832

I'm using an LMK04832 in "Single-Loop" Mode [I'm "Only" using PLL2] for my JESD Application [Analog Devices AD9695 + Xilinx ZU9EG].

I'm running the JESD in Sub Class-0 Mode for my "Short" Term Demo and I will be running the JESD in Sub Class-1 Mode for my "Long" Term Application.

A). Sub Class-0 Operation

1. Reference is 100MHz Input to CLKin1

a. CLKin1 Type = MOS

b. CLKin1 Enable = 1

2. CLKin0 and CLKin2 "Not" used

a. CLKin0 Type = Bipolar

b. CLKin0 Enable = 0

c. CLKin2 Type = Bipolar

d. CLKin2 Enable = 0

2. VCO1 is Running at 3200MHz

3. SDCLK1 = 320MHz, DCLK8 = 640MHz

4. No SYSREF Generation in LMK04832

5. Output Clock Dividers are "Synchronized" via SYNC/SYSREF Pin

6. Status_LD1 Pin = PLL2_DLD

7. I program the LMK using the Following Sequence

A. LMK Class-0 Configuration

// Reset SPI, Disable 3-Wire SPI Mode

Write 0x0000 0x90; Reset SPI [Self Clears in 120ns], Disable 3-Wire SPI Mode
Write 0x0000 0x10; SPI Out of Reset, Disable 3-Wire SPI Mode

// Use Reset/GPO Pin as SPI Readback

Write 0x014A, 0x33; RESET_TYPE = Output [Push/Pull], RESET_MUX = SPI Readback

// Clock Group 1 (DCLK0 = Powered Down, SDCLK1 = 640MHz_REF); Note: SDCLK1 "Changed" to 320MHz for Serdes Reference

Write 0x0100, 0x0A; DCLK0_1_DIV = 10 [3200MHz/10 = 320MHz_SYS]
Write 0x0101, 0x08; DCLK0_1_DDLY = 8
Write 0x0102, 0x00; CLK0_1_PD = 0, ODL = 0, IDL = 0, DDLY0_1_PD = 0, DDLY[9:8] = 0, DIV[9:8] = 0
Write 0x0103, 0x44; DCLK0_1_HS = 0, DCLK0_1_POL = 0, DCLK0_1_DCC = 1, DCLK0_BYP = 0, CLKout0_1_PD = 0, CLKout0_SRC_MUX = 0 {Device}, DCLK0_1_HSg_PD = 1
Write 0x0104, 0x00; SCLK0_1_HS = 0, SCLK0_1_POL = 0, SCLK0_1_DIS_MODE = 0, SCLK0_1_PD = 0, CLKout1_SRC_MUX = 0 [Device]
Write 0x0105, 0x00; No Analog Delay, Disable Analog Delay
Write 0x0106, 0x00; SCLK0_1_DDLY = 0
Write 0x0107, 0x40; SDCLK1 = LVPECL16, DCLK0 = Powered Down

// Clock Group 2 (DCLK2 = 160MHz_DAC, SDCLK3 = DAC_SYSREF); Note: DCLK2/SDCLK3 "Changed" to Powered Down [No DAC Usage]

Write 0x0108, 0x14; DCLK2_3_DIV = 20 [3200MHz/20 = 160MHz_DAC]
Write 0x0109, 0x08; DCLK2_3_DDLY = 8
Write 0x010A, 0x80; CLK2_3_PD = 1, ODL = 0, IDL = 0, DDL2_3_PD = 0, DDL[9:8] = 0, DIV[9:8] = 0
Write 0x010B, 0x54; DCLK2_3_HS = 0, DCLK2_3_POL = 0, DCLK2_3_DCC = 1, DCLK2_BYP = 0, CLKout2_3_PD = 1, CLKout2_SRC_MUX = 0 {Device}, DCLK2_3_HSg_PD = 1
Write 0x010C, 0x24; SCLK2_3_HS = 0, SCLK2_3_POL = 0, SCLK2_3_DIS_MODE = 1, SCLK0_1_PD = 0, CLKout3_SRC_MUX = 1 [SYSREF]
Write 0x010D, 0x00; No Analog Delay, Disable Analog Delay
Write 0x010E, 0x00; SCLK2_3_DDLY = 0
Write 0x010F, 0x00; SDCLK3 = Powered Down, DCLK2 = Powered Down

// Clock Group 3 (DCLK4 = Powered Down, SDCLK5 = ADC1_SYSREF)

Write 0x0110, 0x0A; DCLK4_5_DIV = 10 [3200MHz/10 = 320MHz; Not Used]
Write 0x0111, 0x08; DCLK4_5_DDLY = 8
Write 0x0112, 0x00; CLK4_5_PD = 0, ODL = 0, IDL = 0, DDL4_5_PD = 0, DDL[9:8] = 0, DIV[9:8] = 0
Write 0x0113, 0x54; DCLK4_5_HS = 0, DCLK4_5_POL = 0, DCLK4_5_DCC = 1, DCLK4_BYP = 0, CLKout4_5_PD = 1, CLKout2_SRC_MUX = 0 {Device}, DCLK4_5_HSg_PD = 1
Write 0x0114, 0x24; SCLK4_5_HS = 0, SCLK4_5_POL = 0, SCLK4_5_DIS_MODE = 1, SCLK4_5_PD = 0, CLKout5_SRC_MUX = 1 [SYSREF]
Write 0x0115, 0x00; No Analog Delay, Disable Analog Delay
Write 0x0116, 0x00; SCLK4_5_DDLY = 0
Write 0x0117, 0x40; SDCLK5 = LVPECL16, DCLK4 = Powered Down

// Clock Group 4 (DCLK6 = Powered Down, SDCLK7 = ADC2_SYSREF)

Write 0x0118, 0x0A; DCLK6_7_DIV = 10 [3200MHz/10 = 320MHz; Not Used]
Write 0x0119, 0x08; DCLK6_7_DDLY = 8
Write 0x011A, 0x00; CLK6_7_PD = 0, ODL = 0, IDL = 0, DDL6_7_PD = 0, DDL[9:8] = 0, DIV[9:8] = 0
Write 0x011B, 0x54; DCLK6_7_HS = 0, DCLK6_7_POL = 0, DCLK6_7_DCC = 1, DCLK6_BYP = 0, CLKout6_7_PD = 1, CLKout6_SRC_MUX = 0 {Device}, DCLK6_7_HSg_PD = 1
Write 0x011C, 0x24; SCLK6_7_HS = 0, SCLK6_7_POL = 0, SCLK6_7_DIS_MODE = 1, SCLK6_7_PD = 0, CLKout7_SRC_MUX = 1 [SYSREF]
Write 0x011D, 0x00; No Analog Delay, Disable Analog Delay
Write 0x011E, 0x00; SCLK6_7_DDLY = 0
Write 0x011F, 0x40; SDCLK7 = LVPECL16, DCLK6 = Powered Down

// Clock Group 5 (DCLK8 = 320MHz_FPGA_Core1, SDCLK9 = FPGA_Core1_SYSREF); Note: DCLK8 "Changed" to 640MHz for DSP Engine Clock

Write 0x0120, 0x05; DCLK8_9_DIV = 10 [3200MHz/5 = 320MHz_FPGA_Core1; ADC1]
Write 0x0121, 0x08; DCLK8_9_DDLY = 8
Write 0x0122, 0x00; CLK8_9_PD = 0, ODL = 0, IDL = 0, DDL8_9_PD = 0, DDL[9:8] = 0, DIV[9:8] = 0
Write 0x0123, 0x44; DCLK8_9_HS = 0, DCLK8_9_POL = 0, DCLK8_9_DCC = 1, DCLK8_BYP = 0, CLKout8_9_PD = 0, CLKout8_SRC_MUX = 0 {Device}, DCLK8_9_HSg_PD = 1
Write 0x0124, 0x24; SCLK8_9_HS = 0, SCLK8_9_POL = 0, SCLK8_9_DIS_MODE = 1, SCLK6_7_PD = 0, CLKout9_SRC_MUX = 1 [SYSREF]
Write 0x0125, 0x00; No Analog Delay, Disable Analog Delay
Write 0x0126, 0x00; SCLK8_9_DDLY = 0
Write 0x0127, 0x11; SDCLK9 = LVDS, DCLK8 = LVDS

// Clock Group 6 (DCLK10 = 320MHz_FPGA_Core2, SDCLK11 = FPGA_Core2_SYSREF); Note: DCLK10 "Changed" to Powered Down

Write 0x0128, 0x0A; DCLK10_11_DIV = 10 [3200MHz/10 = 320MHz_FPGA_Core2; ADC2]
Write 0x0129, 0x08; DCLK10_11_DDLY = 8
Write 0x012A, 0x00; CLK10_11_PD = 0, ODL = 0, IDL = 0, DDL10_11_PD = 0, DDL[9:8] = 0, DIV[9:8] = 0
Write 0x012B, 0x54; DCLK10_11_HS = 0, DCLK10_11_POL = 0, DCLK10_11_DCC = 1, DCLK10_BYP = 0, CLKout10_11_PD = 1, CLKout10_SRC_MUX = 0 {Device}, DCLK10_11_HSg_PD = 1
Write 0x012C, 0x24; SCLK10_11_HS = 0, SCLK10_11_POL = 0, SCLK10_11_DIS_MODE = 1, SCLK10_11_PD = 0, CLKout11_SRC_MUX = 1 [SYSREF]
Write 0x012D, 0x00; No Analog Delay, Disable Analog Delay
Write 0x012E, 0x00; SCLK10_11_DDLY = 0
Write 0x012F, 0x10; SDCLK11 = LVDS, DCLK10 = Powered Down

// Clock Group 7 (DCLK12 = 320MHz_FPGA_Core3, SDCLK13 = FPGA_Core3_SYSREF); Note: DCLK12/SDCLK13 "Changed" to Powered Down [No DAC Usage]

Write 0x0130, 0x0A; DCLK12_13_DIV = 10 [3200MHz/10 = 320MHz_FPGA_Core3; DAC]
Write 0x0131, 0x08; DCLK12_13_DDLY = 8
Write 0x0132, 0x80; CLK12_13_PD = 1, ODL = 0, IDL = 0, DDL12_13_PD = 0, DDL[9:8] = 0, DIV[9:8] = 0
Write 0x0133, 0x54; DCLK12_13_HS = 0, DCLK12_13_POL = 0, DCLK12_13_DCC = 1, DCLK12_BYP = 0, CLKout12_13_PD = 1, CLKout12_SRC_MUX = 0 {Device}, DCLK12_13_HSg_PD = 1
Write 0x0134, 0x24; SCLK12_13_HS = 0, SCLK12_13_POL = 0, SCLK12_13_DIS_MODE = 1, SCLK12_13_PD = 0, CLKout13_SRC_MUX = 1 [SYSREF]
Write 0x0135, 0x00; No Analog Delay, Disable Analog Delay
Write 0x0136, 0x00; SDCLK12_13_DDLY = 0
Write 0x0137, 0x00; SDCLK13 = Powered Down, DCLK12 = Powered Down

// SYSREF, SYNC, and Device Config

Write 0x0138, 0x20; OSCOut = Powered Down, OSCOut_MUX = Buffered OSC_IN, VCO_MUX = VCO1 [2945MHz to 3255MHz]
Write 0x0139, 0x00; SYSREF_MUX = Normal, SYNC_BYPASS = Normal, SYSREF_REQ_EN = Disabled, SYSREF_TEMP_COMP = Disabled
Write 0x013A, 0x00; SYSREF_DIV = 32 [3200MHz/32 = 100MHz]
Write 0x013B, 0x20
Write 0x013C, 0x00; SYSREF_DDLY (GBL) = 8
Write 0x013D, 0x08
Write 0x013E, 0x00; (1) SYSREF Pulse
Write 0x013F, 0xA5; FB_MUX_EN = 1, FB_MUX = SYSREF_DIV, PLL1_NCLK_MUX = OSCin [Not Used], PLL2_NCLK_MUX = FB_MUX, PLL2_RCLK_MUX = Selected CLKin [CLKIN1]
Write 0x0140, 0x99; SYSREF_PLSR_PD = 1, SYSREF_DDLY_PD = 0, SYSREF_PD = 0, SYSREF_GBL_PD = 1, OSCin_PD = 1, VCO_PD = 0, VCO_LDO_PD = 0, PLL1_PD = 1
Write 0x0141, 0x00; Disable Dynamic Digital Delay for DCLK0, DCLK2, DCLK4, DCLK6, DCLK8, DCLK10, DCLK12, and SYSREF
Write 0x0142, 0x00; DDLYd_STEP_CNT = 0
Write 0x0143, 0x91; SYSREF_CLR = 1, SYNC_POL = Normal, SYNC_EN = 1, SYNC_MODE = SYNC Pin
Write 0x0144, 0x80; Enable SYNC Event for "All" DCLKout Divider, Disable SYNC Event for SYSREF Divider
Write 0x0145, 0x00; PLL2R_SYNC_EN = 0, PLL1R_SYNC_SRC = Reserved, PLL1R_SYNC_EN = 0

// CLKin Control

Write 0x0146, 0x12; CLKin0_EN = 0, CLKin1_EN = 1, CLKin2_EN = 0, CLKin1 = MOS [For LOS Measure], CLKin0 = CLKin2 = Bipolar [Differential]
Write 0x0147, 0x1B; CLKin0_OUT_MUX = Off, CLKin1_OUT_MUX = PLL1, CLKin_SEL_MANUAL = CLKin1
Write 0x0148, 0x00; CLKin_SEL0_TYPE = Input
Write 0x0149, 0x00; CLKin_SEL1_TYPE = Input
Write 0x014A, 0x33; RESET_TYPE = Output [Push/Pull], RESET_MUX = SPI Readback

// Hold Over

Write 0x014B, 0x26; LOS_EN = 1, Man_DAC[9:0] = 512
Write 0x014C, 0x00
Write 0x014D, 0x00; DAC_TRIP_LOW = 0
Write 0x014E, 0xC0; DAC_TRIP_HIGH = 0, DAC_CLK_MULT = 16,384
Write 0x014F, 0x7F; DAC_CLK_CNTR = 127
Write 0x0150, 0x00; NO CLKin Override??? [Synthesizer Mode]
Write 0x0151, 0x02; HOLDOVER_DLD_CNT =
Write 0x0152, 0x00

// PLL1 Configuration

Write 0x0153, 0x00; CLKin0_R = 120 [PLL1 "Not" Used; Powered Down]
Write 0x0154, 0x78
Write 0x0155, 0x00; CLKin1_R = 1 [PLL2 "Used"; CLKin1 = 100MHz]
Write 0x0156, 0x01
Write 0x0157, 0x00; CLKin2_R = 120 [CLKin2 "Not" Used]
Write 0x0158, 0x78
Write 0x0159, 0x00; PLL1_N = 1 [PLL1 "Not" Used; Powered Down]
Write 0x015A, 0x01
Write 0x015B, 0xD4; PLL1_WND_SIZE = 43ns, PLL1_CP_GAIN = 450uA [PLL1 "Not" Used; Powered Down]
Write 0x015C, 0x20; PLL1_DLD_CNT = 8192
Write 0x015D, 0x00
Write 0x015E, 0x1E; HOLDOVER_EXIT_NADJ = 30
Write 0x015F, 0x03; PLL1 LD Pin = Output (Push-Pull), Logic "Low"

// PLL2 Configuration

Write 0x0160, 0x00; PLL2_R = 1 [PLL2 "Used"; PFD = 100MHz]
Write 0x0161, 0x01
Write 0x0162, 0x24; PLL2_P = 2 [Pre-Scaler] 63MHz < OSCin_FREQ < 127MHz [OSCin "Not" Used]
Write 0x0163, 0x00; PLL2_N Cal Divider = 16 [(3200MHz/2/16) = 100MHz]
Write 0x0164, 0x00
Write 0x0165, 0x10
Write 0x0173, 0x10; PLL2_PRE_PD = 0 [PLL2 PreScaler "Used"], PLL2_PD = 0 [PLL2 "Used"]
Write 0x0166, 0x00; PLL2_N = 1
Write 0x0167, 0x00
Write 0x0168, 0x01
Write 0x0169, 0x79; PLL2_WND_SIZE = 2.6ns [When PFD < 160MHz], PLL2_CP_GAIN = 3200uA, PLL2_DLD_EN = 1
Write 0x016A, 0x20; PLL2_DLD_CNT = 8192
Write 0x016B, 0x00
Write 0x016C, 0x00; "Fixed"; Use POR
Write 0x016D, 0x00; "Fixed"; Use POR
Write 0x016E, 0x13; PLL2 LD Pin = Output (Push-Pull), PLL2_LD
Write 0x0177, 0x00; PLL1_R_RST [Used to "Reset" PLL1_R]

Write 0x0182, 0x01; CLR PLL1_LD_LOST = 0, CLR PLL2_LD_LOST = 1

Write 0x182, 0x00; CLR_PLL1_LD_LOST = 0, CLR PLL2_LD_LOST = 0

Write 0x0555, 0x00; SPI Registers "Unlocked"

// Synchronize Output Clock Dividers

Write 0x143 0xB1 ; SYSREF_CLR = 1, SYNC_POL = Inverted, SYNC_EN = 1, SYNC_MODE = SYNC Pin
Write 0x143 0x91 ; SYSREF_CLR = 1, SYNC_POL = Normal, SYNC_EN = 1, SYNC_MODE = SYNC Pin

// Disable Output Clock Divider Synchronization

Write 0x0144, 0xFF; Disable SYNC Event for "All" DCLKout Divider, Disable SYNC Event for SYSREF Divider

7. After I program the Sequence, I then Check to see if the 100MHz is "Present" at CLKin1 Pin [Using RB_CLKin1_LOS]

// Verify 100MHz is Present

Read 0x0184; 100MHz is "Present" when 0x184[1] = 0

8. After I "Verify" that the 100MHz is "Present" at CLKin1 Pin, I then "Verify" that PLL2 is "Locked" to the 100MHz Reference  [Using RB_PLL2_LD]

// Verify PLL2 is Locked

Read 0x0183; PLL2 "Locked" when 0x183[0] = 1

9. After I "Verify" that the 100MHz is "Present" at CLKin1 Pin, and "Verify" that PLL2 is "Locked" to the 100MHz Reference, I "Shut-Off" the 100MHz Reference Source

10. I then "Verify" that the 100MHz is "Not" Present at CLKin1 Pin [Using RB_CLKin1_LOS]

// Verify 100MHz is Not Present

Read 0x0184; 100MHz is "Not Present" when 0x184[1] = 1

Question-1: Register 0x184[1] will "Readback" a "1"...…."Only" if LOS_EN = 1...…..Is this Correct?

11. It appears to be Correct, based on the Data Sheet [See Below]:


12. I "Re--Apply" the 100MHz Reference Source to CLKin1 and then "Re-Verify" that the 100MHz is "Present" at CLKin1 Pin, and "Verify" that PLL2 is "Locked" to the 100MHz Reference

// Verify 100MHz is Present

Read 0x0184; 100MHz is "Present" when 0x184[1] = 0

// Verify PLL2 is Locked

Read 0x0183; PLL2 "Locked" when 0x183[0] = 1

12. I then connect Channel-1 of my to the Status_LD1 Pin [This Pin is configured to "Monitor" PLL2_LD]

13. At this point in time, Status_LD2 Pin = "High"; PLL2 is Locked

14. I then set the Scope to Trigger on the "Falling" Edge of Channel-1 and set the Time Base to 400ms/Div

15. I then send the "Entire" Programming Sequence...…"Again"...….to the LMK04832...….to "Monitor" PLL2 going "Out" of "Lock".....and then "Re-Acquiring" Lock

16. Once the Oscilloscope Triggers......I can see the Status_LD2 Pin go "Low"...…."Remain Low" for 1600ms...…..and then Transition "High"

17. I computed the PLL2 Lock time to be 8,192/100MHz as per the Data Sheet [See Below]:

Question-2: I computed the "Minimum" PLL2 Lock time to be 81.92uS, but on the Oscilloscope I see the PLL2_LD "low" for 1600ms...…."Why" did it take "So" Long to Lock.....by me "Simply" Sending the Programming Sequence to the LMK a 2nd Time?...…..is it due to the fact that a 2nd Calibration was required?

  • Hello Dallas,

    Dallas Pace said:
    Question-1: Register 0x184[1] will "Readback" a "1"...…."Only" if LOS_EN = 1...…..Is this Correct?

    Correct.  LOS_EN = 1 is required for CLKinX_LOS to work.

    Dallas Pace said:
    Question-2: I computed the "Minimum" PLL2 Lock time to be 81.92uS, but on the Oscilloscope I see the PLL2_LD "low" for 1600ms...…."Why" did it take "So" Long to Lock.....by me "Simply" Sending the Programming Sequence to the LMK a 2nd Time?...…..is it due to the fact that a 2nd Calibration was required?

    Upon programming the first register with reset, I PLL2_LD_MUX is changed to outputting a low.  So your PLL2 DLD indicates will low, then the locking would not start until you program 0x168, so you should not count the locktime until programming 0x168.  Also, since 0x16e is after 0x168, to ensure you measure the shortest possible lock time via PLL2 DLD, I suggest programming 0x16e before PLL2_N = 0x166 to 0x168.

    Note that total lock time is Digital Calibration time + Analog Lock time + PLL2 DLD filter time.  Your 81.92 us = 8192 / 100 MHz is the time for PLL2 DLD filter.

    73,
    Timothy

  • Thanks Tim...….that makes "Perfect" Sense. I forgot that programming the 1st Register [0x000] with "Reset"...….sets "All" of the Registers to their "Default" POR Levels...….so for PLL2_LD_MUX...….it "Defaults" to Open Drain, Output = Low.

    You said "Total" Lock Time is Digital Calibration Time + Analog Lock Time + PLL2_DLD Filter Time.

    My 81.92uS is the PLL2_DLD Filter Time

    Question-1: What is the "Approximate" Digital Calibration Time?

    Question-2: What is the "Approximate" Analog Lock Time?

    To Measure "Total" Lock Time, I will use PLL1 LD Pin as a "Trigger" for my Oscilloscope.

    I will "Set" PLL1 LD Pin to a "1"......JUST-PRIOR-TO Writing to 0x166 - 0x168 [PLL2_N]

    My Scheme for Measuring "Total" Lock time will be as follows [Please tell me if this makes sense?]

    1. Program Registers "Up-To" Register 0x15F [0x03; PLL1 LD Pin = Output (Push-Pull), Logic "Low"]

    2. Next Program 0x160 through 0x165

    3. Then Program 0x173 as per the Data Sheet Recommended Sequence

    4. Program 0x16E, 0x13; PLL2 LD Pin = Output (Push-Pull), PLL2_LD

    5. Program 0x15F, 0x04; PLL2 LD Pin = Output Inverted (Push-Pull), Logic Low

    6. Program 0x166 through 0x16D

    7. Program 0x177

    8. Program 0x182 to "Clear" PLL2_LD_LOST

    9. Finally Program 0x555

    Here's what I expect.

    a. I Program "All" of the Registers as outlined above

    b. PLL1_LD will be set to "1" Just before PLL2_N is Programmed

    c. I will 'Trigger' the Oscilloscope on the "Rising-Edge" of PLL1_LD

    c. I "Should" see PLL2_LD get set...….approximately T1 "After" the Oscilloscope Triggers [After PLL1_LD goes to a "1"]

    T1 is defined as Digital Calibration Time + Analog Lock Time + PLL2 Filter Time

    Question-3: Will this provide an Reliable way of "Measuring" PLL2 "Total" Lock Time?

  • Hello Dallas,

    Dallas Pace said:
    Question-1: What is the "Approximate" Digital Calibration Time?


    I expect around 60 us.

    Dallas Pace said:
    Question-2: What is the "Approximate" Analog Lock Time?


    A common approximation is 4 / LBW.

    Dallas Pace said:
    Question-3: Will this provide an Reliable way of "Measuring" PLL2 "Total" Lock Time?


    If possible, I would trigger on the rising CS* edge after programming 0x168 until PLL2 DLD asserting.  I recommend programming 0x16e with PLL2 LD Pin = Output (Push-Pull), PLL2_LD before programming 0x168.

    73,
    Timothy

  • Thank you Tim.

    2 Last Questions:

    You said to "Program" 0x16E....."Before" writing PLL2_N [0x166, 0x167, and 0x168].

    Question-1: How about 0x16A [PLL2_WND_SIZE] and 0x16A [PLL2_LD_CNT]…...since they are "Both" used to determine PLL2_DLD Filter Lock Time, shouldn't they be Programmed "Before" writing to PLL2_N as well?

    In the "B" Revision of the Data Sheet I see Registers 0x16C and 0x16D. "Both" are fixed......set to 0x00.

    In the "C" Revision of the Data Sheet......I see Register 0x016C......but 0x16D is "No" Longer in the Table.

    Question-2: Was this an "Omission" or has 0x16D been "Removed" from the Silicon?

  • Hello Dallas,

    Dallas Pace said:
    Question-1: How about 0x16A [PLL2_WND_SIZE] and 0x16A [PLL2_LD_CNT]…...since they are "Both" used to determine PLL2_DLD Filter Lock Time, shouldn't they be Programmed "Before" writing to PLL2_N as well?


    Good point, for the purpose of measuring the fastest possible lock time for your settings, yes I recommend programming these before starting the lock.

    Dallas Pace said:
    Question-2: Was this an "Omission" or has 0x16D been "Removed" from the Silicon?


    Both 0x16c and 0x16d were removed, it appears that 0x16c didn't get deleted from the register map by error.  It is ok if they are programmed to 0x00 but you needn't bother.  I'll put a note to delete 0x16c from the register map.

    73,
    Timothy

  • For ID_MASKREF…..in “B” Data Sheet…….the “Expected” Readback Value is 0x50………..and for ID_MASKREV……..in “C” Data Sheet…….the “Expected” Readback Value is 0x70.

     

    FI think the LMK04832 Evaluation Board that I have is returning 0x60 for ID_MASKREF…….but I’ll have to “Double-Check” that today!

     

    Question-3: Is the “Current” Silicon Product that TI is Shipping “Today”………at ID_MASKREF Level 0x70?

     

    Question-4: What is the “Difference” [What Changes at the Metal/Die Level] between ID_MASKREF Level 0x50, 0x60, and 0x70?.........are there “Known” Bugs in ID_MASKREV Level 0x50 and 0x60 that I need to be aware of?

  • Hello Dallas,

    Dallas Pace said:
    Question-3: Is the “Current” Silicon Product that TI is Shipping “Today”………at ID_MASKREF Level 0x70?


    The released silicon is 0x70 and has never been changed.  Looks like you may have EVM which was produced with pre-RTM silicon.

    Dallas Pace said:
    Question-4: What is the “Difference” [What Changes at the Metal/Die Level] between ID_MASKREF Level 0x50, 0x60, and 0x70?.........are there “Known” Bugs in ID_MASKREV Level 0x50 and 0x60 that I need to be aware of?


    There was a change to the PLL2 integrated loop filter to improve filtering.  However this did reduce the phase margin which results in slightly higher integrated phase noise.  This is illustrated in plots in the datasheet.

    Please confirm with me about your version.  If it's not 0x70, I want to check the EVM stock.

    73,
    Timothy

  • The EVM that I'm using is returning 0x60 for id_maskrev.

    You said Data Sheet shows a "Slightly" higher integrated phase noise. Which Version of the Data Sheet ["B" or "C"]?

  • Data Sheet B was a pre-release datasheet which has plots corresponding with 0x60.  Data Sheet C was RTM datasheet which corresponds with 0x70.

    73,
    Timothy