présentation dun design de carte vidéo stéphane tchoulack
TRANSCRIPT
Présentation d’un design de carte vidéo
Stéphane Tchoulack
Sommaire
• Présentation de la compagnie• Présentation d’une carte vidéo
– Architecture générale– Conception– Validation– Tests– Exemple de traitement vidéo– Problèmes rencontrés
• Conclusion
Présentation de la compagnie
Matrox Groupe Vidéo:
• Conception de cartes vidéos pour le marché OEM et end users
• Différentes cartes utilisables dans les Pcs et/ou macintosh
• Fonctions principales: IOs, convertisseurs, traitement
Présentation d’une carte vidéo
Présentation d’une carte vidéo
• Permettent de faire du traitement de signaux vidéos en temps réel
• Permettent de faire la compression H.264 plus vite que le temps réel
• Convertisseur d’une source vers une autre (HDMI, DVI, analog vidéo, SDI)
• Scaling d’un standard vers un autre (SD, HD, 3G)
Présentation d’une carte vidéo
• Architecture générale
Video in DMA
SDI in
Video out DMASDI vout pathSDI out
Audio In DMAAudio in pathAnalog audio
in
Audio extract
Sdi Vin Path
Up/down scaler
Video out ( Uncompressed)
Video In (Uncompressed)
Compressed
Codec Video DMA
Codec Interface
Audio Out DMA
Audio out pathAnalog audio out
Memory controller
Onboard memory
GPDMAPCIe
CORE
PCIe x4
H264
Présentation d’une carte vidéo
• Conception:– Dictée en fonction des besoins du client– Beaucoup de reutilisation d’une carte à l’autre, ce
qui sauve le temps de conception– Problème:
• Désir de Marketing vs faisabilité dans le temps donné• Désir de marketing vs espace disponible dans le FPGA
Présentation d’une carte vidéo
• Conception:– Estimation des ressources utilisées par la future carte
(en prévoyant un extra pour les prochaines features)– Important: estimation de toutes les horloges
nécessaires au bon fonctionnement du système– Choix du FPGA adéquat (le moins cher qui permet
d’atteindre nos objectifs)– Faire un pinout qui servira à placer le FPGA sur la
carte ( c’est en fonction de ce pinout qu’on placera les autres composants sur la carte)
Présentation d’une carte vidéo
• Conception– Codage VHDL– Définition des contraintes de temps (les plus critiques)– Synthèse effectuée avec synplify pro (on utilise
toujours la version la mieux compatible avec l’outil utilisé pour le placement: synplify pro 9 va avec ISE 11)
– Placement et routage effectué par ISE de XILINX. On doit toujours s’assurer que toutes nos contraintes sont respectées avec la plus grande rigueur (principe de “score”)
Présentation d’une carte vidéo
• Conception– Timing Analyser: permet d’analyser
automatiquement tous les chemins dans le FPGA en fonction des contraintes données
=> On peut donc savoir quels sont les chemins qui posent le plus de problème
– FPGA editor: permet d’observer le contenu du FPGA (position de slices, des Block RAM, des Buffers) et de le modifier manuellement
Présentation d’une carte vidéo
• Validation:– Validation hardware: preuve que les périphériques
communiquent bien entre eux. Effectuée par l’équipe NPI et Hardware (New Products Introduction)
– Validation FPGA: preuve que les principales fonctions sont bien exécutées (fait par FPGA et NPI)
Présentation d’une carte vidéo
• Tests QA (assurance qualité)– Tests de la grande majorité des fonctions du produits,
effectués sur différents PCs, avec différents systèms d’exploitation
• Tests Production– Séquence de test effectuée sur chaque produit devant
être envoyé au client. Il est déjà arrivé qu’on constate des Bugs à cette étape
• Le même chemin est suivi pour le SDK bâti par l’équipe Software
Présentation d’une carte vidéo
• Qu’est ce qu’il arrive lors d’une capture vidéo vers le host?
Présentation d’une carte vidéo
• Capture 1080P60 4:2:2 8 bits
Capture vers mémoire locale dans le format demandé par software, roulant sur un PC/MAC.
1080P60: signal progressif de resolution 1920X1080 ayant une fréquence de rafraichissement vertical de 60Hertz.
4:2:2 8 bits: Pour deux pixels, on a : deux valeurs de luma, une valeur de chroma rouge et une valeur de chroma bleue
DRU Descrambler
serial_in_top
Framer
EDH
CRCauto_dete
ct
Flywheel
vin_formater
hs vs
drift_correction
hs vs
EA
ATC_extract
wdma4:2:2,4:2:2:4 – 8/10bpp
TRC_extractvin_align
FIFO
FIFOGTP_DUAL
proc amp
Présentation d’une carte vidéo
Écriture vers mémoire host
Xilinx PCI/PCI-X Core
Master Controller Slave Controller + Config Space
Master Arbiter/Switcher Slave Switcher
SGCMDFORMAT
SGCTRLR
Memory bus access
GPDMACORE
Registers
GPDMA Requesters :- Commands gathering- Commands execution- Target split completion requests
Scatter-gather commands FIFO
TARGET ...
GPDMA Arbiter
Data muxes
Présentation d’une carte vidéo
• Le FPGA demande au host la position en mémoire où sont situées les commandes qui lui sont destinées (SG_CMDFORMAT)
• Le FPGA lit les adresses données par le host et stocke les commandes, afin de les executer(SG_CTRLR)
• Le FPGA exécute les différentes commandes d’accès registre et accès mémoire (GPDMA_CORE)
Présentation d’une carte vidéo
• IOs ( réception d’un signal vidéo par décodeur vidéo, ou GTP) : utilisation de cores qui demandent de s’adapter à leur fonctionnement (il se peut qu’il y ait encore des bugs dans le core)
• Communication PCI express : pour la communication avec le host. Des fois la communication fonctionne bien avec un motherboard puis pas avec un autre; des fois aussi le core pcie utilisé a des bugs à l’intérieur. Il se peut aussi que ce soit le motherboard qui n’est pas completement compatible PCIe
Présentation d’une carte vidéo
• Timings : Nos boards sont produits en grande quantité. Si les contraintes ne sont pas bien effectuées, certains ne passeront pas les tests de production
• Placement : Souvent on doit faire des placements manuels pour aider l’outil à passer l’étape de mapping
Conclusion
• La conception d’un produit se fait en fonction des besoins du client
• On doit toujours être compétitif: livrer des produits fonctionnels à temps, tout en défiant la concurrence
• On doit toujours évoluer avec la technologie ( s’adapter aux nouvelles interfaces, par exemple PCIe)
• On doit évoluer en fonction des outils de conception (nouvelles mises à jour de XILINX par exemple)