Aggiungi ai favoriti set Homepage
Posizione:Casa >> Notizie >> elettrone

Gamma Prodotti

Prodotti Tag

Siti FMUSER

Il sistema basato su FPGA combina due flussi video per fornire video 3D

Date:2021/10/18 21:55:31 Hits:
Introduzione I sistemi video, già onnipresenti nelle applicazioni consumer, sono sempre più diffusi nei settori automobilistico, robotico e industriale. Questa crescita nelle applicazioni non di consumo è il risultato principalmente dell'introduzione di uno standard HDMI e di DSP e FPGA più veloci ed efficienti. Questo articolo illustra i requisiti per ottenere la visione stereoscopica (video 3D) utilizzando videocamere analogiche o HDMI. Descrive un sistema basato su FPGA che combina due flussi video in un unico flusso video 3D per la trasmissione tramite un trasmettitore HDMI 1.4 e un sistema basato su DSP che consente di risparmiare larghezza di banda DMA rispetto a quella normalmente richiesta per la ricezione di dati da due telecamere. Inoltre, mostra un metodo per ottenere un formato affiancato da utilizzare con telecamere 3D o sistemi che richiedono video 3D. Panoramica generale La visione stereoscopica richiede due videocamere separate da circa 5.5 cm, la distanza tipica tra gli occhi di una persona, come mostrato nella Figura 1. Immagine 1. Due telecamere su un supporto allineate per la visione stereoscopica. Il diagramma a blocchi di alto livello mostrato nella Figura 2 utilizza due videocamere sincronizzate che utilizzano lo stesso standard video, due decoder video e un FPGA. Per garantire la stessa identica frequenza dei fotogrammi, le videocamere devono essere bloccate in linea su un riferimento di temporizzazione comune. Senza sincronizzazione, non sarà possibile combinare le uscite senza utilizzare la memoria esterna per memorizzare fotogrammi video completi. Immagine 2. Schema a blocchi di alto livello. La Figura 3 mostra due flussi video con blocco di linea che vengono uniti in un'unica immagine stereoscopica. La Figura 4 mostra come non è possibile unire flussi video asincroni senza salvare l'intero fotogramma video in una memoria esterna. Immagine 3. Unione di due flussi video sincronizzati. Immagine 4. I flussi video asincroni non possono essere uniti senza utilizzare una memoria esterna. Le uscite delle due videocamere sincronizzate vengono poi digitalizzate da decoder video come ADV7181D, ADV7182 o ADV7186 per videocamere analogiche; o da ricevitori HDMI come ADV7610 o ADV7611 con videocamere digitali. I decodificatori video e i ricevitori HDMI utilizzano loop ad aggancio di fase (PLL) interni per produrre dati di clock e pixel sui loro bus di uscita. Ciò significa che verranno generati due domini di clock separati per le due telecamere durante la digitalizzazione del video analogico o la ricezione del flusso HDMI. Inoltre, i due flussi video possono essere disallineati. Queste differenze temporali e disallineamenti devono essere compensati in un dispositivo back-end come un FPGA, portando i dati a un dominio di clock comune prima di combinare le due immagini video in un unico fotogramma video stereoscopico. Il flusso video sincronizzato viene quindi inviato tramite un trasmettitore HDMI 1.4 compatibile con 3D come ADV7511 o ADV7513, oppure può essere presentato a un DSP come il processore ADSP-BF609 Blackfin®, per un'ulteriore elaborazione. Architetture di clock I decoder video hanno due sorgenti di clock distinte a seconda che siano bloccati o sbloccati. Quando il PLL video è bloccato sul segnale di sincronizzazione in ingresso, sincronizzazione orizzontale per i decoder video o clock TMDS per HDMI, genera un clock che è bloccato sulla sorgente video in ingresso. Quando il blocco video viene perso o il PLL è in modalità di esecuzione libera forzata, il PLL video non è bloccato sul segnale di sincronizzazione in ingresso e genera un'uscita di clock che è bloccata sull'orologio a cristalli. Inoltre, l'orologio potrebbe non essere emesso dopo il ripristino poiché il driver dell'orologio LLC è impostato su una modalità di impedenza elevata dopo il ripristino. Pertanto, se il sistema ha due o più percorsi video dal decodificatore video o dal ricevitore HDMI, avrà due domini di clock diversi con frequenze e fasi diverse, anche quando lo stesso clock al cristallo è fornito a due decoder video o ricevitori HDMI, poiché ciascuno il dispositivo genera il proprio orologio basato sul proprio PLL. Sistema sincrono con decoder video bloccati Con il tipico video stereoscopico che utilizza due sorgenti, ciascuno dei decoder video si aggancia al segnale video in ingresso e genera il proprio clock basato sulla sincronizzazione orizzontale in ingresso o sul clock TMDS. Quando due telecamere sono sincronizzate o bloccate in linea allo stesso riferimento temporale, le linee del fotogramma saranno sempre allineate. Poiché i due decoder video separati ricevono la stessa sincronizzazione orizzontale, i pixel clock avranno la stessa frequenza di pixel clock. Ciò consente di portare i due percorsi di dati in un dominio di clock comune, come mostrato nella Figura 5. Immagine 5. Due videocamere sincronizzate su un riferimento comune. Entrambi i decoder video ricevono lo stesso segnale di sincronizzazione, quindi sono anche bloccati. Entrambi i decoder video ricevono lo stesso segnale di sincronizzazione, quindi sono anche bloccati. Sistema video asincrono Sfortunatamente, uno dei decoder potrebbe perdere il blocco a causa di un segnale della sorgente video di scarsa qualità, come mostrato nella Figura 6; oppure le telecamere potrebbero perdere la sincronizzazione a causa di un collegamento video interrotto, come mostrato nella Figura 7. Ciò porterà a frequenze diverse nei due percorsi di dati, che porteranno quindi a un'asimmetria nella quantità di dati sincronizzati nel back-end. Immagine 6. Telecamere con blocco della linea con decoder video sbloccati. Immagine 7. Telecamere sbloccate con decoder video bloccato. Il blocco video perso può essere rilevato utilizzando un interrupt (SD_UNLOCK per i decoder video SD, CP_UNLOCK per i decoder video component o registri TMDSPLL_LCK nei ricevitori HDMI) che si attiva dopo un ritardo. I decoder video integrano meccanismi per uniformare la sincronizzazione orizzontale instabile, quindi il rilevamento del blocco video perso può richiedere fino a un paio di righe. Questo ritardo può essere ridotto controllando il blocco perso all'interno dell'FPGA. Modalità orologio a tre stati Quando si progettano risorse di clock FPGA, è importante sapere che per impostazione predefinita, molti decoder video e prodotti HDMI impostano l'orologio e le linee dati in modalità a tre stati dopo il ripristino. Pertanto, il pixel clock LLC non sarà adatto per reimpostazioni sincrone. Disallineamento dei dati in due flussi video Per semplificare il sistema e ridurre la memoria necessaria per combinare le due immagini, i dati che raggiungono l'FPGA devono essere sincronizzati in modo tale che l'ennesimo pixel della Mth linea della prima telecamera sia ricevuto con l'Nth pixel dell'Mth linea dalla seconda fotocamera. Questo potrebbe essere difficile da ottenere all'ingresso dell'FPGA perché i due percorsi video possono avere latenze diverse: le telecamere con blocco della linea possono emettere linee disallineate, lunghezze di connessione diverse possono contribuire al disallineamento e i decoder video possono introdurre latenze di avvio variabili. A causa di queste latenze si prevede che un sistema con telecamere line-locked presenti un numero di pixel di disallineamento. Disallineamento della telecamera con blocco della linea Anche le telecamere con blocco della linea possono emettere linee video disallineate. La Figura 8 mostra i segnali di sincronizzazione verticale dall'uscita CVBS di due telecamere. Una telecamera, la sincronizzazione master, fornisce un segnale di blocco della linea a una seconda telecamera, la sincronizzazione slave. Il disallineamento di 380 ns è chiaramente visibile. La figura 9 mostra i dati trasmessi dai decoder video sulle uscite di queste telecamere. È possibile vedere uno spostamento di 11 pixel. Immagine 8. Disallineamento video a 380 ns tra videocamere con blocco della linea. Immagine 9. Disallineamento video non compensato a 11 pixel nel dominio digitale. Diverse lunghezze di connessione Tutte le connessioni elettriche introducono un ritardo di propagazione, quindi assicurati che entrambi i percorsi video abbiano la stessa lunghezza di traccia e cavo. Latenze decoder video/ricevitore HDMI Tutti i decoder video introducono una latenza che può variare a seconda delle funzioni abilitate. Inoltre, alcune parti video contengono elementi, come un FIFO a colori intensi, che possono aggiungere latenza di avvio casuale. Un tipico sistema stereoscopico che utilizza decoder video può avere un ritardo di avvio casuale di circa 5 pixel clock. Un sistema contenente trasmettitori e ricevitori HDMI, come mostrato nella Figura 10, potrebbe avere un ritardo di avvio casuale di circa 40 pixel di clock. Immagine 10. La pipeline ritarda l'impostazione della misurazione. Compensazione del disallineamento La Figura 11 mostra un sistema in cui un segnale analogico proveniente da ciascuna telecamera viene digitalizzato da un decoder video. I dati e l'orologio sono separati per ciascun percorso video. Entrambi i percorsi video sono collegati a FIFO, che memorizzano i dati in entrata per compensare il disallineamento dei dati. Durante il clock out dei dati, le FIFO utilizzano un clock comune da uno dei decoder. In un sistema bloccato, i due percorsi dati dovrebbero avere esattamente la stessa frequenza di clock, assicurando che nessun FIFO overflow o underflow fintanto che le telecamere sono bloccate in linea e i decoder video sono bloccati. Abilitando o disabilitando le uscite FIFO, il blocco di controllo mantiene i livelli FIFO per ridurre al minimo il disallineamento dei pixel. Se la compensazione viene eseguita correttamente, l'output del blocco FPGA dovrebbe essere costituito da due percorsi di dati allineati al primo pixel. Tali dati vengono quindi forniti a un back-end FPGA per la produzione in formato 3D. Immagine 11. Utilizzo di FIFO digitali per riallineare le immagini video. Misurazione del disallineamento Il disallineamento tra due flussi di dati digitalizzati può essere misurato all'uscita dei FIFO video utilizzando un contatore a un clock che viene azzerato sull'impulso di sincronizzazione verticale (VS) di uno dei segnali in ingresso. La Figura 12 mostra due flussi video (vs_a_in e vs_b_in) disallineati di 4 pixel. I contatori misurano il disallineamento utilizzando il metodo mostrato nel Listato 1. Il conteggio inizia sul fronte di salita di VS1 e si ferma sul fronte di salita di VS2. Se la lunghezza totale dei pixel di un fotogramma è nota, l'inclinazione negativa (VS2 prima di VS1) può essere calcolata sottraendo il valore di conteggio dalla lunghezza del fotogramma. Questo valore negativo dovrebbe essere calcolato quando l'inclinazione supera la metà della lunghezza del fotogramma pixel. Il risultato dovrebbe essere utilizzato per riallineare i dati memorizzati nelle FIFO. Immagine 12. Misurazione del disallineamento. Listato 1. Semplice misurazione del disallineamento (Verilog®). module misalign_measurement( reset filo di ingresso, filo di ingresso clk_in, filo di ingresso vs_a_in, filo di ingresso vs_b_in, reg di uscita [15:0] disallineato, reg di uscita pronto); reg [15:0] cnt; reg cnt_en, cnt_reset; reg vs_a_in_r, vs_b_in_r; assegna vs_a_rising = vs_a_in > vs_a_in_r; assegna vs_b_rising = vs_b_in > vs_b_in_r; sempre @(posedge clk_in) inizia vs_a_in_r <= vs_a_in; vs_b_in_r <= vs_b_in; end always @(posedge clk_in) if (reset) begin { ready, cnt_en } <= 2'b00; disallineare <= 0; fine altrimenti inizia se ((vs_a_in == 1'b0) && (vs_b_in == 1'b0)) { pronto, cnt_reset } <= 2'b01; else cnt_reset <= 1'b0; /* inizio */ if (vs_a_rising && vs_b_rising) inizia disallineare <= 0; { pronto, cnt_en } <= 2'b10; end else if ((vs_a_rising > vs_b_in) || (vs_b_rising > vs_a_in)) { ready, cnt_en } <= 2'b01; /* finale */ if ((cnt_en == 1'b1) && (vs_a_rising || vs_b_rising)) begin { ready, cnt_en } <= 2'b10; disallineare <= vs_a_rising ? (-(cnt + 1)) : (cnt + 1); end end sempre @(posedge clk_in) /* counter */ if ((cnt_reset) || (reset)) cnt <= 0; altrimenti se (cnt_en) cnt <= cnt + 1; endmodule Produzione di video 3D da due flussi video allineati Una volta che i dati pixel, linea e frame sono veramente sincroni, un FPGA può formare i dati video in un flusso video 3D, come mostrato nella Figura 13. Immagine 13. Architettura semplificata che realizza formati 3D. I dati in entrata vengono letti in memoria da un orologio comune. L'analizzatore della temporizzazione di sincronizzazione esamina i segnali di sincronizzazione in ingresso ed estrae la temporizzazione video, comprese le lunghezze dei portici anteriori e posteriori orizzontali, i portici anteriori e posteriori verticali, la lunghezza della sincronizzazione orizzontale e verticale, la lunghezza della linea attiva orizzontale, il numero di linee attive verticali e la polarizzazione di sincronizzare i segnali. Il passaggio di queste informazioni al rigeneratore di tempo di sincronizzazione insieme alla posizione attuale dei pixel orizzontali e verticali consente di generare un tempo che è stato modificato per adattarsi alla struttura video 3D desiderata. La tempistica appena creata dovrebbe essere ritardata per garantire che le FIFO contengano la quantità richiesta di dati. Video 3D side-by-side L'architettura meno impegnativa in termini di memoria è il formato side-by-side, che richiede solo un buffer a 2 linee (FIFO) per memorizzare il contenuto delle linee provenienti da entrambe le sorgenti video. Il formato affiancato dovrebbe essere due volte più largo del formato originale in ingresso. Per raggiungere questo obiettivo, è necessario utilizzare un clock raddoppiato per sincronizzare i tempi di sincronizzazione rigenerati con una lunghezza della linea orizzontale raddoppiata. L'orologio raddoppiato utilizzato per il cronometraggio del back-end svuoterà la prima FIFO e poi la seconda FIFO a una velocità doppia, consentendogli di affiancare le immagini, come mostrato nella Figura 14. L'immagine affiancata è mostrata nella Figura 15. Immagine 14. Cucitura di due immagini affiancate utilizzando semplici buffer di linea FPGA. Immagine 15. Immagine affiancata a 576p con timing video Conclusione I decoder e i prodotti HDMI di Analog Devices, insieme alla semplice post-elaborazione, possono creare e consentire la trasmissione di un vero video 3D stereoscopico. Come mostrato, è possibile realizzare video 3D con semplici blocchi digitali e senza costosa memoria.

Lasciate un messaggio 

Nome *
E-mail *
Telefono
Indirizzo
Code Vedere il codice di verifica? Fare clic su Aggiorna!
Messaggio
 

Elenco dei messaggi

Commenti Caricamento in corso ...
Casa| Chi siamo| Prodotti| Notizie| Scaricare| Assistenza| Feedback| Contatti| Servizi

Contatto: Zoey Zhang Web: www.fmuser.net

Whatsapp / Wechat: +86 183 1924 4009

Skype: tomleequan E-mail: [email protected] 

Facebook: FMUSERBROADCAST Youtube: ZOEY FMUSER

Indirizzo in inglese: Room305, HuiLanGe, No.273 HuangPu Road West, TianHe District., GuangZhou, Cina, 510620 Indirizzo in cinese: 广州市天河区黄埔大道西273号惠兰阁305(3E)