Accueil🇫🇷Chercher

Circuit logique programmable

Un circuit logique programmable ou PLD (Programmable Logical Device), est un circuit intégré logique qui peut être programmé après sa fabrication.

Circuit logique programmable
FPGA de Xilinx (modèle Spartan XC3S400) avec 400 000 portes[1].
Invention
Inventeur

Il se compose de nombreuses cellules logiques élémentaires contenant des bascules logiques librement connectables. L'utilisateur doit donc programmer le circuit avant de l'utiliser. Les différentes logiques de programmation (unique, reprogrammable, etc.) et d'architecture ont conduit à la création de sous-familles dont les plus connues sont les FPGA et les CPLD.

Les premiers brevets pour de tels composants datent des années 1980 à 1990 mais c'est au début des années 1990 qu'ils se sont généralisés.

Note : La notion de programmation des PLD revient à définir une table de connexion et d'interconnexion des portes logiques. Ce n'est donc pas une programmation algorithmique (c.-à-d. une série d'instructions faite pour tourner sur un processeur) mais une programmation matérielle.

Historique & principe

Dans les années 1970, le besoin de circuits intégrant des portes logiques (logical device) programmables pour s'adapter à différents développements a émergé. La première technologie de PLD du marché a été développée dans les années 1970 par la société MMI qui sera intégrée à AMD. Elle développe un circuit intégré qui rassemble des portes logiques « pré-câblées ». Lorsque l'utilisateur reçoit son circuit intégré vierge, chaque entrée d'une porte est reliée à toutes les entrées du circuit intégré, via une grille de connexion. Le programmeur va supprimer les connexions inutiles en les faisant littéralement fondre. Ne resteront que les connexions qui réalisent la fonction logique désirée. Cette technologie est appelée « grille de portes logiques programmables » (programmable array logic) ou plus simplement « PAL ».

Cette technologie a grandement évolué depuis vers les CPLD et de nos jours, ce sont les FPGA qui sont de plus en plus populaires grâce à leur compromis souplesse / prix / efficacité.

Les PAL

Un PAL[2] - [3] ne contient que 3 modules (le tout formant une « cellule » ) :

  • un module d'entrĂ©e qui peut recevoir des bascules (comme le module de sortie) et avec une option pour inverser les entrĂ©es logiques via une porte non ;
  • un module « logique » contenant des portes ET et OU. C'est dans ce module que l'on retrouve la grille d'interconnexion ;
  • un module de sortie alimentĂ© par le module logique. Les sorties du PAL sont directement connectĂ©es Ă  ce module. Mais ce module de sortie peut aussi ĂŞtre utilisĂ© comme entrĂ©e du module logique (rebouclage), via 3 sous-technologies :
    • connexion directe, via une logique combinatoire dont la succession des portes peut ĂŞtre de l'un des 3 types suivant :
      • H (high) : ET⇒ OU (sortie active Ă  l'Ă©tat haut),
      • L (low) : ET ⇒ OU ⇒ NON (sortie active Ă  l'Ă©tat bas),
      • C choix du type L ou H programmable ;
    • sĂ©quentielle (Ă  registre) oĂą la connexion est rĂ©alisĂ©e via une bascule couplĂ©e Ă  une horloge. cette connexion peut ĂŞtre de 3 types : synchrone (R), avec potentiellement un ou exclusif (X) ou asynchrone (RA),
    • versatile (oĂą le routage est rĂ©alisĂ© par un registre programmable), on parle alors de VPAL.

La technologie PAL a ensuite évolué avec les :

  • GAL (Generic array logic, circuit logique re-programmable), Ă©quivalent au PAL, mais reprogrammable (rĂ©versibilitĂ© des fusibles) soit par exposition aux UV ou Ă©lectriquement ;
  • EPLD (erasable programmable logic device, circuit logique programmable et effaçable), circuit intĂ©grĂ© regroupant des centaines voire des milliers de GAL ;
  • CPLD (complex programmable logic device, circuit logique programmable complexe), Ă©quivalent aux ELPD, mais dont la programmation et l'interconnexion des cellules (uniquement constituĂ©es de portes logiques) sont plus complexes. C'est lĂ  l'aboutissement actuel de la technologie PAL.

Les CPLD

Les CPLD[4] (issus de la technologie PAL) ont :

  • pour principaux avantages :
    • un temps de traitement bornĂ©, c'est-Ă -dire une forte prĂ©dictibilitĂ© du temps de traitement, indĂ©pendamment de la programmation effectuĂ©e (ce qui peut ĂŞtre essentiel lorsqu'on est amenĂ© Ă  synchroniser plusieurs systèmes),
    • une robustesse de la programmation (enregistrĂ©e sur une EEPROM, elle est non volatile), une fois programmĂ©e, le CPLD est instantanĂ©ment opĂ©rationnel Ă  sa mise en marche,
    • la gestion d'entrĂ©es et sorties (I/O) potentiellement très nombreuses,
    • une faible consommation ;
  • pour principaux inconvĂ©nients :
    • un nombre de cellules assez limitĂ© (de l'ordre du millier),
    • des difficultĂ©s Ă  effectuer des traitements complexes,
    • l'utilisation des ressources n'est pas optimale (tout terme non utilisĂ© dans une Ă©quation logique Ă©quivaut Ă  des portes perdues), avec des taux d'utilisation d'environ 25 %.

Les FPGA

Pour pallier les défauts des CPLD[5], les FPGA (field-programmable gate array, réseau de portes programmables in situ) ont été développés dans les années 2000. Dans l'esprit, ce sont :

  • des « CPLD » oĂą les cellules peuvent contenir :
    • des portes logiques librement interconnectables entre elles,
    • des fonctions Ă©lĂ©mentaires (bascules flip-flop, LUT, Multiplexeurs, boucles Ă  verrouillage de phase),
    • des fonctions de traitement « prĂ©cablĂ©es » (DSP, protocoles de communication comme le PCIe, voire des fonctionnalitĂ©s de microprocesseurs, de mĂ©moire, etc.),
    • nĂ©anmoins, l'architecture et la conception interne des FPGA diffèrent radicalement de celle des CPLD) ;
  • des puces oĂą la performance est un point important, aussi les vitesses de traitement des FPGA (bande passante) surclassent les CPLD. Ceci est notamment dĂ» Ă  l'utilisation de SRAM Ă  la place d'EEPROM comme mĂ©moire interne) ;
  • la technologie des FPGA fait que leur programmation est volatile et doit dont d'ĂŞtre stockĂ©e dans une ROM ou mĂ©moire flash. Un FPGA doit donc charger son programme Ă  chaque mise en route. Les dernières puces intègrent dĂ©sormais une ROM qui garde en mĂ©moire le programme Ă  lancer Ă  chaque dĂ©marrage.

Architecture des FPGA

La plupart des grands FPGA modernes sont fondés sur des cellules SRAM aussi bien pour le routage du circuit que pour les blocs logiques à interconnecter.

Un bloc logique est de manière gĂ©nĂ©rale constituĂ© d'une table de correspondance (LUT ou lookup table) et d'une bascule (flip-flop en anglais). La LUT sert Ă  implĂ©menter des Ă©quations logiques ayant gĂ©nĂ©ralement 4 Ă  6 entrĂ©es et une sortie. Elle peut toutefois ĂŞtre considĂ©rĂ©e comme une petite mĂ©moire, un multiplexeur ou un registre Ă  dĂ©calage. Le registre permet de mĂ©moriser un Ă©tat (machine sĂ©quentielle) ou de synchroniser un signal (pipeline).

Les blocs logiques, présents en grand nombre sur la puce (de quelques milliers à quelques millions en 2007) sont connectés entre eux par une matrice de routage configurable. Ceci permet la reconfiguration à volonté du composant, mais occupe une place importante sur le silicium et justifie le coût élevé des composants FPGA. La topologie est dite « Manhattan », en référence aux rues à angle droit de ce quartier de New York.

Les densités actuelles ne permettent plus un routage manuel, c'est donc un outil de placement-routage automatique qui fait correspondre le schéma logique voulu par le concepteur et les ressources matérielles de la puce. Comme les temps de propagation dépendent de la longueur des liaisons entre cellules logiques, et que les algorithmes d'optimisation des placeurs-routeurs ne sont pas déterministes, les performances (fréquence max.) obtenues dans un FPGA sont variables d'un design à l'autre. L'utilisation des ressources est par contre très bonne, et des taux d'occupation des blocs logiques supérieures à 90 % sont possibles.

Comme la configuration (routage et LUT) est faite par des points de mémoire volatile, il est nécessaire de sauvegarder le design du FPGA dans une mémoire non volatile externe, généralement une mémoire flash série, compatible « JTAG ». Certains fabricants se distinguent toutefois par l'utilisation de cellules EEPROM pour la configuration, éliminant le recours à une mémoire externe, ou par une configuration par anti-fusibles (la programmation par une tension élevée fait « claquer » un diélectrique, créant un contact). Cette dernière technologie n'est toutefois pas reconfigurable.

Quelques fonctionnalités particulières disponibles sur certains composants :

  • blocs de mĂ©moire supplĂ©mentaires (hors des LUT), souvent double-port, parfois avec mĂ©canisme de FIFO ;
  • multiplieurs câblĂ©s (coĂ»teux Ă  implĂ©menter en LUT), voire blocs multiplieur-accumulateur pour traitements DSP ;
  • cĹ“ur de microprocesseur enfoui (dit hard core) comme des architectures PowerPC ou ARM ;
  • blocs PLL pour synthĂ©tiser ou resynchroniser les horloges ;
  • reconfiguration partielle, mĂŞme en cours de fonctionnement ;
  • chiffrement des donnĂ©es de configuration ;
  • sĂ©rialiseurs/dĂ©sĂ©rialiseurs dans les entrĂ©es-sorties, permettant des liaisons sĂ©rie haut-dĂ©bit ;
  • impĂ©dance contrĂ´lĂ©e numĂ©riquement dans les entrĂ©es-sorties, Ă©vitant de nombreux composants passifs sur la carte ;
  • couche MAC Ethernet ;
  • couches matĂ©rielles.

Programmation

La programmation des PLD modernes (FPGA / CPLD) passe généralement par un compilateur basé sur un langage de programmation de type langage de description matériel (ou « HDL » pour Hardware Description Language) comme le ABEL. Pour faciliter la programmation, il existe aussi des langages de plus haut niveau. Les deux plus connus sont le VHDL (« V » pour « Very high speed ») et le VERILOG. Il est également possible d'utiliser OpenCL[6], plutôt qu'un VHDL, ou bien des langages de plus haut niveau que les HDL.

Les autres langages sont ensuite traduits dans un des deux HDL — Verilog ou VHDL — avant de pouvoir être synthétisés pour le circuit. Le synthétiseur est généralement propre à chaque fabriquant, cependant, aujourd'hui, l'utilisation du logiciel libre Yosys, à l'instar de GCC pour la compilation en langage machine, tend à unifier la synthèse pour tous les types de PLD. Certains constructeurs, tels Renesas ou Cologne Chip Design, ont préféré implémenter directement les synthétiseurs de leurs FPGA dans Yosys plutôt que d'en créer de nouveaux (voir : Yosys#Formats_RTL_supportés).

Conception du schéma logique

Afin de pouvoir finaliser un FPGA, il est nécessaire d'utiliser un ou bien un outil de saisie graphique. Après compilation de cette description, on obtient un fichier de configuration pour le FPGA choisi. VHDL et Verilog sont les deux langages de description les plus répandus.

Applications

Les FPGA sont utilisés dans diverses applications nécessitant de l'électronique numérique (télécommunications, aéronautique, transports…). Ils sont également utilisés pour le prototypage d'ASIC.

Les FPGA sont généralement plus lents, plus chers à l'unité et consomment davantage d'énergie que leur équivalent en ASIC (Application Specific Integrated Circuit). Cependant, ils ont plusieurs avantages :

  • dĂ©lai de mise sur le marchĂ© plus court, car ce sont des composants standards ;
  • temps de conception plus court, car on rĂ©utilise des fonctions de base dont la reconfiguration autorise une validation prĂ©alable moins stricte ;
  • coĂ»t infĂ©rieur pour de petites sĂ©ries (moins de 10 000 unitĂ©s). Avec l'Ă©volution technologique, cette quantitĂ© tend Ă  augmenter : en effet, le prix d'une puce est proportionnel Ă  sa surface, qui diminue avec la finesse de gravure, tandis que les coĂ»ts initiaux pour fabriquer un ASIC (conception, tests, masques de gravure) sont en forte augmentation.

Il est parfois possible de transformer directement un FPGA en une version ASIC plus rapide, moins chère et consommant moins (car les matrices de routage sont remplacées par une couche de métallisation fixe).

Plusieurs FPGA modernes possèdent la possibilité d'être reconfigurés (on parle de configuration lorsqu'il s'agit de programmation du matériel) partiellement à la volée. Ceci permet d'obtenir des systèmes reconfigurables — par exemple une unité centrale dont les instructions changent dynamiquement en fonction des besoins.

Les FPGA modernes sont assez vastes et contiennent suffisamment de mémoire pour être configurés pour héberger un cœur de processeur ou un DSP, afin d'exécuter un logiciel. On parle dans ce cas de processeur softcore, par opposition aux microprocesseurs hardcore enfouis dans le silicium. Aujourd'hui, les fabricants de FPGA intègrent même un ou plusieurs cœurs de processeur « hardcore » sur un même composant afin de conserver les ressources logiques configurables du composant. Ceci n'exclut pas l'utilisation de processeur softcore possédant de nombreux avantages. On tend donc vers des systèmes sur une puce, comme pour le microcontrôleur il y a quelques décennies, avec en plus de la logique configurable selon l'utilisateur. A la date où cet article est écrit, la mémoire des derniers FPGA est encore insuffisante pour exécuter des logiciels embarqués un peu complexes et on doit avoir recours à des mémoires externes (ROM, RAM). Cependant, la loi de Moore n'étant pas encore à bout de souffle, celles-ci devraient être intégrées à terme et suffiront à une grande partie des applications embarquées.

Procédés technologiques

Les procédés technologiques de base pour les composants programmables sont les suivants :

  • SRAM (Static Random Access Memory) : programmables Ă  volontĂ© et in situ. Habituellement en technologie CMOS ;
  • EPROM/UVPROM (Erasable Programmable Read-Only Memory) : peuvent ĂŞtre effacĂ©s (et reprogrammĂ©s) par exposition aux rayons ultra-violets. Technologie CMOS, en cours de disparition au profit de l'EEPROM ;
  • EEPROM (Electrically Erasable Programmable Read-Only Memory) : peuvent ĂŞtre effacĂ©s et reprogrammĂ©s Ă  volontĂ©. Quelques-uns peuvent ĂŞtre programmĂ©s in situ (souvent par une connexion JTAG). Technologie CMOS ;
  • Flash (Flash-erase EPROM) : mĂŞmes propriĂ©tĂ©s qu'EEPROM mais avec une densitĂ© supĂ©rieure (donc avec un coĂ»t infĂ©rieur pour une complexitĂ© donnĂ©e). Technologie CMOS ;
  • Fusible : programmables une seule fois. Technologie bipolaire ;
  • Anti-fusible : programmables une seule fois. Technologie CMOS.

Dans le cas des technologies à mémoires (SRAM, EEPROM, flash), la mémoire est située à côté du circuit logique proprement dit et chacun de ses bits pilote un interrupteur (transistor) de configuration du réseau logique. Dans le cas des technologies à (anti-)fusibles, ceux-ci sont directement dans le réseau logique et ont à la fois la fonction de mémoire non-volatile et d'interrupteur.

Les FPGA haut de gamme sont Ă  la pointe de la technologie : les sauts technologiques, comme la finesse de gravure, sont souvent rĂ©alisĂ©s sur ces composants avant de passer aux microprocesseurs. En effet, la structure rĂ©pĂ©titive de la matrice logique est propice au rĂ©glage des machines de gravure microĂ©lectronique. Ainsi, les premiers composants gravĂ©s avec une finesse de 90 nm ont Ă©tĂ© les FPGA Spartan3 de Xilinx, en 2003[7].

Fabricants

Parmi les fabricants de tels circuits programmables, on trouve Abound Logic, Achronix (en), Anlogic, Atmel, Cypress, Gowin, Intel PSG (ex. : Altera), Lattice Semiconductor, Microsemi (ex. : Actel), Nallatech (en), QuickLogic, SiliconBlue, Efinix, Tabula Inc., Tier Logic et Xilinx.

Voir aussi

Notes et références

  1. Xilinx, Spartan-3 FPGA devices data sheet.
  2. Philippe LETENNEUR, Lycée Julliot de la Julliot de la Morandière - GRANVILLE, « Les circuits logiques programmables » [PDF], sur https://sti.discip.ac-caen.fr/ (consulté le )
  3. « ASIC et composants logiques programmables : PAL, PLD, CPLD, FPGA », sur genelaix.free.fr (consulté le )
  4. (en) « What is the difference between CPLDs and FPGAs? » [html], sur https://xilinx.com, (consulté le )
  5. (en-US) « CPLD vs FPGA: Differences between them and which one to use? », sur Numato Lab Help Center, (consulté le )
    • Mehdi Roozmeh et Luciano Lavagno, « Design space exploration of multi-core RTL via high level synthesis from OpenCL models », Microprocessors and Microsystems, vol. 63,‎ , p. 199-208 (DOI 10.1016/j.micpro.2018.09.009, lire en ligne)
  6. (en) Anthony Cataldo, « Xilinx moves low-end line to 90-nm process », sur eetimes.com (en), (consultĂ© le )

Articles connexes

Liens externes

Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.