Showing results for 
Show  only  | Search instead for 
Did you mean: 
Registered: ‎02-20-2020

Using SDI Receiver with ZCU106

What we try to achieve:

We are planning to implement/use SDI receiver blocks located on ZCU106 evaluation board. Main purpose is to be able to use GT pins to receive/send digital video data.

Definition of the problems we face:

  • We cannot alter VCU sdi rx project to fit our needs. Linux driver does not recognize the SDI rx block, even if the changes we make on the design does not affect the original functionality of the existing blocks.
  • We cannot make IP reference project to function properly. Rx-tx pass through and rx only projects are implemented with various output options of the SDI modules. Non seemed to function successfully. 

Detailed explanation of the road map we followed and the problems we are stuck with:

  • We implemented ZCU106_sdirx project acquired from this link. The prebuilt image, prebuilt bitstream and elf (.XSA file) and newly built reference project work as expected. We are able to receive the HD video data (in 4:2:0 YUV format, 10 bits) and display it on a dedicated test computer via Ethernet connection. Yet, in order for the project to fit our needs, we needed to change 2 ppc (pixels per clock) 10 bits axi-video format to 1 ppc 8 bits format. Unfortunately, as far as we are aware of, the SDI Receive Subsystem v2.0 IP does mot support such implicit changes. As a result, we decided to use our custom blocks to alter this functionality. Yet, even addition of ILAs and exporting axi-video data pins to external pin located on ZCU106 caused Linux driver to fail / not recognize the SDI blocks.


Figure 1: ZCU106_sdirx project, base design. Functions as expected


 Figure 2: ZCU106_sdirx with ILA addition. Linux driver does not recognize the video stream. 


 Figure 3: ZCU106_sdirx with eternal port connections. Linux driver does not recognize the video stream.

  • We also implemented IP example design (which does not utilize VCU block). Both “RX Only” and “Video Pass-through” example designs are implemented. The guide found in the datasheet followed during the processes. At first, the PS side of the ZCU106 block did not start. Later, we realized that problem was related to SODIMM used on our version of ZCU106 and reference project are different. Problem was solved by updating DDR settings according to SODIMM used in our version of the ZCU106 board. After the succession of the first initialization of the bare metal drivers, we found out that SDI source is not recognized by the driver and we cannot use SDI receiver subsystem. To solve this issue, we tried to strip down the “ZCU10_sdirx” to match IP example design. However, this method did not work out either.


    You can find the results acquired from bare metal app (IP example design) below:Picture4.png
  •   Figure 4: Pass-through bare-metal example design results. 


Figure 5: Pass-through bare-metal example design results continued.

As a result, We cannot use SDI rx subsystem in our designs.

1) Why does baremetal driver w/example design not work?

2) Why cant we see the SDI Rx  system on linux when we add ILAs to output ports?

(p.s.: Valid HD video data so is connected to SDI rx port of the ZCU106 board during all tests).



0 Kudos
1 Reply
Registered: ‎04-09-2019

Hello @berk_era ,

To answer about the bare metal example design. could you please help me out with your source and video resolution details.

What is your source?

What is the resolution that you are sourcing to the SDI RX sub system?

What is the vivado version?

Can you share the block diagram of your pipeline?

Does Your pipeline contains and converters? (ex: HDMI - SDI, etc...)

Did you tried to test our example design with any other SDI sources? If yes, have you reviewed the debug info addressed in the PG?

Kind Regards,



0 Kudos