Un circuit logique programmable ( PLD ) est un composant électronique utilisé pour construire des circuits numériques reconfigurables . Contrairement à la logique numérique construite à l'aide de portes logiques discrètes à fonction fixe, la fonction d'un PLD n'est pas définie lors de sa fabrication. Avant de pouvoir être utilisé dans un circuit, le PLD doit être programmé pour implémenter la fonction souhaitée. Comparés aux circuits logiques fixes, les circuits logiques programmables simplifient la conception de circuits logiques complexes et peuvent offrir des performances supérieures. Contrairement aux microprocesseurs , la programmation d'un PLD modifie les connexions entre les portes logiques du circuit. Les PLD peuvent être globalement classés, par ordre de complexité croissante, en dispositifs logiques programmables simples (SPLD) , comprenant la logique matricielle programmable , la logique matricielle programmable et la logique matricielle générique ; dispositifs logiques programmables complexes (CPLD) ; et réseaux de portes programmables sur site (FPGA) .
En 1970, Texas Instruments a développé un circuit intégré programmable par masque basé sur la mémoire associative en lecture seule (ROAM) d'IBM . Ce dispositif, le TMS2000, était programmé en modifiant la couche métallique lors de sa fabrication. Le TMS2000 comportait jusqu'à 17 entrées et 18 sorties, avec 8 bascules JK pour la mémoire. TI a inventé le terme « réseau logique programmable » (PLA) pour ce dispositif.
En 1971, General Electric Company (GE) développait un circuit logique programmable basé sur la nouvelle technologie de mémoire morte programmable (PROM). Ce dispositif expérimental améliorait la ROAM d'IBM en permettant une logique multiniveaux. Intel venait de lancer l' EPROM UV à grille flottante ; les chercheurs de GE intégrèrent donc cette technologie. Le dispositif de GE fut le premier circuit logique programmable effaçable jamais développé, précédant l' EPLD d'Altera de plus d'une décennie. GE obtint plusieurs brevets précoces sur les circuits logiques programmables.
En 1973, National Semiconductor a lancé un circuit intégré PLA programmable par masque (DM7575) doté de 14 entrées et 8 sorties, sans registres de mémoire. Ce circuit a connu un plus grand succès que celui de TI, mais le coût de fabrication du masque métallique en a limité l'utilisation. Ce composant est important car il a servi de base au FPGA (Field Programmable Logic Array) produit par Signetics en 1975, le 82S100. ( Intersil a en réalité devancé Signetics sur le marché, mais un faible rendement a compromis le succès de son circuit.)
En 1974, GE conclut un accord avec Monolithic Memories (MMI) pour développer un circuit logique programmable par masque intégrant les innovations de GE. Ce circuit fut baptisé PALA (Programmable Associative Logic Array) . Le MMI 5760 fut finalisé en 1976 et pouvait implémenter des circuits multiniveaux ou séquentiels de plus de 100 portes logiques. Le circuit était pris en charge par un environnement de conception GE permettant de convertir les équations booléennes en masques pour sa configuration. Ce composant ne fut jamais commercialisé.
Technologies
PLA
Un réseau logique programmable (PLA) est composé d'un réseau de portes ET programmables, relié à un réseau de portes OU programmables. La complémentation de ces deux réseaux est conditionnelle et produit une sortie. Le principe d'un PLA est similaire à celui d'une ROM ; cependant, contrairement à une ROM, un PLA ne permet pas le décodage complet d'une variable et ne génère pas tous les mintermes .
Le séquenceur logique programmable (PLS/FPLS) est similaire à un PLA, mais avec des sorties enregistrées intégrées utilisant un certain nombre de bascules pour permettre la création de certaines machines à états . Signetics a introduit le premier FPLS en 1979.
COPAIN
Après le succès des composants PAL 20 broches de MMI, AMD a lancé le PAL Vantis , qui a ensuite été acquise par Lattice Semiconductor en 1999.
GALs
Une amélioration du PAL a été apportée par le dispositif logique matriciel générique (GAL), inventé par Lattice Semiconductor en 1985. Ce dispositif possède les mêmes propriétés logiques que le PAL, mais peut être effacé et reprogrammé. Le GAL est très utile lors du prototypage d'un circuit, car il permet de corriger les erreurs logiques par reprogrammation. La programmation et la reprogrammation des GAL s'effectuent à l'aide d'un programmateur PAL ou, pour les puces compatibles, par programmation en circuit .
Les circuits logiques à grille flottante ( GAL) à réseau de 2 octets combinent les technologies CMOS et E² pour obtenir un dispositif logique haute vitesse et basse consommation. Un dispositif similaire, appelé PEEL (logique programmable et effaçable électriquement), a été introduit par la société International CMOS Technology (ICT).
Parfois, une puce GAL est appelée dispositif logique programmable simple (SPLD), complémentaire d'un dispositif logique programmable complexe (CPLD) décrit ci-dessous.
CPLD
Certains CPLD sont programmés à l'aide d'un programmateur PAL, mais cette méthode s'avère peu pratique pour les dispositifs comportant des centaines de broches. Une autre méthode consiste à souder le dispositif sur son circuit imprimé, puis à l'alimenter avec un flux de données série provenant d'un ordinateur. Le CPLD intègre un circuit qui décode ce flux de données et le configure pour exécuter la fonction logique spécifiée. Certains fabricants, tels qu'Altera et Atmel (désormais Microchip) , utilisent le protocole JTAG pour programmer les CPLD directement sur le circuit à partir de fichiers .JAM .
FPGA
(Remarque : les circuits intégrés 82S100 et similaires de Signetics possèdent une structure PLA, plan ET + plan OU.)
Les FPGA utilisent une grille de portes logiques et, une fois stockées, les données restent inchangées, à l'instar des réseaux de portes classiques. Le terme « programmable sur site » signifie que le dispositif est programmé par le client, et non par le fabricant. Les FPGA et les réseaux de portes sont similaires, mais ces derniers ne peuvent être configurés qu'en usine, lors de leur fabrication.
Les FPGA sont généralement programmés après leur soudure sur la carte de circuit imprimé, de manière similaire aux CPLD de plus grande taille. Dans la plupart des FPGA de grande taille, la configuration est volatile et doit être rechargée dans le dispositif à chaque mise sous tension ou lorsqu'une fonctionnalité différente est requise. La configuration est généralement stockée dans une PROM , une EEPROM ou une mémoire flash. Les versions EEPROM peuvent être programmables en système (généralement via JTAG ).
La différence entre les FPGA et les CPLD réside dans leur architecture interne : les FPGA utilisent des tables de correspondance (LUT), tandis que les CPLD réalisent les fonctions logiques à l’aide d’un réseau de portes logiques (par exemple, une somme de produits ). Les CPLD sont conçus pour des circuits simples, tandis que les FPGA sont destinés à des circuits plus complexes. De manière générale, les CPLD sont un bon choix pour les applications logiques combinatoires à grande échelle , tandis que les FPGA sont plus adaptés aux automates à états finis complexes , tels que les microprocesseurs .
Autres variantes
Il s'agit de circuits à microprocesseur comportant des fonctions fixes et d'autres modifiables par le code exécuté sur le processeur. La conception de systèmes auto-modifiables exige des ingénieurs l'apprentissage de nouvelles méthodes et le développement de nouveaux outils logiciels.
On trouve désormais sur le marché des PLD intégrant un microprocesseur à fonction fixe (le cœur ) entouré d'une logique programmable. Ces dispositifs permettent aux concepteurs de se concentrer sur l'ajout de nouvelles fonctionnalités sans se soucier du fonctionnement du microprocesseur. De plus, le microprocesseur à fonction fixe occupe moins d'espace sur la puce qu'une partie de la matrice de portes programmables implémentant le même processeur, libérant ainsi de la place pour les circuits spécialisés de la matrice.
Comment les PLD conservent leur configuration
Un PLD est une combinaison d'un dispositif logique et d'un dispositif de mémoire . La mémoire sert à stocker le motif fourni à la puce lors de sa programmation. La plupart des méthodes de stockage de données dans un circuit intégré ont été adaptées aux PLD. Parmi celles-ci :
Les antifusibles en silicium sont des connexions réalisées en appliquant une tension sur une zone modifiée de silicium à l'intérieur de la puce. On les appelle antifusibles car leur fonctionnement est inverse à celui des fusibles classiques, qui sont initialement des connexions qui ne sont interrompues que par un courant électrique.
La SRAM, ou mémoire vive statique, est un type de mémoire volatile, ce qui signifie que son contenu est effacé à chaque coupure de courant. Les PLD à base de SRAM doivent donc être reprogrammés à chaque mise sous tension. Cette reprogrammation est généralement effectuée automatiquement par un autre composant du circuit.
Une cellule mémoire EPROM est un MOSFET (transistor à effet de champ métal-oxyde-semiconducteur, ou transistor MOS) qui peut être activé en piégeant une charge électrique de façon permanente sur son électrode de grille. Cette opération est réalisée par un programmateur PAL. La charge persiste pendant de nombreuses années et ne peut être effacée qu'en exposant la puce à une forte lumière ultraviolette dans un appareil appelé effaceur EPROM.
La mémoire flash est non volatile et conserve son contenu même hors tension. Elle est stockée sur des cellules mémoire MOSFET à grille flottante et peut être effacée et reprogrammée à volonté. Ceci la rend utile dans les PLD susceptibles d'être reprogrammés fréquemment, comme ceux utilisés dans les prototypes. La mémoire flash est un type d'EEPROM qui stocke les informations grâce à des charges électriques piégées, à l'instar des EPROM. Par conséquent, la mémoire flash peut conserver les informations pendant des années, mais probablement moins longtemps que les EPROM.
En 2005, la plupart des CPLD étaient programmables et effaçables électriquement, et non volatils. Ceci s'explique par leur taille réduite, qui rend inutile la programmation des cellules SRAM internes à chaque démarrage, et par le coût plus élevé des cellules EPROM, dû à leur boîtier céramique avec fenêtre en quartz.
EPLD

Un dispositif logique programmable effaçable ( EPLD ) est un circuit intégré composé d'un réseau de PLD non pré-connectés ; les connexions sont programmées électriquement par l'utilisateur. La plupart des dispositifs GAL et FPGA sont des exemples d'EPLD ou d'EEPLD. les EPROM , les EPLD possèdent une fenêtre en quartz dans le boîtier qui permet leur effacement par exposition à la lumière UV.
Utilisant la même technologie que les EEPROM , les EEPLD peuvent être effacés électriquement.
Langages de programmation PLD
De nombreux dispositifs de programmation PAL acceptent les données d'entrée dans un format de fichier standard, communément appelé « fichiers JEDEC ». Ils sont analogues aux compilateurs logiciels . Les langages utilisés comme code source pour les compilateurs logiques sont appelés langages de description de matériel , ou HDL.
PALASM , ABEL et CUPL sont fréquemment utilisés pour les dispositifs de faible complexité, tandis que Verilog et VHDL sont des langages de description de haut niveau couramment utilisés pour les dispositifs plus complexes. ABEL, plus limité, est souvent employé pour des raisons historiques, mais pour les nouvelles conceptions, VHDL est plus répandu, même pour les dispositifs de faible complexité.
Pour les langages de programmation PLD modernes, les flux de conception et les outils, voir FPGA et informatique reconfigurable .
Dispositifs de programmation PLD
Un programmateur de dispositifs est utilisé pour transférer le motif logique booléen dans le dispositif programmable. Aux débuts de la logique programmable, chaque fabricant de PLD produisait également un programmateur spécialisé pour sa gamme de circuits logiques. Par la suite, des programmateurs universels, compatibles avec plusieurs familles de circuits logiques de différents fabricants, sont apparus sur le marché. Les programmateurs actuels peuvent généralement programmer les PLD courants (principalement des équivalents PAL/GAL) de tous les fabricants existants. Les formats de fichiers couramment utilisés pour stocker le motif logique booléen (fusibles) sont JEDEC, Altera POF (fichier objet programmable) et Xilinx BITstream.