Electronique Numérique

Les circuits logique programmables PLD

Les circuits logiques programmables (PLD: Programmable Logic Devices) sont des composants électroniques permettant de créer des circuits logiques personnalisés. Contrairement aux circuits logiques fixes (comme les circuits intégrés TTL ou CMOS), les PLD peuvent être programmés pour répondre à des besoins spécifiques.

Le terme programmable peut prêter à confusion. Les PLD ne sont pas programmés au sens informatique qui consiste à implanter le code d'une application dans un microcontrôleur ou un microprocesseur. Le terme reconfigurable est plus adapté. En effet, un PLD est un circuit intégré qui contient un réseau d'opérateurs logiques de base qui ne sont pas interconnectés lors de la fabrication. L'utilisateur reconfigure le circuit en définissant les connexions entre les les éléments logiques nécessaires pour réaliser une fonction particulière.


Types de PLD

Beaucoup d'acronymes sont utilisés dans le domaine des PLD. Certains désignent des technologies, d'autres des générations de technologies, etc...

  • PLA: (Programmable Logic array) sont les premiers PLD qui ont été développés. Matrice ET programmable, Matrice OU programmable. Permet une flexibilité maximale pour implémenter des fonctions logiques complexes
  • PAL: (Programmable Array Logic) Simplification des PLA : seuls les réseaux AND sont programmables. Moins flexible mais plus rapide et plus économique.
  • GAL: (Generic Array Logic) Version améliorée et plus flexible des PAL. Il sont REprogrammables grâce à leur réseau d'interconnexion de type EEPROM.
  • SPLD: (Simple programmable logic device) Désignes les PLD de première générations. Quelques centaines de portes logiques et quelques dizaines bascules: Technologies PLA, PAL et GAL
  • EPLD: (Erasable PLD) Terme générique pour désigner les PLD reprogrammable avec effacement par UV
  • EEPLD: (Electrically Erasable PLD) Terme générique pour désigner les PLD reprogrammable électriquement
  • CPLD: (complex programmable logic device) Circuits relativement complexes (jusqu'à une ou deux dizaines de milliers de portes). Constitué de blocs logiques programmables dont l'architecture des blocs dérive directement de celle des SPLDs. Peut implémenter des fonctions plus complexes que les PAL.
  • FPGA: (field programmable gate array) Circuit qui peut être très complexe. Des centaines de milliers d'éléments logiques, avec des modules plus au moins sophistiqués et de la mémoire intégrée. (Capacité en constante augmentation).

L'idée de base, les PLA

Un système combinatoire est le plus souvent représenté par des fonctions sous la forme canonique somme. C'est une somme (OR) de produits (AND) des entrées et leurs compléments (NOT)

On constate que nous avons besoins d'inverseurs, de portes ET, de porte OU et d'un ensemble d'interconnexions

Le circuit PLD sera donc constitué de :

  1. Un ensemble de bornes d'entrée,
  2. Un ensemble de buffers qui délivrent les entrées et leurs inverses
  3. Un ensemble de portes ET qui constitue la matrice ET
  4. Un ensemble de portes OU qui constitue la matrice OU
  5. Un ensemble de bornes de sorties,

Les deux matrices (ET et OU) sont programmables :

  • Chaque porte de la matrice ET est connectée, via des fusibles, à toutes les entrées et leurs inverses.
  • Chaque porte de la matrice OU est connectée, via des fusibles, à toutes les sorties de la matrice ET
  • Lors de la programmation (reconfiguration), l'utilisateur, à l'aide d'un logiciel et d'un équipement spécialisés (programmeur) configure le circuit en détruisant les fusibles inutiles. Seuls les fusibles nécessaires pour réaliser la fonction logique souhaitée sont conservés

Simplification de dessin :

Pour alléger le dessin, on a adopté la convention ci-dessous :

Voici la représentation d'un PLA 4 entrées et 3 sortie


PLA programmé :

$$ S_1=AB+\bar{A}\bar{B}\bar{C}\bar{D} $$ $$ S_2=A\bar{C}+\bar{A}CD+B $$ $$ S_3=AB+A\bar{C}+\bar{A}\bar{B}\bar{D} $$

Les PAL

Un PAL (Programmable Array Logic) est un PLA dont seule la matrice ET est programmables. La matrice OU est fixe.

Les PAL sont plus économiques mais moins souples. Par exemple, avec le circuit de la figure ci dessous, on ne peut pas synthétiser une fonction constitué de la somme de plus de 4 monômes


Points de connexion à fusibles :

  • Des diodes ou des transistors MOS sont utilisés comme point de connexion entre les lignes et les colonnes,
  • A la fabrication, tous les points de connexion (fusibles) sont conducteurs,
  • Lors de la programmation, on détruit les fusibles non désirés par claquage. Cette technique consiste à appliquer pendant un court instant une tension supérieure à la tension de destruction (Break down voltage). Une fois claqué, le composant ne peut plus conduire, ce qui équivaut à couper la connexion,
  • C'est un processus permanent et irréversible. Les circuits peuvent être programmés une seule fois. On parle de technologie PROM.

Points de connexion à anti-fusible

Contrairement à un fusible, un anti-fusible est initialement isolant. Lors de la programmation, l'application d'une tension ou d'un courant élevé provoque un court-circuit permanent. Cela établit une connexion électrique là où il n'y en avait pas initialement.

La figure ci-dessous illustre une des technologies utilisées. Deux conducteurs sont séparés par une couche très mince de matériau isolant (par exemple, du silicium amorphe). Lors de la programmation, l'application d'une tension élevée (environ 20 volts) transforme d'une manière permanente le matériau isolant en conducteur, établissant ainsi une liaison entre les deux conducteurs.


Les GAL :

  • un GAL (Generic Array Logic) est une version améliorée et plus flexible des PAL,
  • Les GAL sont conçus pour être REprogrammables. Ils peuvent être reprogrammés plusieurs fois grâce à leur points de connexion EPLD ou EEPLD,
  • Les GAL sont souvent conçus pour être des remplacements directs des PAL dans les circuits existants, ce qui facilite leur adoption.

Point de Connexion EPLD :

  • Le terme EPLD (Erasable Programmable Logic Device) s'inspire du terme EPROM (Erasable Programmable Read-Only Memory), car ces circuits utilisent le même type de transistor MOS à grille isolée que les mémoires EPROM.
  • Ces circuits se distinguent par leur capacité à être effaçables par exposition aux rayons ultraviolets, ce qui les rend reprogrammables après effacement.
  • Le point de connexion est basé sur un transistor MOS à grille flottante ou grille isolée. Plus précisément, ce type de transistor comporte deux grilles :
    • Une grille de contrôle, accessible pour appliquer une tension.
    • Une grille flottante, complètement isolée électriquement et capable de piéger des charges électriques.
  • Lors de la programmation, une tension appropriée appliquée sur la grille de contrôle génère un effet tunnel (ou injection par effet Fowler-Nordheim), permettant le transfert d'électrons vers la grille flottante. Ces électrons y restent piégés même après suppression de la tension de contrôle, modifiant ainsi l'état du transistor.
  • L'effacement des électrons de la grille flottante se fait par exposition aux rayons ultraviolets, qui fournissent l'énergie nécessaire pour libérer les charges et rétablir l'état initial du transistor. Le boîtier dispose d'une petite fenêtre en verre pour permettre au UV d'atteindre les composants.

Utilisation de la grille de contrôle :

La grille de contrôle intervient à la fois pendant la phase d'utilisation, la phase de programmation, et la phase d'effacement du circuit.


Phase d'utilisation :

Pendant la phase d'utilisation du circuit, les grilles de contrôles de tous les transistors sont portées à 5 Volts. L'état de chaque transistor dépend de l'état de sa grille flottante :

  • Grille flottante non chargée : Le potentiel de 5 V appliqué sur la grille de contrôle crée un champ électrique qui attire les électrons minoritaires du substrat. Cela induit un canal de conduction entre le drain et la source. Résultat : les transistors non programmés fonctionnent comme des points de connexion fermés (ON).
  • Grille flottante chargée : La charge négative présente sur la grille flottante masque l'effet du potentiel de la grille de contrôle. Aucun canal de conduction n'est formé entre le drain et la source. Résultat : les transistors programmés agissent comme des points de connexion ouverts (OFF).

Phase de programmation :

Une tension élevée (≈ 20 V) est appliquée sur la grille de contrôle du transistor à programmer. Ce fort champ électrique provoque un effet tunnel ou injection par effet Fowler-Nordheim, qui transfère des électrons vers la grille flottante. Les électrons restent piégés sur la grille flottante après la suppression de la tension de contrôle, modifiant définitivement l'état du transistor.


Phase d'effacement :

Pendant cette phase, le circuit est placé sous une lampe à UV pendant une vingtaine de minutes. Les rayons ultraviolets fournissent l'énergie nécessaire pour libérer les charges et rétablir l'état initial du transistor. Pendant cette phase, le fait de porter la grille de contrôle à un potentiel inférieur à celui du substrat peut faciliter le retour des charges piégées à leur état initial. Une fois les charges éliminées, les transistors retrouvent leur état initial et peuvent être reprogrammés.


Point de Connexion EEPLD

Un point de connexion EEPLD utilise un transistor à grille isolée qui a bénéficié d'un certain nombre d'améliorations technologiques afin qu'il puisse être reprogrammé électriquement sans nécessité d'un effacement par ultra-violets.

Les principales améliorations pour rendre les transistors à grille isolée effaçables électriquement incluent :

  • Réduction de l'épaisseur de l'isolant entre la grille flottante et le substrat (200 Å),
  • Amélioration des matériaux de l'oxyde isolant par l'utilisation de matériaux à haute permittivité diélectrique (high-k),
  • Optimisation de la grille flottante pour une meilleure rétention des charges.
  • Pour charger la grille flottante, on applique une tension élevée (typiquement entre +15V et +20V) sur la grille de contrôle pour générer un champ électrique suffisant qui provoque un transfert d'électrons vers la grille flottante par effet tunnel,
  • Pour retirer les charges piégées dans la grille flottante et ramener le transistor à son état initial, on applique une tension élevée de sens inverse (typiquement entre -15V et -20V) sur la grille de contrôle. Cette tension inverse génère un champ électrique qui extrait les électrons de la grille flottante par effet tunnel.

Lors de la phase d'utilisation, le point de connexion EEPLD s'utilise comme le point de connexion EPLD. les grilles de contrôles de tous les transistors sont portées à 5 Volts. L'état de chaque transistor dépend de l'état de sa grille flottante :

  • Grille flottante non chargée : Le potentiel de 5 V appliqué sur la grille de contrôle crée un champ électrique qui attire les électrons minoritaires du substrat. Cela induit un canal de conduction entre le drain et la source. Résultat : les transistors non programmés fonctionnent comme des points de connexion fermés (ON).
  • Grille flottante chargée : La charge négative présente sur la grille flottante masque l'effet du potentiel de la grille de contrôle. Aucun canal de conduction n'est formé entre le drain et la source. Résultat : les transistors programmés agissent comme des points de connexion ouverts (OFF).

Les blocs d'Entrée Sortie

Les blocs d'entrée/sortie (E/S) des circuits PLD sont des interfaces configurables qui permettent de connecter le circuit à des périphériques externes. Ils peuvent inclure des fonctionnalités telles que des tampons tri-état, des registres de capture, ou des options de polarité, offrant ainsi une grande flexibilité pour s'adapter aux exigences spécifiques des systèmes numériques.

Sortie 3 états

Les sorties sont souvent de type 3 états, ce qui permet de les déconnecter au besoin

Entrée Sortie

Une entrée-sortie est une broche qui peut être utilisée soit comme entrée soit comme sortie. Elle sert aussi à réinjecter la sortie avec les entrées ce qui permet l'étude des systèmes séquentiels

Sortie combinatoire

Un sortie combinatoire peut être active au niveau haut, au niveau bas ou au choix :

  • Type H : Sortie active au niveau Haut
  • Type L : Sortie active au niveau bas
  • Type C : Combinée: programmable en type H ou L

Sortie à registre

  • La sortie est mémorisée dans une bascule,
  • Dans certaines versions, La bascule dispose d'entrées de forçage asynchrones, (Clear, Preset)
  • Dans certaines versions, un XOR d'inversion programmable est inséré juste derrière la porte OR

Sortie versatile

E/S très souple qui peut être configurée dans différents modes en programmant les fusibles S0 et S1


Le circuit PAL16L8

C'est un circuit à sorties combinatoires (active Low). La référence est un peu trompeuse car elle précise 16 entrées et 8 sorties. En réalité, les sorties sont des E/S et sont comptées avec les entrée. Pour être précis, le circuit dispose de 10 entrées pures, 2 sorties pures et 6 Entrée-sorties.

Le circuit GAL22V10

Le circuit GAL22V10 était populaire à son époque. Il est reprogrammable grace à ses point de connexion de type EEPLD. Il dispose de 12 Entrée et de 10 E/S Versatiles


Les CPLD

Les CPLD (circuits logiques programmables complexes ) constituent une évolution des circuits logiques programmables simples (comme les PAL et GAL) en offrant une capacité de logique plus importante et une flexibilité accrue. Voici quelques propriétés :

  • Ils sont essentiellement de technologie EEPLD : Non volatiles et Reprogrammables
  • Ils permette de réaliser des systèmes assez complexes: USART, contrôleur LAN, contrôleur graphique, contrôleur cache …
  • Il sont caractérisés par un temps de propagation court et prédictible dû la structure d'interconnexion unique,
  • Le nombre de LABs dans un circuit dépend des familles. Une dizaine à plusieurs centaines

Structure d'un circuit CPLD :

Un CPLD est constitué de trois ensembles principaux :

  • Plusieurs blocs de type PLD appelés LAB (Logic Array Bloc). Chaque bloc (LAB) est constitué d'un ensemble de macrocellules permettant chacune de synthétiser une fonction logique comme c'est le cas dans un circuit 22V10 par exemple,
  • Quelques blocs d'E/S pour se connecter à l'extérieure,
  • Une matrice d'interconnection permettant de relier les LABs entre eux et avec les E/S. Elle est appelée PI ou PIA (Programmable Interconnect array)

Structure d'un LAB :

Chaque LAB est constitué de plusieurs macrocellules de type SPLD (16 en général).

Les macrocellules constituants les LAB CPLD sont plus élaborées que celles des SPLD.

Dans un PAL classique, chaque somme (OU) est connectée à un à un nombre fixe de produits (ET). Cependant, toutes ces produits ne sont pas toujours nécessaires pour synthétiser une fonction logique. Si tous les produits ne sont pas utilisés, ces ressources restent gaspillées.

Dans les macrocellules d'un LAB CPLD, on a ajouté une matrice de sélection de Produits (PTC - Product-Term Select Matrix), qui permet de rediriger les produits (ET) non utilisés vers d'autres macrocellules, ou si nécessaire, d'injecter des produits venant d'autres macrocellules. Ceci permet d' obtenir un meilleur taux d'utilisation des ressources.


Les FPGA

La technologie FPGA : Field-Programmable Gate Array est la catégorie de PLD la plus développée et la plus utilisée de nos jours. Sa capacité et ses performances sont bien supérieures à celles de la technologie CPLD. Les circuit FPGA sont plus flexibles et peuvent être configurés plusieurs fois, même après leur mise en service. Ils sont largement utilisés pour des applications complexes telles que le traitement du signal, les systèmes embarqués, en phase de prototypage et en produit final.

Parmi les caractéristiques principales des circuits FPGA on peut citer :

  • Un circuit FPGA est constitué d'un grand nombre de blocs logiques programmables appelés CLB (Configurable Logic Blocks). Ces blocs sont répartis sur toute la surface de la puce et "baignent" dans une matrice d'interconnexion programmable, également distribuée sur toute la surface. Cette matrice permet de connecter les CLB entre eux et de les interfacer avec les blocs d'E/S programmables (IO ou IOB) qui entourent l'ensemble. Bien que les exigences de routage varient d'un circuit à l'autre, certaines caractéristiques communes peuvent être exploitées pour concevoir de manière optimale cette interconnexion. Par exemple, la plupart des conceptions présentent une certaine localité, ce qui nécessite une abondance de fils courts pour relier les CLB voisins. Cependant, il existe également des connexions à longue distance, ce qui implique le besoin de fils longs mais moins nombreux. En outre, la matrice d'interconnexion des FPGA est conçue de manière hiérarchique, avec des réseaux locaux pour connecter des blocs proches et des réseaux globaux pour relier des blocs plus éloignés. Cette architecture hiérarchique optimise l'utilisation des ressources et réduit les délais de propagation, ce qui en fait une solution adaptée aux conceptions complexes et dynamiques.
  • La technologie FPGA a adopté le transistor MOS (normal) comme point de connexion. Ce choix présente plusieurs avantages : il est facile à fabriquer, et sa petite taille permet un taux d'intégration élevé. Cependant, le transistor MOS seul n'a pas de capacité de mémoire, l'état de chaque transistor étant uniquement défini par la tension de commande appliquée à sa grille. Pour pallier cette limitation, les circuits FPGA utilisent des cellules mémoire SRAM pour contrôler les grilles des transistors MOS. Ces cellules SRAM constituent la mémoire de configuration du circuit et définissent le comportement logique du FPGA. Cependant, les cellules SRAM sont volatiles, ce qui signifie qu'elles perdent leur état lorsque l'alimentation est coupée. Pour assurer la non-volatilité des données de configuration, les FPGA s'appuient sur une mémoire externe non volatile, généralement une EEPROM ou une mémoire flash. Lors de la programmation, les données de configuration sont enregistrées dans cette mémoire externe. Ainsi, à chaque mise sous tension du FPGA, l'ensemble de sa mémoire de configuration est initialisé à partir de la mémoire non volatile, permettant au circuit de retrouver son fonctionnement prévu. Cette approche combine la flexibilité de la reprogrammation avec la fiabilité des mémoires non volatiles. Pour une mailleur souplesse de la matrice de connexion, chaque point de connexion peut être constitué de plusieurs MOS (jusqu'à 6) pour augmenter le nombre de possibilités d'interconnexion.
  • Un bloc CLB (Configurable Logic Block) est constitué de plusieurs éléments logiques (LE : Logic Element). Un LE est composé d'un bloc combinatoire permettant de réaliser une fonction logique, suivi d'une bascule servant à la mémorisation ou à la synchronisation des données.
    Le bloc CLB d'un FPGA est généralement plus petit qu'un bloc logique de CPLD, mais une puce FPGA contient beaucoup plus de blocs que ce que peut offrir un CPLD de taille équivalente (die size). La taille des blocs CLB détermine la granularité, qui peut être plus ou moins fine dans un FPGA. Une granularité fine améliore le taux d'utilisation des ressources logiques du circuit, mais elle augmente les besoins en ressources d'interconnexion. Dans le cas d'une granularité très fine, un bloc peut être réduit à un seul LE, consistant uniquement en un petit bloc combinatoire et une bascule. Cette configuration offre une grande flexibilité, mais impose une gestion optimisée de l'interconnexion pour éviter une augmentation des délais de propagation et de la consommation énergétique.

Cellule SRAM :

La cellule SRAM est réalisé à l'aide de transistors MOS. Elle est constituée de deux inverseurs monté tête-bêche

Le LUT : Look Up Table

Dans un FPGA, le bloc combinatoire n'est pas réalisé par une matrice de portes ET et OU, comme c'est le cas des PLD classiques. Au lieu de cela, on utilise un LUT (Look-Up Table) pour accomplir cette tâche.
Un LUT est un multiplexeur conçu pour implémenter une fonction logique. Les entrées du multiplexeur sont connectées à une mémoire SRAM préprogrammée avec la table de vérité de la fonction logique à réaliser. Les variables de la fonction servent à commander les lignes de sélection du multiplexeur, permettant ainsi de produire la sortie logique correspondante.


La réalisation des multiplexeurs se fait entièrement à l'aide de transistor MOS. On commence par réaliser un multiplexeur 2:1 à l'aide de quatre transistor MOS (inverseur = deux transistors)

L'association en pyramide des multiplexeurs 2:1 permet d'obtenir des multiplexeurs plus grads


Exemple d'un LE

C'est exemple montre un LE du constructeur Altera. Il est conçu pour offrir une grande souplesse d'utilisation

  1. Bloc combinatoire constitué d'un LUT et d'un bloc Carry pour l'extension
  2. La bascule peut être programmée en bascule D, T, JK ou RS
  3. CLR, PRESET, Chargement Asynchrones
  4. Horloge et Validation d'horloge
  5. Chargement Synchrone
  6. La sortie de la bascule peut être envoyée vers le réseau d'interconnexion ou réinjectée à l'entrée du bloc combinatoire
  7. On peut utiliser seulement le bloc combinatoire sans passer par la bascule
  8. On peut utiliser la bascule seule sans passer par le bloc combinatoire
  9. La bascule peut être chaînée avec d'autres bascules pour faire des registres à décalage par exemple
  10. Le LUT et le registre peuvent être utilisés séparément mais simultanément

Exemple d'un Bloc d'E/S (IOB)