Ajouter favoris Set Page d'accueil
Poste:Accueil >> Actualité >> Électron

Produits Catégorie

Produits Mots

Sites Fmuser

Un système basé sur FPGA combine deux flux vidéo pour fournir une vidéo 3D

Date:2021/10/18 21:55:31 Hits:
Introduction Les systèmes vidéo, déjà omniprésents dans les applications grand public, sont de plus en plus répandus dans les domaines automobile, robotique et industriel. Cette croissance des applications non grand public résulte principalement de l'introduction d'une norme HDMI et de DSP et FPGA plus rapides et plus efficaces. Cet article décrit les conditions requises pour obtenir une vision stéréoscopique (vidéo 3D) à l'aide de caméras vidéo analogiques ou HDMI. Il décrit un système basé sur FPGA qui combine deux flux vidéo en un seul flux vidéo 3D pour une transmission via un émetteur HDMI 1.4, et un système basé sur DSP qui économise la bande passante DMA par rapport à celle normalement requise pour recevoir des données de deux caméras. En outre, il montre une méthode pour obtenir un format côte à côte à utiliser avec des caméras 3D ou des systèmes nécessitant une vidéo 3D. Présentation générale La vision stéréoscopique nécessite deux caméras vidéo séparées d'environ 5.5 cm, l'espacement typique entre les yeux d'une personne, comme le montre la figure 1. Figure 1. Deux caméras sur un support alignées pour une vision stéréoscopique. Le schéma fonctionnel de haut niveau illustré à la figure 2 utilise deux caméras vidéo synchronisées qui utilisent la même norme vidéo, deux décodeurs vidéo et un FPGA. Pour garantir exactement la même fréquence d'images, les caméras vidéo doivent être verrouillées en ligne sur une référence de synchronisation commune. Sans synchronisation, il ne sera pas possible de combiner les sorties sans utiliser de mémoire externe pour stocker des images vidéo complètes. Figure 2. Schéma fonctionnel de haut niveau. La figure 3 montre deux flux vidéo à verrouillage de ligne fusionnés en une seule image stéréoscopique. La figure 4 montre comment les flux vidéo asynchrones ne peuvent pas être fusionnés sans enregistrer l'intégralité de l'image vidéo dans une mémoire externe. Figure 3. Fusion de deux flux vidéo synchronisés. Figure 4. Les flux vidéo asynchrones ne peuvent pas être fusionnés sans utiliser une mémoire externe. Les sorties des deux caméras vidéo synchronisées sont ensuite numérisées par des décodeurs vidéo tels que l'ADV7181D, l'ADV7182 ou l'ADV7186 pour les caméras vidéo analogiques ; ou par des récepteurs HDMI tels que l'ADV7610 ou l'ADV7611 avec des caméras vidéo numériques. Les décodeurs vidéo et les récepteurs HDMI utilisent des boucles à verrouillage de phase (PLL) internes pour produire des données d'horloge et de pixels sur leurs bus de sortie. Cela signifie que deux domaines d'horloge distincts seront générés pour les deux caméras lors de la numérisation de la vidéo analogique ou de la réception du flux HDMI. De plus, les deux flux vidéo peuvent être désalignés. Ces différences de synchronisation et désalignements doivent être compensés dans un dispositif principal tel qu'un FPGA, en amenant les données dans un domaine d'horloge commun avant de combiner les deux images vidéo en une seule image vidéo stéréoscopique. Le flux vidéo synchronisé est ensuite envoyé via un émetteur HDMI compatible 1.4D HDMI 3 tel que l'ADV7511 ou l'ADV7513, ou il peut être présenté à un DSP tel que le processeur ADSP-BF609 Blackfin® pour un traitement ultérieur. Architectures de synchronisation Les décodeurs vidéo ont deux sources de synchronisation distinctes selon qu'elles sont verrouillées ou déverrouillées. Lorsque la PLL vidéo est verrouillée sur le signal de synchronisation entrant (synchronisation horizontale pour les décodeurs vidéo ou horloge TMDS pour HDMI), elle génère une horloge verrouillée sur la source vidéo entrante. Lorsque le verrouillage vidéo est perdu ou que la PLL est en mode d'exécution libre forcé, la PLL vidéo n'est pas verrouillée sur le signal de synchronisation entrant et elle génère une sortie d'horloge qui est verrouillée sur l'horloge à cristal. De plus, l'horloge peut ne pas être émise après la réinitialisation car le pilote d'horloge LLC est réglé sur un mode haute impédance après la réinitialisation. Ainsi, si le système a deux chemins vidéo ou plus à partir du décodeur vidéo ou du récepteur HDMI, il aura deux domaines d'horloge différents avec des fréquences et des phases différentes, même lorsque la même horloge cristalline est fournie à deux décodeurs vidéo ou récepteurs HDMI, car chacun l'appareil génère sa propre horloge en fonction de sa propre PLL. Système synchrone avec décodeurs vidéo verrouillés Avec une vidéo stéréoscopique typique utilisant deux sources, chacun des décodeurs vidéo se verrouille sur le signal vidéo entrant et génère sa propre horloge en fonction de la synchronisation horizontale entrante ou de l'horloge TMDS. Lorsque deux caméras sont synchronisées ou verrouillées sur la même référence temporelle, les lignes de trame seront toujours alignées. Étant donné que les deux décodeurs vidéo séparés reçoivent la même synchronisation horizontale, les horloges de pixels auront la même fréquence d'horloge de pixel. Cela permet d'amener les deux chemins de données dans un domaine d'horloge commun, comme le montre la figure 5. Figure 5. Deux caméras vidéo synchronisées sur une référence commune. Les deux décodeurs vidéo reçoivent le même signal de synchronisation, ils sont donc également verrouillés. Les deux décodeurs vidéo reçoivent le même signal de synchronisation, ils sont donc également verrouillés. Système vidéo asynchrone Malheureusement, l'un des décodeurs peut perdre le verrouillage en raison d'un signal de source vidéo de mauvaise qualité, comme le montre la figure 6 ; ou les caméras peuvent perdre la synchronisation en raison d'une liaison vidéo rompue, comme illustré à la Figure 7. Cela conduira à des fréquences différentes dans les deux chemins de données, ce qui conduira alors à une asymétrie dans la quantité de données synchronisées dans le back-end. Figure 6. Caméras à verrouillage de ligne avec décodeurs vidéo déverrouillés. Figure 7. Caméras déverrouillées avec décodeur vidéo verrouillé. Le verrouillage vidéo perdu peut être détecté à l'aide d'une interruption (SD_UNLOCK pour les décodeurs vidéo SD, CP_UNLOCK pour les décodeurs vidéo composante ou registres TMDSPLL_LCK dans les récepteurs HDMI) qui démarre après un certain délai. Les décodeurs vidéo intègrent des mécanismes de lissage de la synchronisation horizontale instable, de sorte que la détection du verrouillage vidéo perdu peut prendre jusqu'à quelques lignes. Ce délai peut être réduit en contrôlant le verrouillage perdu dans le FPGA. Mode d'horloge à trois états Lors de la conception des ressources d'horloge FPGA, il est important de savoir que par défaut, de nombreux décodeurs vidéo et produits HDMI mettent l'horloge et les lignes de données en mode à trois états après réinitialisation. Ainsi, l'horloge de pixel LLC ne sera pas adaptée aux réinitialisations synchrones. Désalignement des données dans deux flux vidéo Pour simplifier le système et réduire la mémoire nécessaire pour combiner les deux images, les données atteignant le FPGA doivent être synchronisées de telle sorte que le Nième pixel de la Mième ligne de la première caméra soit reçu avec le Nième pixel de la Mième ligne de la deuxième caméra. Cela peut être difficile à réaliser à l'entrée du FPGA car les deux chemins vidéo peuvent avoir des latences différentes : les caméras à verrouillage de ligne peuvent produire des lignes mal alignées, des longueurs de connexion différentes peuvent contribuer au désalignement et les décodeurs vidéo peuvent introduire des latences de démarrage variables. En raison de ces latences, on s'attend à ce qu'un système avec des caméras à verrouillage de ligne ait un certain nombre de pixels de désalignement. Désalignement de la caméra à verrouillage de ligne Même les caméras à verrouillage de ligne peuvent produire des lignes vidéo mal alignées. La figure 8 montre les signaux de synchronisation verticale de la sortie CVBS de deux caméras. Une caméra, le maître de synchronisation, fournit un signal de verrouillage de ligne à une deuxième caméra, l'esclave de synchronisation. Un désalignement de 380 ns est clairement visible. La figure 9 montre les données transmises par les décodeurs vidéo sur les sorties de ces caméras. Un décalage de 11 pixels est visible. Figure 8. Désalignement vidéo de 380 ns entre les caméras vidéo à verrouillage de ligne. Figure 9. Désalignement vidéo non compensé de 11 pixels dans le domaine numérique. Différentes longueurs de connexion Toutes les connexions électriques introduisent un délai de propagation, assurez-vous donc que les deux chemins vidéo ont les mêmes longueurs de piste et de câble. Latences du décodeur vidéo/récepteur HDMI Tous les décodeurs vidéo introduisent une latence qui peut varier en fonction des fonctionnalités activées. De plus, certaines parties vidéo contiennent des éléments, tels qu'un FIFO aux couleurs profondes, qui peuvent ajouter une latence de démarrage aléatoire. Un système stéréoscopique typique utilisant des décodeurs vidéo peut avoir un délai de démarrage aléatoire d'environ 5 horloges de pixels. Un système contenant des émetteurs et des récepteurs HDMI, comme illustré à la figure 10, peut avoir un délai de démarrage aléatoire d'environ 40 horloges de pixels. Figure 10. Le pipeline retarde la configuration de la mesure. Compensation de désalignement La figure 11 montre un système dans lequel un signal analogique de chaque caméra est numérisé par un décodeur vidéo. Les données et l'horloge sont séparées pour chaque chemin vidéo. Les deux chemins vidéo sont connectés à des FIFO, qui mettent en mémoire tampon les données entrantes pour compenser le désalignement des données. Lors de la synchronisation des données, les FIFO utilisent une horloge commune de l'un des décodeurs. Dans un système verrouillé, les deux chemins de données doivent avoir exactement la même fréquence d'horloge, garantissant qu'aucun débordement ou sous-débordement FIFO tant que les caméras sont verrouillées en ligne et que les décodeurs vidéo sont verrouillés. En activant ou en désactivant les sorties FIFO, le bloc de contrôle maintient les niveaux FIFO pour minimiser le désalignement des pixels. Si la compensation est effectuée correctement, la sortie du bloc FPGA doit être constituée de deux chemins de données alignés sur le tout premier pixel. Ces données sont ensuite fournies à un back-end FPGA pour la production au format 3D. Figure 11. Utilisation de FIFO numériques pour réaligner les images vidéo. Mesure du désalignement Le désalignement entre deux flux de données numérisés peut être mesuré à la sortie des FIFO vidéo en utilisant un compteur à une horloge qui est réinitialisé sur l'impulsion de synchronisation verticale (VS) de l'un des signaux entrants. La figure 12 montre deux flux vidéo (vs_a_in et vs_b_in) désalignés de 4 pixels. Les compteurs mesurent le désalignement en utilisant la méthode indiquée dans la liste 1. Le comptage démarre sur le front montant de VS1 et s'arrête sur le front montant de VS2. Si la longueur totale des pixels d'une trame est connue, l'asymétrie négative (VS2 précédant VS1) peut être calculée en soustrayant la valeur de comptage de la longueur de la trame. Cette valeur négative doit être calculée lorsque l'inclinaison dépasse la moitié de la longueur de trame de pixel. Le résultat doit être utilisé pour réaligner les données stockées dans les FIFO. Figure 12. Mesure de désalignement. Liste 1. Mesure simple de désalignement (Verilog®). module misalign_measurement( réinitialisation du fil d'entrée, fil d'entrée clk_in, fil d'entrée vs_a_in, fil d'entrée vs_b_in, reg de sortie [15:0] misalign, reg de sortie prêt); reg [15:0] cnt; reg cnt_en, cnt_reset ; reg vs_a_in_r, vs_b_in_r; assigner vs_a_rising = vs_a_in > vs_a_in_r ; assigner vs_b_rising = vs_b_in > vs_b_in_r ; toujours @(posedge clk_in) begin 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; désalignement <= 0 ; end else begin if ((vs_a_in == 1'b0) && (vs_b_in == 1'b0)) { ready, cnt_reset } <= 2'b01; sinon cnt_reset <= 1'b0; /* begin */ if (vs_a_rising && vs_b_rising) begin misalign <= 0; { prêt, cnt_en } <= 2'b10; end else if ((vs_a_rising > vs_b_in) || (vs_b_rising > vs_a_in)) { ready, cnt_en } <= 2'b01; /* se terminant */ if ((cnt_en == 1'b1) && (vs_a_rising || vs_b_rising)) begin { ready, cnt_en } <= 2'b10; désalignement <= vs_a_rising ? (-(cnt + 1)) : (cnt + 1); fin fin toujours @(posedge clk_in) /* compteur */ if ((cnt_reset) || (reset)) cnt <= 0; sinon si (cnt_en) cnt <= cnt + 1 ; endmodule Production de vidéo 3D à partir de deux flux vidéo alignés Une fois que les données de pixels, de lignes et de trames sont vraiment synchrones, un FPGA peut transformer les données vidéo en un flux vidéo 3D, comme le montre la figure 13. Figure 13. Architecture simplifiée qui réalise des formats 3D. Les données entrantes sont lues en mémoire par une horloge commune. L'analyseur de synchronisation de synchronisation examine les signaux de synchronisation entrants et extrait la synchronisation vidéo, y compris les longueurs horizontales des paliers avant et arrière, les paliers verticaux avant et arrière, la longueur de synchronisation horizontale et verticale, la longueur de ligne active horizontale, le nombre de lignes actives verticales et la polarisation de signaux de synchronisation. La transmission de ces informations au régénérateur de synchronisation de synchronisation avec l'emplacement de pixel horizontal et vertical actuel lui permet de générer une synchronisation qui a été modifiée pour s'adapter à la structure vidéo 3D souhaitée. La synchronisation nouvellement créée doit être retardée pour garantir que les FIFO contiennent la quantité de données requise. Vidéo 3D côte à côte L'architecture la moins gourmande en mémoire est le format côte à côte, qui ne nécessite qu'un buffer de 2 lignes (FIFO) pour stocker le contenu des lignes provenant des deux sources vidéo. Le format côte à côte doit être deux fois plus large que le format entrant d'origine. Pour y parvenir, une horloge doublée doit être utilisée pour cadencer la synchronisation de synchronisation régénérée avec une longueur de ligne horizontale doublée. L'horloge doublée utilisée pour cadencer le back-end videra la première FIFO puis la seconde FIFO à un rythme double, ce qui lui permettra de mettre les images côte à côte, comme le montre la figure 14. L'image côte à côte est illustrée à la figure 15. Figure 14. Assemblage de deux images côte à côte à l'aide de simples tampons de ligne FPGA. Figure 15. Image 576p côte à côte avec synchronisation vidéo Conclusion Les décodeurs Analog Devices et les produits HDMI ainsi qu'un post-traitement simple peuvent créer et permettre la transmission d'une véritable vidéo 3D stéréoscopique. Comme montré, il est possible de réaliser une vidéo 3D avec de simples blocs numériques et sans mémoire coûteuse.

Laisser un message 

Nom *
Email *
Téléphone
Adresse
Code Voir le code de vérification? Cliquez rafraîchir!
Message
 

Liste des messages

Commentaires Chargement ...
Accueil| À propos de nous| Produits| Actualité| Télécharger| Assistance| Commentaires| Contactez-Nous| Service

Contact : Zoey Zhang Site Web : www.fmuser.net

Whatsapp / Wechat: Tel: +86 (183)1924 4009

Skype : tomleequan Courriel : [email protected] 

Facebook : FMUSERBROADCAST Youtube : FMUSER ZOEY

Adresse en anglais : Room305, HuiLanGe, No.273 HuangPu Road West, TianHe District., Guangzhou, Chine, 510620 Adresse en chinois : 广州市天河区黄埔大道西273号惠兰阁305(3E)