Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
learn:programmable-logic:tutorials:nexys-video-hdmi-demo:start [2017/05/02 19:27] – [Downloads] Updated ZIP link for release 2016.4-1 Arthur Brown | learn:programmable-logic:tutorials:nexys-video-hdmi-demo:start [2017/10/24 22:36] (current) – Arthur Brown | ||
---|---|---|---|
Line 3: | Line 3: | ||
FIXME (Insert flowchart of display buffers here) | FIXME (Insert flowchart of display buffers here) | ||
- | |||
===== Overview ===== | ===== Overview ===== | ||
- | ==== Features Used ==== | + | ==== Description |
+ | |||
+ | The Nexys Video HDMI Demo project demonstrates usage of the Nexys Video' | ||
+ | . 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. | ||
+ | ==== Features Used ==== | ||
| ^ Not Used ^ Used ^ | | ^ Not Used ^ Used ^ | ||
Line 29: | Line 40: | ||
^ USB HID Host | ^ USB HID Host | ||
+ | ------- | ||
- | |||
- | ==== Description ==== | ||
- | |||
- | The Nexys Video HDMI Demo project demonstrates usage of the Nexys Video' | ||
- | . 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 ===== | ===== Prerequisites ===== | ||
Line 55: | Line 51: | ||
* **2 Micro-USB cables** | * **2 Micro-USB cables** | ||
* **Nexys Video Power Supply** | * **Nexys Video Power Supply** | ||
+ | * **2 HDMI cables** | ||
+ | * **HDMI compatible Monitor** | ||
===Software=== | ===Software=== | ||
Line 70: | Line 68: | ||
===== Downloads ===== | ===== Downloads ===== | ||
- | Nexys Video HDMI Demo Repository -- [[https:// | + | Nexys Video HDMI Demo Repository -- [[https:// |
------ | ------ | ||
- | ===== How to... ===== | ||
- | ==== 1. Download the Project | + | ===== Download |
- | >1.1) Download | + | >Follow |
- | >1.2) If you want to generate | + | >Plug one end of one of your HDMI cable into your monitor and the other into the Nexys Video' |
- | ==== 2. Generate the Project ==== | + | <WRAP round tip 660px> |
- | >2.1) If not already installed, install the Vivado Board File for the Nexys Video by following this guide: [[vivado: | + | === Tip === |
+ | Your cables do not need to be HDMI-HDMI cables, HDMI-DVI or any number of other passive adaptors will work just fine. | ||
+ | </ | ||
- | >2.2) Generate | + | >To see the UART communication channel, open a terminal program |
- | + | ||
- | ==== 3. Build the Project ==== | + | |
- | + | ||
- | >3.1) Click **Generate Bitstream** | + | |
- | > | + | |
- | >Note: If you want, you can click each step by itself in the order of **Run Synthesis**, **Run Implementation** and then **Generate Bitstream**. | + | |
> | > | ||
- | >{{:basys3:buildflow.png?600|}} | + | >{{:learn:programmable-logic: |
+ | ===== Using the Nexys Video HDMI Demo ===== | ||
- | ==== 4. Export to SDK ==== | + | ==== View the Menu ==== |
- | >4.1) Export | + | >With the UART communication channel set up, when the program starts up you should |
> | > | ||
- | >4.2) Skip to step 6. | + | >{{: |
- | ==== 5. Open Xilinx SDK and create a workspace | + | ==== Option 1. Change the Display Resolution |
- | >5.1) Open up Xilinx SDK 2016.4 and create a workspace where your project will be saved. | + | >The output resolution is changed independently from the input resolution. You can choose the output resolution in this menu. |
> | > | ||
- | >{{:genesys2:1.jpg?500|}} | + | >{{:learn:programmable-logic: |
- | ==== 6. Import | + | ==== Option 2. Change |
- | >6.1) In your project Explorer window on the left side, click **File-> | + | >Selecting option 2 will cycle between |
- | > | + | |
- | > | + | |
- | >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. | + | ==== Options |
- | > | + | |
- | > | + | |
- | >6.3) Import | + | >Selecting these will print a test pattern on the selected input video frame buffer. |
> | > | ||
- | >{{:genesys2:4.jpg?500|}} | + | >{{:learn:programmable-logic: |
- | + | ||
- | ==== 7. Program the FPGA ==== | + | |
- | + | ||
- | >7.1) Click **Xilinx Tools-> | + | |
> | > | ||
- | >{{:genesys2:5.jpg?500|}} | + | >{{:learn:programmable-logic: |
- | ==== 8. Program the Microblaze processor | + | ==== Option 5. Start/Stop Video Stream |
- | >8.1) Right click on the **demo** folder and click **Run as-> | + | >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. Run the Project | + | ==== Option 6. Change Video Frame Buffer |
- | **NOTE: | + | >This option will change |
- | This portion will help you run the demo and observe all its features. | + | ==== Option 7. Grab Video Frame and Invert Colors ==== |
- | >9.1) View the Menu | + | >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. |
> | > | ||
- | >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 | + | ==== Option |
- | > | + | |
- | >The output resolution is changed independently from the input resolution. You can choose the output resolution in this menu. | + | |
- | > | + | |
- | > | + | |
- | >9.3) Change | + | >This option will grab the current |
> | > | ||
- | >Selecting option 2 will cycle between the 3 frame buffers to output to the monitor. | + | >{{: |
- | >9.4) Print test patterns (Option 3 and 4) | + | <WRAP round important 660px> |
- | > | + | === Important === |
- | > | + | The scaling function was designed for the Zynq processor. In its current state, this function runs **very** slowly on the Nexys Video. |
- | + | </WRAP> | |
- | >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. | + | |
- | {{tag> | + | {{tag> |