Come utilizzare la porta HDMI su FPGA (base)


8

Due domande.

Ho un FPGA Xilinx Spartan 6 che ha solo ingressi e uscite HDMI. Esiste una sorta di guida o codice pre-scritto che posso usare per iniziare a inviare immagini sullo schermo? Non ho idea di come iniziare e non sono stato in grado di trovare risorse.

In secondo luogo, il motivo per cui lo sto facendo è perché voglio usare e modificare il codice Atari 2600 un ragazzo implementato su uno Spartan 3E con VGA. È anche possibile adattare facilmente l'aspetto video del mio progetto?

Qualsiasi aiuto, risorsa o consiglio sarebbe molto apprezzato!


È un comitato di sviluppo commerciale? in tal caso quale modello e controllare i progetti di riferimento che ne derivano.
David

Questo è il consiglio: digilentinc.com/Products/… Non è arrivato con nulla.
ballaw

@ballaw - I prodotti Digilent hanno un supporto abbastanza buono. Scorri fino alla fine della pagina che hai appena collegato e vedrai tutta una serie di documentazione e progetti di esempio online: i.stack.imgur.com/F0TgY.png . Online ora conta come "arriva con esso". Potresti anche voler trovare i fogli dati per altre parti sulla scheda come il buffer FPGA XC6SLX45 e HDMI HDMI TMDS141RHAR, sono altrove su Internet.
Kevin Vermeer,

Risposte:


12

La scheda Atlys utilizza ingressi TDMS, quindi è necessario un decodificatore HDMI che accetta quegli ingressi e produce VSYNC, HSYNC, DE e DATA. Xilinx descrive in dettaglio il processo di codifica e decodifica DVI in un paio di note applicative. Ciascuno di questi viene fornito con un codice di esempio, è necessario il login xilinx:

Il codice di esempio è in verilog, anche se convertire il livello più alto in VHDL se preferisci è un esercizio relativamente banale.

Ecco una figura presa dalla prima nota applicativa che mostra la premessa di base del ricevitore:

dalla nota dell'app Xilinx

Poiché Spartan 6 ha hardware SERDES integrato, questi possono essere utilizzati come parte del processo di deserializzazione. Esiste un processo di sincronizzazione che ripristina l'orologio e assicura che i canali siano tutti sincronizzati. Infine, viene applicata la decodifica 8b / 10b per produrre i dati del canale RGB.

Una volta recuperati i segnali video, è possibile inoltrare questi segnali a qualsiasi elaborazione si desideri eseguire o su un codificatore che li invierà nuovamente dalle porte HDMI.

Se si dispone del display TFTMOD, inoltrare i dati sul display è semplice come collegare i segnali DE e DATA ai pin FPGA appropriati. Il manuale di riferimento della scheda TFT è utile per le informazioni di temporizzazione sul display, anche se ho scoperto che la temporizzazione dell'uscita del deserializzatore andava bene.

È possibile utilizzare il file UCF da questo progetto , per i vincoli per HDMI e questo progetto per i vincoli MODTFT se si utilizza quella scheda.

L'unica cosa da notare è che l'esempio di Xilinx non gestisce le informazioni EDID. Se stai semplicemente utilizzando la scheda per inoltrare i dati, puoi instradare le linee EDID e chiamarle un giorno. Altri scenari potrebbero richiedere la gestione dei dati EDID sull'FPGA. Fondamentalmente è solo I2C. L' interfaccia I2C di Opencores è piuttosto solida, oppure puoi codificare la tua. Per quanto ne so, la tabella di Wikipedia sul formato dei dati per EDID 1.3 è accurata.


4

Solo per integrare ciò che una precedente risposta ha spiegato:

Un trasmettitore DVI / HDMI può essere un buon punto di partenza in quanto è possibile ottenere direttamente alcuni video.

La trasmissione video HDMI / DVI su collegamento TMDS è logicamente suddivisa in fasi come mostrato nella Figura 1: Progettazione del trasmettitore TMDS di implementazione di un'interfaccia video TMDS in FPGA Spartan-6

inserisci qui la descrizione dell'immagine

  1. Encoder TMDS: converti i dati pixel da una sorgente video, i dati HDMI ausiliari / audio e HSYNC e VSYNC in tre flussi di simboli a 10 bit

  2. I serializzatori (10: 5 Gear Box e OSERDES2 5: 1 Convert) eseguono in due fasi una conversione da parallelo a seriale a 10 bit su tutti e tre i flussi e quindi li inviano su tre canali di coppie di uscite differenziali (buffer TMDS).

Entrambi gli stadi richiedono un circuito di clock per generare (PLL) e distribuire (BUFPLL, BUFG) i segnali di clock (con le frequenze del clock di riferimento dei pixel e dei suoi multipli) correttamente.

Naturalmente, il nucleo del trasmettitore è il blocco Encoder. Puoi iniziare con l'encoder DVI per la sua semplicità rispetto a quello HDMI. Sia HDMI che DVI hanno molti aspetti in comune, tra cui il collegamento TMDS fisico, l'algoritmo di codifica video attivo e le definizioni dei token di controllo.

La nota applicativa fornisce anche 2 disegni. Un semplice ma buono per iniziare è la "Generazione di barre di colore SMPTE HD con temporizzazione video programmabile". Invia un video del generatore di barre di colore attraverso molte modalità dello schermo che possono essere selezionate dagli interruttori a scorrimento. Questo design è utile perché possiamo cambiare il generatore di barre di colore con un'altra sorgente video ed essere ancora in grado di ottenere alcuni video mantenendo il blocco trasmettitore originale.

Spero che questo possa essere d'aiuto!


2
Le risposte ai soli link sono sconsigliate perché se Xilinx riorganizzerà il loro sito in futuro e il link diventerà morto non sarà di alcun aiuto per i futuri visitatori. Forse potresti aggiungere ulteriori dettagli sull'approccio generale descritto nella nota applicativa?
PeterJ,

Grazie, hai perfettamente ragione. Ho aggiunto ulteriori dettagli al riguardo.
L30nardo SV.

3

Ecco il testo di un disegno di riferimento che puoi scaricare dalla pagina della scheda a cui sei collegato:

DSD-0000326 13/12/11 Questo file zip contiene un progetto demo EDK che dimostra l'utilizzo dell'HDMI sulla scheda Genesys. Accetta un ingresso HDMI, buffer in memoria i frame di input, quindi invia il buffer a un'altra porta HDMI. Questo è implementato usando il bus PLB. Scarica

Puoi anche guardare i progetti di riferimento forniti con il kit di elaborazione video industriale Xilinx spartan 6. http://www.em.avnet.com/en-us/design/drc/Pages/Xilinx-Spartan-6-FPGA-Industrial-Video-Processing-Kit.aspx (fare clic sul collegamento dei file di supporto, è necessario il login avnet ).

Probabilmente ci sono più progetti di riferimento là fuori per diversi fpgas.

Inoltre, a meno che non si stia implementando l'audio o la crittografia, hdmi è sostanzialmente lo stesso di dvi.


Grazie. L'ho visto ma non sono davvero sicuro di come usarlo poiché utilizza EDK che non ho perché non è gratuito. Sarebbe una semplice questione di usare i file VHD in esso? Ne dubito perché ci sono molte altre cose nel download, la maggior parte delle quali non ho idea di cosa siano.
ballaw

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.