HDMI in to HDMI out on a ZYNQ based platform.

HDMI demonstration on the EMC2 development platform from Sundance controlled over Ethernet.

Similar projects worth following
The demonstration runs on a stand-alone EMC² Development Platform PCIe/104 OneBank™ board with dual ARM9 CPU, a reconfigurable FPGA Logic and an interface to CPU specific I/O features.
In this system, the EMC² Development Platform is controlled by a Graphical User Interface host application over an Ethernet connection for live video. The Ethernet interface is made available on an add-on board called SEIC (Sundance External Interface Connector ).
The purpose of this demo is to allow real-life data, in this case a video-stream from a HDMI Output to be loaded into the Zynq’s DDR memory and then displayed again on a second HDMI-Input device (typically a monitor). In this example, a Xilinx 32-bit MicroBlaze CPU controls the transfer of data between the HDMI input, the DDR3 memory and the HDMI output.
In this demonstration, a VITA57.1 FMC® compatible Daughter Card is plugged to the EMC²-DP to provide HDMI input/output capabilities.

The input video is stored to DDR3 memory and the output video is read from DDR3 memory. A MicroBlaze 32-bit soft-core processor is implemented in the Zynq PL to control the HDMI interface to have access to the DDR3 memory and the video data for processing.

The data are stored in the DDR memory in 3 buffers arranged in a circular manner.

The input and output HDMI rate are identical.

The memory read and write are alternated to provide data for HDMI output while storing the HDMI input data. The memory read is performed ahead of the memory write.

The GUI host application controls the EMC²-DP via the 1GB Ethernet port using a write/read API. The Ethernet link is used to communicate with the ARM processor core running Linux that, in turn, communicates with the MicroBlaze processor to configure the system and drive its memory accesses remotely.

The host application can also provide any data to write to memory to be processed and then read it back.

For example, it can load a picture to display on the HDMI output and read a picture captured on the HDMI input.

A UDP server runs in Linux on the PS and the host application runs the UDP client. The MicroBlaze controls the VDMA IP core to perform the read and write operations requested by the host. The EMC²-DP boots from SD card so the application code runs at power up and could be used to configure the system from Ethernet.

From the graphic interface, the control commands can be sent manually. But more efficiently, the host application can load a set of commands from an xml file and send it to the system. Typically, a set of commands will be:

  • Read from memory (with the option to display data in the GUI and/ or save it to a file),
  • write to memory (the data can be manually entered or come from a file),
  • Sleep.

An XML command file can also be created or modified from the graphic interface.

The use of XML files facilitates the system configuration but also makes it easier and quicker to repeat operations like running full system tests. Therefore, the system is very flexible and can be controlled remotely using the Ethernet port.

System Data Flows

The embedded system operates under the control of a windows GUI by sending commands to start the acquisition on the HDMI input and display data on the HDMI output.

Thus this system consists of 4 main software/firmware parts:

  • The firmware for the Zynq PL (Programmable Logic)
  • The UDP server on the Zynq PS (Processing System)
  • The Petalinux project to run Linux on the Zynq.
  • The UDP client in shape of a GUI in Windows.

Product Specification.pdf

Details about the demo and how to build it and run it.

Adobe Portable Document Format - 3.76 MB - 07/05/2016 at 11:50


  • 1 × EMC2 Development Platform from Sundance
  • 1 × VITA 57.1 FMC-IMAGEON from Avnet
  • 1 × Trenz Electronic TE0715 (Z-7015)

  • 1
    Step 1

    Running the demo

    1 Hardware

    1.1 Hardware requirement

    For the demo you will need

    • an EMC² board with a SEIC and a FMC Imageon board,
    • a HDMI screen
    • a computer running Windows 8
    • cables: power, Ethernet, mini USB to USB, 2x HDMI.

    1.2 Hardware setup

    Figure 1: Hardware setup

    1. Connect the power cable to the EMC² board but don’t switch the power on for now.
    2. Connect the USB cable between the EMC² board and the computer.
    3. Connect the Ethernet cable between the EMC² board and the computer.
    4. On the computer go to: “Control panel” -> “Network and sharing centre” ->”Change adapter settings” - > “Ethernet” -> “Properties” -> “Internet Protocol 4” and change the IP address to “”.
    5. Connect the computer screen to the HDMI in on the FMC board and the other monitor to the HDMI out on the FMC board.

    2 Software

    1. Copy to the micro SD card (previously formatted as explained here: the files:image.ub , BOOT.bin and UDP_Server.elf from the “bin/SD” folder.Note that the “V1” folder contains the files for the EMC²_DP version 1, the “V2” folder the files for the EMC²-DP version 2 and the folder “auto-init” the files where the HDMI input and output are configured at boot up.
    2. Insert the micro SD card and switch the power on to boot the EMC² board.
    3. Open a serial console (for example Putty) with the following settings:Speed: 115200Data bits: 8Stop bits: 1
      Parity: NoneFlow control: None

    Figure 2: Serial console settings

    In the serial console, log on in Linux with the following credentials:Name: rootPassword: root

    1. In the serial console type the following to run the UDP server:>>mount /dev/mmcblk0p1 /mnt>>cd /mnt>>./UDP_Server.elf

    Figure 3: UDP client running

    1. On the computer open the UDP client “bin/SmtUDPClient/SmtUDPClient.exe”

    Figure 4: UDP server running

    1. In the GUI go to “File” -> “Load file” and browse to the file bin/SmtUDPClient/RunTest.xml
    2. Press the button “Send All”. A series of test should be performed. Including HDMI input displayed on the HDMI output, also colour written in DDR through Ethernet being displayed on the HDMI out screen. The video output resolution is set at 1280x720.

    Figure : Demo running Note: The file commands.xml can be used to display in the UDP client a set of commands to send to the MicroBlaze. For example, commands to rea

View all instructions

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates