Vous êtes sur la page 1sur 8

Ecole Nationale Supérieure de Techniques Avancées

ES102/PC4 : énoncé
et corrigé

1) Portes CMOS complexes pour afficheur 7 segments (~1h10)


Bien que les écrans LCD miniatures soient omniprésents, des afficheurs LCD à 7
segments continuent à être utilisés pour l’affichage des chiffres décimaux. Lorsque
les 7 segments sont activés s’affiche le chiffre 8, comme illustré ci-contre.
Les premières questions concernent un afficheur octal, pour chiffre entre 0 et 7.
Chaque chiffre n est fourni sous la forme de 3 bits q (quatre), d (deux) et u (un), tels
que n=4q+2d+u.
1a) Concevoir en logique complémentaire la porte CMOS qui fournit la fonction booléenne sdb
servant à commander le segment situé sur le côté droit, en bas.
Ce cas est traité sur la figure ci-dessous, à gauche. Une table de Veitch montre les 8 chiffres
à afficher. Le segment droit bas (sdb) est grossi lorsqu’il est présent. On reconnaît facilement (il
y a un seul 0) une porte de type NAND3, plus précisément : NAND3(q’, d, u’).
Néanmoins, on profite de ce cas élémentaire pour éprouver la méthodologie vue en cours.
Selon celle-ci, FDM(sdb)/ fournit la structure du bloc p. En d’autres termes, il faut mettre sdb
sous forme disjonctive minimale, puis complémenter chaque variable (c’est la signification du /
ci-dessus). On obtient alors une description structurelle du bloc p en faisant correspondre ET et
OU logiques respectivement à des mises en série et en parallèle de transistors p commandés
par les variables. Ici, FDM(sdb)=q+d’+u, d’où le bloc p ci-dessous.
Le bloc n, qui produit les 0 de la fonction, s’obtient de manière similaire en mettant sous FDM
le complémentaire de sdb. Or FDM(/sdb)=q’du’, d’où le bloc n ci-dessous. Finalement, les
formules de synthèse vues en cours conduisent bien une porte de type NAND à 3 entrées.

1b) Concevoir la porte CMOS fournissant la commande sdh du segment situé côté droit, en haut.
Ce cas est traité sur la partie droite de la figure précédente. Sur la table de Veitch, les 1 de la
fonction sont regroupés visuellement en 3 « gélules » qui correspondent chacune à un sous-
cube maximal. Pour synthétiser le bloc p, on recourt à FDM(sdh)/ = q+d’u’+du et, pour le bloc n,

ES102/PC4  T. Bernard — 27/09/2009 11:22 Page 1 sur 8


Ecole Nationale Supérieure de Techniques Avancées

à FDM(/sdh) = qd’u+qdu’. D’où l’implantation en logique complémentaire présentée ci-dessus


au centre.
1c) Dans le bloc n de la porte CMOS que l’on vient de synthétiser pour sdh, il est très naturel de
mettre en commun les transistors commandés par q. Mais alors on s’écarte de la formule de
synthèse du cours. En quoi ?
La mise en commun aboutit au schéma de droite sur la figure précédente. La formule
structurelle du bloc n est q(d’u+du’). Une telle formule ne constitue plus une forme disjonctive,
c’est-à-dire une somme de produits (∑∏). C’est un produit de sommes de produits (∏∑∏),
c’est-à-dire une forme à 3 niveaux et non plus 2. Nous venons donc de passer, certes très
modestement, de la minimisation biniveau à la minimisation multiniveau de la fonction
booléenne /sdh et nous y avons gagné en compacité.
1d) Simplifier le montage précédent dans le cas où q=1. Qu’obtient on ? Comment modifier le
montage pour obtenir une porte XOR2 ?
On supprime un pMOS commandé par q=1 tandis qu’un nMOS commandé par q=1 revient à
une connexion permanente. Finalement, on obtient une implantation de la porte XNOR2. En
effet, pour q=1, sdh=d⊕’u. On retiendra que 8 transistors sont nécessaires là où les portes
NAND2 et NOR2 n’en « consomment » que 4. Pour obtenir une XOR2, il suffit de permuter l’une
des variables (d ou u) avec son complément.
1e) Retrouver la FDM de sdh par la méthode de Quine. Cette question permet d’illustrer comment
on écrirait un programme de CAO (conception assistée par ordinateur) pour automatiser ce
travail. En anglais, CAO se dit CAD pour computer-aided design.
Chaque produit de variables ci-dessous est associé au(x) chiffre(s) qu’il représente, afin de
bien illustrer le principe de fusion. Les produits en caractère gras sont ceux qui ne participent à
aucune fusion. Ce sont les impliquants premiers. On montrerait ensuite facilement qu’ils sont
essentiels, et font donc partie de la FDM.

0 : q’d’u’ 0∪1 : q’d’ (0∪1)∪ (2∪3) : q’


1 : q’d’u 0∪2 : q’u’ (0∪2)∪ (1∪3)
2 : q’du’ 0∪4 : d’u’
4 : qd’u’ 1∪3 : q’u
3 : q’du 2∪3 : q’d
7 : qdu 3∪7 : du

On considère maintenant un afficheur décimal. Un chiffre n est fourni en code DCB (décimal
codé binaire) sur 4 bits : h (huit), q, d et u tel que n=8h+4q+2d+u. Les possibilités 10 à 15 ne
sont pas exploitées. A chacun des 7 segments de l’afficheur correspond donc une fonction
booléenne incomplètement spécifiée.
1f) Traitant d’abord les cas indifférents comme des 1, déterminer, sans écrire la moindre formule
booléenne, le nombre de transistors nécessaires pour réaliser la porte CMOS fournissant la
commande sgh du segment situé sur le côté gauche, en haut.
Il faut dessiner la table de Veitch, ce qui est fait sur la figure ci-dessous à gauche. Le
recouvrement des 1 se fait au moyen de sous-cubes de dimension respectives : 3, 2, 2 et 2. Le
nombre de pMOS nécessaires est la somme de leurs codimensions : 1+2+2+2=7. Le
recouvrement des 0 se fait par 3 sous-cubes de dimension 1, d’où 3x3=9 nMOS nécessaires.
1g) Les cas indifférents peuvent-ils être mieux exploités pour minimiser le coût en transistors ?
Oui, en mettant plutôt des 0 là où hd(q’+u)=1, on augmente de 1 le nombre de pMOS mais on
diminue de 2 celui des nMOS. D’où une économie d’un transistor.

ES102/PC4  T. Bernard — 27/09/2009 11:22 Page 2 sur 8


Ecole Nationale Supérieure de Techniques Avancées

1h) Au vu des deux questions précédentes, il serait tentant d’exploiter différemment les cas
indifférents selon que l’on synthétise le bloc p ou n. Mais a-t-on le droit ?
Si l’on combinait le bloc n de la réponse précédente avec le bloc p de la réponse d’avant (que
des 1), on gagnerait effectivement un transistor de plus. D’un point de vue général, la tentation
est de mettre plus de 1 dans les cas indifférents pour le bloc p, et plus de 0 pour le bloc n, de
façon à bénéficier de regroupements plus avantageux. Cette tentation est dangereuse. En effet,
un cas indifférent peut se produire, de façon soit accidentelle, soit transitoire. Si, pour un tel cas,
le bloc n fournit un 0 tandis que le p fournit un 1, il y a court-circuit entre alimentation et masse !
1i) Finalement, on traitera tous les cas indifférents comme des 1 car cela va permettre une
factorisation, source d’économie. Achever de concevoir la porte CMOS fournissant sgh.
L’exploitation de la table de Veitch ci-dessous fournit FDM(sgh) = h+d’u’+qu’+qd’. La structure
du bloc p est donc donnée par FDM(sgh)/ = h’+du+q’u+q’d. Le bloc n découle de FDM(/sgh) =
h’du+h’q’u+h’q’d, que l’on factorise par h’, d’où l’implantation ci-dessous au centre.

1j) Revenons au cas octal, où h=0. Quel genre de fonction est alors sgh ? Dans l’implantation
correspondante, vérifier que les formules structurelles des blocs n et p ne sont pas duales. Que se
passe-t-il si l’on rend γn duale de γp ?
Avec h=0, sgh est une fonction majorité, comme celle qui sert à générer la retenue dans un
additionneur binaire complet. Plus précisément, pour h=0, sgh=Maj(q,d’,u’). Les formules γn et γp
ne sont pas duales : on ne passe pas de l’une à l’autre en permutant + et ·. Cette propriété, qui
caractérise les portes les plus simples, trouve donc vite des contre-exemples. En revanche, les
fonctions booléennes correspondantes sont duales par construction, selon le cours.
La formule duale de du+q’u+q’d est (d+u)(q’+u)(q’+d), d’où le nouveau montage présenté à
droite sur la figure ci-dessus : à chaque mise en parallèle dans le bloc p correspond une mise
en série dans le bloc n, et vice-versa. Ce montage est correct puisqu’il respecte par
construction les équations f=γp/ et f=/γn. Mais le bloc n présente des séries de 3 transistors au
lieu de 2 dans l’implantation précédente. La porte est donc moins rapide pour imposer un 0 en
sortie (c’est-à-dire pour décharger une capacité placée en sortie).
La nouvelle formule γn=(d+u)(q’+u)(q’+d) n’est autre que la forme conjonctive minimale (FCM)
de /sgh. Une FCM, qui est une forme ∏∑, peut présenter un grand nombre de facteurs, d’où un
grand nombre de transistors en série (en revanche, chaque facteur est une somme de au plus n
variables). Au contraire, la FDM, qui est une forme ∑∏, voit la taille de ses produits bornée par
le nombre de variables : son utilisation garantit donc qu’il y a au plus n transistors en série, où n
est le nombre de variables de la fonction implantée.

ES102/PC4  T. Bernard — 27/09/2009 11:22 Page 3 sur 8


Ecole Nationale Supérieure de Techniques Avancées

2) Question d’adresse (~0h10)


Quelle est la fonction réalisée par le montage CMOS ci-dessous ? Pour quel usage ?

Le montage ci-dessus est constitué de 8 portes AND3 juxtaposées de gauche à droite.


Chacune est constituée d’une NAND3 suivie d’un inverseur. Les NAND3 sont implantées de
façon matricielle pour mettre en commun leurs entrées, qui sont distribuées sous forme de fils
horizontaux. Dans le même but, chaque NAND3 est « repliée » avec blocs n et p en vis-à-vis.
Chaque NAND3 est différente. Pour la première, la plus à gauche, le bloc n est passant lorsque
a0’a1’a2’. Donc c0=1 ssi a0=a1=a2=0. Entre la première et la deuxième NAND3, il y a une seule
différence : a0’ voit son rôle pris par a0. Donc c1=1 ssi a0=1 et a1=a2=0. On comprend finalement
que ci=1 ssi (a2a1a0)2=i. Cela tient à l’organisation très particulière des transistors : alternance de
motifs répétitifs de largeur 1 en bas, 2 au milieu, et 4 en haut, qui correspondent exactement
aux positions des 0 et des 1 lorsqu’on énumère les entiers de 0 à 7. Nommons A le nombre
(a2a1a0)2. La fonction assurée par le montage ci-dessus est donc de rendre toutes les sorties c i
nulles, sauf cA=1.
Le montage ci-dessus est qualifié de décodeur, en ce sens que la i-ème sortie est activée
(mise à 1) par présentation de son code binaire sur les entrées. Le code en question est
souvent qualifié d’adresse. Un décodeur, ou plus explicitement un décodeur d’adresse, est
effectivement indispensable pour aller chercher une donnée rangée à une certaine adresse en
mémoire. En effet, une mémoire est organisée de façon matricielle et chaque ligne (ou colonne)
de cellules mémoire est pilotée par un signal ci qui la traverse de bout en bout.

3) PLA pour afficheur 7 segments (~0h25)


3a) Dans le premier exercice, le classique afficheur 7 segments a été abordé sur la base d’une
réalisation individuelle du pilotage de chaque segment. Mais il y a des sous-cubes communs
entre les 7 fonctions booléennes correspondant aux 7 segments. La structure ci-dessous, appelée
PLA (pour Programmable Logic Array) tire parti de cette propriété. Elle est constituée de portes
CMOS en logique complémentaire, mais dont les transistors p ont été cachés dans un souci de
lisibilité. Comprendre et compléter cette structure. Un début de travail d’analyse apparaît déjà
sur la figure : pour chacune des 9 tranches horizontales sont indiquées, au centre, la valeur portée
par le fil horizontal et, à droite, un motif où traits et points indiquent respectivement les segments
activés ou pas par la tranche.

ES102/PC4  T. Bernard — 27/09/2009 11:22 Page 4 sur 8


Ecole Nationale Supérieure de Techniques Avancées

Sachant que les pMOS ne sont pas représentés, la partie gauche est similaire à la structure
de décodeur découverte au 2e exercice, à la différence que l’on n’observe aucune régularité
dans la répartition des nMOS, et qu’il n’y a pas d’inverseurs en haut. Il s’agit de portes NAND à
nombre d’entrées variable (de 2 à 5) prises parmi les 9 sorties de la partie gauche (incluant la
tranche à compléter en bas). Chacune pilote directement un des 7 segments.
La partie gauche est, elle aussi, constituée de portes NAND, implantées horizontalement,
ayant leur entrées parmi les variables h, q, d, u et leurs compléments (sauf h’). Chacune de ces
NAND fournit le complément d’un produit déjà indiqué sur la figure.

Pour comprendre cette PLA dans sa globalité, considérons, dans la partie droite, la 3e porte
NAND, celle qui pilote le segment droit haut (sdh). Il s’agit d’une NAND4 ayant pour entrées
[q’u]’, [q’u’]’, [du]’ et [d’u’]’. Par De Morgan, la sortie s’avère égale à q’u+q’u’+du+d’u’. En effet,
comme déjà vu à plusieurs reprises, un enchaînement NAND o NAND est équivalent à un
enchaînement OR o AND.
L’objet de la partie gauche de la PLA est donc de fabriquer des produits, sous forme
complémentée, tandis que la partie droite fabrique des sommes de ces produits. Les parties
gauche et droite de la PLA sont respectivement appelées plan ET et plan OU. Ceci est
schématisé sur la figure ci-dessous, où M, N, P et Q sont des produits des variables d’entrée
(appelées données), tandis que f, g et h en sont des fonctions. Les traits épais représentent
symboliquement le chemin d’accès d’une porte NAND à ses entrées possibles, la présence d’un
point noir indiquant l’utilisation effective d’une entrée (laquelle se traduit par la présence de
transistors recevant l’entrée sur leur grille dans la structure réellement implantée). Ainsi les 3
fonctions réalisées sur la figure ci-dessous sont : f=M+N+P+Q, g=N+P+Q et h= M+Q. C’est
cette possibilité d’utiliser ou pas une entrée lors de la conception de la PLA, qui justifie la
présence du P (pour programmable) dans cet acronyme.
Dans le premier exercice, il est apparu que sdh=q’+du+d’u’. Ici sgh est implanté par la formule
q’u+q’u’+du+d’u’. Celle-ci est correcte, mais pas minimale. Le remplacement de q’ par q’u+q’u’
correspond à la scission d’un 3-sous-cube en 2 2-sous-cubes, ce qui coûte 6 transistors de plus
(incluant les pMOS) pour sdh. L’intérêt de cette coupure est la réutilisation par d’autres
fonctions : par exemple de q’u par sgb, ou de q’u’ par sh. Cette réutilisation doit permettre
d’économiser des transistors. La détermination de l’ensemble commun minimal des sous-cubes
les plus gros telle que, pour chaque fonction, une sélection d’entre eux en recouvre les ‘1’ n’est
pas au programme d’ES102. Le présent exercice constitue simplement une prise de conscience
du problème.

ES102/PC4  T. Bernard — 27/09/2009 11:22 Page 5 sur 8


Ecole Nationale Supérieure de Techniques Avancées

Afin de compléter la PLA, un étude détaillée est maintenant nécessaire. Chaque ligne génère
le complément d’un produit des variables, auquel correspond un sous-ensemble des chiffres de
0 à 9. Ces sous-ensembles, que l’on détermine trivialement dans une table de Veitch, sont
indiqués ci-dessous à droite de la figure, pour chaque ligne. Ils sont bien compatibles avec les
jeux de segments dont ils déclenchent l’allumage (cf. motifs à traits et points dessinés à côté).

Pour l’instant, on ignore que la dernière ligne correspond au singleton {6}. Voici comment on
peut le montrer. Au sein du plan OU (partie droite), la première colonne génère la fonction
booléenne sm commandant le segment du milieu. Les 3 transistors du haut font que sm=1 si le
chiffre est dans {2, 3, 4, 5, 8, 9}. On constate qu’il manque le 6. La dernière ligne doit donc
correspondre à un sous-ensemble contenant 6. Cependant, vu l’exploitation qui est faite de la
dernière ligne (cf. motif à traits et points), celle-ci ne peut correspondre à d’autres chiffres que 6,

ES102/PC4  T. Bernard — 27/09/2009 11:22 Page 6 sur 8


Ecole Nationale Supérieure de Techniques Avancées

8 et 9. Or, comme on le vérifie sur une table de Veitch, 6 ne peut pas être regroupé dans un
même sous-cube avec 8 ou 9 sans inclure d’autres chiffres. La dernière ligne correspond donc
nécessairement au singleton {6}. On peut toutefois regrouper 6 avec son voisin indéterminé de
droite, d’où un produit qdu’. Les transistors nécessaires sur la dernière ligne s’en déduisent
immédiatement. Pour compléter la dernière colonne, il reste à trouver, parmi tous les sous-
ensembles de chiffres, une union qui couvre les chiffres comportant le segment gauche haut,
par exemple : {8, 9} U {0, 4, 8} U {5} U {6}. Les transistors de la dernière colonne en découlent.
Ce n’est pas la seule couverture possible. La paire {4, 5}, qui correspond à la deuxième ligne,
aurait aussi pu être utilisée, en remplacement (ou non) du singleton {5}. On peut finalement
vérifier que tous les segments sont correctement générés.
3b) Finalement, la structure PLA est-elle avantageuse par rapport à la réalisation individuelle
d’une porte CMOS pour chaque segment ?
La PLA de la question précédente consomme 46 transistors nMOS et autant de pMOS. Cela
représente quelque 13 transistors par segment. Dans l’exercice précédent, ce « budget » n’a
été dépassé que par le segment gauche haut, avec 14 transistors, tandis que 3 autres
segments se contentaient de 6 à 10 transistors. Sans approfondir plus la question, il semble
que la structure PLA apporte non pas une réduction mais plutôt une augmentation du nombre
de transistors.
Mais alors, quel intérêt ? La régularité de leur structure ! L’avantage majeur des PLA n’est
effectivement pas l’économie en transistors qu’elles permettent mais bien plus une économie en
routage et en facilité de réalisation. Les algorithmes de synthèse existent depuis les années 70-
80. D’autre part, le placement des transistors et des connexions métalliques ne fait appel qu’à 3
motifs distincts. Il est donc simple d’écrire un compilateur physique de PLA. Les PLA ont été
hégémoniques jusque dans les années 90. Mais les progrès réalisés dans les algorithmes de
placement et routage de montages complexes en transistors ont relativisé leur intérêt depuis.
3c) Question subsidiaire. Il y a dans la PLA dessinée précédemment avec ses transistors nMOS
seulement, comme une invitation à s’affranchir des transistors pMOS cachés, qui sont aussi
nombreux que les nMOS. L’enjeu est un gain d’un facteur 2 en surface. Bien sûr, il est
impossible de se passer totalement de pMOS. Mais n’y aurait-il pas quelque stratagème
permettant de rétablir la fonctionnalité avec quelques uns seulement ? Cette question rompt
totalement avec ce qui a été vu en cours ou en petite classe jusqu’ici. En fait, elle annonce la
suite du cours, qui va porter sur de la logique séquentielle. Il faut donc être inventif.
Dans une porte CMOS en logique complémentaire, le bloc n a pour rôle d’établir un chemin
passant vers la masse lorsque les valeurs prises par les entrées correspondent à un 0 de la
fonction. Considérons un changement des entrées, qui provoque une transition descendante en
sortie, c’est-à-dire de 1 à 0. Au cours d’un tel événement, le bloc p cesse d’être passant, puis le
bloc n le devient et décharge la capacité de sortie de 1 à 0. Les transitions descendantes en
sortie sont donc assurées par le seul bloc n. En fait, on peut dire que la sortie d’une porte en
logique complémentaire vaut 1 sauf si son bloc n est passant. Dire cela conduit à l’idée de faire
de 1 une valeur par défaut, et à voir le bloc n comme seul véritable acteur du calcul. Mais
comment installer un 1 par défaut ?
On peut songer à une petite résistance qui connecterait la sortie à l’alimentation. Cette idée a
été longtemps exploitée, jusque dans les années 80, mais elle a comme inconvénient d’établir
un court-circuit permanent entre alimentation et masse lorsque le bloc n est passant, avec
gaspillage d’énergie et dissipation thermique aux effets désastreux.
Une autre solution consiste à charger la capacité de sortie, et à la faire décharger par le bloc n
si celui-ci est passant. Cela introduit nécessairement un aspect séquentiel. En effet, si le bloc n
est passant et connecté à la capacité de sortie, essayer de la charger va déclencher un court-
circuit, ce que l’on veut éviter. Il faut donc procéder en deux phases. Durant une première
phase, la capacité de sortie est pré-chargée à 1, tandis que le bloc n est désactivé par une
solution adéquate. Durant une deuxième phase, le bloc n est activé et décharge, le cas

ES102/PC4  T. Bernard — 27/09/2009 11:22 Page 7 sur 8


Ecole Nationale Supérieure de Techniques Avancées

échéant, la capacité de sortie. La valeur de la fonction est obtenue au cours de la phase 2.


Précharger la capacité de sortie à 1 exige un unique transistor pMOS commandé par un signal
appelé « horloge » et que l’on va noter ϕ. Ainsi lorsque ϕ=0, la capacité de sortie se précharge à
1. Pendant ce temps, le bloc n doit être désactivé, c’est-à-dire incapable de connecter la sortie
à la masse. Une solution consiste à intercaler un transistor nMOS entre le bloc n et la masse,
qui soit non passant pendant la phase 1, donc pendant que ϕ=0. Il suffit pour cela de le
commander par ϕ ! Le montage résultant est montré ci-dessous. On retrouve les 2 portes NAND
rencontrées précédemment, mais ici réalisées en logique dite dynamique.

Certaines précautions sont nécessaires pour utiliser des portes NAND dynamiques au sein
d’une PLA. Notamment, il n’est pas possible d’utiliser la même horloge ϕ pour le plan ET et pour
le plan OU. On utilise ϕ1 pour le plan ET et ϕ2 pour le plan OU et les calculs sont effectués
suivant le séquencement suivant :

En effet, dans le plan ET, il faut laisser le temps aux blocs n de décharger la capacité de
sortie quand ils sont passants, donc les valeurs de produits ne sont disponibles que quelques
instants après la transition montante de ϕ1. Le calcul des valeurs des fonctions ∑∏ ne saurait
donc commencer avant. C’est pourquoi les portes NAND du plan OU doivent être commandées
par une deuxième horloge ϕ2 suffisamment en retard par rapport à ϕ1. Une autre contrainte de
fonctionnement est que les entrées h, d, q, u ne doivent plus bouger à partir du moment où ϕ1
remonte, sinon une capacité de sortie portant un produit pourrait se retrouver déchargée par
erreur.
Avec la logique dynamique, nous avons quitté le domaine de la logique combinatoire pour
entrer dans celui de la logique séquentielle. Cette dernière met en œuvre des comportements
temporels, souvent régis par des horloges et qui reposent sur l’aptitude de certains dispositifs à
mémoriser des informations pour les restituer ultérieurement. Dans une porte en logique
dynamique, la mémorisation de l’information se fait par stockage d’une charge sur une capacité.
Il y a inévitablement des fuites de nature résistive, de sorte qu’il faut agir de manière
« dynamique » si l’on veut que l’information mémorisée soit encore valide quand on va
l’exploiter.

ES102/PC4  T. Bernard — 27/09/2009 11:22 Page 8 sur 8

Vous aimerez peut-être aussi