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.

3 bits q (quatre), d (deux) et u (un), tels que n=4q+2d+u. 1a) Concevoir en logique

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.

cours conduisent bien une porte de type NAND à 3 entrées. 1b) Concevoir la porte CMOS

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,

Ecole Nationale Supérieure de Techniques Avancées

à FDM(/sdh) = qd u+qdu. Doù 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 ( ∑ ∏). Cest 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=du. 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

01 : qd

(01) (2 3) : q

1

: q d u

02 : qu

(02) (1 3)

2

: q du

04 :

du

4

: qd u

13 : qu

 

3

: q du

23 : qd

7

: qdu

37 : 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. Doù une économie d un transistor.

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 davant (que des 1), on gagnerait effectivement un transistor de plus. Dun 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 !

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+hq d, que l on factorise par h , d où l implantation ci-dessous au centre.

1i)

, d ’ où l ’ implantation ci-dessous au centre. 1i) 1j) Revenons au cas octal,

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 lune à lautre 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+qd 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.

Ecole Nationale Supérieure de Techniques Avancées

2) Question dadresse (~0h10)

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

par le montage CMOS ci-dessous ? Pour quel usage ? Le montage ci-dessus est constitué de

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 a 0 a 1 a 2 . Donc c 0 =1 ssi a 0 =a 1 =a 2 =0. Entre la première et la deuxième NAND3, il y a une seule différence : a 0 voit son rôle pris par a 0 . Donc c 1 =1 ssi a 0 =1 et a 1 =a 2 =0. On comprend finalement que c i =1 ssi (a 2 a 1 a 0 ) 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 (a 2 a 1 a 0 ) 2 . La fonction assurée par le montage ci-dessus est donc de rendre toutes les sorties c i nulles, sauf c A =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é dadresse. Un décodeur, ou plus explicitement un décodeur dadresse, 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 c i 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.

Ecole Nationale Supérieure de Techniques Avancées

Ecole Nationale Supérieure de Techniques Avancées Sachant que les pMOS ne sont pas représentés, la partie

Sachant que les pMOS ne sont pas représentés, la partie gauche est similaire à la structure de décodeur découverte au 2 e exercice, à la différence que lon n observe aucune régularité dans la répartition des nMOS, et quil 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 3 e 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. Cest

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+qucorrespond à 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 qu 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 dES102. Le présent exercice constitue simplement une prise de conscience

du problème.

Ecole Nationale Supérieure de Techniques Avancées

Ecole Nationale Supérieure de Techniques Avancées Afin de compléter la PLA, un étude détaillée est maintenant

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é).

(cf. motifs à traits et points dessinés à côté). Pour l ’ instant, on ignore que

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 lexploitation qui est faite de la dernière ligne (cf. motif à traits et points), celle-ci ne peut correspondre à d autres chiffres que 6,

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.

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 lexercice 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. Dautre 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 à lidé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 à lalimentation. 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

3b)

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.

mais ici réalisées en logique dite dynamique . Certaines précautions sont nécessaires pour utiliser des

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 :

calculs sont effectués suivant le séquencement suivant : En effet, dans le plan ET, il faut

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. Cest 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 quil faut agir de manière « dynamique » si l on veut que l information mémorisée soit encore valide quand on va

l exploiter.