Principes fondamentaux du FPGA : Principes de base des réseaux de portes programmable sur site

Aperçu

Les réseaux de portes programmables sur site (FPGA) sont des circuits intégrés qui peuvent être reconfigurés pour répondre aux besoins des concepteurs. Les puces FPGA contiennent un ensemble de blocs logiques programmables, et leur adoption généralisée est motivée par leur flexibilité, leur vitesse et leur fiabilité à cadencement matériel, et leur parallélisme.

Contenu

Contrairement aux processeurs, les FPGA sont intrinsèquement parallèles, de sorte que plusieurs opérations de traitement différentes ne se trouvent pas en concurrence en ce qui concerne l’utilisation des ressources. Chaque tâche de traitement indépendante est affectée à une section spécifique de la puce et peut donc fonctionner en toute autonomie sans dépendre aucunement des autres blocs logiques. En conséquence, vous pouvez accroître le volume de traitement effectué sans que les performances d’une partie de l’application n’en soient affectées pour autant.

Logique d'application FPGA

Figure 1 : L ' un des avantages des FPGA par rapport aux systèmes basés sur processeur est que la logique d ' application est implémentée dans des Circuits matériels plutôt que de s ' exécuter sur un système d ' exploitation, des drivers et des logiciels d ' application.

Définition des composants d'une puce FPGA

Chaque puce FPGA est composée d’un nombre limité de ressources prédéfinies avec des interconnexions programmables pour implémenter un circuit numérique reconfigurable et des blocs d’E/S pour permettre au circuit d’accéder au monde extérieur.

parties d'une puce fpga

Figure 2 : Les différentes parties d’un FPGA

Les spécifications des ressources FPGA incluent souvent le nombre de blocs logiques configurables, le nombre de blocs logiques de fonction fixe tels que les multiplicateurs et la taille des ressources mémoire telles que les blocs RAM embarqués. Parmi les nombreuses spécifications FPGA, celles-ci sont généralement les plus importantes lors de la sélection et de la comparaison de FPGA pour une application particulière.

Les blocs logiques configurables (CLB) sont l'unité logique de base d'un FPGA. Parfois appelées slices ou cellules logiques, les CLB sont composées de deux composants de base : les bascules et les tables de correspondance (LUT). Diverses familles de FPGA diffèrent dans la façon dont les bascules et les LUT sont empaquetées ensemble, il est donc important de comprendre les bascules et les LUT.

Bascules bistables

Les bascules sont des registres à décalage binaires utilisés pour synchroniser la logique et enregistrer les états logiques entre les cycles d'horloge d'un circuit FPGA. Sur chaque front d'horloge, une bascule verrouille la valeur 1 ou 0 (VRAI ou FAUX) sur son entrée et maintient cette valeur constante jusqu'au front d'horloge suivant.

symbole de bascule

Figure 3 : Symbole de bascule

Les bascules sont des registres à décalage binaires utilisés pour synchroniser la logique et enregistrer les états logiques entre les cycles d'horloge d'un circuit FPGA. Sur chaque front d'horloge, une bascule verrouille la valeur 1 ou 0 (VRAI ou FAUX) sur son entrée et maintient cette valeur constante jusqu'au front d'horloge suivant.

Tables de correspondance (LUT)

lut à quatre entrées

Figure 4 : LUT à quatre entrées

Une grande partie de la logique d’un CLB est implémentée en utilisant de très petites quantités de RAM sous forme de LUT. Il est facile de supposer que le nombre de portes système dans un FPGA fait référence au nombre de portes NON ET et de portes NON OU dans une puce particulière. Mais, en réalité, toute la logique combinatoire (ET, OU, NON ET, OUX, etc.) est implémentée comme tables de vérité dans la mémoire LUT. Une table de vérité est une liste prédéfinie de sorties pour chaque combinaison d'entrées.

Voici le rafraîchissement rapide de la classe de logique numérique.

L'opération booléenne ET, par exemple, est illustrée à la figure 5 :

Booléen LabVIEW et fonctionnement

Figure 5 : Booléen NI LabVIEW ET fonctionnement

La table de vérité correspondante pour les deux entrées d'une opération ET est illustrée dans le tableau 1.

Entrée 1

Entrée 2Sortie

0

0

0

0

1

0

1

0

0

1

1

1

Tableau 1 : Table de vérité pour l'opération booléenne ET

Multiplicateurs et tranches DSP

Fonction multiplier LabVIEW

Figure 6 : Fonction Multiplier de NI LabVIEW

La tâche apparemment simple de multiplier deux nombres ensemble peut prendre énormément de ressources et devenir complexe à implémenter dans les circuits numériques. Pour fournir un cadre de référence, la figure 6 montre le schéma d'une façon d'implémenter un multiplicateur 4 bits par 4 bits en utilisant la logique combinatoire.

dessin schématique d'un multiplicateur 4 bits par 4 bits

Figure 7 : Dessin schématique d'un multiplicateur 4 bits par 4 bits

Imaginez maintenant multiplier deux nombres 32 bits ensemble, et vous vous retrouverez avec plus de 2000 opérations pour une seule multiplication. Pour cette raison, les FPGA ont un circuit multiplicateur prédéfini pour économiser sur l’utilisation de LUT et de bascules dans les applications mathématiques et de traitement du signal.

De nombreux algorithmes de traitement du signal impliquent de garder le total cumulatif des nombres multipliés, et, par conséquent, les FPGA plus performants comme les FPGA Xilinx Virtex-5 ont des circuits multiplicateurs-accumulateurs préconstruits. Ces blocs de traitement prédéfinis, également appelés slices DSP48, intègrent un multiplicateur 25 bits par 18 bits avec circuit additionneur.

Bloc RAM

Les ressources mémoire sont une autre spécification clé à prendre en compte lors de la sélection des FPGA. La RAM définie par l'utilisateur, intégrée dans toute la puce FPGA, est utile pour stocker des ensembles de données ou transmettre des valeurs entre des tâches parallèles. Selon la famille FPGA, vous pouvez configurer la RAM embarquée en blocs de 16 ou 36 Ko. Vous avez toujours la possibilité d'implémenter des ensembles de données sous forme de tableaux en utilisant des bascules ; cependant, les grands tableaux deviennent rapidement coûteux pour les ressources logiques FPGA. Un tableau de 100 éléments de nombres 32 bits peut consommer plus de 30 % des bascules d'un FPGA Virtex-II 1000 ou occuper moins de 1 % du bloc RAM embarqué. Les algorithmes de traitement du signal numérique doivent souvent suivre un bloc entier de données, ou les coefficients d'une équation complexe, et sans mémoire embarquée, de nombreuses fonctions de traitement ne rentrent pas dans la logique configurable d'une puce FPGA.

L'exécution parallèle inhérente aux FPGA permet de piloter des éléments de logique matérielle indépendants par différentes horloges. Le transfert de données entre des logiques s'exécutant à différentes fréquences peut être difficile, et la mémoire embarquée est souvent utilisée pour fluidifier le transfert à l'aide de buffers de mémoire FIFO (First-In-First-Out).

Conception de FPGA dans un système

Bien que les FPGA présentent de nombreux avantages, tels que la vitesse, la fiabilité et la flexibilité, il existe également des compromis associés aux FPGA. Les FPGA n'ont pas l'écosystème de drivers et la base de code/IP que les architectures de microprocesseurs et les systèmes d'exploitation ont. De plus, les microprocesseurs couplés aux systèmes d'exploitation constituent la base des structures de fichiers et de la communication avec les périphériques utilisés pour de nombreuses tâches, souvent essentielles, telles que l'enregistrement des données sur disque.

En conséquence, au cours de la dernière décennie, une architecture hybride, parfois appelée architecture hétérogène, a émergé dans laquelle un microprocesseur est associé à un FPGA qui est ensuite connecté aux E/S. Les FPGA modernes combinent souvent des portes logiques avec des processeurs dans une seule puce appelée System on Chip (SoC) pour améliorer les performances de calcul. Cette approche tire parti des avantages offerts par ces deux cibles.

National Instruments a implémenté ce puissant microprocesseur et cette architecture FPGA dans ses périphériques compatibles FPGA. Ces périphériques couvrent de nombreux facteurs de forme différents, des systèmes robustes aux systèmes hautes performances, tous basés sur cette même architecture.

Le matériel compatible NI FPGA comprend la technologie suivante :

Outils de conception FPGA

Maintenant que vous connaissez les éléments constitutifs d’une puce FPGA, vous pouvez vous demander : « Comment configurez-vous tous ces millions de composants pour construire la logique que vous devez exécuter ? »

La réponse est que vous définissez des tâches de calcul numérique dans un logiciel en utilisant des outils de développement, puis que vous les compilez dans un fichier de configuration ou un flux de bits qui contient des informations sur la façon dont les composants doivent être câblés ensemble. Le défi dans le passé avec la technologie FPGA était que les outils de conception FPGA de bas niveau ne pouvaient être utilisés que par des ingénieurs ayant une compréhension approfondie de la conception de matériel numérique. Cependant, l ' essor des outils de conception de synthèse de haut niveau (HLS), tels que LabVIEW, modifie les règles de programmation FPGA et apporte de nouvelles technologies qui convertissent les diagrammes graphiques en circuits matériels numériques.

Outils de conception FPGA traditionnels

Au cours des 20 premières années de développement du FPGA, les langages de description du matériel (HDL) tels que VHDL et Verilog sont devenus les principaux langages de conception des algorithmes s’exécutant sur la puce FPGA. Ces langages de bas niveau intègrent certains des avantages offerts par les autres langages textuels avec la prise de conscience que sur un FPGA, vous construisez un circuit. La syntaxe hybride résultante exige que les signaux soient mappés ou connectés des ports d'E/S externes aux signaux internes, qui sont finalement câblés aux fonctions qui hébergent les algorithmes. Ces fonctions s'exécutent séquentiellement et peuvent faire référence à d'autres fonctions du FPGA. Cependant, la véritable nature parallèle de l'exécution de la tâche sur un FPGA est difficile à visualiser dans un flux séquentiel ligne par ligne. Les HDL reflètent certains des attributs des autres langages textuels, mais ils diffèrent considérablement car ils sont basés sur un modèle de flux de données où les E/S sont connectées à une série de blocs de fonctions par l’intermédiaire de signaux.

Pour vérifier ensuite la logique créée par un programmeur FPGA, il est courant d’écrire des bancs de test en HDL pour enrouler et exercer la conception FPGA en activant les entrées et en vérifiant les sorties. Le banc de test et le code FPGA sont exécutés dans un environnement de simulation qui modélise le comportement de cadencement matériel de la puce FPGA et affiche tous les signaux en entrée et en sortie au concepteur pour validation du test. Le processus de création du banc de test HDL et d’exécution de la simulation nécessite souvent plus de temps que la création de la conception HDL FPGA d’origine elle-même.

Une fois que vous avez créé une conception FPGA en utilisant HDL et que vous l’avez vérifiée, vous devez l’alimenter dans un outil de compilation qui prend la logique textuelle et, à travers plusieurs étapes complexes, synthétise votre HDL dans un fichier de configuration ou un flux de bits qui contient des informations sur la façon dont les composants doivent être câblés ensemble. Dans le cadre de ce processus manuel en plusieurs étapes, vous devez souvent spécifier un mappage des noms de signaux aux broches de la puce FPGA que vous utilisez.

Figure 8 : Conception FPGA compteur simple en VHDL

En fin de compte, le défi de ce flux de conception est que l’expertise requise pour programmer dans les HDL traditionnels n’est pas répandue, et par conséquent, la technologie FPGA n’a pas été accessible à la grande majorité des ingénieurs et des scientifiques.

Outils de conception de synthèse de haut niveau

L'apparition des outils de conception graphique HLS, tels que LabVIEW, a permis de lever certains des obstacles majeurs du processus de conception HDL traditionnel. L'environnement de programmation LabVIEW est nettement adapté à la programmation FPGA car il représente clairement le parallélisme et le flux de données, de sorte que les utilisateurs qui sont à la fois expérimentés et inexpérimentés dans les processus de conception FPGA traditionnels peuvent tirer parti de la technologie FPGA. De plus, afin que la propriété intellectuelle (PI) antérieure ne soit pas perdue, vous pouvez utiliser LabVIEW pour intégrer le VHDL existant dans vos conceptions LabVIEW FPGA. LabVIEW FPGA étant fortement intégré au matériel, il n'est pas nécessaire de réécrire du code en VHDL pour répondre aux contraintes de cadencement ou de ressources, comme cela peut être le cas dans de nombreux générateurs de code HLS.

Figure 9 : À gauche, LabVIEW, outil de conception de haut niveau pour les FPGA. Il fournit une abstraction pour la complexité de bas niveau souvent rencontrée lors de la création et de la mise à l’échelle de conceptions VHDL.

Ensuite pour simuler et vérifier le comportement de votre logique FPGA, LabVIEW propose des fonctionnalités directement dans l'environnement de développement. Sans connaissance du langage HDL de bas niveau, vous pouvez créer des bancs de test pour exercer la logique de votre conception. De plus, la flexibilité de l'environnement LabVIEW aide les utilisateurs plus avancés à modéliser le cadencement et la logique de leurs conceptions en exportant vers des simulateurs précis en période tels que Xilinx ISim.

Les outils de compilation LabVIEW FPGA automatisent le processus de compilation, de sorte que vous pouvez démarrer le processus en cliquant sur un bouton et recevoir les rapports et les erreurs, le cas échéant, au fur et à mesure que les étapes de compilation sont terminées. Si des erreurs de cadencement surviennent à cause de votre conception FPGA, LabVIEW met en évidence graphiquement ces chemins critiques pour accélérer le processus de mise au point.

Conclusion

L'adoption de la technologie FPGA ne cesse d'augmenter car des outils de plus haut niveau tels que LabVIEW rendent les FPGA plus accessibles. Il est tout de même important de regarder à l’intérieur du FPGA et d’apprécier ce qui se passe réellement lorsque les diagrammes sont compilés pour s’exécuter en silicium. Comparer et sélectionner des cibles matérielles basées sur des bascules, des LUT, des multiplicateurs et des blocs RAM est le meilleur moyen de choisir la puce FPGA adaptée à votre application. Comprendre l’utilisation des ressources est extrêmement utile pendant le développement, en particulier lors de l’optimisation de la taille et de la vitesse. Ce document ne se veut pas une liste exhaustive de tous les éléments fondamentaux du FPGA. Pour en savoir plus sur les FPGA et la conception de matériel numérique, consultez les ressources ci-dessous.