Zynq UltraScale+ MPSoC VCU TRD 2023.1 - Run and Build Flow

This page describes the detailed run and build flow for all the TRD components.

Table of Contents

1 Overview

For the overview, software tools, system requirements, design files, and board setup follow the link below:


2 Run Flow

This section will describe the flow to run the pre-built images which each design module contains.

Please note that the Windows format option can't be used.

  • Copy all the files from the $TRD_HOME/images/<Path to Design Images>/ to FAT32 formatted SD card directory

  • Power on the board; make sure INIT_B, DONE and all power rail LEDs are lit green

  • After a successful boot, a shell prompt would appear as shown below.

zcu106vcutrd login:
  • Here enter the user name as “petalinux”. Then it will prompt the user to set their password as shown below.

You are required to change your password immediately (administrator enforced). New password:
  • Enter the password. It will ask you to confirm it.

Retype new password:
  • Once done, depending on the design, you will get a prompt as below:

zcu106vcutrd:~$
  • It is highly recommended to enter the root mode before proceeding with the run. For this, type “sudo su” at the prompt.

zcu106vcutrd:~$ sudo su
  • Once you do, it will print a warning and ask you for your password again. Enter your password.

We trust you have received the usual lecture from the local System Administrator. It usually boils down to these three things:     #1) Respect the privacy of others.     #2) Think before you type.     #3) With great power comes great responsibility.     Password:
  • Please note that you need to login each time the board is booted. Now a prompt like the following one will appear:

zcu106vcutrd:/home/petalinux#
  • The SD card file system is mounted at /media/card. Optional storage medium SATA and USB are mounted at /media/sata and /media/usb respectively.

2.1 Graphic User Interface

A QT based graphical user interface (GUI) provides control and monitoring interface. GUI will run on DP only.

  • Qt GUI will work on VCU TRD Multi-stream design and VCU Multi-stream Audio design.

  • Make sure the monitor is in DP mode before running the QT GUI app.

Run the below command to launch GUI on Display port when connected.

cd /opt/vcu_qt/bin ./run_vcu.sh

The GUI is not supported in HDMI-Tx. In HDMI 4kp60 mode, GUI requires an additional ~2GB memory bandwidth. By Invoking the GUI on HDMI-Tx will cause memory bandwidth issue. So, for HDMI-Tx, use only command line application (vcu_gst_app). The table below provides the supported display interfaces for both GUI and command-line applications.

Display Interface

GUI

Command Line Application

Display Port

HDMI

Not supported


The figure below shows the home screen of the GUI when only DP is connected.

GUI only supports single-stream playback. Supported resolutions are 1080p and 4kp. The supported frame rate for 1080p is 60 fps and 30fps for 4K. For all multi-stream use cases and 4kp60 single stream, the user has to run command-line applications.

For 4K use cases, use 4Kp30 supported Display/TV with DP Port; and for 1080p use cases, use 1080p60 supported Display/TV with DP Port

Qt GUI has the following options for the user to select:

Number of Input
This determines the number of active video sources. Only one input source is supported.

Output
This option allows the user to select a sink for the pipeline. Supported output sink types are display port, record, and stream. For the Display Port, the available Codec options are either enc-dec or Pass-through. For Record and Stream Out, the available Codec option is Enc.

Demo Mode

  • By clicking this button, the button text state changes to stop and the user can play all pipelines(TPG, MIPI, HDMI) with raw and presets configurations.

  • For every 10 seconds, playback preset changes and it plays in a loop till the user clicks on the stop button.

  • If no source connected it displays an error popup.

  • If any error returns in any playback, it skips and continues to play other pipelines.

  • With Multi Stream Audio Video Capture and Display design, To enable audio in a demo mode follow below steps and Click on Demo Mode

    • Input Settings

      • Input1: HDMI

      • Settings → Audio Settings → Enable Audio → True

Input Settings
The below figure shows the input settings window with configuration options.

Different configuration options available in the QT pop up window are:

Input Source (Input 1)
The following video sources (4K) are available as part of input video selection:

  • HDMI-Rx: To select the HDMI-Rx source as input.

  • File: To select a file source as input.

  • Test Pattern Generator (TPG): To select TPG source as input.

  • MIPI: To select MIPI Camera source as input.

  • Stream-In: To select a streaming pipeline.

Codec
The following options are available as part of Codec functionality

  • Enc-Dec: This option is to select encode and decode in the pipeline.

  • Enc: This option is to select encode only in the pipeline for record or stream out a use case.

  • Pass-through: This option is to display raw video.

Preset
There are six predefined presets. If the user edits any control options preset mode switches to “Custom”.

Preset

Encoder Type

Bitrate

Preset

Encoder Type

Bitrate

AVC Low

H264

10Mbps

AVC Medium

H264

30Mbps

AVC High

H264

60Mbps

HEVC Low

H265

10Mbps

HEVC Medium

H265

30Mbps

HEVC High

H265

60Mbps

Profile = Main for HEVC and High for AVC, Rate Control = CBR, Filler Data = true, QP = Auto, L2 Cache = true, Latency mode = Normal, Low Bandwidth = false, Gop Mode = Basic, B-frame = 0, Slice = 8 and GoP Length = 60 common for all above options.

  • Custom User-specific options

Please refer to the “Supported Encoder Format” section for the supported encoder format in this release.

SCD
Enable or Disable SCD in the pipeline

Settings
A user can control the encoder, record, and stream out configuration from the GUI, Settings option is enabled when the pipeline is in the stop state. The user can control the encoder parameters when the output option is selected as Display port/Record/Stream.

Encoder
This can be either H264 or H265.

Profile
The standard defines a set of capabilities, which are referred to as profiles, targeting specific classes of applications. These are declared as a profile code (profile_idc) and a set of constraints applied in the encoder. This allows a decoder to recognize the requirements to decode that specific stream.
H264 supports baseline, main and high profile. In H265 only the main profile is supported.

QP
Quantization in an encoder is controlled by a quantization parameter. It specifies how to generate the QP per coding unit (CU). Two modes are supported-

  • Uniform: All CUs of the slice using the same QP

  • Auto: VCU encoder changes the QP for each coding unit according to its content.

Rate Control
Constant bitrate (CBR), variable bitrate (VBR), and low-latency are supported. CBR mode generates a constant bit rate, which user can predefine. CBR is recommended for limited bandwidth use cases.

Bitrate
Encoding bit rate. In digital multimedia, bit rate often refers to the number of bits used per unit of playback time to represent a continuous medium such as audio or video after source coding (data compression).

B-frame
Short for bi-directional frame, or bi-directional predictive frame, a video compression method used by the MPEG standard. It ranges from 0 to 4.

Slice
The number of slices produced for each frame. Each slice contains one or more complete macroblock/CTU row(s). Slices are distributed over the frame as regularly as possible. If slice-size is defined as well more slices may be produced to fit the slice-size requirement
Range:
4-22 4Kp resolution with HEVC codec
4-32 4Kp resolution with AVC codec
4-32 1080p resolution with HEVC codec
4-32 1080p resolution with AVC codec

GoP Length
In video coding, a group of pictures, or GOP structure, specifies the order in which intra and inter-frames are arranged. And GOP-length is a length between two Intra frames. The GOP is a collection of successive pictures within a coded video stream. Each coded video stream consists of successive GOPs, from which the visible frames are generated. Its range is from 1 to 1000.

Filler Data
Filler Data NAL units for CBR rate control to maintain constant bitrate throughout the playback. It can be enabled or disabled. It is applicable to CBR mode only.

L2 Cache
Enable or Disable L2Cache buffer in the encoding process.

Latency Mode
Encoder latency mode. It can be normal or sub_frame mode.

Low Bandwidth
If enabled, decrease the vertical search range used for P-frame motion estimation to reduce the bandwidth.

Gop Mode
Group of Pictures mode. It can be Basic, low_delay_p, or low_delay_b.

Record
When the Output option is selected as Record, A tab will be enabled in settings window through which a user can record the video into the storage medium.

Storage
This option specifies a storage device for the recorded file. The list is dynamically populated based on mounted storage devices. Supported storage devices are SD, USB, and SATA.

Output File Name
Name of the output file. For H264, recorded file get saved as <Source name>_H264_rec_<timestamp>.ts and for H265 it will be <Source name>_H265_rec_<timestamp>.ts

Duration
This option will specify the Recording time duration. It ranges from 1-3 mins.

Due to speed and storage constraints, it is recommended to use USB/SATA storage devices for the record.

Stream-out
The stream-out panel allows the user to configure streaming parameters.

Stream-out Prerequisites when zcu106 board is connected to host machine:

  • Host server machine (with GPU) capable of playing 4Kp60 stream.

  • Setup an Ethernet connection between the ZCU106 board and the host machine. Ensure the connection is alive by doing a ping from the board to the host machine.

  • VLC player installed on the host machine.

  • A firewall is turned off on the host machine.

  • Start a VLC player on the host before streaming from GUI.

Sink
Provides sink option for the stream-out. It is set to PS Ethernet.

Host IP
The IP address of a computer or other Zynq® UltraScale+™ MPSoC board in which streaming video will be played on. It is set to 192.168.25.89 by default.

IP
This option will show the IP address of the board if the Ethernet link is up. If no Ethernet link is connected then it will show “Not Connected”.

Port
Port number of the Ethernet link. By default, it is set to 5004.

Steps for Stream Out
Here are the steps to get the ZCU106 TRD to play out to VLC:

  • Make sure that machine can play 4Kp60 streams and turned off the Firewall.

  • Connect PC to the ZCU106 board. It is recommended to a direct connection between the ZCU106 board and PC to minimize the network traffic.

  • Set the IP address for the ZCU106 board and PC to use the same subnet (i.e. ZCU106 - ifconfig eth0 192.168.25.90 and PC - 192.168.25.89).

  • Launch VLC on PC and Click on media → Open Network Stream and Enter Network URL (rtp://192.168.25.89:5004, rtp://@:5004) and click on Play.

  • Setup output option to “Stream” in the ZCU106 VCU TRD GUI.

  • Configure the Stream out settings and make sure that the ZCU106 VCU TRD GUI is pointing to the IP address of PC.

  • Select the HDMI-Rx/MIPI or the TPG as an input.

  • Press play in VLC on PC. (The Client must start first, but VLC may times out if waited too long before starting the ZCU106 VCU TRD Stream).

  • Press play on the ZCU106 VCU TRD GUI

Audio Settings
The Audio Settings panel allows the user to configure audio parameters.

The Audio Settings are only applicable in-case of VCU Multi-stream Audio design.

Enable Audio
Enable or Disable audio in a pipeline. It is set to false by default.

Source 
It can be HDMI or I2S

Render
It can be DP or I2S

Format
The format of the audio. It is set to S24_32LE by default.

Channel
The number of audio channels. It is set to 2 by default.

Sampling Rate
To set the audio sampling rate. It is set to 48000 by default.

Volume
To set the volume level. It is set to 2.0 by default.

To increase volume in DP use below command:
devmem 0XFD4AC000 32 0xffffffff

Stream-In
Stream-In panel allows the user to enter a network URL.

Stream-In Prerequisites when two ZCU106 boards are connected:

  • Setup an Ethernet connection between two ZCU106 boards. Ensure the connection is alive by doing a ping from one board to another board.

Uri
It provides the network URL to receive the network stream. As an e.g. udp://192.168.25.89:5004/.

Steps for Stream Out from one board and Stream In from another board

  • Connect the ZCU106 board to another ZCU106 board. It is recommended a direct connection between 2 ZCU106 boards to minimize the network traffic.

  • Set the IP address for both ZCU106 board such that both boards are in the same subnet (i.e. ZCU106 1st board - ifconfig eth0 192.168.25.90, ZCU106 2nd board - ifconfig eth0 192.168.25.89).

  • Make sure both boards are connected by ping command.

  • Setup output option to “Stream” in the 1st ZCU106 board from VCU TRD GUI.

  • Configure the Stream out settings in the 1st ZCU106 board from VCU TRD GUI and make sure that it is pointing to the IP address (192.168.25.89) of the 2nd board.

  • Setup an input option to “Stream In” in the 2nd ZCU106 board from VCU TRD GUI.

  • Enter the network URL (udp://192.168.25.89:5004/) in Stream In settings in the 2nd ZCU106 board from VCU TRD GUI

  • Press play on both the ZCU106 board from VCU TRD GUI.

It is recommended to use rev-1.0 or rev-F board.

2.2 GStreamer Application (vcu_gst_app)

The vcu_gst_app is a command-line multi-threaded Linux application that uses the vcu_gst_lib interface similar to vcu_qt. The command-line application requires an input configuration file (input.cfg) to be provided in the plain text. Refer to the Appendix A - Input Configuration File (input.cfg) for the file format and description.

Before the execution of vcu_gst_app, check the HDMI-Rx or SDI-Rx link status depending on the design. Refer to Appendix B for HDMI-Rx or SDI-Rx link-up issue.
Before the execution of vcu_gst_app, check the HDMI-Tx or SDI-Tx link and CRTC configurations depending on the design. Refer to Appendix B for the HDMI-Tx or SDI-Tx link-up issue.

Execution of the application is shown below:

vcu_gst_app <path to *.cfg file>

Required Storage medium SATA and USB are mounted at /media/sata and /media/usb respectively.

Example:

4kp60 HEVC_HIGH 60Mbps Display Pipeline execution

vcu_gst_app /media/card/config/1-4kp60/Display/Single_4kp60_HEVC_HIGH.cfg

4kp60 HEVC_HIGH 60Mbps Record Pipeline execution

vcu_gst_app /media/card/config/1-4kp60/Record/Single_4kp60_HEVC_HIGH.cfg

4kp60 HEVC_HIGH 60Mbps Stream-out Pipeline execution

vcu_gst_app /media/card/config/1-4kp60/Stream-out/Single_4kp60_HEVC_HIGH.cfg

4kp60 HEVC_HIGH 60Mbps Stream-in Pipeline execution

vcu_gst_app /media/card/config/1-4kp60/Stream-in/input.cfg

Make sure HDMI-Rx should be configured to 4kp60 mode and CRTC is configured to 4Kp60 resolution using 4Kp60 modetest command

To measure the latency of the pipeline, run the below command. The latency data is huge, so dump it to a file.

GST_DEBUG="GST_TRACER:7" GST_TRACERS="latency" GST_DEBUG_FILE=/run/latency.log vcu_gst_app /media/card/config/input.cfg

2.2.1 Multi-stream

When the number of input is more than one in the command line application, it is a multi-stream use case. The command-line application supports multi-streaming, multi-recording, or multi-display. The input source type can be HDMI, TPG and MIPI. The table below lists the multi-stream features supported in various designs.

Design

Input Source

Format

Resolution

VCU TRD Multi Stream Video Capture and Display

HDMI-Rx, MIPI, TPG

NV12

4kp60, 2-4kp30, 4-1080p60, 8-1080p30

Xilinx Low Latency PS DDR NV12 HDMI Audio Video Capture and HDMI Display

HDMI-Rx

NV12

4kp60, 2-4kp30, 4-1080p60 for encoder and 2-1080p60 for decoder

Xilinx Low Latency PL DDR HDMI Video Capture and HDMI Display

HDMI-Rx

NV16,

XV20

4kp60, 2-4kp30, 4-1080p60 for encoder and 2-1080p60 for decoder

Multi Stream Audio Video Capture and Display

HDMI-Rx, MIPI

NV12

4kp60, 2-4kp30, 2-1080p60

When using Low Latency mode (LLP1/LLP2), the encoder and decoder are limited by the number of internal cores. The encoder has a maximum of four streams and the decoder has a maximum of two streams.

Example:
2-4kp30 HEVC_MEDIUM 30Mbps Display Pipeline execution

vcu_gst_app /media/card/config/2-4kp30/Display/2_4kp30_HEVC_MEDIUM.cfg

Make sure HDMI-Rx is configured to 4kp30 mode.

4-1080p60 HEVC_15Mbps Display Pipeline execution

vcu_gst_app /media/card/config/4-1080p60/Display/4_1080p60_HEVC_15Mbps.cfg

Make sure HDMI-Rx is configured to 1920x1080p60 mode.


8-1080p30 HEVC_7.5Mbps Display Pipeline execution

vcu_gst_app /media/card/config/8-1080p30/Display/8_1080p30_HEVC_7_5Mbps.cfg

Make sure HDMI-Rx is configured to 1920x1080p30 mode and CRTC is configured to 4Kp30 resolution using 4Kp30 modetest command

2.2.2 Streaming

Streaming Prerequisites when 2 ZCU106 boards are connected

  • Setup an Ethernet connection between 2 ZCU106 boards. Ensure the connection is alive by doing a ping from one board to another board.

Steps for Streaming

  • Connect the ZCU106 board to another ZCU106 board. It is recommended a direct connection between 2 ZCU106 boards to minimize the network traffic.

  • Set the IP address for both ZCU106 board such that both boards are in the same subnet. i.e.

    • ZCU106 1st board - ifconfig eth0 192.168.25.90

    • ZCU106 2nd board -ifconfig eth0 192.168.25.89

  • Make sure both boards are connected by ping command.

  • Configure the Stream out (server) settings in input.cfg for the 1st board and make sure that it is pointing to the IP address of 2nd board (client) and Run vcu_gst_app for Stream out (server) pipeline.

vcu_gst_app < path to stream out config file >
  • Configure the Stream in (client) settings in input.cfg for 2nd board and Run vcu_gst_app for Stream in (client) pipeline.

vcu_gst_app < path to stream in config file >

Streaming Prerequisites when ZCU106 board is connected to host machine:

  • A host machine (with GPU) capable of playing 4Kp60 stream.

  • Setup an Ethernet connection between the ZCU106 board and the host machine. Ensure the connection is alive by doing a ping from the board to the host machine.

  • VLC player installed on the host machine.

  • A firewall is turned off on the host machine.

  • Start VLC player on the host before streaming.

Steps for Streaming

  • Make sure that machine can play 4Kp60/4Kp30 streams and turned off the Firewall.

  • Connect PC to the ZCU106 board. It is recommended to a direct connection between the ZCU106 board and PC to minimize the network traffic.

  • Set the IP address for the ZCU106 board and PC to use the same subnet (i.e. ZCU106 - ifconfig eth0 192.168.25.90 and PC - 192.168.25.89).

  • Make sure the ZCU106 board and host machine are connected by ping command.

  • Launch VLC on PC and Click on media → Open Network Stream and Enter Network URL (rtp://192.168.25.89:5004, rtp://@:5004) and click on Play.

  • Configure the Stream out (server) settings in input.cfg in the ZCU106 board and make sure that it is pointing to the IP address of the host machine (client) and Run vcu_gst_app for Stream out (server) pipeline.

vcu_gst_app < path to stream out config file >
  • Press the VLC player play button on PC. (The Client must start first, but VLC may times out if waited too long before starting the ZCU106 TRD Stream).

It is recommended to use rev-1.0 or rev-F board.

2.3 QoS Configuration

Check the Read QoS, Write QoS, Read Commands Issuing Capability and Write Commands Issuing Capability configuration of HP ports that interface VCU with PS DDR.

For VCU traffic, the QoS should be set as Best Effort (BE) and outstanding transaction count for read/write commands should be set to maximum i.e. 0xF for all AXI HP ports.

The AXI-QoS{3:0] lines behavior define three types of following Traffic in Decimal format on the AXI Bus.

Traffic Class

Read QoS Value (default)

Write QoS Value (default)

Best Effort (BE)

0-3

0-7

Video (V)

4-11

8-15

Low Latency (LL)

12-15

N/A

 Below is the reference QoS configuration script as per VCU recommendation.

#!/bin/bash /sbin/devmem 0xfd360008 w 0x3 #RDQoS for S_AXI_HPC0_FPD /sbin/devmem 0xfd370008 w 0x3 #RDQoS for S_AXI_HPC1_FPD /sbin/devmem 0xfd380008 w 0x3 #RDQoS for S_AXI_HP0_FPD /sbin/devmem 0xfd390008 w 0x3 #RDQoS for S_AXI_HP1_FPD /sbin/devmem 0xfd3a0008 w 0x3 #RDQoS for S_AXI_HP2_FPD /sbin/devmem 0xfd3b0008 w 0x3 #RDQoS for S_AXI_HP3_FPD /sbin/devmem 0xfd36001c w 0x3 #WRQoS for S_AXI_HPC0_FPD /sbin/devmem 0xfd37001c w 0x3 #WRQoS for S_AXI_HPC1_FPD /sbin/devmem 0xfd38001c w 0x3 #WRQoS for S_AXI_HP0_FPD /sbin/devmem 0xfd39001c w 0x3 #WRQoS for S_AXI_HP1_FPD /sbin/devmem 0xfd3a001c w 0x3 #WRQoS for S_AXI_HP2_FPD /sbin/devmem 0xfd3b001c w 0x3 #WRQoS for S_AXI_HP3_FPD /sbin/devmem 0xfd360004 w 0xF #RDISSUE for S_AXI_HPC0_FPD /sbin/devmem 0xfd370004 w 0xF #RDISSUE for S_AXI_HPC1_FPD /sbin/devmem 0xfd380004 w 0xF #RDISSUE for S_AXI_HP0_FPD /sbin/devmem 0xfd390004 w 0xF #RDISSUE for S_AXI_HP1_FPD /sbin/devmem 0xfd3A0004 w 0xF #RDISSUE for S_AXI_HP2_FPD /sbin/devmem 0xfd3B0004 w 0xF #RDISSUE for S_AXI_HP3_FPD /sbin/devmem 0xfd360018 w 0xF #WRISSUE for S_AXI_HPC0_FPD /sbin/devmem 0xfd370018 w 0xF #WRISSUE for S_AXI_HPC1_FPD /sbin/devmem 0xfd380018 w 0xF #WRISSUE for S_AXI_HP0_FPD /sbin/devmem 0xfd390018 w 0xF #WRISSUE for S_AXI_HP1_FPD /sbin/devmem 0xfd3A0018 w 0xF #WRISSUE for S_AXI_HP2_FPD /sbin/devmem 0xfd3B0018 w 0xF #WRISSUE for S_AXI_HP3_FPD

2.4 Mount Locations

The mount locations for various devices can be found in the below table.
The mount locations can vary.  Users can use lsblk or mount to find the location of the mounted devices.

Below are some example mount points

Device

Mount Location

Device

Mount Location

SD Card

/media/card

Sata Drive

/run/media/vcu-sda

USB Drive

/media/usb

RAM Disk

/run/media


3 Build Flow

The following tutorials assume that the $TRD_HOME environment variable is set as given below.

export TRD_HOME=</path/to/downloaded/zipfile>/rdf0428-zcu106-vcu-trd-2023-1

3.1 Hardware Design

Refer to the Vivado Design Suite User Guide: Using the Vivado IDE, UG893, for setting up the Vivado environment.

On Linux:

  1. Open a Linux terminal

  2. Change directory to $TRD_HOME/pl

  3. Run the following command in Vivado shell to create the Vivado IPI project and invoke the GUI.

vivado -source designs/<hardware design name>/project.tcl

The table below lists the available hardware designs and the script used to generate a hardware project. These can be found in the scripts folder in a package under pl/designs.

Design Module #

Design

Project

Hardware Design Name

1

VCU TRD Multi Stream Video Capture and Display

HDMI-Rx + VCU + HDMI-Tx
MIPI-Rx + VCU + HDMI-Tx
TPG + VCU + HDMI-Tx

zcu106_trd

2

PL DDR HLG SDI Audio Video Capture and Display

This Design Module is merged with Design Module #10. All functionality of this Design Module is now available with Design Module #13.

3

Multi Stream Audio Video Capture and Display

HDMI-Rx + VCU + HDMI-Tx + Audio
MIPI-Rx + VCU + HDMI-Tx + Audio
I2S-Rx + I2s-Tx

zcu106_audio

4

10G HDMI Video Capture and Display

This Design Module is discontinued in 2021.2 VCU TRD release.

5

PCIe Encode Decode and Transcode

This Design Module is discontinued in 2022.1 VCU TRD release.

6

PL DDR HDR10 HDMI Video Capture and Display

HDMI-Rx + VCU + HDMI-Tx + PL DDR

zcu106_HDR10_DCI4K

7

Xilinx Low Latency PS DDR NV12 HDMI Audio Video Capture and Display

HDMI-Rx + VCU + HDMI-Tx + Sync IP + Audio

zcu106_llp2_audio_nv12

8

Xilinx Low latency PL DDR NV16 HDMI Video Capture and Display

These two design modules are now merged as single design module #12 - Xilinx Low Latency PL DDR HDMI Video Capture and Display.

9

Xilinx Low latency PL DDR NV20 HDMI Video Capture and Display

10

Xilinx Low Latency PL DDR XV20 SDI Video Capture and Display

This Design Module is merged with Design Module #2. All functionality of this Design Module is now available with Design Module #13.

11

Quad Sensor MIPI CSI Video Capture and HDMI Display

This Design Module is been discontinued since 2021.1 VCU TRD release.

12

Xilinx Low Latency PL DDR HDMI Video Capture and Display

HDMI-Rx + VCU + HDMI-Tx + PL DDR + Sync IP

zcu106_llp2_xv20_nv16

13

Xilinx Low Latency PL DDR HLG SDI Audio Video Capture and Display

SDI-Rx + VCU + SDI-Tx+ PL DDR + Sync IP

zcu106_picxo_llp2_sdi

14

YUV444 Video Capture and Display

HDMI-Rx + VCU + HDMI-Tx/DP

zcu106_HDMI_YUV444

Select tcl script as mentioned in the above table for different hardware designs as e.g use below command for Full-Fledged VCU TRD hardware design.

vivado -source designs/zcu106_trd/project.tcl

After executing the script, the Vivado IPI block design comes up as shown in the below figure.

  • Click on “Generate Bitstream”.

If the user gets any pop-up with “No implementation Results available”. Click “Yes”. Then, if any pop-up comes up with “Launch runs”, Click "OK”.

The design is implemented and a pop-up window comes up saying “Open Implemented Design”. Click "OK".

After opening the implemented design, the window looks as shown in the below figure.

The actual results might graphically look different than the image shown

To generate the .xsa file.
Go to File > Export > Export Hardware

In the Export Hardware Platform window click Next.

 

In the next window, select Include bitstream and click Next.

The default XSA file name is <hardware design name_wrapper>. Choose the path where the XSA file has to be written.

for e.g  the XSA is created at $TRD_HOME/pl/build/zcu106_trd/zcu106_trd_wrapper.xsa for VCU TRD hardware design .

Click Finish for the XSA file to be generated.

3.2 VCU PetaLinux BSP

This tutorial shows how to build the Linux image and boot image using the PetaLinux build tool.
PetaLinux Installation: Refer to the PetaLinux Tools Documentation UG1144 for installation.
Kernel and DT Documentation: Refer to this article for Device Tree changes and Kernel patches required for ZCU106 VCU TRD BSP.

As per Kernel v6.1, 'data-lanes' property is must  for IMX274 MIPI Sensor's DT Node. It is already been taken care in all the TRD designs, which contains MIPI use-cases.
Refer to 2023.1 device-tree & kernel changes doc for more details.

It is recommended to follow the build steps in sequence.

source <path/to/petalinux-installer>/tool/petalinux-v2023.1-final/settings.sh echo $PETALINUX

Post PetaLinux installation $PETALINUX environment variable should be set

  • Create a PetaLinux project.

cd $TRD_HOME/apu/vcu_petalinux_bsp petalinux-create -t project -s xilinx-vcu-zcu106-v2023.1-final.bsp
  • Configure the PetaLinux project.

cd xilinx-vcu-zcu106-v2023.1-final petalinux-config --silentconfig --get-hw-description=<Path to prebuilt XSA>

Please note that, below config options are disabled in xilinx-vcu-zcu106-v2023.1-final/project-spec/configs/config for VCU TRD BSP

  • CONFIG_SUBSYSTEM_FPGA_MANAGER : It adds overlay dtb nodes, and overlay dtb nodes are not used in VCU TRD; so it is disabled

  • CONFIG_SUBSYSTEM_REMOVE_PL_DTB : PL IPs are used in VCU TRD designs, so keep it disabled to generate PL DTB nodes

The table below lists the available hardware designs and XSA file path. These can be found in the prebuild folder in the package under pl/prebuild.

Design Module #

Design

Project

XSA file path

1

VCU TRD Multi Stream Video Capture and Display

HDMI-Rx + VCU + HDMI-Tx
MIPI-Rx + VCU + HDMI-Tx
TPG + VCU + HDMI-Tx

zcu106_trd

2

PL DDR HLG SDI Audio Video Capture and Display

This Design Module is merged with Design Module #10. All functionality of this Design Module is now available with Design Module #13.

3

Multi Stream Audio Video Capture and Display

HDMI-Rx + VCU + HDMI-Tx + Audio
MIPI-Rx + VCU + HDMI-Tx + Audio
I2S-Rx + I2s-Tx

zcu106_audio

4

10G HDMI Video Capture and Display

This Design Module is discontinued in 2021.2 VCU TRD release.

5

PCIe Encode Decode and Transcode

This Design Module is discontinued in 2022.1 VCU TRD release.

6


PL DDR HDR10 HDMI Video Capture and Display

HDMI-Rx + VCU + HDMI-Tx + PL DDR v1

zcu106_HDR10_DCI4K

HDMI-Rx + VCU + HDMI-Tx + PL DDR v2

zcu106_HDR10_PLDDR_2_0

7

Xilinx Low Latency PS DDR NV12 HDMI Audio Video Capture and Display

HDMI-Rx + VCU + HDMI-Tx + Sync IP + Audio

zcu106_llp2_audio_nv12

8

Xilinx Low latency PL DDR NV16 HDMI Video Capture and Display

These two design modules are now merged as single design module #12 - Xilinx Low Latency PL DDR HDMI Video Capture and Display.

9

Xilinx Low latency PL DDR NV20 HDMI Video Capture and Display

10

Xilinx Low Latency PL DDR XV20 SDI Video Capture and Display

This Design Module is merged with Design Module #2. All functionality of this Design Module is now available with Design Module #13.

11

Quad Sensor MIPI CSI Video Capture and HDMI Display

This Design Module is been discontinued since 2021.1 VCU TRD release.

12

Xilinx Low Latency PL DDR HDMI Video Capture and Display

HDMI-Rx + VCU + HDMI-Tx + PL DDR + Sync IP

zcu106_llp2_xv20_nv16

13

Xilinx Low Latency PL DDR HLG SDI Audio Video Capture and Display

SDI-Rx + VCU + SDI-Tx+ PL DDR + Sync IP

zcu106_picxo_llp2_sdi

14

YUV444 Video Capture and Display

HDMI-Rx + VCU + HDMI-Tx/DP

zcu106_HDMI_YUV444

As an e.g use below command to configure the PetaLinux project for VCU TRD multi-stream design.

petalinux-config --silentconfig --get-hw-description=$TRD_HOME/pl/prebuild/zcu106_trd
  • If the Vivado project is modified, the user is expected to configure the bsp with the modified .xsa file and build.

petalinux-config --silentconfig --get-hw-description=<Path to modified .xsa file>
  • As an e.g If Vivado project is modified for VCU TRD multi-stream design then use below command to configure the bsp

petalinux-config --silentconfig --get-hw-description=$TRD_HOME/pl/build/zcu106_trd/
  • Create a soft link of design dtsi file to system-user.dtsi using below command

cd project-spec/meta-user/recipes-bsp/device-tree/files/ ln -sf <dtsi file name as per design> system-user.dtsi cd ../../../../../

The table below lists the available hardware designs and their dtsi.

Design Module #

Design

Project

dtsi

1

VCU TRD Multi Stream Video Capture and Display

HDMI-Rx + VCU + HDMI-Tx
MIPI-Rx + VCU + HDMI-Tx
TPG + VCU + HDMI-Tx

vcu_trd.dtsi

2

PL DDR HLG SDI Audio Video Capture and Display

This Design Module is merged with Design Module #10. All functionality of this Design Module is now available with Design Module #13.

3

Multi Stream Audio Video Capture and Display

HDMI-Rx + VCU + HDMI-Tx + Audio
MIPI-Rx + VCU + HDMI-Tx + Audio
I2S-Rx + I2s-Tx

vcu_audio.dtsi

4

10G HDMI Video Capture and Display

This Design Module is discontinued in 2021.2 VCU TRD release.

5

PCIe Encode Decode and Transcode

This Design Module is discontinued in 2022.1 VCU TRD release.

6

PL DDR HDR10 HDMI Video Capture and Display

HDMI-Rx + VCU + HDMI-Tx + PL DDR

vcu_plddr_hdr10_hdmi.dtsi

7

Xilinx Low Latency PS DDR NV12 HDMI Audio Video Capture and Display

HDMI-Rx + VCU + HDMI-Tx + Sync IP + Audio

vcu_llp2_psddr_hdmi.dtsi

8

Xilinx Low latency PL DDR NV16 HDMI Video Capture and Display

These two design modules are now merged as single design module #12 - Xilinx Low Latency PL DDR HDMI Video Capture and Display.

9

Xilinx Low latency PL DDR NV20 HDMI Video Capture and Display

10

Xilinx Low Latency PL DDR XV20 SDI Video Capture and Display

This Design Module is merged with Design Module #2. All functionality of this Design Module is now available with Design Module #13.

11

Quad Sensor MIPI CSI Video Capture and HDMI Display

This Design Module is been discontinued since 2021.1 VCU TRD release.

12

Xilinx Low Latency PL DDR HDMI Video Capture and Display

HDMI-Rx + VCU + HDMI-Tx + PL DDR + Sync IP

vcu_llp2_plddr_hdmi.dtsi

13

Xilinx Low Latency PL DDR HLG SDI Audio Video Capture and Display

SDI-Rx + VCU + SDI-Tx+ PL DDR + Sync IP

vcu_llp2_plddr_sdi.dtsi

14

YUV444 Video Capture and Display

HDMI-Rx + VCU + HDMI-Tx/DP

vcu_yuv444.dtsi

As an e.g use below command to create a soft link of design dtsi file to system-user.dtsi for VCU TRD design.

cd project-spec/meta-user/recipes-bsp/device-tree/files/ ln -sf vcu_trd.dtsi system-user.dtsi cd ../../../../../

Custom EDID Support
The TRD design is tested/validated with NVIDIA SHIELD Pro. To try with any new HDMI source, generate the EDID of the new source and update it in the TRD BSP. Refer to Custom EDID Support for adding the newly generated EDID file.

  • Build the PetaLinux project

For YUV444 Capture and Display design
The YUV444 capture and display design currently requires a separate VCU firmware needed to be install to prevent performance issues. To know detailed information, please check 2023.1 Zynq UltraScale+ MPSoC VCU - Why do I need to install separate VCU firmware to support YUV444?

The YUV444 pre-build images ($TRD_HOME/images/vcu_yuv444) contains VCU firmware for YUV444 in $TRD_HOME/images/vcu_yuv444/vcu/firmware directory, which will be loaded automatically on board start-up - so it is optional to perform this step, you are using YUV444 prebuild images artefacts (autostart.sh, vcu, config) along with the yuv444 petalinux build images generated by default VCU firmware.

However, if you want to include YUV444 firmware as a part of rootfs, then follow the build steps provided in above AR.

petalinux-build
  • Build SDK components to use it as sysroot for application development.

petalinux-build --sdk petalinux-package --sysroot
  • Create a boot image (BOOT.BIN) including FSBL, ATF, bitstream, and u-boot.

cd images/linux petalinux-package --boot --fsbl zynqmp_fsbl.elf --u-boot u-boot.elf --pmufw pmufw.elf --fpga system.bit
  • Copy the generated Boot and Linux images to the respective pre-build images path ($TRD_HOME/images/).

cp BOOT.BIN system.dtb Image rootfs.cpio.gz.u-boot boot.scr $TRD_HOME/images/<Path to Design images>

The table below lists the available hardware design and its pre-build images path. These can be found in the package under "images".

Design Module #

Design

Project

Image Path

1

VCU TRD Multi Stream Video Capture and Display

HDMI-Rx + VCU + HDMI-Tx
MIPI-Rx + VCU + HDMI-Tx
TPG + VCU + HDMI-Tx

vcu_multistream_nv12

2

PL DDR HLG SDI Audio Video Capture and Display

This Design Module is merged with Design Module #10. All functionality of this Design Module is now available with Design Module #13.

3

Multi Stream Audio Video Capture and Display

HDMI-Rx + VCU + HDMI-Tx + Audio
MIPI-Rx + VCU + HDMI-Tx + Audio
I2S-Rx + I2s-Tx

vcu_audio

4

10G HDMI Video Capture and Display

This Design Module is discontinued in 2021.2 VCU TRD release.

5

PCIe Encode Decode and Transcode

This Design Module is discontinued in 2022.1 VCU TRD release.

6

PL DDR HDR10 HDMI Video Capture and Display

HDMI-Rx + VCU + HDMI-Tx + PL DDR v1

vcu_plddrv1_hdr10_hdmi

HDMI-Rx + VCU + HDMI-Tx + PL DDR v2

vcu_plddrv2_hdr10_hdmi

7

Xilinx Low Latency PS DDR NV12 HDMI Audio Video Capture and Display

HDMI-Rx + VCU + HDMI-Tx + Sync IP + Audio

vcu_llp2_hdmi_nv12

8

Xilinx Low latency PL DDR NV16 HDMI Video Capture and Display

These two design modules are now merged as single design module #12 - Xilinx Low Latency PL DDR HDMI Video Capture and Display.

9

Xilinx Low latency PL DDR NV20 HDMI Video Capture and Display

10

Xilinx Low Latency PL DDR XV20 SDI Video Capture and Display

This Design Module is merged with Design Module #2. All functionality of this Design Module is now available with Design Module #13.

11

Quad Sensor MIPI CSI Video Capture and HDMI Display

This Design Module is been discontinued since 2021.1 VCU TRD release.

12

Xilinx Low Latency PL DDR HDMI Video Capture and Display

HDMI-Rx + VCU + HDMI-Tx + PL DDR + Sync IP

vcu_llp2_plddr_hdmi

13

Xilinx Low Latency PL DDR HLG SDI Audio Video Capture and Display

SDI-Rx + VCU + SDI-Tx+ PL DDR + Sync IP

vcu_llp2_hlg_sdi

14

YUV444 Video Capture and Display

HDMI-Rx + VCU + HDMI-Tx/DP

vcu_yuv444

As an e.g If images are generated for VCU TRD design then use below command to copy the generated images to prebuild VCU TRD images directory.

cp BOOT.BIN system.dtb Image rootfs.cpio.gz.u-boot boot.scr $TRD_HOME/images/vcu_trd/

It is highly recommended to follow the build steps in sequence.

3.3 VCU GST APP

vcu_gst_app and supporting library will be built as a vcu-gst-app recipe inside petalinux-project. Refer project-spec/meta-user/recipes-apps/vcu-gst-app directory inside petalinux project for vcu-gst-app recipe. Source of vcu_apm_lib, vcu_video_lib, vcu_gst_lib and vcu_gst_app is provided as zip inside project-spec/meta-user/recipes-apps/vcu-gst-app/files/ directory. vcu_gst_app will be built as part of petalinux project and the executable is placed in /usr/bin location of rootfs. User can update the zip file if any source code modifications need to be and run following command to build vcu-gst-app recipe.

petalinux-build -c vcu-gst-app

3.4 VCU QT APP

Similarly vcu_qt application will also be built as a vcu-qt recipe inside petalinux-project. Refer project-spec/meta-user/recipes-apps/vcu-qt directory inside petalinux project for vcu-qt recipe. Source of vcu_qt application is provided as zip inside project-spec/meta-user/recipes-apps/vcu-qt/files/ directory. vcu_qt and supporting scripts will be placed at /opt/vcu_qt/bin location in rootfs. One can update the zip and run following command to build vcu-qt recipe. 

petalinux-build -c vcu-qt

4 Appendix A - Input Configuration File (input.cfg)

Refer to the Appendix links below for the Input configuration parameters description of respective design module:


5 Appendix B - Rx/Tx Link-up and GStreamer Commands

This Appendix-B section of each design module contains sample GStreamer pipelines for each relevant use-cases that individual design supports. In addition, it also covers configuration of HDMI-Rx using media-ctl utility and HDMI-Tx using modetest utility along with demonstrating HDMI-Rx/Tx link-up issues and steps to switch HDMI-Rx resolution. To get more information, refer to the Appendix links below for the respective design module:

 

© Copyright 2019 - 2022 Xilinx Inc. Privacy Policy