--- Quote Start ---
I'm hoping some of you might prod me in the right direction. I'm looking to synchronize a large number of ADC channels going into an FPGA. The sampling rate is high (~1MSPS), but doesn't quite require using an ADC with the JESD204 standard. Data sample synchronization is critical and therefore clock skew and jitter must be minimized.
I intend on keeping all board clock/sync lines at the same length. Should I also be using a PLL to generate this synchronous clock/sync, or use an onboard oscillator with clock distribution buffers? Is there another topology that might work better?
What if I were to need multiple FPGAs, how would you synchronize between multiple devices?
--- Quote End ---
What kind of flexibility do you have with regards to the input signals to each ADC? One method of synchronizing ADCs that works nicely is to have a common signal that can be switched into each ADC and any analog electronics.
For example, a noise signal with a bandwidth over DC to 500kHz can be sampled by your ADCs. The cross-correlation of that data is ideally a delta function, with a cross-power spectrum that has flat phase.
Any delay will show up as a shift in the delta function peak, or slope in the spectrum. You can compensate for the measured delay using a fractional-delay-line (basically a FIR filter with asymmetric taps).
For clock generation and distribution, the skew is of no consequence when you calibrate using a noise source. The jitter of the clock is critical in maintaining the dynamic range of the ADC. How many bits are you trying to get out of your ADC? You should be able to use clock distribution buffers.
If the jitter from the FPGA PLL output clocks at 1MHz is acceptable for your dynamic range, then you could align ADC clocks using the PLL delay shift features. I use external DDSes for this in my applications, eg., see the docs here
http://www.ovro.caltech.edu/~dwh/carma_board/ Cheers,
Dave