This is an old revision of the document!


Nexys Video HDMI Demo

FIXME (Insert flowchart of display buffers here)

Overview

Features Used

Not Used Used
8 user switches X
8 user LEDs X
128×32 monochrome OLED display X
USB-UART Bridge X
160-pin FMC LPC connector X
Micro SD card connector X
HDMI Sink and HDMI Source X
DisplayPort Source X
Audio codec w/ four 3.5mm jacks X
6 user push buttons X
User EEPROM X
10/100/1000 Ethernet PHY X
512MiB 800Mt/s DDR3 Memory X
Serial Flash X
Four Pmod ports X
Pmod for XADC signals X
USB HID Host X

Description

The Nexys Video HDMI Demo project demonstrates usage of the Nexys Video's HDMI in and HDMI out ports. . The behavior is as follows:

  • A menu is displayed over UART at 115200 baud.
  • There are 3 video buffers that can hold video data, as well as an input pointer and an output pointer.
  • The input pointer chooses which display buffer to write to (Test pattern or input stream from HDMI in).
  • The output pointer chooses which display buffer to display through the HDMI out port.
  • The output resolution is controlled independent from the input data. This output resolution can be changed using the menu.

NOTE: The drawing functions (Functions 3, 4, 7, and 8) were designed for the Zynq processor. In its current state, these functions run VERY slowly on the Microblaze processor, so it is advised not to use these functions for the time being. It is possible that the floating point calculations are slowing these functions down. This should be fixed in a later release.


Prerequisites

Skills

  • Basic familiarity with SDK

Hardware

  • Nexys Video FPGA board
  • 2 Micro-USB cables
  • Nexys Video Power Supply

Software

  • Vivado Design Suite 2015.3
    • The project must be generated in 2015.3
  • Xilinx SDK 2015.3
    • Newer/older versions can be used, but the procedure may vary slightly

Board Support Files

  • Nexys Video Support Files

Downloads

Nexys Video Support Repository – ZIP GIT Repo


How to...

1. Download the Project

1.1) Download the project zip file which can be downloaded here. Once you have downloaded the project, unzip it in the location of your choosing.
1.2) If you want to generate the project in Vivado, continue to step 2. If you want to move straight to Xilinx SDK, skip to step 5.

2. Generate the Project

2.1) If not already installed, install the Vivado Board Files for the Nexys Video by following this guide: Installing Vivado Board Files for Digilent Boards.
2.2) Generate the hdmi project in the Projects folder by following this guide before continuing: How to Generate a Project from Digilent's Github. NOTE: This must be done in Vivado 2015.3

3. Build the Project

3.1) Click Generate Bitstream on the left hand menu towards the bottom. Vivado will run through both Run Synthesis and Run Implementation before it generates the bitstream automatically.

Note: If you want, you can click each step by itself in the order of Run Synthesis, Run Implementation and then Generate Bitstream.

4. Export to SDK

4.1) Export the microblaze project by going to File→Export→Export Hardware. Click the check box to Include the bitstream, and export it local to project. This will create a .sdk folder in your project directory. Afterwards, click File→Launch SDK. Both the exported location and workspace should be left as <Local to Project>. Click “OK” to launch Xilinx SDK.

4.2) Skip to step 6.

5. Open Xilinx SDK and create a workspace

5.1) Open up Xilinx SDK 2015.3 and create a workspace where your project will be saved.

6. Import the SDK files

6.1) In your project Explorer window on the left side, click File→Import, then under the general folder, select Existing projects. (Or just click Import Project on the main screen).

6.2) Navigate to where you saved the downloaded project, select the sdk folder, and click OK. In the Import window, click Finish to import the system hardware wrapper.

6.3) Import the projects by clicking Finish. You can ignore the warnings that may pop up.

7. Program the FPGA

7.1) Click Xilinx Tools→Program FPGA and click Program. Xilinx SDK will then program the FPGA with a microblaze bit file.

8. Program the Microblaze processor

8.1) Right click on the demo folder and click Run as→Launch on Hardware(GDB). The microblaze program will be programmed onto your Nexys Video.

9. Run the Project

NOTE:The scaling function (Functions 8) was designed for the Zynq processor. In its current state, this function run VERY slowly on the Microblaze processor, so it is advised not to use these functions for the time being. This should be fixed in a later release.

This portion will help you run the demo and observe all its features.

9.1) View the Menu

Open a serial monitor (Tera Term, etc.) and configure it to work with a baud rate of 115200. When the program starts up you should see the following menu.

9.2) Change the display resolution (Option 1)

The output resolution is changed independently from the input resolution. You can choose the output resolution in this menu.

9.3) Change the frame buffer index (Option 2)

Selecting option 2 will cycle between the 3 frame buffers to output to the monitor.
9.4) Print test patterns (Option 3 and 4)

Selecting these will print a test pattern on the selected input video frame buffer.
9.5) Start/Stop Video Stream (Option 5)

This option will start or stop the video data stream from the HDMI input. When streaming, the HDMI input data will be displayed on the current video frame buffer.
9.6) Change Video Frame Buffer (Option 6)

This option will change the buffer that video input will stream into.
9.7) Grab Video Frame and invert colors (Option 7)

This option will grab the current frame from the HDMI input and invert the colors. The inverted frame will be output on the following display buffer.
9.8) Grab Video Frame and Scale to Display resolution (Option 8)

Note: This will run very slowly on the Nexys Video.
This option will grab the current frame from the HDMI input and scale it to the current output resolution.