Introduction


Les circuits programmables(Field-Programmable Gate Arrays FPGA) sont des circuits intégrés spécifiques dont la structure interne peut être configurée selon les besoins de l'utilisateur.

Le FPGA contient des fonctions polyvalentes pouvant reproduire le comportement de portes logiques élémentaires, telles que celles vues dans les précédents chapitres de ce cours, mais aussi des interconnexions et réseaux d'entrée/sortie configurables, pour s'adapter au mieux aux spécifications de l'utilisateur.

Les FPGA permettent le prototypage rapide à l'aide de structures logiques personnalisées et sont très populaires pour une production en séries limitées, évitant le coût parfois considérable de la fabrication d'un circuit intégré spécifique.

Les versions les plus simples des FPGA comportent une matrice de quelques centaines d'éléments configurables, permettant de reproduire des fonctions relativement peu complexes, telles que des petites machines de contrôle, ou des fonctions de calcul simples. Le composant d'entrée de gamme de la série SPARTAN 6 de XILINX inclut environ 4000 blocs logiques programmables. Il est monté sur un kit de développement à faible coût (moins de 100 EUR), permettant de prototyper quelques fonctions élémentaires.

Kit de développement du SPARTAN 6 de Xilinx proposé par Numato https://numato.com  © 2019 Numato Systems Private Limited

Kit de développement du SPARTAN 6 de Xilinx proposé par Numato https://numato.com © 2019 Numato Systems Private Limited

Dans leurs versions les plus complexes, les FPGA ciblent notamment le traitement vidéo haute performance, la voiture autonome, le big data, la 5G ou encore l'intelligence artificielle, grâce à des composants appelés Adaptive Compute Acceleration Platforms (ACAP). Ces systèmes, tels que XILINX Versal, intègrent des processeurs de calculs tels que ARM Cortex, des processeurs de traitement du signal (DSP), mais aussi des processeurs dédiés à l'intelligence artificielle (AI Engines).


Processeur Versal de Xilinx © 2019 Xilinx https://www.xilinx.com/products/silicon-devices.html

Processeur Versal de Xilinx © 2019 Xilinx https://www.xilinx.com/products/silicon-devices.html


Structures programmables


Un avantage clé du FPGA est sa capacité à être reprogrammé selon l'application voulue.

Si l'on regarde de près la structure interne d'un FPGA, on trouve trois types de structure configurable :

  • les entrées/sorties (Configurable I/O pads), qui peuvent être configurées en entrée, en sortie, ou les deux, avec un grand nombre d'options en termes de courant délivré, de forme et d'interprétation des signaux,
  • les blocs logiques programmables (Configurable Logic Blocs ou CLB), qui peuvent être configurés en fonctions logiques combinatoires et séquentielles selon les besoins de l'utilisateur,
  • les points d'interconnexion programmables (Programmable Interconnect Points ou PIP), qui permettent d'établir des liaisons entre CLB et entrées/sorties selon le besoin utilisateur.

Structure interne d'un FPGA - A gauche, de haut en bas, les plots d'entrée/Sortie configurables, les Blocs Logiques Configurables, et les Points d'Interconnexion Programmables

Structure interne d'un FPGA - A gauche, de haut en bas, les plots d'entrée/Sortie configurables, les Blocs Logiques Configurables, et les Points d'Interconnexion Programmables


Un exemple très simple d'implémentation


Un exemple de fonction très simple (XOR à 3 entrées) implémentée dans un FPGA est donné ci-dessous. Trois pads, à gauche, sont configurés comme entrées, un bloc logique est utilisé pour créer le XOR à 3 entrées et un pad, à droite, est utilisé en sortie. La propagation des signaux est gérée par des lignes d'interconnexion connectées aux interfaces d'entrées/sorties grâce à la configuration adéquate des points d'interconnexion programmables.

Configuration d'une portion de FPGA comme fonction XOR 3 entrées

Configuration d'une portion de FPGA comme fonction XOR 3 entrées

Dans la figure ci-dessus, nous trouvons à gauche les plots configurés en entrée, puis, à l'aide de lignes d'interconnexion, une stimulation des entrées des blocs logiques configurés en XOR3, enfin, à l'aide de points d'interconnexion programmables, le routage du signal XOR3 vers un plot que l'on configurera en sortie.


Configuration d'un FPGA


La configuration d'un FPGA s'effectue, en général, à l'aide d'un ordinateur externe relié au système programmable, par exemple à l'aide d'un câble USB. Un logiciel dialogue directement avec le composant et configure, selon les besoins de l'utilisateur, chaque sous-ensemble du FPGA. Une fois la configuration terminée, le FPGA peut alors démarrer les calculs, par exemple réaliser la fonction précédente A XOR B XOR C .

Dans ce chapitre, vous avez découvert les circuits programmables de type FPGA et leur architecture simplifiée.

Dans le chapitre suivant, vous allez apprendre comment on peut implémenter différentes fonctions logiques simples et programmer des fonctions plus complexes.