La réalisation pratique d’un opérateur logique complexe en logique câblée consiste à utiliser des composants intégrés disponibles sur le marché. Le problème consiste à optimiser le choix des composants par rapport à des critères de coût, de performance, du nombre de composants, de la complexité des connexions.
La notion de circuit intégré personnalisé à la demande de l’utilisateur est récente ( 1980 ) et constitue certainement l’évolution la plus importante de l’électronique depuis l’apparition du microprocesseur dans les années 1970. Les circuits intégrés à la demande, ou ASIC : Application Specific Integrated Circuits, permettent d’intégrer, sur une surface réduite de semi-conducteur ( 30 à 40 mm² ), tout ou partie des fonctions complexes propres à un équipement électronique et, ainsi de remplacer plusieurs circuits.
Quels sont les bénéfices que l’on peut tirer des ASIC par rapport à la solution classique (association de circuits standards)?
Essentiellement une réduction du coût global du système grâce à:
- la diminution du temps de conception obtenue grâce à la CAO;
- la diminution du nombre de circuits intégré nécessaires à la réalisation d’une application résultant de l’optimisation de l’intégration des fonctions sur la puce;
- la diminution du stock de composants due à des circuits " universels ";
- l’augmentation de la fiabilité;
- une meilleure protection de la propriété industrielle du produit;
Comme cette réduction de coût s’accompagne d’une amélioration des performances, en particulier de la vitesse, que demander de plus?
Il ne faut pas oublier toutefois que la conception des ASIC passe nécessairement par l’utilisation de moyens de CAO. Tout
ce petit monde n’existerait pas sans les progrès de l’informatique.
Les réseaux précaractérisés font appel à toutes les étapes de fabrication des circuits intégrés: de la diffusion à la métallisation. Ils sont obtenus par assemblage de fonctions prédéfinies et précaractérisées électriquement par le fabricant de semi-conducteur. Ces fonctions, fixes ou paramétrables, sont extraites d’une bibliothèque qui est en quelque sorte un catalogue logiciel dans lequel le client tire les composants qui vont constituer son circuit.
L’étape de conception consiste d’abord à définir l’ensemble des fonctionnalités du circuit afin de
juger de sa faisabilité. Il faut ensuite saisir le schéma logique du circuit. Le concepteur utilise un éditeur de schéma hiérarchisé en liaison avec une bibliothèque de cellules fournies par le fondeur dans une technologie déterminée. Le simulateur permet ensuite de tester les fonctionnalités et de détecter les erreurs ou les problèmes de timing. La définition des entrées/sorties sur le boîtier est ensuite faite. Le résultat des travaux de conception du circuit est la fabrication des masques nécessaires à la réalisation de la puce ( une dizaine de masques en général ).
Les composants réalisables sont:
Les réseaux prédiffusés sont des matrices de fonctions logiques déjà diffusées (préparées ) dans le substrat mais non interconnectées. C’est l’interconnexion des portes qui va personnaliser le circuit en fonction de l’application visée. La réalisation des interconnexions correspond à l’élaboration par le constructeur des derniers masques nécessaires à la fabrication du circuit.
Dans le domaine logique, les circuits les plus utilisés sont les réseaux de portes (gate array). Ils sont constitués d’une matrice de portes à deux entrées placées en colonnes et séparées par des chemins d’interconnexions. En périphérie sont réparties les blocs d’entrées/sorties. Toutes ces cellules sont interconnectées par 2 ou 3 couches de métallisation.
Caractéristiques essentielles des gate array ( valables en 1990 ... ) :
Ce sont des réseaux de portes pour lesquels il n’existe pas de canaux de routage spécialisés, le routage se faisant au-dessus des portes élémentaires. L’intérêt de cette solution est de permettre d’augmenter le nombre de portes existant sur la puce, la surface réservée aux chemins d’interconnexions étant ici utilisée par les portes.
Ce sont des réseaux de portes prédiffusés auxquels sont associés des fonctions précaractérisées standards: ROM, RAM, ALU... Ce type de réseau est bien adapté aux applications microinformatiques haut de gamme: traitement du signal, processeur graphique... C’est une solution intermédiaire avec la solution circuit précaractérisé complet. Elle présente un coût de développement moins élevé que celui des précaractérisé.
Les réseaux logiques programmables sont des circuits intégrés complètements achevés et disponibles sur catalogues. Ils doivent être personnalisés par l’utilisateur final qui programme les interconnexions entre les différents sous ensembles, inclus dans le circuit, à l’aide d’un outil de développement associé à un programmateur de circuits. Ils permettent de résoudre la plupart des problèmes de logique combinatoire ou séquentielle réalisés jusqu’alors par l’association de circuits 74xxnnn biens connus.
La structure classique des PLD (Programmable Logique Device) comporte une partie combinatoire composée de deux zones de portes ET et OU, une partie séquentielle composée de bascules (D, JK ), et des portes d’interfaçage entrées/sorties figées. Tout ou partie de ces éléments sont reliés par des fusibles qui sont laissés intacts (liaison présente) ou détruits (pas de liaison) selon les besoins.
Ces réseaux permettent typiquement de remplacer 4 à 10 circuits intégrés logiques de moyenne complexité. Ils peuvent êtres utilisés pour remplacer plus de 90% des circuits logiques classiques et ceci avec une vingtaine de références distinctes.
De nouvelles générations de PLD présentant une structure plus modulaire et des blocs d’entrées/sorties plus élaborés, permettent actuellement d’augmenter encore les possibilités de remplacement.
On peut distinguer deux grandes familles de circuits logiques programmables :
On distingue pour chacune de ces deux familles, d’autres familles en fonction de différents critères qui sont :
Elles sont résumées dans le schéma suivant :
Les ROM ( Read Only Memory ) ne sont programmées que lors de leur fabrication par action directe sur le masque de gravure du circuit intégré. Elles sont réservées à des productions en grande série et ne peuvent en aucun cas être programmées directement par l’utilisateur.
La zone mémoire d’une PROM ( Programmable Read Only Memory ) à fusible est constituée d’une matrice de fils croisés. À chaque intersection, une diode en série avec un fusible établissent la liaison entre deux fils. Chaque intersection correspond à un bit de mémoire. La matrice contient 2N lignes et 8 colonnes ( si mémoire de 8bits...).
La programmation consiste à griller les fusibles appropriés selon la donnée à mémoriser ( 0
ou 1 ). La programmation est irréversible. Les diodes sont réalisées soit par des transistors bipolaires soit par des transistors MOS. Les fusibles sont réalisés soit en diminuant la section de la métallisation des interconnexions lors de la dernière étape de réalisation du circuit, soit par dépôt de silicium polycristallin à la place de la métallisation d’interconnexion. Dans les deux cas la programmation se fait en appliquant une impulsion de tension provoquant un courant d’amplitude et de durée permettant la fusion du fusible.
Dans les UVPROM ou EPROM ( Erasable Programmable Read Only Memory ), le point mémoire est constitué par un transistor MOS particulier : le SAMOS ( Stacked gate Avalanche injection Metal Oxyd Semiconductor ). C’est un transistor MOS à " grille flottante ". Ce transistor à deux mode de fonctionnement :
Le premier mode de fonctionnement correspond au fonctionnement normal ou non programmé ; le second mode de fonctionnement correspondant au mode programmé.
De ce fait, lorsqu’un transistor SAMOS a été préalablement programmé, et qu’on le polarise avec des valeurs de Vgs et Vds correspondant au mode fonctionnement classique, les charges négatives accumulées sur la grille flottante créent une barrière de potentiel trop élevée entre la grille et la source pour que le transistor soit passant. Pour le rendre passant, il faudrait appliquer des valeurs de Vgs plus importantes.
![]() |
Si le potentiel de la ligne de sélection est choisi à une valeur égale à Vc pour le niveau haut :
|
Inversement, pour effacer la programmation du transistor SAMOS, on applique un rayonnement ultraviolet, qui, par effet photoélectrique, apporte l’énergie suffisante aux électrons piégés dans la grille flottante pour se libérer.
La structure d’un point mémoire est donc :
![]() |
Ligne de sélection à l’état bas à ligne de bit à l’état haut ; Ligne de sélection à l’état haut à ligne de bit à l’état bas ; Ligne de sélection à l’état bas à ligne de bit à l’état haut. Ligne de sélection à l’état haut à ligne de bit à l’état haut. La programmation de la mémoire EPROM consiste donc à programmer chaque transistor SAMOS de la matrice pour lequel la donnée lue doit être au niveau haut. |
L’effacement ne peut pas être partiel, et concerne donc la totalité de la mémoire. A cet effet, une fenêtre en quartz, transparente aux ultraviolets est prévue sur le boîtier. Le temps de programmation est relativement rapide (le programmateur d’EPROM applique des tensions de 21 ou 12,5 Volts, selon les modèles, pendant une dizaine de ms à chaque transistor à programmer), alors que le temps d’effacement ( exposition aux UV) est relativement long (10mn à 20 mn selon la puissance de la source d’UV) .
Ce sont des circuits mémoires dérivés des EPROM. Leur processus de fabrication est pratiquement le même mais leur boîtier ne possède pas de fenêtre en quartz. Ils ne sont donc pas reprogrammables. Ce sont donc des mémoire programmable une seule fois : One Time Programmable Read Only Memory ( OTP ). Elles ont les mêmes caractéristiques que les EPROM et sont destinées aux grandes séries car elles sont moins coûteuses.
Les EEPROM ( Electrically Erasable Programmable Read Only Memory ) ou PROM effaçable électriquement. Leur principe est voisin de celui des EPROM. Elles intègrent des transistors FLOTOX de technologie MOS. La structure du transistor FLOTOX (FLOating gate Tunnel Oxyd) est très proche de celle du SAMOS, la seule différence étant au niveau du drain, la présence d’une épaisseur très fine d’isolant. Lorsqu’on applique une tension Vgd positive, la grille flottante se charge d’électrons. Après suppression de cette polarisation de programmation, les électrons restent piégés, et le transistor reste bloqué, quel que soit le niveau appliqué sur la ligne de sélection. Le transistor étant chargé, si on applique une tension Vgd négative, la grille flottante se décharge, et le transistor se comporte désormais comme un transistor MOS classique.
Ce sont également des mémoires effaçables électriquement, mais plus rapides que les EEPROM.
Le concept de PAL ( Programmable Array Logic ) a été inventé il y a maintenant plus de 20 ans par la société MMI.
![]() |
Toute fonction logique à n variables peut se mettre sous la forme d’une somme de produits ou de produit de sommes. On obtient donc en sortie, une somme de produit qui nous permettra de réaliser toutes les équations logiques imaginables. |
![]() |
Présenté tel quel, ce montage comporte deux entrées I1 et I2 et une sortie O. |
La représentation précédente n’est
pas vraiment utilisable en pratique. En effet, elle occupe beaucoup de
place et conduit vite à des schémas illisibles surtout lorsque
l’on sait que les PAL contiennent plusieurs dizaines d’exemplaires de cette
cellule élémentaire.
Une autre représentation schématique a donc été adoptée dans l’industrie :
![]() |
Lorsque la matrice ET est figée et que la matrice OU est programmable, on retrouve la structure des PROM, la matrice ET réalisant le décodage des adresses. Lorsque la matrice ET est programmable et que la matrice OU est figée, on obtient le principe de fonctionnement des PAL. Lorsque les matrices OU et ET sont toutes les deux programmables, on est alors en présence d’un PLA (Programmable Logic Array). Exemple : 1- Entourez les connections qui doivent rester intactes pour obtenir les équations suivantes :
O1 = A + B/.D/.C + A/.D
O2 = ( A.B )/ + C.D/
O3 = ( A.B.C/.D )/
|
Le signal résultant de la zone de fusibles programmables est appliqué à la patte d’entrée/sortie via un buffer trois états, lui –même commandé par cette même zone de fusibles. Cela signifie donc que l’état de la sortie : valide ou haute impédance, pourra être une fonction logique des signaux d’entrée.
Cette même patte est reliée, comme les pattes d’entrées, à un inverseur/non-inverseur qui attaque à son tour la zone de fusibles programmables. Il est ainsi possible :
La référence est décomposée de la manière suivante :
L : Combinatoire active au niveau bas ;
H : Combinatoire active au niveau haut ; R : Registre ; |
RA : Registre asynchrone ;
X : Registre et OU exclusif ; V : Versatile. |
Ces PAL, dont le plus célèbre est très
certainement le 22V10 d’AMD qui a été le premier circuit
de ce type introduit sur le marché, présentent une évolution
des PAL vers les circuits logiques programmables de haut niveau. En effet,
ils continuent à respecter les principes généraux
rencontrés plus haut mais utilisent une structure de cellule de
sortie très proche des macro-cellules ou OLMC des GAL que nous verrons
par la suite.
Faisant partie d’une génération récente
de circuits logiques programmables, les GAL ( Generic Array Logic ) sont
des PAL versatiles en technologie CMOS. La structure de base est donc la
même que les PAL, matrice ET programmable et matrice OU figée,
mais les cellules de sortie sont constituées par des OLMC ( Output
Logic Macro Cell ), qui sont des blocs de sortie programmables et permettent
donc d’obtenir différents type de sorties.
Outre les possibilités des blocs de sorties, les GAL présentent l’avantage
d’être reprogrammables. Ils sont pratiquements tous du type EEPLD et permettent donc
une programmation et un effacement électrique. Les fusibles sont de la même technologie
que ceux des EEPROM.
Il existe une dizaine de familles de PAL CMOS mais nous allons limiter notre étude à
celle des GAL du type du GAL22V10.
Matrice ET programmable :
La matrice est organisée en 44 lignes d’entrées
( 22 entrées et leurs complément ) croisant 132 lignes de
produits avec un fusible à chaque intersection ( en fait une cellule
E²CMOS ). Parmi les 132 lignes de produits, 130 arrivent directement
sur les dix OLMC en nombre variable ( 9, 11, 13, 15, ou 17 ) pour chacune.
Les deux autres lignes de produits, sont utilisées comme reset Asynchrone
( AR ) et Preset synchrone ( SP ). Enfin, c’est le signal appliqué
à la broche " 1 " qui synchronise toutes les OLMC dans le cas d’une
utilisation séquentielle.
Structure d’une OLMC :
On s’aperçoit que dans chaque groupe de 9, 11, 13, 15 ou 17 lignes de produits arrivant aux OLMC, la première est la ligne de validation de la sortie trois états ( Output Enable ). Les 8, 10, 12, 14 ou 16 autres lignes arrivent, elles, sur une porte OU constitutive de la matrice OU.
Configuration d’une OLMC :
Deux bits ( en fait deux fusibles ), SOi et S1i , configurent chaque OLMC. SOi et S1i possèdent une adresse ( voir la structure interne du GAL ) et vont se programmer comme les fusibles de la matrice ET.
Remarque : SOi et S1i
sont en réalité 2 fusibles qui assurent une liaison avec
la masse ( état logique 0). Pour les mettre à l’état
logique 1, il suffit de " griller " ces fusibles.
Les schémas suivant représentent les quatre configurations possibles des OLMC.
![]() |
![]() |
![]() |
![]() |