All Projects → hamsternz → Displayport_verilog

hamsternz / Displayport_verilog

Licence: mit
A Verilog implementation of DisplayPort protocol for FPGAs

Labels

Projects that are alternatives of or similar to Displayport verilog

Archexp
浙江大学计算机体系结构课程实验
Stars: ✭ 104 (-16.8%)
Mutual labels:  verilog
Livehd
Live Hardware Development (LiveHD), a productive infrastructure for Synthesis and Simulation
Stars: ✭ 110 (-12%)
Mutual labels:  verilog
Connectal
Connectal is a framework for software-driven hardware development.
Stars: ✭ 117 (-6.4%)
Mutual labels:  verilog
Dreamcasthdmi
Dreamcast HDMI
Stars: ✭ 106 (-15.2%)
Mutual labels:  verilog
Single instruction cycle openmips
通过学习《自己动手写CPU》,将书中实现的兼容MIPS32指令集架构的处理器——OpenMIPS(五级流水线结构),简化成单指令周期实现的处理器
Stars: ✭ 108 (-13.6%)
Mutual labels:  verilog
Raven Picorv32
Silicon-validated SoC implementation of the PicoSoc/PicoRV32
Stars: ✭ 110 (-12%)
Mutual labels:  verilog
Icegdrom
An FPGA based GDROM emulator for the Sega Dreamcast
Stars: ✭ 103 (-17.6%)
Mutual labels:  verilog
Vscode Verilog Hdl Support
Verilog HDL/SystemVerilog/Bluespec SystemVerilog support for VS Code
Stars: ✭ 120 (-4%)
Mutual labels:  verilog
Autofpga
A utility for Composing FPGA designs from Peripherals
Stars: ✭ 108 (-13.6%)
Mutual labels:  verilog
Vscale
Verilog version of Z-scale (deprecated)
Stars: ✭ 116 (-7.2%)
Mutual labels:  verilog
Hardware Cnn
A convolutional neural network implemented in hardware (verilog)
Stars: ✭ 107 (-14.4%)
Mutual labels:  verilog
Replace
RePlAce global placement tool
Stars: ✭ 109 (-12.8%)
Mutual labels:  verilog
Orpsoc Cores
Core description files for FuseSoC
Stars: ✭ 112 (-10.4%)
Mutual labels:  verilog
Hdl checker
Repurposing existing HDL tools to help writing better code
Stars: ✭ 103 (-17.6%)
Mutual labels:  verilog
Surelog
SystemVerilog 2017 Pre-processor, Parser, Elaborator, UHDM Compiler. Provides IEEE Design/TB C/C++ VPI and Python AST API.
Stars: ✭ 116 (-7.2%)
Mutual labels:  verilog
Fft Dit Fpga
Verilog module for calculation of FFT.
Stars: ✭ 104 (-16.8%)
Mutual labels:  verilog
Sv Tests
Test suite designed to check compliance with the SystemVerilog standard.
Stars: ✭ 108 (-13.6%)
Mutual labels:  verilog
Fpganes
NES in Verilog
Stars: ✭ 119 (-4.8%)
Mutual labels:  verilog
Svls
SystemVerilog language server
Stars: ✭ 119 (-4.8%)
Mutual labels:  verilog
Vm80a
i8080 precise replica in Verilog, based on reverse engineering of real die
Stars: ✭ 114 (-8.8%)
Mutual labels:  verilog

DisplayPort_Verilog

A open source Verilog implementation of DisplayPort protocol for FPGAs, released under the MIT License.

DisplayPort is quite a complex protocol. This is a minimal Verilog implementation in the Verilog language. Hopefully this will inspire others to improve on this.

This has now been tested using one or two lanes, and 800x600, 720p, 1080p and 2160p resolutions, but should work with four lanes too. YCC and 442 video are supported.

Status

Note that this is still very alpha. It works for me on my hardware, but I don't expect it will work for you with a bit of effort.

Contributions

Please feel free to send pull requests, and please make sure you add your name to the file headers. Also feel free to remove my headers for any new files you may add to the project - you deserve the credit not me!

Please make sure that where possible all files include the MIT License information.

My Test setup

My own test board is a Digilent Inc Nexys Video, using an Xilinx Artix 7 FPGA. However the most of the hardware specific parts are limited to the transcievers which can be replaced to support FPGAs from other vendors.

For a test display I have been using a ViewSonic VX2880ML, which is an older 4k monitor.

I will endevor to test with a few more monitors.

Tested resolutions

Resolution | Lanes | Colour Mode | Effective Pixel clock rate
-----------+-------+-------------+--------------
800x600    |   1   | RGB 444     |  40.00 MHz
800x600    |   2   | RGB 444     |  40.00 MHz
800x600    |   3   | RGB 444     |  40.00 MHz
1280x720   |   1   | RGB 444     |  74.25 MHz
1920x1080  |   2   | RGB 444     | 148.50 MHz
3240x2160  |   2   | YCC 422     | 165.00 MHz

There are in the src/test_streams directory. To change patterns, edit src/test_stream.v, switch the module name, and rebuild the file

These test streams are very crude, and could be greatly improved on.

The M/N problem

DisplayPort have M and N values embedded in the data stream, which represent the ratio of the pixel clock to the lane symbol rate. For example 148.5MHz 1080p has a ratio of 11 to 20 of the 270MHz link speed. It also should embed the lowest 8 bits of the 'M counter' in the stream, to allow the sink to regenerate the pixel clock.

However 11:20 (or 22:40, or 2200:4000 or any other exact ratio) does not work but 0x4688:0x8000 (18,056:32768) does. I do not understand this. If somebody could explain this to me so I can document this I would be most greatful.

I suspect is has something to do with the ability for the source to down-spread the link speed, and the sink must be able to correct for this.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].