Forum Discussion

yossik's avatar
yossik
Icon for New Contributor rankNew Contributor
25 days ago

LVDS SERDES rx_inclock idle

Hi,

We are using LVDS SERDES IP as a multichannel LVDS receiver in Cyclone 10 GX device. The reciver is configured to run at DDR mode using 200MHz rx_inclock. The transmitter device output clock is not a free-running clock and is subjected to changes with correlation to the output data (for example clock is only running when the transmitter outputs data). I see in the Altera LVDS SERDES IP Core User Guide that the SERDES use IO PLL for that clock, meaning it should meet IO PLL cycle-to cycle clock jitter for the PLL input. 

Does that means that only a free running clock at a constant frequency and duty cycle can be used as part of the LVDS bus?

How should i treat devices that has an LVDS bus clock that is correlated with data?

10 Replies

  • FvM's avatar
    FvM
    Icon for Super Contributor rankSuper Contributor

    Hi,
    if PLL doesn't lose lock, there's most probably no need to change anything.

  • yossik's avatar
    yossik
    Icon for New Contributor rankNew Contributor

    Hi,

    "Is there any reason why the transmitted clock should be modified depending on data content in the sender?"

    We are working with the IC vendor to understand that.

    "What is the primary problem, do you experience data corruption?" 

    As i mentioned, we do not see any data corruption in practice. The issue is that the jitter on this clock does not meet the IO PLL cycle to cycle jitter requirements and we would like to understand if we might have some robustness issue here. 

    unfortunately, such a major design change like using CDR is not an option right now. 

    • AqidAyman_Altera's avatar
      AqidAyman_Altera
      Icon for Regular Contributor rankRegular Contributor

      Hello,

       

      The Cyclone 10 GX LVDS SERDES expects a stable, continuously running reference clock into the I/O PLL. If the clock’s cycle‑to‑cycle jitter exceeds the I/O PLL requirement in the device datasheet, Altera does not guarantee correct or robust operation even if your current lab tests show no bit errors.

       

      Regards,
      Aqid

      • yossik's avatar
        yossik
        Icon for New Contributor rankNew Contributor

        Thanks Aqid. This is the is not the answer i wanted but this is the answer i expected :-).

        Regarding the cycle to cycle requirement for IO PLL input jitter (tINCCJ), the requirement for Rref > 100MHz is 0.15 UI (p-p). Does p-p mean the difference between the maximal delta between two adjacent cycles and the minimal delta between two adjacent cycles? is the below calculation correct?  

        measure dTn = Tn - Tn-1 for 1000 cycles.

         tINCCJ (p-p) = max(dTn) - min (dTn)

  • FvM's avatar
    FvM
    Icon for Super Contributor rankSuper Contributor

    Hi,
    thanks for clarification. I was misleaded by a comment in initial post "for example clock is only running when the transmitter outputs data". This would in fact exclude usage of transmitted clock as PLL reference, or at least require up-to 1 ms lock delay.

    Is there any reason why the transmitted clock should be modified depending on data content in the sender? If not, I guess you are seeing just some kind of data-to-clock crosstalk. Or, the worse case, an actually unstable TX PLL clock.

    What is the primary problem, do you experience data corruption?

    Personally I'd tried to get rid of a dedicated clock channel and use CDR receiver with 8b/10b encoded data. 

    P.S.: If you are sending unencoded binary data and can't use CDR, TX clock is discontinuous but frequency tightly defined, there is most likely a way to regenerate a continuous clock in a kind of soft PLL.

  • yossik's avatar
    yossik
    Icon for New Contributor rankNew Contributor

    i will clarify, 

    First we are talking about an existing design which is used for years in multiple systems that are in mass production. I would say that the design is functionally working, we do not see any actual data integrity issues.

    The transmitter is an IC which output an 200MHz clock and a few channels of DDR data.  The receiver is implemented in a cyclone 10 GX device using the LVDS SERDES IP. 

    Lately, we found that there are some inconsistency in the IC LVDS output clock behavior and that the clock show some correlation to output data. i.e. the clock does not behave like a free running clock with a constant period and duty cycle. I'm trying to understand if this is an issue and if the LVDS SERDES can handle a clock that is not free running.

    see picture below to see clock pulse width variations for data transaction MSB and LSB. 

     

  • FvM's avatar
    FvM
    Icon for Super Contributor rankSuper Contributor

    Hi,
    I might have misunderstood the question. You have an existing multichannel LVDS transmitter with discontinuous 200 MHz DDR clock and want to design a receiver for it in Cyclone 10 GX?

    I suggested to receive it without a PLL driven SERDES and asked for clock and data waveforms. 

    Regards
    Frank 

  • yossik's avatar
    yossik
    Icon for New Contributor rankNew Contributor

    Hi, 

    This is a design already used in mass production products, it is not that simple to update the design. 

    As i understand from Altera LVDS SERDES IP Core User Guide, rx_inclock goes into I/O PLL and the designer has not much say about this. I'm adding screenshots from my LVDS SERDES IP settings. 

  • FvM's avatar
    FvM
    Icon for Super Contributor rankSuper Contributor

    Hi,
    PLL reference clock must be continuous, PLL isn't able to lock to a gated clock immediately.

    Your signal description suggests that the discontinuous clock send along with LVDS data can be used to sample the data directly without a PLL. 200 MHz DDR clock (400 MBPS) isn't particularly fast, Cyclone 10 GX should be able to receive it through GPIO DDR registers and deserializer in core logic.

    Can you show exact relation of tx clock and data?

    Regards
    Frank