Generating an SD-SDI Recovered Clock

Implementing SMPTE SDI Interfaces with UltraScale GTH Transceivers Application Note (XAPP1248)

Document ID
XAPP1248
Release Date
2023-11-08
Revision
v1.6 English

In SD-SDI mode, the rxusrclk of the GTH RX is technically not a recovered clock because the CDR unit is locked to the frequency of the reference clock, not to the SD-SDI bit stream. The only signal available that actually indicates the data rate of the incoming SD-SDI bit stream is the 27 MHz rx_ce_out output of the SDI Wrapper. For some video applications, particularly those that do not need to retransmit the recovered video over an SDI interface, the rx_ce_out port may be sufficient as a recovered clock. Typically, this signal is used as a clock enable to downstream modules that are clocked with the rxusrclk from the GTH RX, similar to how the SDI data path in the UHD-SDI core works by using the rx_ce_out port as a clock enable.

If the received video data is to be retransmitted as an SD-SDI signal using a GTH TX, a low-jitter recovered clock is required. The recovered clock must have low enough jitter that it can be used as a reference clock for the PLL generating the serial clock for the GTH TX. Furthermore, the frequency of the recovered clock must be 148.5 MHz so that the GTH TX can use 11x oversampling to transmit the 270 Mbps SD-SDI data. This requires the use of an external, low-bandwidth PLL that can perform jitter attenuation. The bandwidth of the mixed-mode clock manager (MMCM) in the UltraScale device is too high to adequately filter out the large amounts of low frequency jitter present on the rx_ce_out port from the SDI receiver. The Texas Instruments LMH1983 and the Silicon Labs Si5328 can both perform this function. Both of these devices can take in the rx_ce_out port as a 27 MHz reference and multiply it up to 148.5 MHz while also filtering out the jitter. The resulting clock is suitable for use as a reference clock for the GTH TX. The pass-through demo included with this application note uses a Si5328 to generate a 148.5 MHz reference clock for the GTH TX from the 27 MHz rx_ce_out port in exactly this manner in SD-SDI mode. When retransmitting HD-SDI, 3G-SDI, 6G-SDI, or 12G-SDI, the same Si5328 is reprogrammed to filter jitter from the rxusrclk output of the GTH RX, doubling its frequency in the case of HD-SDI, thereby producing a low-jitter 148.5 MHz reference clock for the GTH TX.

Another option is to use an external genlock PLL and lock it to the video sync signals from the recovered video. The output of the genlock PLL is an SD-SDI recovered clock. A recovered clock is sometimes required to drive external video application-specific standard product (ASSP) devices. In SD-SDI mode, such a clock probably must have a frequency of 27 MHz and have lower jitter than is present on the rx_ce_out port, but does not need to have very low jitter as is the case when producing a GTH TX reference clock. The previously-mentioned techniques can be used, but it may be preferable to generate such a recovered clock entirely in the FPGA without requiring external components. Unfortunately, the jitter on the rx_ce_out port is too high to allow it to be used directly as a reference clock input to the UltraScale MMCM. But, there is a way to generate a recovered SD-SDI clock using a spare GTH TX as shown in the following figure.

The control module's recclk_txdata port can be connected to the gtwiz_userdata_tx_in port of an extra GTH TX of GTH Wizard IP. The GTH TX must use the same reference clock as the GTH RX that is receiving the SDI input signal. The rxusrclk can be routed to gtrefclk0_in of the GT Wizard IP and the txpllclksel_in must be set to use CPLL. The GTH TX must be configured for a line rate of 2.97 Gbps with no encoding and with a 20-bit gtwiz_userdata_tx_in port.

When configured in this manner, the serial output of the GTH TX is a 270 MHz clock that is frequency locked to the incoming SD-SDI signal. In other words, it is a true recovered clock for SD-SDI. The GTH TX serial output pins can be connected to a global or regional clock LVDS input of the UltraScale FPGA, with appropriate care to properly terminate the CML outputs and translate them to LVDS. Then the 270 MHz clock can be used in whatever manner is required in the FPGA. For example, it can be divided by 10 to get a 27 MHz recovered clock to drive internal or external video data paths. The signal has low enough jitter that it can be used as a reference clock to an MMCM.

The recclk_txdata port of the DRU is not wired from the SDI control module to an output port of the SDI wrapper. However, if an application must use this feature, the SDI wrapper can be edited to add this output port.

Figure 1. Using a GTH TX to Generate an SD-SDI Recovered Clock

The GTH TX that is used to generate the recovered SD-SDI clock does not have to be configured for SDI. It only must be configured to always run a 2.97 Gbps with no encoding. The data supplied to the gtwiz_userdata_tx_in port of the GTH Wizard IP from the recclk_txdata port of the control module creates a 270 MHz clock on the GTH TX serial output pins. The edges of the generated clock move around by ± one bit time of the 2.97 Gbps line rate to modify the frequency of the output signal so as to exactly match with the bit rate of the input SD-SDI signal. Thus, the cycle-to-cycle jitter on the 270 MHz clock generated by the GTH TX is ±337 ps plus whatever jitter is inherent in the GTH TX output signal (1 bit time at 2.97 Gbps is 337 ps), seen in the following figure.

Figure 2. Recovered SD-SDI Clock from GTH Transceiver

In this figure, the top trace is the 270 MHz clock generated by the GTH TX. The scope was triggered on the rising edge of the recovered clock at the center of the screen. Looking at the rising edges of the cycles on either side of the trigger point, it is easy to see the ±-337 ps cycle-to-cycle jitter as these rising edges each have three discrete rising points. The bottom trace is the SD-SDI that is being retransmitted by another GTH TX.