HDMI FrameBuffer Example Design 2017.3

This example design requires the 2017.3 Vivado version and the version V3 of the HDMI IP's

Table of Contents

1 Revision History
Change Log
2 Overview
3 Software Tools and System Requirments
3.1 Hardware
3.2 Software
3.3 Licensing
4 Design
4.1 Hardware
4.2 Software Application
4.3 Design Components
5 Tutorials
5.1 Board Setup
5.2 Build and Run Flow
5.2.1 Hardware
5.2.2 PetaLinux BSP
5.2.3 Software Application
Run Flow Tutorial
6 Other Information
6.1 Known Issues
6.2 Limitations
7 Support
Related Links

1 Revision History


Change Log


rev1:

2 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.

3 Software Tools and System Requirments


3.1 Hardware


Required:

3.2 Software


Required:

3.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.

4 Design


4.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 streams, forwards it to the HDMI_RX_SS core, which extracts the video from the HDMI stream and converts it to 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.
Note: Only HDMI IP version v3 is supported
  1. Note: Default/Released IP version in 2017.3 Vivado catalog is v2. v3, which is a HW cost optimized, is released as a hidden core in the catalog and will be officially released in 2018.1
  2. Below are the properties that must be modified to pull-in v3 version of the IP's
    1. Hdmi_rx_ss: C_HDMI_VERSION 3
    2. Hdmi_tx_ss: C_HDMI_VERSION 3
    3. Vid_Phy: C_INT_HDMI_VER_CMPTBLE 3

4.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
 


4.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_fb_10b_exdes_2017.3
|---- apu
|     |---- hdmi_passthrough_app
|     |          |---- modetest
|     |          |---- video_lib
|     |---- petalinux_bsp
|
|---- images
|
|---- pl
      |---- design
      |---- imports
      |---- repos
 
 

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




5 Tutorials


5.1 Board Setup


Required:

Jumpers & Switches:


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

5.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_2017_3/
 

5.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 2017.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

5.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/petalinx_bsp
 
% petalinux-build
% cd images/linux
% petalinux-package --boot --fpga hdmi_example_zcu102_wrapper.bit --fsbl zynqmp_fsbl.elf --pmufw pmufw.elf --u-boot
 
% cp BOOT.BIN image.ub $HDMI_HOME/images

5.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, use the provided build.sh script. It sets several environmental variables like PATH, PKG_CONFIG_LIBDIR and PKG_CONFIG_SYSROOT_DIR and then invokes the build procedure and generates video_cmd binary. Before executing this script, make sure you have sourced Petalinux 2017.3 environment. There is more information in the readme.md in the hdmi_passthrough_app folder.

% ln -sf /tmp/$USER/zcu102_hdmi_8b_exdes_2017_3 build/tmp
% cd ../hdmi_passthrough_app
% ./build.sh
% cp video_cmd $HDMI_HOME/images

Run Flow Tutorial





6 Other Information


6.1 Known Issues


6.2 Limitations



7 Support


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

Related Links