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
programmable-logic:nexys-video:demos:hdmi [2022/08/25 12:54] – [Inventory] Andrei Soptereanprogrammable-logic:nexys-video:demos:hdmi [2024/02/12 15:15] (current) – [Table] Ioan
Line 1: Line 1:
 +====== Nexys Video HDMI Demo ======
  
 +<WRAP round todo>
 +=== Under Construction ===
 +Note: This demo's video capture pipeline is not functional in releases 2020.1 and newer. Video output functions as expected. It's currently under investigation (5/16/22).
 +</WRAP>
 +
 +{{nexys/nexysvideo/16508527298_efc2312db1_o_1_.png?600}}
 +<WRAP JUSTIFY>
 +----
 +===== Description =====
 +
 +The Nexys Video HDMI Demo project demonstrates the 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 data to (whether test patterns or frames streaming from HDMI in).
 +  * The output pointer chooses which display buffer to display through the HDMI out port.
 +  * The output resolution is controlled independently of the input data. This output resolution can be changed using the menu.
 +
 +----
 +===== Inventory =====
 +
 +  * Nexys Video
 +  * MicroUSB cables for programming and serial communication
 +  * External power supply
 +  * HDMI Source, HDMI Sink, 
 +  * 2 HDMI Cables - 
 +  * Vivado and Vitis installations compatible with the latest release of this demo (2022.1)
 +    * //See [[programmable-logic:guides:installing-vivado-and-vitis|Installing Vivado, Vitis, and Digilent Board Files]] for installation instructions.//
 +  * Serial Terminal application to receive messages printed by the demo
 +    * //See [[programmable-logic:guides:serial-terminals:start]] for more information.//
 +
 +----
 +===== Download and Usage Instructions =====
 +
 +First and foremost, releases - consisting of a set of files for download - are only compatible with a specific version of the Xilinx tools, as specified in the name of the release (referred to as a //release tag//). In addition, releases are only compatible with the specified variant of the board. For example, a release tagged "20/DMA/2020.1" for the Zybo Z7 is only to be used with the -20 variant of the board and Xilinx tools (Vivado and Vitis) version 2020.1.
 +
 +The latest release version for this demo is highlighted in green.
 +
 +**Note:** //Releases for FPGA demos from before 2020.1 used a different git structure, and used a different release tag naming scheme.//
 +
 +^ Release Tag              ^ Release Downloads                                                                                                                                                                                                   ^ Setup Instructions                                                                              ^
 +| @#C0EEBD: HDMI/2023.1-1  | {{https://github.com/Digilent/Nexys-Video/releases/download/HDMI/2023.1-1/Nexys-Video-HDMI-hw.xpr.zip}} \\ {{https://github.com/Digilent/Nexys-Video/releases/download/HDMI/2023.1-1/Nexys-Video-HDMI-sw.ide.zip}}  | See //Using the Latest Release//, below                                                         |
 +| HDMI/2022.1-1            | {{https://github.com/Digilent/Nexys-Video/releases/download/HDMI/2022.1-1/Nexys-Video-HDMI-hw.xpr.zip}} \\ {{https://github.com/Digilent/Nexys-Video/releases/download/HDMI/2022.1-1/Nexys-Video-HDMI-sw.ide.zip}}  | See //Using the Latest Release//, below                                                         |
 +| HDMI/2021.1-1            | {{https://github.com/Digilent/Nexys-Video/releases/download/HDMI/2021.1-1/Nexys-Video-HDMI-hw.xpr.zip}} \\ {{https://github.com/Digilent/Nexys-Video/releases/download/HDMI/2021.1-1/Nexys-Video-HDMI-sw.ide.zip}}  | See //Using the Latest Release//, below                                                         |
 +| HDMI/2020.1-1            | {{https://github.com/Digilent/Nexys-Video/releases/download/HDMI/2020.1-1/Nexys-Video-HDMI-hw.xpr.zip}} \\ {{https://github.com/Digilent/Nexys-Video/releases/download/HDMI/2020.1-1/Nexys-Video-HDMI-sw.ide.zip}}  | See //Using the Latest Release//, below                                                         |
 +| v2018.2-2                | [[https://github.com/Digilent/Nexys-Video-HDMI/releases/tag/v2018.2-2|Release ZIP Downloads]]                                                                                                                       | [[https://github.com/Digilent/Nexys-Video-HDMI/tree/v2018.2-2|v2018.2-2 README]]                |
 +| v2016.4-2                | [[https://github.com/Digilent/Nexys-Video-HDMI/releases/tag/v2016.4-2|Release ZIP Downloads]]                                                                                                                       | [[learn/programmable-logic/tutorials/github-demos/start|Using Digilent Github Demos (Legacy)]]  |
 +
 +**Note for Advanced Users:** //GitHub sources for this demo can be found in the [[https://github.com/digilent/nexys-video/tree/HDMI/master|HDMI/master]] branch of the Nexys-Video repository. Further documentation on the structure of this repository can be found on this wiki's [[programmable-logic:documents:git]] page.//
 +----
 +Instructions on the use of the latest release can be found in this dropdown:
 +
 +--> Using the Latest Release #^
 +<WRAP group>
 +
 +{{page>programmable-logic:guides:using-github-releases#baremetal_release_no_build_direct_file_download&noheader}}
 +
 +{{page>programmable-logic:guides:using-github-releases#baremetal_release_workaround_before_programming&noheader}}
 +
 +--> Build a Vitis Application #
 +<WRAP group>
 +{{page>programmable-logic:guides:vitis-build-software&noheader}}
 +</WRAP>
 +<--
 +
 +--> Set up the Nexys Video #
 +<WRAP group> <WRAP column half>
 +Plug the Nexys Video into the computer via the MicroUSB programming cables (one for communication, one for programming). Plug the power supply into the board and power the board on by flipping the power switch. Connect the HDMI cables to the source and sink.
 +
 +Connect a serial terminal to the port associated with the Nexys Video. The demo uses a baud rate of **115200**.
 +</WRAP> <WRAP column half>
 +{{learn/programmable-logic/tutorials/2020.1/launch-vitis-application/set-baud.png?600}}
 +</WRAP> </WRAP>
 +----
 +<--
 +
 +{{page>programmable-logic:guides:using-github-releases#baremetal_release_programming&noheader}}
 +
 +At this point, the demo is now running on your board. Refer to the [[#description|Description]] and [[#functionality|Functionality]] sections of this document for more information on what it does.
 +----
 +Additional steps beyond here present how you can use the other archive provided in the release, containing the hardware project, to rebuild the Vivado project, and use a newly exported XSA file to update the platform in Vitis.
 +----
 +{{page>programmable-logic:guides:using-github-releases#baremetal_update_specification&noheader}}
 +
 +
 +</WRAP>
 +<--
 +
 +----
 +===== Functionality =====
 +=== View the Menu ===
 +
 +With the UART communication channel set up, when the program starts up, the menu below can be seen:
 +
 +{{:learn:programmable-logic:tutorials:nexys-video-hdmi-demo:nv-hdmi-tera-menu.png?600|}}
 +
 +----
 +=== 1. Change the Display Resolution ===
 +
 +The output resolution is changed independently from the input resolution. You can choose the output resolution in this menu.
 +
 +{{:learn:programmable-logic:tutorials:nexys-video-hdmi-demo:nv-hdmi-tera-change-res.png?600|}}
 +
 +----
 +=== 2. Change the Frame Buffer Index ===
 +
 +Selecting option 2 will cycle between the 3 frame buffers to output to the monitor. Note that when the input and output buffers match, video data is streamed through from the input to the output. When the display framebuffer index does not reference the same buffer as the video input, a static frame is displayed, whether the last received input frame or a test pattern.
 +
 +----
 +=== 3/4. Print Test Patterns ===
 +
 +Selecting one of these two options will print a test pattern on the selected input video frame buffer.
 +<columns>
 +{{:learn:programmable-logic:tutorials:nexys-video-hdmi-demo:nv-hdmi-bars.jpg?400|}}
 +<newcolumn>
 +{{:learn:programmable-logic:tutorials:nexys-video-hdmi-demo:nv-hdmi-blend.jpg?400|}}
 +</columns>
 +----
 +=== 5. Start/Stop Video Stream ===
 +
 +This option will start or stop the video data stream from the HDMI input. When streaming, the HDMI input data will be written to the current video frame buffer. If the display frame buffer matches the video input, this data will be streamed through to the connected monitor.
 +
 +----
 +=== 6. Change Video Frame Buffer ===
 +
 +This option will change the buffer that video input will stream into.
 +
 +----
 +=== 7. Grab Video Frame and Invert Colors ===
 +
 +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. Note that only an area the size of the input frame will be written into the display buffer 
 +
 +{{:learn:programmable-logic:tutorials:nexys-video-hdmi-demo:nv-hdmi-invert.jpg?400|}}
 +
 +----
 +=== 8. Grab Video Frame and Scale to Display Resolution ===
 +
 +This option will grab the current frame from the HDMI input and scale it to the current output resolution.
 +
 +{{:learn:programmable-logic:tutorials:nexys-video-hdmi-demo:nv-hdmi-scale.jpg?400|}}
 +
 +----
 +===== Additional Resources =====
 +
 +All materials related to the use of the Nexys Video can be found on its [[..:|Resource Center]].
 +
 +For a walkthrough of the process of creating a simple baremetal software project in Vivado and Vitis, see [[programmable-logic:guides:getting-started-with-ipi]]. Information on important parts of the GUIs, and indirect discussion of the steps required to modify, rebuild, and run this demo in hardware can also be found here.
 +
 +For technical support, please visit the [[https://forum.digilent.com/forum/4-fpga/|FPGA]] section of the Digilent Forum.
 +
 +----