Hi, Ron,

On May 6, 2013, at 2:28 PM, r...@physics.ucsb.edu wrote:

> Having one ADC filling the FIFO with
> its own clock would cause one signal to have a
> delay relative to the other. Are you suggesting
> the FIFO in the FPGA corrects this problem by
> cancelling the delay?

I don't know how/whether the ADC yellow blocks account for this (very shallow) 
ADC1 FIFO delay by delaying the ADC0 data accordingly.  I have never thought 
about what portion of the measured relative delay was due to clock demux 
ambiguity vs unaccounted for clock-domain-crossing FIFO latency.

When comparing the output of two ADCs, the relative delays need to be measured 
after every programming of an associated FPGA.  Between programmings, the 
relative delay due to the clock demux ambiguity and clock-domain-crossing FIFO 
latency (if any) is very stable.  Maybe you could get away with measuring it 
every power cycle on the ROACH/ROACH2 rather than every time you program the 
FPGA.

I've only dealt with this on multi-iBob systems where the FPGA has a built-in 
PPC that boots every time the FPGA is reprogrammed.  As I mentioned in earlier 
emails, the iBob startup code would reset (both!) the ADCs until they came up 
in sync with each other.  This was actually detrimental because resetting ADC0 
made the FPGA clock go away and come back which caused clocking havoc.  It also 
meant that the ADC clock delay ambiguity relative to other iBobs was not 
constant across reprogramming the FPGA even though it would have been had the 
ADCs not been reset by the startup code.  I think it was a well intentioned 
"feature" that had some unintended side effects.

We typically measure the relative delays by injecting correlated noise or 
observing a broadband calibrator (e.g. a quasar), correlating the inputs, and 
then fitting a phase slope across the cross correlation frequency spectrum.  
This also measures other sources of relative delay such as mismatched cable 
lengths.

Dave


Reply via email to