> That sounds reasonable. What about using LVDS and two male SMA
> connectors, e.g.:
> http://www.digikey.com/product-
> detail/en/CONSMA013.031/CONSMA013.031-ND/1577227
> soldered on the back of the LTC6957 PCB? They would serve both as a short
> electrical connection and mechanical mount. I suppose that the
> LTC6957 PCB will be very small (so it can be reasonably designed not to bump
> into parts of the KC705 or the FMC cards) and has no other connectors on the
> back.

Sounds good, although for mechanical compatibility it might be better to use 
two extremely short (<1") SMA cables, since the axial misalignment tolerances 
on SMA are not very forgiving.  We can test it out and see how it goes.  

> > The 3.3V LVCMOS DDS sync signal would be sent to a TI CDCLVC1112 1:12
> > LVCMOS clock fanout (http://www.ti.com/product/cdclvc1112) located
> > very close to the FMC connector, which would then fan out the sync
> > signal with one output channel dedicated to each DDS's SYNC_IN pin via
> > an analog switch. This way the sync signal is always point-to-point
> > (nothing shared on a bus), so loading (and corresponding slow
> > rise/fall times) should not be an issue for the FPGA output.  The
> > additive jitter of this part is extremely low (~100
> > fs) so we will be limited by jitter due to the rise times from the
> > FPGA.
> 
> That CDCLVC1112 also has slow rise times, but it seems that it's unavoidable
> with LVCMOS. An AND gate instead of the analog switch would also work.
> Skew does not matter for SYNC_IN, as the FPGA will scan its timing until it
> receives an aligned SYNC_CLK. Skew does matter, however, for SYNC_CLK.

3.3V LVCMOS just always has a slower rise time -- this is a consequence of the 
much higher voltages involved.  So for a given slew rate that a driver can 
produce, you'll get a faster rise time for something like LVDS (where the swing 
is hundreds of mV) than for something that needs to swing by several volts.  
And this is (one of) the reasons people don't use 3.3 LVCMOS for high-speed 
signaling :)  


> > As to the question of returning the SYNC_CLK signal to the FPGA, I had
> > been talking about using an analog switch to pass the SYNC_CLK to the
> > FPGA using a shared bus (with a chip-select pin to determine the state
> > of the switch).
> 
> All SYNC_CLKs need to be matched (ideally to less than a SYSCLK cycle) so
> that the FPGA can properly detect when they are aligned, and a shared bus
> will not achieve that.

This is not necessarily required, I had thought.  What we need is to repeatably 
set the phase relationships of all the different SYNC_CLKs to within less than 
a SYSCLK cycle, and we need the SYNC_CLK phases to be such that we can meet the 
IO_UPDATE setup and hold time criteria for all DDS boards at the same time, but 
this does not necessarily imply that the SYNC_CLKs are aligned either at the 
FPGA or at the DDS cards themselves.  In fact, one might consider the situation 
were you want the SYNC_CLK of a more distant DDS to lag behind that of a nearer 
DDS, which would give more headroom for the IO_UPDATE setup time by accounting 
for the propagation delay of the IO_UPDATE pulse down the shared bus.  

Are there limitations on the IDELAY/ODELAY range that make this problematic?  
My vision for a synchronization had been as follows:

1) Enable the sync feature on one DDS and turn on the analog switch on SYNC_IN.
2) Send a SYNC_IN pulse from the FPGA to the clock fanout, which is then 
received by the DDS with the enabled syncing (others do not receive it due to 
analog switch on their cards being off).
3) Sweep the ODELAY from the FPGA while monitoring the phase of the returned 
SYNC_CLK from that DDS, stopping when the SYNC_CLK is stable with the correct 
phase.
4) Disable the sync feature on the DDS.
5) Repeat for all other DDS chips.

The "correct phase" in 3) can be established in one of several ways:
a) use a readback loop in hardware to connect the FPGA to the DDS board and 
back again, measure round-trip time, divide by two to estimate propagation 
delay, and use this to figure out the desired phase relationship.
b) set up a system where you can look at the SYNC_CLK pulses over 
matched-length coax cables using a fast oscilloscope.  Run the FPGA ODELAY 
syncing sequence until these are aligned as desired, then figure out the phase 
relationship of the SYNC_CLK signals at the FPGA and have it remember this 
phase relationship for all future syncing.  The board-to-board variations in 
propagation times should be low enough that this would work if we measured it 
once and then used those values for all FMC daughter cards.  

Once the SYNC_CLK is fixed, we just would need to check periodically (before 
and after each experiment, for example) to make sure that the phases of each 
SYNC_CLK are where we want them to be.

> What about using a multiplexer with matched trace lengths to each DDS?
> It seems a bit difficult however to find a multiplexer that has at the same
> time a large number of inputs (so we don't have the part-to-part skew
> problem), low skew between the inputs, and LVCMOS or LVDS support. The
> SY100E164 would be good, except it's old 5V ECL which requires inconvenient
> supply voltages (and LVCMOS->ECL translators again seem to have the part-
> to-part skew problem). Let me know if you find something.

This seems more difficult, but I will look into it if need be.  Again, the 
part-to-part skew is what kills us every time.  

> Routing each SYNC_CLK to the FPGA with matched trace lengths all the way is
> also an option. Using one IDELAY and one IOB register per input (all clocked
> from the same network) should result in low skew.

This approach would cost us too many pins on the FMC connector, 
unfortunately...we need to multiplex the SYNC_CLK signals or else multiplex the 
chip select signals.  It seems that most folks want to keep the chip select 
signals separate so we can change multiple DDSs simultaneously, something that 
cannot be done in the current system.  Seems not worth giving up this feature.

Daniel
_______________________________________________
ARTIQ mailing list
https://ssl.serverraum.org/lists/listinfo/artiq

Reply via email to