I am working on a design that takes a source-synchronous LVDS bus (8 data bits + clock, SDR) at a high speed (250MHz) as the input off a cable. I will be using the XC4VLX15 part. I read in the databook about the IDELAY/IDELAYCTRL operation that can be used to account for package and routing skews. What I don't quite understand is the calibration process. I understand the timing (64 taps @ 78.125Mhz with non-accumulating error) and how an n-tap delay line works. I just don't understand how to calibrate a signal dynamically without an input signal being present. Since my data and clock source is external (and I have no idea when data will start) I don't understand how the calibration can take place. When the cable is idle, the clock line will toggle, but the data lines will all be static. (I do see that an idle pattern of FF-00-FF-00... could be handy). When the cable is not connected though everything will be 0 - even the clock. The other option seems to be the fixed delay approach - then I just need to use the static timing analyzer to account for the flight time and routing delays so that they all "line-up" right on the balls. The datasheet claims a maximum flight-time skew of 80ps for any pin in the device (+/- 1 on the tap count). Then, I just need to look up the PAD --> IDELAY.D, divide by
78ps and add 1 for each of the 8 data bits. Am I missing something?I can't tell you how many times in my life I wished I could slide the clock or data to account for internal chip routing delays. Especially on pad to pad delay paths that went through a flip-flop.
This seems too good to be true - so I must be missing something.
Trevor Coolidge