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:zybo-z7:demos:hdmi [2022/08/03 16:58] – additional Zybo Z7 setup instructions James Colvinprogrammable-logic:zybo-z7:demos:hdmi [2023/08/25 00:22] (current) – Move to direct file links for downloads Arthur Brown
Line 1: Line 1:
 +====== Zybo Z7 HDMI Input/Output Demo ======
 +<WRAP JUSTIFY>
 +{{:zybo:img_20151211_172212.jpg?500|}}
 +<WRAP JUSTIFY>
 +----
 +===== Description =====
  
 +The Zybo Z7 HDMI project demonstrates the usage of the HDMI source and sink ports on the Zybo Z7.
 +The behavior is as follows:
 +
 +  * Video data streams in through the HDMI sink (RX) port and out through the HDMI source (TX) port.
 +  * A UART interface is available to configure what is output through HDMI.
 +  * Three frame buffers that the user can use to choose what to display are provided.
 +
 +----
 +===== Inventory =====
 +
 +  * Zybo Z7 with a MicroUSB Programming Cable
 +  * 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.//
 +  * 2 HDMI Cables
 +  * HDMI Source
 +  * HDMI Monitor
 +
 +----
 +===== 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.//
 +
 +^ Board Variant  ^ Release Tag                 ^ Release Downloads                                                                                ^ Setup Instructions                                                                                       ^
 +| Zybo Z7-10     | @#C0EEBD: 10/HDMI/2023.1-1  | {{https://github.com/Digilent/Zybo-Z7/releases/download/10/HDMI/2023.1-1/Zybo-Z7-10-HDMI-hw.xpr.zip}} \\ {{https://github.com/Digilent/Zybo-Z7/releases/download/10/HDMI/2023.1-1/Zybo-Z7-10-HDMI-sw.ide.zip}}  | See //Using the Latest Release//, below  |
 +| Zybo Z7-20     | @#C0EEBD: 20/HDMI/2023.1-1  | {{https://github.com/Digilent/Zybo-Z7/releases/download/20/HDMI/2023.1-1/Zybo-Z7-20-HDMI-hw.xpr.zip}} \\ {{https://github.com/Digilent/Zybo-Z7/releases/download/20/HDMI/2023.1-1/Zybo-Z7-20-HDMI-sw.ide.zip}}  | See //Using the Latest Release//, below  |
 +| Zybo Z7-10     | 10/HDMI/2022.1-1            | {{https://github.com/Digilent/Zybo-Z7/releases/download/10/HDMI/2022.1-1/Zybo-Z7-10-HDMI-hw.xpr.zip}} \\ {{https://github.com/Digilent/Zybo-Z7/releases/download/10/HDMI/2022.1-1/Zybo-Z7-10-HDMI-sw.ide.zip}}  | See //Using the Latest Release//, below  |
 +| Zybo Z7-20     | 20/HDMI/2022.1-1            | {{https://github.com/Digilent/Zybo-Z7/releases/download/20/HDMI/2022.1-1/Zybo-Z7-20-HDMI-hw.xpr.zip}} \\ {{https://github.com/Digilent/Zybo-Z7/releases/download/20/HDMI/2022.1-1/Zybo-Z7-20-HDMI-sw.ide.zip}}  | See //Using the Latest Release//, below  |
 +| Zybo Z7-10     | 10/HDMI/2021.1-1            | {{https://github.com/Digilent/Zybo-Z7/releases/download/10/HDMI/2021.1-1/Zybo-Z7-10-HDMI-hw.xpr.zip}} \\ {{https://github.com/Digilent/Zybo-Z7/releases/download/10/HDMI/2021.1-1/Zybo-Z7-10-HDMI-sw.ide.zip}}  | See //Using the Latest Release//, below  |
 +| Zybo Z7-20     | 20/HDMI/2021.1-1            | {{https://github.com/Digilent/Zybo-Z7/releases/download/20/HDMI/2021.1-1/Zybo-Z7-20-HDMI-hw.xpr.zip}} \\ {{https://github.com/Digilent/Zybo-Z7/releases/download/20/HDMI/2021.1-1/Zybo-Z7-20-HDMI-sw.ide.zip}}  | See //Using the Latest Release//, below  |
 +| Zybo Z7-10     | 10/HDMI/2020.1-1            | {{https://github.com/Digilent/Zybo-Z7/releases/download/10/HDMI/2020.1-1/Zybo-Z7-10-HDMI-hw.xpr.zip}} \\ {{https://github.com/Digilent/Zybo-Z7/releases/download/10/HDMI/2020.1-1/Zybo-Z7-10-HDMI-sw.ide.zip}}  | See //Using the Latest Release//, below  |
 +| Zybo Z7-20     | 20/HDMI/2020.1-1            | {{https://github.com/Digilent/Zybo-Z7/releases/download/20/HDMI/2020.1-1/Zybo-Z7-20-HDMI-hw.xpr.zip}} \\ {{https://github.com/Digilent/Zybo-Z7/releases/download/20/HDMI/2020.1-1/Zybo-Z7-20-HDMI-sw.ide.zip}}  | See //Using the Latest Release//, below  |
 +| Zybo Z7-10     | v2018.2-2                   | [[https://github.com/Digilent/Zybo-Z7-10-hdmi/releases/tag/v2018.2-2|Release ZIP Downloads]]     | [[https://github.com/Digilent/Zybo-Z7-10-HDMI/tree/v2018.2-2|v2018.2-2 README]]                          |
 +| Zybo Z7-20     | v2018.2-2                   | [[https://github.com/Digilent/Zybo-Z7-20-hdmi/releases/tag/v2018.2-2|Release ZIP Downloads]]     | [[https://github.com/Digilent/Zybo-Z7-20-HDMI/tree/v2018.2-2|v2018.2-2 README]]                          |
 +| Zybo Z7-10     | v2016.4-1                   | [[https://github.com/Digilent/Zybo-Z7-10-hdmi/releases/tag/v2016.4-1|Release ZIP Downloads]]     | [[learn:programmable-logic:tutorials:github-demos:start:|Using Digilent Github Demo Projects (Legacy)]]  |
 +| Zybo Z7-20     | v2016.4-1                   | [[https://github.com/Digilent/Zybo-Z7-20-hdmi/releases/tag/v2016.4-1|Release ZIP Downloads]]     | [[learn:programmable-logic:tutorials:github-demos:start:|Using Digilent Github Demo Projects (Legacy)]]  |
 +
 +**Note for Advanced Users:** //GitHub sources for this demo can be found in the [[https://github.com/digilent/zybo-z7/tree/10/HDMI/master|10/HDMI/master]] and [[https://github.com/digilent/zybo-z7/tree/20/HDMI/master|20/HDMI/master]] branches of the Zybo-Z7 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&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 Zybo Z7 #
 +<WRAP group>
 +<WRAP group> <WRAP column half>
 +Plug the Zybo Z7 into the computer via the microUSB programming cable and power on the board. Make sure the JP5 jumper is set to JTAG.
 +
 +Plug one end of an HDMI cable into a video source and the other into the Zybo Z7's HDMI RX port. Plug one end of the other HDMI cable into the HDMI TX port of the Zybo Z7 and the other into your HDMI monitor.
 +</WRAP> <WRAP column half>
 +{{:learn:programmable-logic:tutorials:zybo-z7-hdmi-demo:zybo-z7-hdmi-hw.jpg?500|}}
 +</WRAP> </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]] section 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>
 +<--
 +
 +----
 +==== HDMI Display Options ====
 +
 +=== 1. Change Display Resolution ===
 +Changes the resolution used for HDMI Output. Note that 1080p (1920x1080@60Hz) is not fully supported.
 +
 +It should be noted that changing the display resolution does not change the resolution of data received from the video input pipeline. In cases where the input and output resolutions don't match, the video may appear to be cropped, or padded with black, if no data has been previously written to the framebuffer. The input resolution cannot be directly controlled by the demo, and is determined by the HDMI source that the Arty Z7 is connected to. The video input defaults to 720p, as determined by EDID information included in the demo's hardware project.
 +----
 +=== 2. Change Display Framebuffer Index ===
 +Changes the VDMA framebuffer used for the video output. When the input buffer ("video framebuffer index") and output buffer ("display framebuffer index") match, data is streamed through from the input to the output. When they do not match, whatever is currently stored in the DDR memory assigned to the output buffer is shown, updating as video input streams in. This may be a test pattern, a saved input frame, or something else, depending on other commands previously issued.
 +----
 +=== 3/4. Print Test Pattern to Display Framebuffer ===
 +Stores one of two test test patterns (blended colors or vertical color bars) into the output buffer, to be displayed immediately. Note that if video input is streaming into the same buffer, the test pattern may be immediately overwritten.
 +
 +Also to note, if the resolution of the video output is later changed, the video data is cropped or padded to fit the screen. This cropping and padding does not affect the actual stored memory, as it is a result of how the VDMA indexes the framebuffer's region of DDR memory. Storing a new test pattern does not affect the memory in the framebuffer outside of the current display area - including areas that would not be displayed with the current output resolution.
 +
 +<WRAP group> <WRAP column half>
 +{{learn:programmable-logic:tutorials:arty-z7:hdmi_incolorbar.jpg}}
 +</WRAP> <WRAP column half>
 +{{learn/programmable-logic/tutorials/arty-z7/hdmi_inblend.jpg}}
 +</WRAP> </WRAP>
 +----
 +=== 5. Start/Stop Video Stream into Video Framebuffer ===
 +Stops the video input. Upon being stopped, the current video input frame is //not// blanked, resulting in the video output displaying a static image of the last frame received, when the framebuffer that frame was stored into is used.
 +
 +----
 +=== 6. Change Video Framebuffer Index ===
 +Increments the index of the framebuffer used for video input. For example, if data is streaming into buffer 0, and the video framebuffer index is incremented, a final frame will be received into buffer 0, then video will begin streaming into buffer 1. The last frame received can then be viewed on buffer 0, and streaming input can be viewed on buffer 1, by changing the display framebuffer index.
 +----
 +=== 7. Grab Video Frame and Invert Colors ===
 +Captures one frame from the video input buffer, and inverts all of the colors in that frame, then stores the result to the next framebuffer and sets the display output to view the inverted frame.
 +
 +<WRAP group> <WRAP column half>
 +{{learn/programmable-logic/tutorials/arty-z7/video_in.jpg}}
 +</WRAP> <WRAP column half>
 +{{learn/programmable-logic/tutorials/arty-z7/20170224_120103.jpg}}
 +</WRAP> </WRAP>
 +----
 +=== 8. Grab Video Frame and Scale to Display Resolution ===
 +Captures one frame from the video input buffer, scales it to the resolution used by the display output, then stores the result to the next framebuffer and sets the display output to view the scaled frame. Bilinear interpolation is used for scaling.
 +----
 +===== Additional Resources =====
 +
 +All materials related to the use of the Zybo Z7 can be found on its [[..:start|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.
 +
 +----