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.

LMH1219: Eye diagram monitor

Part Number: LMH1219
Other Parts Discussed in Thread: LMH1208,

Hello,

I am working on a 12G SDI interface in which I am combining LMH1219 and LMH1208 to relay the incoming SDI signal.
Currently the lock indicator on lmh1219 is ON and the signal detect indicator on lmh1208 is OFF.

I am controlling LMH1219 and LMH1208 settings through resistors and currently they are:
   -> LMH1219
      - IN_OUT_SEL: HIGH to select IN0
      - OUT_CTRL: FLOATING to enable equalizer and reclocker
      - VOD_DE: FLOATING
   -> LMH1208
      - OUT0_SEL: FLOATING (pulled high internally according to datasheet) to enable SDI_OUT1 and SDI_OUT2
      - SDI_OUT_2: LOW to enable SDI_OUT1 and SDI_OUT2
      - ENABLE: FLOATING (ENABLE is internally pulled high according to datasheet)
      - HOST_EQ: 'R'
      - SLEW_CONTROL: HIGH to enable 12G
      - SDI_VOD: FLOATING to set output to 800mVpp

To narrow down the issue, I am trying to read the eye diagram parameters VEO and HEO from LMH1219.


Using the following code, based on the LMH1219 programming guide, I cannot read HEO and VEO given that register 0x24.1 never goes to 0.

raw(0xFF,0x04,0x07); // after this command reg 0xFF has 0x04. (switch to CTLE/CDR register page)
raw(0x3E,0x00,0x80); // after this command reg 0x3E has 0x00. (disables HEO/VEO lock monitoring)
raw(0x11,0x00,0xE0); // after this command reg 0x11 has 0x00. (set range to 3.125mV & EOM always powered up)
raw(0x23,0x80,0x80); // after this command reg 0x23 has 0xC0. (enable HEO/VEO acquisition override)
raw(0x24,0x02,0x02); // after this command reg 0x24 has 0x43. (acquire HEO and VEO & start EOM counter)
while((rar(0x24,0x00,0x02)) & 0x02) != 0); // read reg 0x24 and wait for 0x24.1 to clear


I also tried to execute raw(0x24,0x40,0xFF) to reset reg 0x24 to its default value (0x40), however after the command reg 0x24 is loaded with 0x41 instead of 0x40.

Questions:

1 - Could reg 0x24.1 (eom_start) be preventing me to read VEO and HEO?
2 - Assuming lock indicator on LMH1219 is ON and the eye diagram is good, is it safe to rule out problems in the LMH1219 side?
3 - Is there any meaning in verifying CD_N indicator if LOCK_N indicator is ON?
4 - Should EOM always work if the LOCK_N indicator is ON?

Thank you!

  • Greetings,

    It would be a good idea to check to make sure device is locked before attempting to read HEO/VEO. Afterward, you can check HEO/VEO values as you have described above.

    Please note responses to your questions below:

    1 - Could reg 0x24.1 (eom_start) be preventing me to read VEO and HEO?

    **We have to first stop HEO/VEO lock monitoring and then allow EOM task to gather horizontal and vertical eye opening. These two task can clash with one another.

    Reg 0x11 powers up the EOM task while reg 0x3E[7]=b'0 disables background HEO/VEO lock monitoring. 


    2 - Assuming lock indicator on LMH1219 is ON and the eye diagram is good, is it safe to rule out problems in the LMH1219 side?

    ** Yes it is safe
    3 - Is there any meaning in verifying CD_N indicator if LOCK_N indicator is ON?

    ** Not really. As long as LOCK_N is asserted this indirectly means CD_N is asserted.


    4 - Should EOM always work if the LOCK_N indicator is ON?

    ** Yes. If LOCK_N is asserted this means device is locked to a valid incoming data stream and we should be able to capture eye diagram and show HEO/VEO values.

    ** Noticed you are using:

    while((rar(0x24,0x00,0x02)) & 0x02) != 0); // read reg 0x24 and wait for 0x24.1 to clear

    Shouldit be like below instead?

    while((rar(0x24,0x00,0x02)) & 0x02) == 0); // read reg 0x24 and wait for 0x24.1 to clear

    Regards,, nasser