This is an old revision of the document!
Nexys Video HDMI Demo
(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
- These files will describe GPIO interfaces on your board and make it easier to select your FPGA board and add GPIO IP blocks.
- Follow the Wiki guide: Vivado Board Files for Digilent 7-Series FPGA Boards on how to install Board Support Files for Vivado.
Downloads
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
6. Import the SDK files
7. Program the FPGA
8. Program the Microblaze processor
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.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.










