Cyclone V LVDS deserializer bitrate
Hi,
I am writing to see if we can identify the reason why the LVDS receiver of our system has problems to receive the incoming stream properly.
The incoming stream comes from an LVDS ADC (AD9257) that consists on 8 LVDS data lines (1 line for each ADC channel), a frame clock LVDS line to align the boundaries of the received data and an LVDS clock line to which both data and frame clock lines are center-aligned. That is, for each AD9257 in our system we receive a total of 10 LVDS channels.
According to the specification of the ADC AD9257, the maximum clock-to-data output difference is 300ps, and the length of all the channels are matched with a maximum difference of 3mm (below 40ps).
With all this said, achieving a proper data reception at a bit-rate of 580MHz should be easy according to Cyclone V GX specs and the speed-grade (7) of the device we are using.
However, we are having problems to receive all the data properly. For instance, even after a period of time left to align the data-words to its boundaries using the frame_clock signal, the word-alignment is lost besides of the wrong reception of the data with fliping bits,...
We have tried to setup the ALTLVDS_RX core in both internal and external PLL clock, using the latter configuration to try to find the best clock phase shift to sample the data, but still without good results.
At this point we are running out of ideas, we think that our time constraints should be fine and we have could meet the timing. For that reason we would like to know if there is a setting we are not using and at the same time ensure that the ALTLVDS_RX is is able to receive data at these rates for the FPGA we are using.
One point that comes to our minds is the LVDS termination. So far we are using the internal FPGA termination for LVDS channels, but due to the high tolerance (40%) we do not know if it would be advisable to mount external termination resistors, and if this could be the rootcause of our reception problems.
Thanks!!!