Delay in CDR recover
Hi friends,
I hope this message finds you well.
I am currently encountering some issues with the burst-mode CDR implementation using ALTGX.
Test setup:
In my setup, I am using an optical modulator to generate burst-mode optical signals. The burst-mode light (on/off) is sent directly to an SFP+ module mounted on a Terasic HSMC SFP daughter board, connected to a DE4 (Stratix IV) development board.
Each burst frame consists of approximately 109 µs of light on and 109 µs off. To properly decode the received signals, the transceiver is supplied with a reference clock (`rx_cruclk`) that is phase-recovered from the transmitter. The ALTGX CDR is switched between `rx_locktoref` and `rx_locktodata` in synchronization with the optical signal transitions:
* When the signal is **off**: lock to `rx_cruclk`
* When the signal is **on**: lock to data
**Observed issue:**
Switching between `rx_locktoref` and `rx_locktodata` does help the CDR lock within the 109 µs burst duration, but the locking time is longer than expected. It takes around **1.3 µs** for the CDR and word aligner to fully synchronize with the received data stream. This is much slower than anticipated, considering that the reference clock provided to the ALTGX is quite stable, and the phase difference between `rx_cruclk` and the transmitter clock fluctuates within only about 3 degrees.
We also experimented with manually delaying the start of the CDR locking process to better align it with the beginning of each burst frame, but the locking time consistently remained around 1.3 µs. Additionally, we tested by launching a continuous optical signal into the SFP while maintaining switching between rx_locktoref and rx_locktodata. In this configuration, the CDR synchronized to the incoming data within a few nanoseconds, as expected.
We suspect that when the optical signal is absent, the CDR inside the SFP module drifts, causing the output serial stream to deviate significantly. As a result, the ALTGX receiver cannot lock onto the drifted signal. We tested several SFP modules and selected the one that delivered the best performance, achieving approximately 1.3 µs locking time.
Would a 1.3 µs CDR locking time be expected under these conditions? Since our implementation uses a reference-assisted CDR with a phase-locked reference clock derived from the transmitter, we anticipated a faster locking response. The project is still ongoing, so I’m not yet certain whether I can share the source code, but please let me know if reviewing it would help with further debugging.
Thank you very much for your assistance—it’s greatly appreciated.
Best regards,
Hank