2015-07-15 4 views
0

Je dois créer un accès à un accès direct à la vidéo qui lit et écrit une vidéo à résolution 4k vers et depuis la DDR3. Je veux utiliser la mise en mémoire tampon à trois images (spécifications du client) mais je veux aussi pouvoir lire les données du même tampon pendant qu'elles sont écrites (avec un retard spécifique dû aux différentes fréquences de lecture/écriture). D'après ce que je comprends, un tampon à trois images sur la plupart des IP standards (comme le Xilinx AXI Vdma Core IP) "verrouille" chaque tampon pour une fonction spécifique et utilise le troisième tampon de rechange pour changer de fonction au cas où ils ne sont pas synchronisés. Mais comment puis-je "déverrouiller" cela pour être capable de lire le même tampon pendant qu'il est écrit?Puis-je lire/écrire à partir du même tampon tout en utilisant un tampon à trois trames?

Répondre

0

Vous devriez regarder les options genlock du noyau VDMA, cela vous permettra de faire exactement ce que vous voulez. Cependant, c'est une très mauvaise idée. Tout d'abord, même si vous lisez la même image écrite, vous risquez de lire des pixels non valides si votre lecture est plus rapide que la vidéo (ce qui est le cas). Il n'y a aucun moyen d'arrêter la lecture VDMA de sorte qu'il ne rattrape pas l'écriture, la synchronisation est faite par trame, pas de synchronisation dans la trame. Notez que le comportement par défaut d'AXI est d'accorder une priorité plus élevée à l'accès en lecture. Deuxièmement, vous ne devriez vraiment pas besoin de le faire. Stocker simplement la vidéo d'entrée dans une FIFO à des domaines d'horloge croisée, en même temps que vous l'envoyez au framebuffer VDMA. Tant que votre fonction de lecture est suffisamment rapide et que le FIFO a une taille suffisante, vous économiserez de la bande passante/puissance mémoire. N'oubliez pas qu'un flux 4k 30fps en échantillonnage 4: 2: 2 nécessite une bande passante mémoire de 4 Gbits/s. Si vous l'écrivez une fois et que vous le lisez deux fois, comme vous le suggérez, vous avez besoin d'une bande passante mémoire efficace de 12 Gbits/s, ce qui commence à être beaucoup. Si votre flux 4k utilise 4: 4: 4 ou 60fps, vous avez besoin de beaucoup plus de bande passante mémoire.

Vous devriez vraiment essayer d'empêcher l'écriture/la lecture de la mémoire. Si vous devez lire le flux vidéo entrant (à une fréquence différente) pendant que vous l'écrivez dans le framebuffer, faites tout votre possible pour empêcher une autre mémoire de lire et d'utiliser des FIFO à la place.

+0

Merci pour l'info. Je dois utiliser un flux 4K. Je n'ai pas de problème de bande passante, mon exigence n ° 1 est de maximiser la qualité du flux et de minimiser la latence. J'ai une entrée Ethernet 4x10 GB. La lecture est deux fois plus rapide (120 Hz vs 60Hz) mais elle lira à partir de deux fonctions d'écriture. Pourriez-vous élaborer sur l'utilisation FIFO? Qu'entendez-vous par "domaines croisés"? Suggérez-vous d'écrire à la fois la DDR et une FIFO et avoir la fonction de lecture utiliser le FIFO plutôt que la mémoire? De plus, je devrai probablement concevoir moi-même le Core car les IP standards ne peuvent pas m'aider avec le recadrage d'image qui est aussi une exigence. – Ioakoutsiouk