Open Source HDMI for FPGA
Add an open source, true HDMI port to your FPGAs with this HDL implementation of an HDMI controller.
While the major FPGA vendors such as Xilinx and Intel provide IP blocks for an FPGA developers to implement HMDI signaling in their designs, this locks the design to that particular FPGA chip family. When the event arises such that a design needs to be portable between FPGAs from various vendors, developers turn to either an open source implementation of HDMI or to writing their own from scratch.
The problem with many existing open source versions of HDMI is that they are actually just outputting a DVI signal since DVI is much simpler to implement. Since most HDMI TVs and monitors are backwards compatible with DVI signal, this isn't a problem until functionality such as transmitting/receiving audio along with the video signal is needed. For this, a true HDMI signal is necessary.
This is what lead Sameer Puri to write his own HDL implementation of a true HDMI signal.
Written in System Verilog, this pure HDMI 1.4b implementation can be tailored to fit any system specifics that it is instantiated within. From double data rate I/O to the specific desired refresh rate, the top level System Verilog file can control how the module is built in the programmable logic of a given FPGA.
While there are some limitations to using HDMI in a product that is being produced and sold to the public (as loosely outlined in Puri's ReadMe in the project's Github repository), this particular HDMI project is the perfect solution for a design needing to traverse various FPGA vendor platforms. It has been successfully tested on both Xilinx and Altera (Intel) so far with the jury still being out on Lattice.
One thing to keep in mind with this, and any HDMI implementation on FPGA, is that FPGAs do not support the TMDS (transition-minimized differential signaling) communication interface. Thus LVDS with 100nF capacitors in series on the lines to try to mimic the impedance that the twisted pair lines of TMDS has may be necessary.
All thoughts/opinions are my own and do not reflect those of any company/entity I currently/previously associate with.