Pourquoi et comment utiliser les FPGA d'Efinix pour l'imagerie IA/ML — 2e partie : capture et traitement d'images

Par Adam Taylor

Avec la contribution de Rédacteurs européens de DigiKey

Note de l'éditeur : les nouvelles approches en matière d'architectures FPGA offrent un contrôle plus précis et une plus grande flexibilité pour répondre aux besoins de l'apprentissage automatique (ML) et de l'intelligence artificielle (IA). La 1re partie de cette série en deux parties présente une telle architecture d'Efinix et explique comment commencer à l'utiliser à l'aide d'une carte de développement. Cette 2e partie traite de l'interfaçage de la carte de développement avec des dispositifs et des périphériques externes, tels qu'une caméra, et explique comment tirer parti d'un FPGA pour éliminer les goulets d'étranglement dans le traitement d'images.

Les FPGA jouent un rôle essentiel dans de nombreuses applications, du contrôle et de la sécurité industriels à la robotique, l'aérospatiale et l'automobile. Grâce à la nature flexible du cœur logique programmable et aux larges capacités d'interfaçage, un cas d'utilisation croissant pour les FPGA est le traitement d'image, où l'apprentissage automatique (ML) peut être déployé. Les FPGA sont parfaits pour mettre en œuvre des solutions dotées de plusieurs interfaces de caméra haute vitesse grâce à leur structure logique parallèle. De plus, les FPGA permettent également l'utilisation d'un pipeline de traitement dédié dans la logique, éliminant ainsi les goulets d'étranglement des ressources partagées associés aux solutions basées sur des processeurs (CPU) ou des processeurs graphiques (GPU).

Ce deuxième article sur les FPGA Titanium d'Efinix étudie l'application de référence de traitement d'images fournie avec la carte de développement Ti180 M484 du FPGA. L'objectif est de comprendre les éléments constitutifs de la conception et d'identifier où la technologie FPGA permet d'éliminer les goulets d'étranglement ou d'offrir d'autres avantages aux développeurs.

Conception de référence basée sur Ti180 M484

Conceptuellement, la conception de référence (Figure 1) reçoit des images de plusieurs caméras MIPI (Mobile Industry Processor Interface), effectue une mise en mémoire tampon des images dans le LPDDR4x, puis transmet les images sur un écran HDMI (High Definition Multimedia Interface). Une carte mezzanine FPGA (FMC) et quatre interfaces QSE de Samtec sur la carte sont utilisées pour fournir les entrées de caméra et la sortie HDMI.

Image de la conception de référence Ti180 M484 d'EfinixFigure 1 : Conceptuellement, la conception de référence Ti180 M484 reçoit des images de plusieurs caméras MIPI, effectue une mise en mémoire tampon des images dans le LPDDR4x, puis transmet les images sur un écran HDMI. (Source de l'image : Efinix)

La carte d'extension FMC vers QSE est utilisée en conjonction avec la carte fille HDMI pour fournir le chemin vidéo de sortie, tandis que trois connecteurs QSE sont utilisés pour interfacer avec les caméras MIPI SEN0494 de DFRobot. Si plusieurs caméras MIPI sont indisponibles, il est possible d'utiliser une seule caméra en rebouclant le canal d'une seule caméra pour simuler des caméras supplémentaires.

À haut niveau, cette application peut sembler simple. Cependant, la réception de plusieurs flux MIPI haute-définition (HD) à une fréquence d'images élevée est difficile. C'est là que la technologie FPGA est utile car elle permet aux concepteurs d'utiliser plusieurs flux MIPI en parallèle.

L'architecture de la conception de référence exploite à la fois les structures de traitement parallèles et séquentielles avec le FPGA. Les structures parallèles sont utilisées pour mettre en œuvre le pipeline de traitement d'image, tandis qu'un processeur RISC-V fournit le traitement séquentiel utilisé pour les tables de correspondance (LUT) FPGA.

Le pipeline de traitement d'image peut être divisé en deux éléments dans de nombreux systèmes de traitement d'image basés sur FPGA, à savoir les flux d'entrée et de sortie. Le flux d'entrée est connecté à l'interface de caméra/capteur et les fonctions de traitement sont appliquées à la sortie du capteur. Ces fonctions peuvent inclure la conversion Bayer, l'équilibrage automatique des blancs et d'autres améliorations. Dans le flux de sortie, l'image est préparée pour l'affichage. Cela inclut la modification des espaces colorimétriques (par exemple, RVB en YUV) et le post-traitement pour le format de sortie souhaité, tel que HDMI.

Souvent, la chaîne de traitement des images d'entrée fonctionne à la fréquence d'horloge des pixels du capteur. Celle-ci a une synchronisation différente de celle de la chaîne de sortie, qui est traitée à la fréquence d'affichage de sortie.

Un tampon d'images est utilisé pour connecter l'entrée au pipeline de traitement de sortie, qui est souvent stocké dans une mémoire externe hautes performances, telle que LPDDR4x. Ce tampon d'images se découple entre les pipelines d'entrée et de sortie, permettant l'accès au tampon d'images via un accès direct à la mémoire à la fréquence d'horloge appropriée.

La conception de référence Ti180 utilise une approche similaire aux concepts décrits ci-dessus. Le pipeline de traitement d'image d'entrée implémente un bloc de propriété intellectuelle (IP) de récepteur MIPI CSI-2 (Camera Serial Interface 2), qui est construit sur l'entrée/sortie (E/S) compatible avec la couche physique MIPI (MIPI D-PHY) du FPGA Titanium. L'interface MIPI est complexe car elle utilise à la fois une signalisation asymétrique et différentielle sur la même paire différentielle, en plus des communications basse et haute vitesse. L'intégration de MIPI D-PHY dans les E/S FPGA réduit la complexité de conception du circuit tout en réduisant également la nomenclature (BOM).

Une fois le flux d'images de la caméra reçu, la conception de référence convertit la sortie de MIPI CSI-2 RX en AXI Stream. AXI Stream est une interface haute vitesse unidirectionnelle qui fournit un flux de données d'un maître à un esclave. Des signaux de mise en liaison pour le transfert entre un maître et un esclave sont fournis (tvalid et tready) ainsi que des signaux de bande latérale. Ces signaux de bande latérale peuvent être utilisés pour transmettre des informations de synchronisation d'image telles que le début de trame et la fin de ligne.

AXI Stream est idéal pour les applications de traitement d'images et permet à Efinix de fournir une série d'IP de traitement d'images qui peuvent ensuite être facilement intégrées dans la chaîne de traitement selon les besoins de l'application.

Une fois reçus, les signaux de synchronisation et les données d'image MIPI CSI-2 sont convertis en flux AXI Stream et entrés dans un module d'accès direct à la mémoire (DMA), qui écrit la trame d'image sur le LPDDR4x et agit comme tampon d'images.

Ce module DMA fonctionne sous le contrôle du cœur RISC-V dans le FPGA au sein d'un système sur puce (SoC) Sapphire. Ce SoC fournit le contrôle, tel que l'arrêt et le démarrage des écritures DMA, en plus de fournir au canal d'écriture DMA les informations nécessaires pour écrire correctement les données d'image sur le LPDDR4x. Ces informations incluent des informations sur l'emplacement de la mémoire et la largeur et la hauteur de l'image définies en octets.

Le canal de sortie dans la conception de référence lit les informations d'image à partir du tampon d'images LPDDR4x sous le contrôle du SoC RISC-V. Les données sont émises par l'IP DMA en tant que flux AXI Stream, qui est ensuite converti du format RAW fourni par le capteur au format RVB (Figure 2), et préparé pour la sortie via l'émetteur HDMI embarqué ADV7511 d'Analog Devices.

Images d'exemple de la conception de référenceFigure 2 : Images d'exemple de la conception de référence. (Source de l'image : Adam Taylor)

L'utilisation de DMA permet également au SoC Sapphire RISC-V d'accéder aux images stockées dans le tampon d'images, ainsi qu'aux statistiques et aux informations d'image. Le SoC Sapphire est également capable d'écrire des couches dans le LPDDR4x afin qu'elles puissent être fusionnées avec le flux vidéo de sortie.

Les capteurs d'image CMOS (CIS) modernes ont plusieurs modes de fonctionnement et peuvent être configurés pour fournir un traitement sur puce, ainsi que plusieurs formats de sortie et schémas de cadencement différents. Cette configuration est normalement fournie via une interface I²C. Dans la conception de référence d'Efinix, cette communication I²C vers les caméras MIPI est assurée par le processeur RISC-V du SoC Sapphire.

L'intégration du processeur RISC-V dans le FPGA Titanium réduit la taille globale de la solution finale car elle élimine le besoin d'implémenter à la fois des machines à états FPGA complexes qui augmentent le risque de conception, et des processeurs externes qui augmentent la nomenclature.

L'intégration du processeur permet également la prise en charge d'une IP supplémentaire pour communiquer avec la carte MicroSD. Cela permet de réaliser des applications concrètes dans lesquelles il peut être nécessaire de stocker des images pour une analyse ultérieure.

Globalement, l'architecture de la conception de référence Ti180 est optimisée pour fournir une solution compacte, économique et néanmoins hautes performances qui permet aux développeurs de réduire les coûts de nomenclature grâce à l'intégration du système.

L'un des principaux avantages des conceptions de référence est qu'elles peuvent être utilisées pour lancer le développement d'applications sur du matériel personnalisé, permettant aux développeurs de prendre des éléments critiques de la conception et de les développer avec les personnalisations nécessaires. Cela inclut la possibilité d'utiliser le flux TinyML d'Efinix pour mettre en œuvre des applications TinyML basées sur la vision et s'exécutant sur le FPGA. Cela permet d'exploiter à la fois la nature parallèle de la logique FPGA et la capacité d'ajouter facilement des instructions personnalisées dans les processeurs RISC-V, permettant de créer des accélérateurs dans la logique FPGA.

Implémentation

Comme illustré dans la 1re partie, l'architecture d'Efinix est unique en ce sens qu'elle utilise des cellules XLR (eXchangeable Logic and Routing) pour fournir à la fois des fonctionnalités de routage et de logique. Un système vidéo tel que celui de la conception de référence est un système mixte qui est à la fois intensif en logique et routage : une logique étendue est requise pour implémenter les fonctionnalités de traitement d'image, et un routage étendu est nécessaire pour connecter les cellules IP aux fréquences requises.

La conception de référence utilise environ 42 % des cellules XLR dans le dispositif, ce qui laisse suffisamment de marge pour des ajouts, y compris des applications personnalisées telles que l'apprentissage automatique en périphérie.

L'utilisation de blocs DSP (traitement des signaux numériques) et RAM est également très efficace, n'utilisant que 4 des 640 blocs DSP et 40 % des blocs de mémoire (Figure 3).

Ressources de base
Entrées 1264 / 3706
Sorties 1725 / 4655
XLR 73587 / 172800
Blocs de mémoire 508 / 1280
Blocs DSP 4 / 640

Figure 3 : L'allocation des ressources sur l'architecture d'Efinix montre que seulement 42 % des cellules XLR sont utilisées, ce qui laisse suffisamment de marge pour des processus supplémentaires. (Source de l'image : Adam Taylor)

Au niveau E/S du dispositif, l'interface DDR pour le LPDDR4x est utilisée pour fournir la mémoire d'application pour le SoC Sapphire et les tampons de trames d'images. Toutes les ressources MIPI dédiées du dispositif sont utilisées avec 50 % des boucles à verrouillage de phase (Figure 4).

Ressource périphérique
DDR 1 / 1
GPIO 22 / 27
HSIO 20,0 / 59
JTAG User TAP 1 / 4
MIPI RX 4 / 4
MIPI TX 4 / 4
Oscillateur 0 / 1
PLL 4 / 8

Figure 4 : Aperçu de l'interface et des ressources E/S utilisées. (Source de l'image : Adam Taylor)

L'E/S à usage général (GPIO) est utilisée pour fournir les communications I²C avec plusieurs des interfaces connectées au SoC Sapphire, notamment FLASH NOR, UART USB et carte SD. L'E/S HSIO est utilisée pour fournir la sortie vidéo haute vitesse à l'émetteur HDMI ADC7511.

Les éléments cruciaux lors de la conception avec des FPGA incluent non seulement l'implémentation et l'adaptation de la conception dans le FPGA, mais également la capacité à placer la conception logique dans le FPGA et à atteindre les performances de synchronisation requises après le routage.

L'époque des conceptions FPGA à domaine d'horloge unique est révolue depuis longtemps. Il existe plusieurs horloges différentes, toutes fonctionnant à des fréquences élevées dans la conception de référence Ti180. La table de synchronisation finale montre les fréquences maximum atteintes pour les horloges du système. C'est là que les performances de synchronisation requises peuvent également être observées dans les contraintes (Figure 5), qui ont une fréquence d'horloge maximum de 148,5 mégahertz (MHz) pour l'horloge de sortie HDMI.

Image des contraintes d'horloge pour la conception de référenceFigure 5 : Contraintes d'horloge pour la conception de référence. (Source de l'image : Adam Taylor)

La mise en œuvre de la synchronisation en tenant compte des contraintes montre le potentiel de la structure XLR du FPGA Titanium car elle réduit le retard de routage possible, augmentant ainsi les performances de conception (Figure 6).

Synchronisation
WNS (Worst Negative Slack) 0,182 ns
WHS (Worst Hold Slack) 0,026 ns
i_pixel_clk 211,909 MHz
tx_escclk 261,370 MHz
i_pixel_clk_tx 210,881 MHz
i_sys_clk 755,858 MHz
i_axi0_mem_clk 130,429 MHz
i_sys_clk_25mhz 234,577 MHz
i_soc_clk 187,231 MHz
i_hdmi_clk 233,918 MHz
mipi_dphy_rx_inst1_WORD_CLKOUT_HS 273,973 MHz
mipi_dphy_rx_inst2_WORD_CLKOUT_HS 262,881 MHz
mipi_dphy_rx_inst3_WORD_CLKOUT_HS 204,290 MHz
mipi_dphy_rx_inst4_WORD_CLKOUT_HS 207,598 MHz
mipi_dphy_tx_inst1_SLOWCLK 201,979 MHz
mipi_dphy_tx_inst2_SLOWCLK 191,865 MHz
mipi_dphy_tx_inst3_SLOWCLK 165,235 MHz
mipi_dphy_tx_inst4_SLOWCLK 160,823 MHz
jtag_inst1_TCK 180,505 MHz

Figure 6 : La mise en œuvre de la synchronisation en tenant compte des contraintes montre le potentiel de la structure XLR du FPGA Titanium pour réduire le retard de routage possible, augmentant ainsi les performances de conception. (Source de l'image : Adam Taylor)

Conclusion

La conception de référence Ti180 M484 présente clairement les capacités des FPGA d'Efinix et du Ti180 en particulier. La conception exploite plusieurs des structures E/S uniques pour implémenter un chemin de traitement d'image complexe qui prend en charge plusieurs flux MIPI entrants. Ce système de traitement d'image fonctionne sous le contrôle d'un SoC Sapphire à cœur logiciel, qui implémente les éléments de traitement séquentiel nécessaires de l'application.

DigiKey logo

Avertissement : les opinions, convictions et points de vue exprimés par les divers auteurs et/ou participants au forum sur ce site Web ne reflètent pas nécessairement ceux de DigiKey ni les politiques officielles de la société.

À propos de l'auteur

Image of Adam Taylor

Adam Taylor

Adam Taylor is a world-recognized expert in the design and development of embedded systems and FPGAs for several end applications. Throughout his career, Adam has used FPGAs to implement a wide variety of solutions, from RADAR to safety critical control systems (SIL4) and satellite systems. He also had interesting stops in image processing and cryptography along the way.

Adam is a Chartered Engineer, Senior Member of the IEEE, Fellow of the Institute of Engineering and Technology, Arm Innovator, and Edge Impulse Ambassador. He is also the owner of the engineering and consultancy company Adiuvo Engineering and Training which develops embedded solutions for high-reliability, mission-critical, and space applications. Current projects include ESA Plato, Lunar Gateway, Generic Space Imager, UKSA TreeView, and several other clients across the world.

FPGAs are Adam’s first love: he is the author of numerous articles and papers on electronic design and FPGA design, including over 440 blogs and 30 million plus views on how to use the Zynq and Zynq MPSoC for Xilinx.

À propos de l'éditeur

Rédacteurs européens de DigiKey