vhdl-hdmi-out-master
所属分类:其他
开发工具:VHDL
文件大小:26KB
下载次数:0
上传日期:2021-01-04 18:46:01
上 传 者:
vasquez
说明: VHDL Implementation of HDMI out driver.
文件列表:
LICENSE (35149, 2020-09-08)
impl (0, 2020-09-08)
impl\arty-z7.xdc (1727, 2020-09-08)
makefile (2085, 2020-09-08)
rtl (0, 2020-09-08)
rtl\clock_gen.vhd (1516, 2020-09-08)
rtl\hdmi_out.vhd (4774, 2020-09-08)
rtl\objectbuffer.vhd (4491, 2020-09-08)
rtl\pattern_generator.vhd (2281, 2020-09-08)
rtl\rgb2tmds.vhd (2416, 2020-09-08)
rtl\serializer.vhd (6162, 2020-09-08)
rtl\timing_generator.vhd (6128, 2020-09-08)
rtl\tmds_encoder.vhd (3774, 2020-09-08)
sim (0, 2020-09-08)
sim\tb_hdmi_out.vhd (2275, 2020-09-08)
# vhdl-hdmi-out
HDMI Out driver written in VHDL for 7-Series Xilinx FPGAs. Only video side is
implemented and audio stuff is not included. Three resolutions are added.
Serial cock runs at 5x the pixel clock and uses `OSERDES` blocks to generate
the TMDS signals. Can be used to connect to a DVI input as well since they
share the same protocol and timings. A `SERIES6` generic is added to replace
`OSERDES2` blocks with `OSERDES1` blocks that are used in 6-Series. Since
`OSERDES1` is not encrypted, GHDL can also elaborate and simulate the
behavior.
Project is configured to run at `125 Mhz` clock, but can be configurable from
the [clock_gen.vhd](rtl/clock_gen.vhd) to run at different frequencies.
[timing_generator.vhd](rtl/timing_generator.vhd) generates the the video timing
signals: *hsync*, *vsync*, *video_active* as well as the pixel x and
y locations. [pattern_generator.vhd](rtl/pattern_generator.vhd) and
[objectbuffer.vhd](rtl/objectbuffer.vhd) are used to generate RGB pixel values
and [rgb2tmds.vhd](rtl/rgb2tmds.vhd) is the top module that handles the
conversion from RGB values to TMDS signal outputs.
[GHDL](http://ghdl.free.fr/) can be used to simulate the circuit, and
[GTKWave](http://gtkwave.sourceforge.net/) can be used to display the waveform.
[makefile](makefile) is given to automate elaboration steps. It needs *Xilinx
Vivado* installation to compile Xilinx supplied primitives such as `BUFG`,
`OBUFDS` and `PLLE2`. However, `OSERDES2` that is used in the project is
encrypted and cannot be imported to GHDL, so a generic is added to replace it
with `OSERDES1` that is used in 6-Series devices. It is enabled by default in
the simulation, and should be disabled if `OSERDES2` blocks are to be used.
Update the relevant line with your Xilinx Vivado installation. (or run with
`XILINX_VIVADO` environmental variable instead)
## Files
```
+- rtl/
| -- hdmi_out.vhd : hdmi out top module
| -- clock_gen.vhd : generates pixel (1x) and serial (5x) clocks
| -- timing_generator.vhd : generates timing signals for a given resolution
| -- rgb2tmds.vhd : rgb to tmds parent module
| -- tmds_encoder.vhd : 8b/10b rgb to tmds encoder
| -- serializer.vhd : 10b tmds signal serializer to be sent out using serial (5x) clock
| -- objectbuffer.vhd : rgb object generator based on active area
| -- pattern_generator.vhd : rgb color spectrum pattern generator based on active area
+- sim/
| -- tb_hdmi_out.vhd : testbench for hdmi out module
+- imp/
| -- arty-z7.xdc : constraints for Arty-Z7 / Pynq-Z1 boards
```
## Features
* Supports `720p (1280x720)`, `SVGA (800x600)`, and `VGA (***0x480)` modes.
* Two patterns are included that are selectable on synthesizing
* a rainbow color pattern - shows color spectrum
* an object buffer for a game base - generates a wall, a box, and a ball.
Wall is the stationary object, and box / ball are movable objects using
the position signals. Background color can also be changed from top level
* Tested on `Arty-Z7-20`, `Pynq-Z1` and `Pynq-Z2` boards.
## Misc.
* There is an on/off problem on `Pynq-Z2` board when the clock is sourced from
125 Mhz PL clock. The display turns on for ~1 seconds and off for ~1 second.
This problem goes away when the clock is generated from ZYNQ IO PLL.
* [Yuri Cauwerts](https://github.com/zyuri) kindly pointed out that
connecting Ethernet cable fixes the problem.
* [tmds_encoder](rtl/tmds_encoder.vhd) usually needs pipelining for fixing
timing problems. Usually I leave this to students to figure out how to
implement it.
* [vhdl-display-simulator](https://github.com/fcayci/vhdl-display-simulator)
can be used to see the screen output without implementing your designs.
近期下载者:
相关文件:
收藏者: