Hi,

here are some resources for supporting DVI on the M1:
* DVI-A and DDC are already present from VGA. We simply use the same schematics, with the different connector. * For DVI-D, we have to use TMDS signaling. It is supported directly by the FPGA I/Os.
* DVI-A and DVI-D can be combined into one connector (DVI-I)
* DVI-D uses the same signaling as HDMI (without the HDCP crap)
* TMDS is supported in banks 0 and 2 with VCCO=3.3V (Reference document: http://www.xilinx.com/support/documentation/user_guides/ug381.pdf). On the M1, there are plenty of suitable I/Os available in bank 2, so we'll use it. We need a minimum of 8 I/Os (4 differential pairs: RGB + clock). * Another pin assignment restriction is that differential pairs must connect to two consecutive pins on the FPGA (labeled P and N). * According to http://www.xilinx.com/support/documentation/application_notes/xapp495_S6TMDS_Video_Interface.pdf "use of the low-cost TMDS buffer TMDS141 from Texas Instruments offers additional signal clean-up and ESD protection up to 6 kV" * According to http://rubidium.dyndns.org/pipermail/fpga-synth/2011-April/001667.html connecting HDMI directly to the FPGA does work correctly. (Thanks stekern for pointing that out). * For an alternative ESD protection, we can use varistors like http://industrial.panasonic.com/ww/news_e/nr200503MC101_e/nr200503MC101_e/366em.pdf
* I prefer the solution without the TI chip and with varistors.
* Schematics of the Atlys devboard with HDMI connections (thanks stekern): http://www.digilentinc.com/Data/Products/ATLYS/Atlys_C2_sch.pdf (see PMODA/JA for the "direct connection" example). The signals go directly to the FPGA, through 50 ohm series resistors. There are no pull-ups to 3.3V which are for TMDS _receivers_ only.
* PCB layout guidelines: http://www.pericom.com/pdf/applications/AN204.pdf
http://www.pcb1001.com/2010/04/hdmi-design-guide-for-successful-high.html
It is particularly important to have proper differential transmission lines, because they are going to be quite long. Bank 2 is on the side of the BGA opposite to the video connector, and we cannot use bank 0 because it has only one spare I/O left.

Best,
Sébastien
_______________________________________________
http://lists.milkymist.org/listinfo.cgi/devel-milkymist.org
IRC: #milkymist@Freenode

Reply via email to