Page 1 of 3 123 LastLast
Results 1 to 10 of 26

Thread: ALTLVDS_RX->LVDS serdes Link Training

  1. #1
    Join Date
    Nov 2016
    Posts
    5
    Rep Power
    1

    Default ALTLVDS_RX->LVDS serdes Link Training

    Implementing Receiver interface. From transmitter we have 8 LVDS data channel and 1 LVDS sync channel. From sync channel we use to get training pattern which will be available in data channel for link training.

    I have used "ALTLVDS_RX" component for each LVDS data channel and sync channel (9's ALTLVDS_RX). I have query that how to do the link training?

    In ALTLVDS_RX i have observed that we have "rx_data_align" which will be input port after making tick while generating component. So, from where this input is controlled or generate. What mechanism or logic is required for this, if it will resolve our bit align/ bit slip for link training. Else what we need to do for this....

  2. #2
    Join Date
    Mar 2007
    Posts
    2,177
    Rep Power
    1

    Default Re: ALTLVDS_RX->LVDS serdes Link Training

    What device and interface speed? Are you doing Dynamic-Phase Alignment(DPA)?
    Most LVDS interfaces "close timing", i.e. the parallel bus is all captured correctly and synchronously. Only at the really high speeds with DPA on might each lane align indpendently, in which case you need to align the lanes.
    Assuming you are closing timing, the sync is generally used to do word alignment, i.e. the data coming out is supposed to be D7_D6...D0, but might be something like D2_D1_D0_D7_D6...D3(where the D2-D0 is an adjacent word to D7-D3). If the sync is supposed to output a specific pattern, then just shift all the channels until sync has that patter, and the data channels will also be word aligned.

  3. #3
    Join Date
    Nov 2016
    Posts
    5
    Rep Power
    1

    Default Re: ALTLVDS_RX->LVDS serdes Link Training

    Thanks Rsysc.... Cyclone V:5CGTFD7D5F27C7 device is targeted for Data rate of 576 Mbps. Not using DPA (DPA setting of ALTLVDS_RX). Rx interface is for CMOS Sensor (for example ON Semi).

    As i told in my previous query that for each channel i used "ALTLVDS_RX" . So, if TX is transmitting 128 bit through 8 data channel, shall i assume all 8 ALTLVDS_RX [1:8 (channel : deseialization factor)], each will get 8 bit of 128 bit and those received data will be align & there will be no bit slip?

  4. #4
    Join Date
    Mar 2007
    Posts
    2,177
    Rep Power
    1

    Default Re: ALTLVDS_RX->LVDS serdes Link Training

    I assume it is merging the PLL for each altlvds_rx instance, so they are all driven by a single PLL and all aligned. (If they each required their own PLL, it would not fit.)

  5. #5
    Join Date
    Dec 2009
    Location
    USA
    Posts
    324
    Rep Power
    1

    Default Re: ALTLVDS_RX->LVDS serdes Link Training

    Quote Originally Posted by ash80 View Post
    Implementing Receiver interface. From transmitter we have 8 LVDS data channel and 1 LVDS sync channel. From sync channel we use to get training pattern which will be available in data channel for link training.

    I have used "ALTLVDS_RX" component for each LVDS data channel and sync channel (9's ALTLVDS_RX). I have query that how to do the link training?

    In ALTLVDS_RX i have observed that we have "rx_data_align" which will be input port after making tick while generating component. So, from where this input is controlled or generate. What mechanism or logic is required for this, if it will resolve our bit align/ bit slip for link training. Else what we need to do for this....
    Why build 9 separate instances? You can build one ALTLVDS_RX instance with up to 64 channels. Much easier to work with one module, especially when it comes to alignment. And if you're in a family that supports DPA I highly recommend using it. DPA takes care of the bit alignment for you and it then tracks alignment continuously during run-time. If you don't use DPA then you have to do bit alignment yourself. I've done it - it's not that complicated. But then the alignment is static. Checking alignment manually during run-time is normally difficult to do because you have to switch back into training mode. DPA is definitely the way to go if you have the option.

    I'm not sure I answered your questions but if not then let me know and I'll take another crack at it.

  6. #6
    Join Date
    Nov 2016
    Posts
    5
    Rep Power
    1

    Default Re: ALTLVDS_RX->LVDS serdes Link Training

    Thanks for response, i will look into that. As i mentioned, i am using 8 instance of ALTLVDS_RX for data channel. Reason behind that is rearrangement of frame will not much complicated. Can we use "rx_channel_data_align" for realignment? In training phase, when we not find training pattern then we assert "rx_channel_data_align" for one clock and then de-assert it.This can be done till training pattern will be not found. this can be done for all 8 data channel. Same for synchronous channel to get sync code (training pattern, Frame start, Frame end...etc). DPA tab is not enabled/ don't allow to do any changes.

    Please let me know this way i can proceed?

  7. #7
    Join Date
    Dec 2009
    Location
    USA
    Posts
    324
    Rep Power
    1

    Default Re: ALTLVDS_RX->LVDS serdes Link Training

    There are two phases to aligning an interface like this, bit alignment then word alignment. Bit alignment involves finding the serial data transitions and establishing the optimal clock phase for sampling the data (sampling in the center of the eye). DPA does this for you automatically if you enable it. If you don't enable DPA then you have to find your own solution for bit alignment.

    Once bit alignment is complete then you start word alignment. Word alignment involves doing bitslips on each channel one at a time until the parallel data out of that channel matches the expected training word value. This is what "rx_channel_data_align" is used for. The word alignment process is very simple. Bit alignment is much trickier without DPA and you've made no mention of bit alignment. As I said in my previous post, if DPA is supported in the device family you're using then it will make your task much simpler and your design much more robust if you enable DPA.

  8. #8
    Join Date
    Nov 2016
    Posts
    5
    Rep Power
    1

    Default Re: ALTLVDS_RX->LVDS serdes Link Training

    I am using Cyclone V:5CGTFD7D5F27C7 device. I am not able to make make ALTLVDS_RX's DPA setting enabled. Then what logic need to implement to take care for bit alignment? What will be output of ALTLVDS_RX for 8 bit parallel data? That will be not bit aligned from incoming serial data? Please let me know what else need to do to make work in non-DPA Rx mode? If DPA setting is disable in Device, can we consider that DPA is supported default.

  9. #9
    Join Date
    Mar 2007
    Posts
    2,177
    Rep Power
    1

    Default Re: ALTLVDS_RX->LVDS serdes Link Training

    DPA is not supported in Cyclone V. I somewhat disagree with rsefton on how great DPA is. It is absolutely required for really high speeds, but it has the drawback that each lane does its own alignment, and so two lanes can be off from each other by a bit period or so. With regular LVDS you have to close timing, but once you do you know that each channel is aligned with the other channels, since the data is synchronously clocked in. What is your data rate? Assuming it's within the max LVDS rx data rate in the datasheet, you should be good to go. The altlvds block has really good timing numbers and should work with any device meant to run at that rate. The only thing you really need to watch out for is to make sure you know if the clock coming in is edge-aligned(in which case the altlvds will do a 90 degree phase shift on it to put it in the center of the data eye) or center aligned(in which case it doesn't do a shift and maintains that relationship, since it is already in the middle of the data eye). Otherwise it should work right out of the box.
    What's your data rate, deserialization rate, and device speed grade?

  10. #10
    Join Date
    Nov 2016
    Posts
    5
    Rep Power
    1

    Default Re: ALTLVDS_RX->LVDS serdes Link Training

    Device -> Cyclone V:5CGTFD7D5F27C7
    Data Rate -> 576 Mbps
    Deserialization Factor -> 8
    Device Speed Grade -> Any/6(Fastest)

    Rsync agree with you but rsefton mentioned bit & word alignment. In my previous response i told "rx_channel_data_align" is used to handle for bitslip if parallel data is not matched with training pattern. SO, i think both alignment will be taken care by ALTLVDS_RX by using "rx_channel_data_align". What is your opinion?

Similar Threads

  1. Pcie link training failed (CycloneIVGX)
    By zHedgehoGz in forum FPGA, Hardcopy, and CPLD Discussion
    Replies: 1
    Last Post: September 25th, 2016, 07:54 AM
  2. Replies: 0
    Last Post: September 5th, 2016, 08:06 AM
  3. PCIE link training fails. host doesn't send TS1/TS2 order set after reset.
    By rockban in forum FPGA, Hardcopy, and CPLD Discussion
    Replies: 0
    Last Post: August 31st, 2016, 01:10 AM

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •