La placa Atlys usa entradas TDMS, por lo que necesitará un decodificador HDMI que tome esas entradas y produzca VSYNC, HSYNC, DE y DATA. Xilinx detalla el proceso de codificación y decodificación DVI en un par de notas de aplicación. Estos vienen con código de ejemplo, se requiere inicio de sesión en xilinx:
El código de ejemplo está en verilog, aunque convertir el nivel superior a VHDL, si lo prefiere, es un ejercicio relativamente trivial.
Aquí hay una figura tomada de la primera nota de aplicación que muestra la premisa básica del receptor:
DadoqueelSpartan6tienehardwareSERDESincorporado,estossepuedenutilizarcomopartedelprocesodedeserialización.Hayunprocesodesincronizaciónquerecuperaelrelojyaseguraquetodosloscanalesesténsincronizados.Finalmente,ladecodificación8b/10bseaplicaparaproducirlosdatosdelcanalRGB.
Unavezquesehayanrecuperadolasseñalesdevideo,puedereenviarestasseñalesacualquierprocesamientoquedeseehacer,oauncodificadorquelasenviaránuevamentefueradelospuertosHDMI.
SitienelapantallaTFTMOD,enviarlosdatosalapantallaestansimplecomoconectarlasseñalesDEyDATOSalospinesFPGAapropiados. El manual de referencia de la placa TFT es útil para sincronizar la información sobre la pantalla, aunque encontré que el tiempo de salida del deserializador estaba bien.
Puede usar el archivo UCF desde este proyecto , para las restricciones para el HDMI y este proyecto para las restricciones de MODTFT si está utilizando ese tablero.
Lo único que se debe tener en cuenta es que el ejemplo de Xilinx no maneja la información EDID. Si solo está utilizando la pizarra para reenviar datos, puede enrutar las líneas de EDID y llamarlas al día. Otros escenarios pueden requerir el manejo de los datos EDID en el FPGA. Básicamente es solo I2C. El opencores I2C interface es bastante sólido, o puede codificar tu propio. Que yo sepa, la tabla de wikipedia sobre el formato de datos para EDID 1.3 es correcta.