HDMI FrameBuffer Example Design 2018.3


Table of Contents

1 Overview


The Zynq UltraScale+ MPSOC HDMI (High-bandwidth Digital Multimedia Interface) Example design is an embedded video application running on APU and PL, to showcase the connectivity solution under Linux with the optional HDCP (High-bandwidth Digital Content Protection) feature.

The design demonstrates the capture and display capability of HDMI interface implemented in PL enabling user to get the video data in and out of the FPGA with relative ease and the use of HDCP Revision 1.4/2.2 to securely send audio-visual data from/to an HDCP protected source/sink. Typically HDCP 2.2 is used to encrypt content at Ultra High Definition (UHD) while HDCP 1.4 is used as a legacy encryption scheme for lower resolutions.


2 Software Tools and System Requirements


2.1 Hardware


Required:

2.2 Software


Required:


2.3 Licensing


Steps to generate the license:
  1. Log in here with your work E-mail address (If you do not yet have an account, follow the steps under Create Account)
  2. Generate a license from “Create New Licenses” by checking "Vivado Design Suite, 30 Day Evaluation License"

  1. Under system information, give the host details.
  2. Proceed until you get the license agreement and accept it.
  3. The License (.lic file) will be sent to the email-id mentioned in the login details.
  4. Copy the license file locally and give the same path in the SDSoC license manager.

3 Design


3.1 Hardware


2 reference designs are available with different IP configuration to demonstrate the targeted features

The example design is built around the HDMI 1.4/2.0 Transmitter Subsystem (HDMI_TX_SS), HDMI 1.4/2.0 Receiver Subsystem (HDMI_RX_SS), Video PHY (VPHY) Controller core and leverages existing Xilinx IP cores to form the complete system. The VPHY Controller core has been configured for the HDMI application that allows transmission and reception of HDMI video/audio to and from the on-board HDMI 2.0 circuitry.



In pass-through mode, the VPHY Controller core recovers the high-speed serial video stream, converts it to parallel data stream, forwards it to the HDMI_RX_SS core, which extracts the video from the HDMI stream and converts it into AXI stream. The AXI video is connected to the Frame Buffer Write IP that writes this data into the DDR in the user specified memory format. On the display side, Frame Buffer Read IP reads the data from DDR and sends it to the HDMI_TX_SS core, which converts the AXI video back to an HDMI stream before being transmitted by the VPHY Controller core as a high-speed serial data stream.

3.2 Software Application


HDMI Pass-through application aka video_cmd is a user space application provided to demonstrate the end-to-end capture to display pipeline. No video processing is performed on the frames stored in memory. During initialization, video_cmd can detect a video source that is plugged into the RX port and then comes up in pass-through mode. If video_cmd does not find any source, it comes up in TPG mode and starts streaming SMPTE colorbars (generated by the open source modetest utility integrated into the software application) . video_cmd can also detect any change in the input like video source hot-plug, video source disconnect, resolution change, color format change, user input etc. and adapts accordingly.

If the user is running this app on a design that supports HDCP, the application expects the production HDCP keys to be available on the EEPROM (refer HDMI IP product guide pg235/236 for details) and prompts the user to enter the password during initialization. If the user enters correct password, the application retrieves HDCP keys from the EEPROM and loads them into the IP and enables the HDCP feature. 3 attempts are provided to enter correct password, failing which causes the application to start with HDCP feature disabled.

video_cmd is an interactive tool where the user can choose the action from following menu:

---------------------
--- MAIN MENU ---
---------------------
i - Info
=> Displays HDMI info.
h - HDCP Info
=> Displays HDCP info.
d - Display Logs
=> Display HDMI and HDCP logs.
c - Colorbar
=> Displays the colorbar on the source output.
r - Resolution
=> Change the video resolution of the testpattern.
f - Pixel-Format
=> Change the pixel-format of the testpattern.
p - Pass-through
=> Passes the HDMI sink input to source output.
t - Tiles-pattern
=> Displays a tile-pattern on the source output.
e - EDID
=> Display and set edid.
99 - Exit
 


3.3 Design Components


The top-level directory structure shows the major design components. A pre-built SD card image is provided along with a basic README and legal notice file
zcu102_hdmi_10b_hdcp_exdes_2018_3
|---- apu
|     |---- hdmi_passthrough_app
|     |           |---- modetest
|     |           |---- video_lib
|     |---- petalinux_bsp
|
|---- images
|
|---- pl
      |---- design
      |---- imports
 

The below figure shows the relevant design components as well as inter-dependencies and generated output products






4 Tutorials


4.1 Board Setup


Required:

Jumpers & Switches:


To run the pre-built SD card image for the design follow the instructions here.

4.2 Build and Run Flow


The following tutorials assume that the $HDMI_HOME environment variable has been set as below

% export HDMI_HOME=<path/to/downloaded/zip-file>/zcu102_hdmi_<n>b_[hdcp]_exdes_2018_3/
 

4.2.1 Hardware


Vivado TCL scripts are included in the archive file that enables the user to create the HDMI hardware design from scratch. To execute the script make sure the vivado 2018.3 tools is available and has been sourced in the shell
% cd $HDMI_HOME/pl
% vivado -s ./design/setup.tcl
 

This will open the Vivado GUI and generate the hardware design.
% cp hdmi_project/hdmi_example_zcu102.sdk/hdmi_example_zcu102_wrapper.hdf $HDMI_HOME/apu/petalinux_bsp/project-spec/hw-description/system.hdf
 

4.2.2 PetaLinux BSP


This tutorial shows how to build the Linux image and boot image using the PetaLinux build tool
% cd $HDMI_HOME/apu/petalinux_bsp
% petalinux-build
 
% cd images/linux
% petalinux-package --boot --fpga system.bit --fsbl zynqmp_fsbl.elf --pmufw pmufw.elf --u-boot
 
% cp BOOT.BIN image.ub $HDMI_HOME/images
 

4.2.3 Software Application


HDMI Pass-through application is an user space application that implements and manages the video pipeline (capture to display) and dynamically responds to changes in the input to adapt the output accordingly.

To compile this application, refer the instructions provided in the README.md file available in apu/hdmi_passthrough_app folder
% cp video_cmd $HDMI_HOME/images
 

Run Flow Tutorial





5 Other Information


5.1 Known Issues


5.2 Limitations




6 Support


To obtain technical support for this reference design, go to the:

Related Links