Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next 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 Brownlearn: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'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.
  
 +==== Features Used ====
  
 |                                  ^ Not Used  ^ Used  ^ |                                  ^ Not Used  ^ Used  ^
Line 29: Line 40:
 ^ USB HID Host                        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 ===== ===== 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://github.com/Digilent/Nexys-Video-HDMI/releases/download/v2016.4-1/Nexys-Video-HDMI-2016.4-1.zip|ZIP]] [[https://github.com/Digilent/Nexys-Video-HDMI|GIT Repo]] +Nexys Video HDMI Demo Repository -- [[https://github.com/Digilent/Nexys-Video-HDMI/releases/download/v2016.4-2/Nexys-Video-HDMI-2016.4-2.zip|ZIP]] [[https://github.com/Digilent/Nexys-Video-HDMI|GIT Repo]]
  
 ------ ------
-===== How to... ===== 
  
-==== 1. Download the Project ====+====Download and Launch the Nexys Video HDMI Demo =====
  
->1.1) Download the project zip file which can be downloaded {{https://github.com/Digilent/Nexys-Video-HDMI/archive/master.zip|here}}Once you have downloaded the projectunzip it in the location of your choosing.+>Follow the [[:learn:programmable-logic:tutorials:github-demos:start:|Using Digilent Github Demo Projects]] TutorialSince this is a Vivado SDK Project, you can either directly launch SDK and import the hardware handoffor you can generate a bitstream in Vivado before launching SDK. Select the hardware handoff options in the tutorial if you don't want to modify the project block design later. Return to this guide when prompted to check for additional hardware requirements and setup.
  
->1.2) If you want to generate the project in Vivado, continue to step 2If you want to move straight to Xilinx SDK, skip to step 5.+>Plug one end of one of your HDMI cable into your monitor and the other into the Nexys Video's HDMI OUT portPlug the other HDMI cable into your computer and the HDMI IN port.
  
-==== 2. Generate the Project ==== +<WRAP round tip 660px> 
->2.1) If not already installedinstall the Vivado Board File for the Nexys Video by following this guide: [[vivado:boardfiles| Installing Vivado Board Files for Digilent Boards]].+=== Tip === 
 +Your cables do not need to be HDMI-HDMI cablesHDMI-DVI or any number of other passive adaptors will work just fine. 
 +</WRAP>
  
->2.2) Generate the **Nexys-Video-HDMI** project by following this guide before continuing: [[vivado:github|How to Generate Project from Digilent's Github]]. **NOTE**: This must be done in Vivado 2016.4 +>To see the UART communication channel, open terminal program on your computer set to 112500 baud rate, 8 data bits, no parity bit and 1 stop bitOn startup, the Nexys Video will display the HDMI settings menushown below.
- +
-==== 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 wantyou 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:tutorials:nexys-video-hdmi-demo:nv-hdmi-tera-setup.png?400|}}
  
 +===== Using the Nexys Video HDMI Demo =====
  
-==== 4. Export to SDK ====+==== View the Menu ====
  
->4.1) Export the microblaze project by going to **File->Export->Export Hardware**. Click the check box to Include the bitstreamand 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.+>With the UART communication channel set upwhen the program starts up you should see the following menu.
 > >
->4.2) Skip to step 6.+>{{:learn:programmable-logic:tutorials:nexys-video-hdmi-demo:nv-hdmi-tera-menu.png?400|}}
  
-==== 5Open Xilinx SDK and create a workspace ====+==== Option 1Change 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 resolutionYou can choose the output resolution in this menu.
 > >
->{{:genesys2:1.jpg?500|}}+>{{:learn:programmable-logic:tutorials:nexys-video-hdmi-demo:nv-hdmi-tera-change-res.png?400|}}
  
-==== 6Import the SDK files ====+==== Option 2Change the Frame Buffer Index ====
  
->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). +>Selecting option 2 will cycle between the 3 frame buffers to output to the monitor
-+
->{{:genesys2:2.jpg?500|}}+
  
->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 & 4Print Test Patterns====
-+
->{{:genesys2:3.jpg?300|}}+
  
->6.3) Import the projects by clicking //Finish//. You can ignore the warnings that may pop up.+>Selecting these will print a test pattern on the selected input video frame buffer.
 > >
->{{:genesys2:4.jpg?500|}} +>{{:learn:programmable-logic:tutorials:nexys-video-hdmi-demo:nv-hdmi-bars.jpg?400|}}
- +
-==== 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.+
 > >
->{{:genesys2:5.jpg?500|}}+>{{:learn:programmable-logic:tutorials:nexys-video-hdmi-demo:nv-hdmi-blend.jpg?400|}}
  
-==== 8Program the Microblaze processor ====+==== Option 5Start/Stop Video Stream ====
  
->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. +>This option will start or stop the video data stream from the HDMI inputWhen streaming, the HDMI input data will be displayed on the current video frame buffer.
-+
->{{:genesys2:6.jpg?500|}}+
  
-==== 9Run the Project ====+==== Option 6Change Video Frame Buffer ====
  
-**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 option will change the buffer that video input will stream into.
  
-This portion will help you run the demo and observe all its features.+==== Option 7Grab Video Frame and Invert Colors ====
  
->9.1) View the Menu+>This option will grab the current frame from the HDMI input and invert the colorsThe 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. +>{{:learn:programmable-logic:tutorials:nexys-video-hdmi-demo:nv-hdmi-invert.jpg?400|}}
-+
->{{:nexys-video:hdmi_in1.png?600|}}+
  
->9.2) Change the display resolution (Option 1) +==== Option 8Grab Video Frame and Scale to Display Resolution ====
-+
->The output resolution is changed independently from the input resolution. You can choose the output resolution in this menu. +
-+
->{{:nexys-video:hdmi_in2.jpg?600|}}+
  
->9.3) Change the frame buffer index (Option 2)+>This option will grab the current frame from the HDMI input and scale it to the current output resolution.
 > >
->Selecting option 2 will cycle between the 3 frame buffers to output to the monitor+>{{:learn:programmable-logic:tutorials:nexys-video-hdmi-demo:nv-hdmi-scale.jpg?400|}}
  
->9.4) Print test patterns (Option 3 and 4) +<WRAP round important 660px
-> +=== Important === 
->Selecting these will print a test pattern on the selected input video frame buffer. +The scaling function was designed for the Zynq processorIn its current statethis 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 streamingthe 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>learn programmable-logic tutorial nexys-video}}+{{tag>learn programmable-logic project nexys-video}}