ELECTRONIQUE NUMERIQUE 1BTS MSI BERTRAND TUENO 1. Systèmes de numération et codes 2. Système de numération 3. Conversion 4. Ecriture des nombres signés 5. Codes 6. Arithmétique binaire 7. Addition 8. Soustraction 9. Multiplication 10. Division 11. Représentation des nombres signés 12. Opération sur les nombres signés 13. Addition en DCB 14. Portes logiques et algèbre de Boole 15. Définitions 16. Table de vérité 17. Portes logiques 18. Algèbre de Boole 19. Mise sous forme algébrique des circuits logiques 20. Simplification des fonctions logiques 21. Généralités 22. Méthodes de simplification des fonctions logiques 23. Circuits combinatoires 24. Additionneur binaire 25. Soustracteur binaire 26. Comparateur 27. Codeur 28. Décodeur 29. Multiplexeur 30. Démultiplexeur Les lecons 1 à 12 ont été abordees dans le volume 1(informatique generale) 1 ELECTRONIQUE NUMERIQUE 1BTS MSI BERTRAND TUENO 13. Addition en DCB 14. Portes logiques et algèbre de Boole L'ordinateur est un dispositif électronique sophistiqué qui traite l'information mise sous forme d'impulsions électriques traduisant les chaînes binaires utilisées pour représenter les symboles qu’on y introduit codés sous forme d’une suite bits. Rappelons qu’un ordinateur ne comprend que les impulsions électriques. Les traitements, pour leur part, sont essentiellement réalisés à l'aide d'opérations telles l'addition, la soustraction, la multiplication, la division, la comparaison. Plus fondamentalement, les opérations sont composées d'opérations logiques qui sont effectuées par des circuits logiques de base appelés portes. Une porte est en fait un circuit combinatoire à une ou plusieurs entrées et à au moins une sortie. Les conditions aux entrées d'une porte déterminent l'état des sorties. Il existe trois portes de base correspondant aux trois opérations logiques: OU, ET, NON. Algèbre de Boole . On dit que les portes OU, ET, NON sont des opérateurs booléens, parce qu'ils impliquent ou traitent des variables booléennes, c'est à dire des variables logiques qui ne peuvent prendre que deux valeurs: 0 et 1. Le terme booléen vient du nom du mathématicien anglais George Boole (1815-1864), qui fit une analyse mathématique de la logique. L'ensemble des règles relatives au traitement des variables booléennes est appelé algèbre de Boole ou treillis booléen. Nous reviendrons plus loin aux règles du treillis booléen. Mais d'abord, regardons de plus près les trois portes fondamentales: OU, ET, NON. La porte OU . 2 ELECTRONIQUE NUMERIQUE 1BTS MSI BERTRAND TUENO L'opération OU appliquée à une ou plusieurs variables conduit à l'addition logique de ces variables (résumée dans la table de vérité qui suit). Elle est aussi appelée réunion et elle est notée par le signe , ou plus simplement par +. 3 ELECTRONIQUE NUMERIQUE 1BTS MSI BERTRAND TUENO Figure 1 : Porte OU. Table de vérité TABLE DE VÉRITÉ aUb + 0 0 0 1 1 1 1 1 entrées sortie a 0 0 1 1 a+b 0 1 1 1 b 0 1 0 1 L'addition logique peut s'étendre aux chaînes binaires où les bits de même rang sont additionnés selon la table de vérité de l'addition simple: Figure 2 : Porte Ou, Table binaire 0011 OU 0111 0101 Pour représenter la porte OU dans les circuits, on utilise le symbole suivant: Figure 3 : Porte OU, Symbole a a+b(aUb) b Bien sûr, la boîte noire qui porte le nom OU dans le schéma ne décrit pas le circuit électronique approprié pour réaliser la fonction OU. Voici un circuit électrique simple qui pourrait réaliser la fonction OU: 4 ELECTRONIQUE NUMERIQUE 1BTS MSI BERTRAND TUENO Figure 4 : Porte OU, Schéma aimant sortie entrée entrée OU courant Un signal électrique à l'entrée actionne un aimant provoquant la fermeture de la porte et permettant le passage du courant. Disons tout de suite, qu'un tel circuit est tout à fait démodé. Sa grande simplicité nous permet cependant de bien comprendre ce que fait le circuit. Nous aborderons plus loin les technologies de maintenant. La porte ET . Un circuit ET possède, tout comme le OU, deux ou plusieurs entrées et une sortie. Le ET correspond au produit logique ( ) ou X ou encore a l’intersection Figure 5 : Porte ET, Table de vérité TABLE DE VÉRITÉ a 0 1 0 0 0 1 0 1 b entrées sortie a 0 0 1 1 a b 0 0 0 1 . b 0 1 0 1 L'opération de multiplication peut comme les précédentes s'étendre aux chaînes binaires. 5 ELECTRONIQUE NUMERIQUE 1BTS MSI BERTRAND TUENO Figure 6 : Porte ET, Table binaire 0011 ET 0001 0101 On représente la porte ET par le symbole suivant: Figure 7 : Porte ET, Symbole a a b [ ou ( a b )] b On pourrait décrire simplement le fonctionnement de la porte ET avec ce circuit primitif: Figure 8 : Porte ET, Schéma aimant sortie entrée entrée ET courant La porte NON . La porte NON a une entrée et une sortie. Les deux ont toujours des valeurs opposées. C'est donc dire que si la valeur 0 se présente à l'entrée, on aura la valeur 1 à la sortie et vice-versa. On peut résumer l'effet de cet opérateur unaire dans la table de vérité suivante: 6 ELECTRONIQUE NUMERIQUE 1BTS MSI BERTRAND TUENO Figure 9 : Porte NON, Table de vérité TABLE DE VÉRITÉ NON a entrée sortie a a 0 1 1 0 Par convention on note A l’inverse de A. L'exemple suivant montre l'opération d'inversion inversion étendue à une chaîne binaire: Figure 10 : Porte NON, Table binaire 1010110 NON 0101001 Figure 11 : Porte NON, Symbole Dans les dessins des circuits, on représente la porte NON par le symbole suivant: a a Le fonctionnement de la porte NON pourrait s'illustrer par le circuit primitif suivant: 7 ELECTRONIQUE NUMERIQUE 1BTS MSI BERTRAND TUENO Figure 12 : Porte NON, Schéma sortie NON aimant entrée courant Remarque: La porte OU et la porte ET peuvent être inversées pour former les portes NON-OU (NOR) et NON-ET (NAND). L'inversion est représentée graphiquement par un petit cercle à la sortie. Figure 13 : Porte NON-ET, NON-OU, Symbole NON-OU NON-ET Les tables de vérité deviennent: Figure 14 : Porte NON-ET, NON-OU, Table de vérité . TABLE DE VERITÉ PORTE NON-ET TABLE DE VERITÉ PORTE NON-OU a 0 0 1 1 b 0 1 0 1 a+b 1 0 0 0 8 a 0 0 b 0 1 a b 1 1 1 1 0 1 1 0 ELECTRONIQUE NUMERIQUE 1BTS MSI BERTRAND TUENO Le OU-exclusif . On peut retrouver la fonction et sa table de vérité à partir du circuit, il suffit de se rappeler la signification de chaque symbole. Voyons l'exemple suivant. Figure 15 : Porte XOU, Schéma a a a b a b + ab sortie b a b b La table de vérité recherchée du circuit est alors la suivante: Figure 16 : Porte Xou, Table de vérité Table de vérité a b S 0 0 1 1 0 1 0 1 0 1 1 0 Le tableau suivant nous permet de reconstruire la table de vérité. Pour faciliter le travail, on ajoute, si on veut, quelques colonnes servant à noter certains résultats intermédiaires. Figure 17 : Porte XOU, Table de vérité équivalente A 0 0 1 1 b 0 1 0 1 a 1 1 0 0 b 1 0 1 0 a b 0 1 0 0 a b 0 0 1 0 9 (a b) (a b) 0 1 1 0 ELECTRONIQUE NUMERIQUE 1BTS MSI BERTRAND TUENO Ce circuit, où la sortie est vraie (=1) seulement si les deux entrées sont différentes, est très utilisé en pratique. Malgré sa complexité apparente, il est plus simple à réaliser électroniquement et cela pour plusieurs technologies qu'un ET ou un OU. Il est nommé OU-EXCLUSIF ou XOR. Dans les dessins des circuits électroniques, on le représente par le symbole suivant: Figure 18 a b _ a + b = ab + ab Ce circuit pourrait être utilisé pour faire l'addition de deux bits (sans tenir compte de la retenue). Il représente à la sortie la fonction f(a,b): f (a, b) (a b) (a b) Circuits équivalents . On peut maintenant se demander si plusieurs circuits différents peuvent représenter la même fonction. La réponse est affirmative. Tout comme il existe une infinité d'expressions mathématiques qui donnent, par exemple, le résultat 5: 7-2 15 / 3 9-4 2+3 = = = = 5 5 5 5 Il existe une infinité de circuits qui peuvent représenter une fonction booléenne donnée, tout comme il existe une infinité de programmes C qui peuvent produire le même résultat. Ainsi, on peut démontrer, à titre d'exemple, que la fonction S (a b) (a b) possède la même table de vérité que la fonction S (a b) (a b) Les fonctions sont alors dites équivalentes. On peut facilement construire le circuit de cette fonction équivalente, et on obtient: 10 ELECTRONIQUE NUMERIQUE 1BTS MSI BERTRAND TUENO a b S Comme nous le verrons plus loin, cette fonction correspond à un additionneur. Il additionne deux entrées booléennes sans tenir compte d'une retenue. On a alors le principe suivant: Deux fonctions logiques sont dites équivalentes si, et seulement s,i les valeurs de leurs sorties sont les mêmes pour chacune des configurations identiques de leurs variables d'entrée. Note: Certains circuits sont plus faciles à réaliser que d'autres car ils ont moins d'éléments de base équivalents aux transistors conventionnels. Ainsi, on considère souvent que les portes NONET et NON-OU sont élaborées avec deux équivalents transistors alors que les portes ET et OU en nécessitent trois. C'est un peu pour cette raison que beaucoup de circuits qu'on retrouve dans les ordinateurs d'aujourd'hui sont construits avec des portes NON-ET et NON-OU. Une autre raison pour laquelle les portes NON-OU et NON-ET sont plus largement utilisées que les autres, c'est que ces portes sont dites complètes, c'est à dire qu'on peut réaliser n'importe quelle fonction booléenne avec uniquement l'une ou l'autre de ces portes. Parmi les portes élémentaires, seules les portes NON-ET et NON-OU possèdent cette particularité. La notion de circuits équivalents sera utilisée afin de construire des circuits complexes au meilleur coût selon la technologie qu'il utilise. Le constructeur pourra décider, par exemple, de trouver une fonction équivalente qui utilise des portes NON-ET et NON-OU au lieu d'une fonction qui utilise des portes OU et ET, afin de construire un circuit moins coûteux pour certaines technologies. Exemple de circuits équivalents . Imaginons que, pour répondre à des contraintes économiques, on veut construire un additionneur qui soit équivalent au circuit précédent, mais qui soit construit uniquement à partir de portes NONET. Le dessin de ce circuit aurait l'allure suivante: C A B D 11 ELECTRONIQUE NUMERIQUE 1BTS MSI BERTRAND TUENO Les deux fonctions de ce circuit sont: C AAB ABB D AB où la fonction C est l'additionneur proprement dit, tandis que la fonction D est celle qui produit une retenue. À partir de ces fonctions, on peut reconstituer la table de vérité en suivant: A 0 0 1 1 B 0 1 0 1 AB 1 1 1 0 AAB 1 1 0 1 AAB ABB 1 0 0 1 ABB 1 0 1 1 construisant le tableau AAB ABB 0 1 1 0 La table de vérité est la même. Cela confirme bien l'équivalence de ces deux circuits. Réalisation de portes logiques de base à l’aide des portes NON-ET (voir en classe, page 57) 1. Porte NON : 2. Porte ET : 3. Porte OU : Règles de l’algèbre de Boole . Puisque des circuits équivalents peuvent être construits avec un nombre plus ou moins grand de portes, on tentera de trouver la fonction optimale. Pour ce faire, il faut simplifier la fonction en y appliquant les règles de l'algèbre de Boole. La table ci-dessous résume l’essentiel de ces règles. Noter que la table de Boole est présentée sous deux formes : une pour l’opérateur ET et l’autre pour l’opérateur OU. 12 ELECTRONIQUE NUMERIQUE 1BTS MSI BERTRAND TUENO Principales règles de l’algèbre de Boole. Loi Nullité Identité Idempotence Inversion Commutativité Absorption Distributivité Associativité De Morgan 1 3 5 7 9 11 13 15 17 Multiplication ET a00 a 1 a aaa aa0 abba a (a b) a a (b c) (a b) (a c) a (b c) (a b) c ab a b Addition OU 2 4 6 8 10 12 14 16 18 a+1=1 a+0=a a+a=a aa1 a+b=b+a a (a b) a a (b c) a b a c a + (b + c) = (a + b) + c abab Les égalités suivantes sont aussi utiles: 19. a b a b a 20. a b a (a b) 21. a b (a b) (a b) (a b) 22. (a b) (a b) a 23. (a b) (a b) (a b) (a b) 1 24. (a b) (a b) (a b) (a b) 25. (a b) (a b) (a b) (a b) 26. a a Note : Ces lois peuvent être prouver de deux manières différentes : algébrique ou tabulaire. Méthode algébrique : cette méthode consiste à prouver d’une manière analytique en auyant recours à d’autres lois ou postulats. Par exemple, nous allons démontrer le théorème ( de l’idempotence- loi 6) suivant : a+a=a a a (a a) 1 (théorème de l’élément identité; loi 3) a a (a a) (a a) (théorème de l’inversion; loi 8) a a a (a a) (théorème de distributivité; loi 13) a a a 0 (théorème de l’inversion; loi 7) 13 ELECTRONIQUE NUMERIQUE 1BTS MSI BERTRAND TUENO a a a (théorème de l’élément d’identité; loi 4) Exemple 2 (méthode tabulaire): Comme les variables logiques ne prennent que deux valeurs, la méthode tabulaire consiste à énumérer tous les cas possibles et à vérifier pour chaque cas, la véracité de la loi. On dit que la preuve est le résultat d’un raisonnement par induction. Par exemple, la loi de Morgan est prouvée comme suit : A 0 0 1 1 B 0 1 0 1 A 1 1 0 0 AB 1 0 0 0 B 1 0 1 0 AB 1 1 1 0 AB 1 1 1 0 AB 1 0 0 0 Comment tranformer une table de vérité en une fonction analytique Il est clair qu’il est plus commode de manipuler une fonction qu’une table de vérité. Dans cette section, nous allons voir comment passer d’une table de vérité à une fonction qui lui correspond. À partir de la table de vérité, nous pouvons avoir deux formes analytiques, dénommées formes canoniques. Pour montrer les deux formes canoniques que nous pouvons obtenir à partir de la table de vérité, nous allons considérer une table quelconque définie comme suit : A 0 0 0 0 1 1 1 1 B 0 0 1 1 0 0 1 1 C 0 1 0 1 0 1 0 1 F(A,B,C) 1 0 1 0 1 1 1 0 Pour chacune des huit combinaisons de trios variables (000, 001, … 111), on peut définir un terme produit, qu’on appelle minterme, égal au ET des variables qui composent cette combinaison (A ou A , B ou B et C ou C ). Par exemple, pour la combinaison A = 0, B = 1 et C = = 1, le minterme s’exprime par A B C ; la combinaison A =1, B = 0 et C =0 s’exprime par ABC. La fonction logique F prend la valeur 1 pour chaque fois qu’un minterme prend lui aussi la valeur 1. Par conséquent, on pourra exprimer une fonction logique F quelconque en effectuant la somme logique de tous les mintermes pour lesquelles F = 1. Ainsi, pour notre exemple, on aura : 14 ELECTRONIQUE NUMERIQUE 1BTS MSI BERTRAND TUENO F ( A, B, C) A B C A B C A B C A B C A B C Cette forme d’écriture s’appelle forme canonique P. Il existe une autre forme, qu’on appelle forme canonique S pour exprimer la fonction logique en question. En effet, au lieu d’utiliser le produit, on utilise la somme. Ainsi, Pour chacune des huit combinaisons de trios variables (000, 001, … 111), on peut définir un terme somme, qu’on appelle minterme, égal au ou des variables qui composent cette combinaison (A ou A , B ou B et C ou C ). Par exemple, pour la combinaison A = 0, B = 1 et C = 1, le minterme s’exprime par A B C ; la combinaison A =1, B = 0 et C = 0 s’exprime par A B C . La fonction logique F prend la valeur 0 pour chaque fois qu’un minterme prend lui aussi la valeur 0. Par conséquent on pourra exprimer une fonction logique F quelconque en effectuant le produit logique de la somme tous les mintermes pour lesquelles F = 0. Ainsi, pour notre exemple, on aura : F ( A, B, C) ( A B C) ( A B C) (( A B C ) Cette forme d’écriture s’appelle forme canonique P. Il y a lieu de noter que ces deux formes d’écriture de la fonction F sont équivalentes, puisqu’elles expriment la même fonction F. Pour prouver cette affirmation, nous allons reconsidérer sa table de vérité. Si, pour une ligne, la fonction F vaut 0, son minterme correspondant vaut lui aussi 0. Par conséquent, la fonction 0 vaut 0 pour la somme des minterme qui valent 0. Autrement dit, une autre manière d’écrire la fonction canonique P de la fonction logique F est : F ( A, B, C) ( A B C) ( A B C) ( A C C ) En effet, en considérant le complément de cette dernière expression, nous pouvons effectuer la succession suivante d’opérations logiques F ( A, B, C) F ( A, B, C) A B C A B C A B C = (C A B) (C A B) ( A B C) = A B C A B C A B C =ABCABC ABC ce qui vérifie l’équivalence des formes canoniques. 15 ELECTRONIQUE NUMERIQUE 1BTS MSI BERTRAND TUENO Simplification des fonctions logiques Les deux formes canoniques d’une fonction logique sont équivalentes, mais habituellement aucune d’entre-elles n’en constitue l’expression la plus simple. En pratique, on souhaite simplifier une fonction logique définie par sa table de vérité. Par simplification, on cherche à obtenir une écriture plus succincte, qui contienne moins de variables et moins de termes produits (ou sommes), donc qui conduise à une réalisation matérielle plus simple et aussi moins coûteuse. Les méthodes de simplification utilisent les loi de l’algèbre de Boole. Il existe deux manières de procéder : manipulation algébrique et tables de Karnaugh. 1. Manipulation algébrique : en utilisant d’une manière adéquate les règles de l’algèbre de Boole, on arrive souvent à simplifier la formule de départ. Exemple : soit la forme suivante : F ( A, B, C) A B C A B C A B C A B C A B C Conformément au théorème de distributivité précédent, nous pouvons grouper les termes produits qui contient deux variables identiques. De la même manière, conformément au théorème de d’idempotence, le processus de groupement nous permet d’utiliser un terme produit plusieurs fois. Par conséquent, F ( A, B, C) A C (B B) B C ( A A) A B (C C) A C (B B) En considérant le théorème de l’inversion et celui de l’élément d’identité, nous pouvons éliminer les parenthèses de la relation ci-dessus, ce qui conduit à la relation suivante : F ( A, B, C) A C B C A B A C D’où, après un autre regroupement, on obtient : F ( A, B, C) C ( A A) B C) A B) Finalement, après l’élimination de la dernière parenthèse et à l’aide du théorème d’absorptio, nous arrivions à l’expression simplifiée suivante de la fonction F(A,B,C) : F ( A, B, C) C A B Le schéma de cette fonction est comme ci-dessous (voir en classe) : 16 ELECTRONIQUE NUMERIQUE 1BTS MSI BERTRAND TUENO Diagramme de Karnaugh Parce que la simplification par la manipulation algébrique est difficile, l’informaticien préfère des méthode graphiques de simplification, et depuis peu, des méthodes implantées par programme. La méthode graphique de simplification la plus connue est celle du diagramme de Karnaugh, facile à utiliser pour la simplification des fonctions booléennes ayant jusqu’à six variables. Le diagramme de Karnaugh d’une fonction logique est une transformation graphique de la table de vérité qui permet la visualisation de tous les mintermes. Si une fonction logique dépend de n variables alors elle peut avoir 2 n mintermes. Chacun de ces mintermes est représenté par une case dans le diagramme de Karnaugh. Les cases sont placées d’une façon telle que les mintermes qui ne différent que par l’etat d’une seule variable, appelée minterme adjacents, ont une frontière commune sur une ligne ou sur une colonne, ou bien se trouvent aux extrémités d’une ligne ou d’une colonne (fonctions ayant jusqu’à 4 variables). Les figures ci-dessous représentent les diagrammes de Karnaugh pour deux, trois et quatre variables et ce dans la forme canonique P. Les figures de tables de tables de Karnaugh Les inclure ici en classe (page 43). Méthode de Karnaugh transposition du tableau de vérité dans un tableau de Karnaugh ; réalisation des groupements de 1, 2, 4, 8 termes ; minimisation des groupements (maximisation des termes dans un groupement) ; si groupement d'un terme, alors on ne fait rien ; si 2 termes, on élimine la variable qui change d'état et on conserve le produit des variables directes ou inverses qui n'ont pas changé d'état dans le groupement ( ); pour 4 termes, on élimine les 2 variables qui changent d'état ; pour 8 termes, on élimine les 3 variables qui changent d'état ; l'expression logique finale est la réunion des groupements après élimination des variables. Un groupement se fait comme suit : 1- Toutes les cellules adjacentes contenant un 1 sont regroupées ensemble 2- Le groupe doit avoir une forme rectangulaire 3- Le nombre de cellules contenant un 1 de chaque groupe doit être une puissance de 2 17 ELECTRONIQUE NUMERIQUE 1BTS MSI BERTRAND TUENO Étude de quelques exemples 1 1 1 1 1 0 0 1 1 0 0 1 1 1 1 1 0 1 1 0 1 1 1 1 0 1 1 0 0 1 1 0 1 1 0 0 0 1 1 0 1 0 0 1 0 0 0 0 M= N= P= 0 0 1 0 0 1 1 0 0 1 0 1 1 0 1 1 1 0 0 1 1 0 1 1 1 1 1 1 1 0 0 1 0 1 0 1 0 0 1 0 0 1 1 0 1 1 1 1 S= T= R= Les valeurs indifférentes (X) Certaines fonctions logiques sont dites incomplètement définies: certaines combinaisons de leurs variables d'entrées ne sont supposées jamais se produire ou ne pas avoir d'effet sur le résultat. On appelle ces combinaisons valeurs indifférentes (don't care values) et on les note par ‘X’ dans les tables de vérités. Dans les diagrammes de Karnaugh, on les considère comme des 1 seulement pour faire des groupements plus grands, et donc des simplifications plus grandes. 18 ELECTRONIQUE NUMERIQUE 1BTS MSI BERTRAND TUENO Exemples X 1 1 1 0 1 X 0 1 0 X 1 0 X 1 0 0 1 X 1 0 1 X 1 0 0 1 0 0 1 X X 1 1 X X 0 0 1 0 1 0 X X 0 1 X X M= N= 0 0 1 1 1 1 0 0 1 1 0 1 0 0 1 1 0 1 X 1 1 1 X 0 0 1 0 X X 0 X X P= 1 1 X 1 0 1 X 1 0 1 X 1 0 1 X 1 0 0 X X 1 0 X X 0 1 X X 1 1 X X S= T= R= Conception d’un circuit logique L’ordinateur utilise l’information binaire, forme imposée par la nature électronique des circuits qui composent ses blocs fonctionnels. Dans ce genre de circuits, les points significatifs, ceux où l’information est saisie, se comportent comme des interrupteurs. Un tel point significatif, à l’entrée ou à la sortie, se trouve soit à la tension haute soit à la tension basse. En connaissant le rôle fonctionnel du circuit que l’on désire construire, on peut définir la fonction de chaque sortie en utilisant les tables de tensions dont l’élaboration est semblables à celle des tables de vérité qu’on a vues précédemment. Par conséquent, les relations et méthode de l’algèbre de Boole peuvent être utilisées pour faire l’analyse et la synthèse des circuits d’un ordinateur, si 19 ELECTRONIQUE NUMERIQUE 1BTS MSI BERTRAND TUENO on introduit une convention selon laquelle les deux valeurs de tensions sont remplacées par les valeur logique 1 et 0. Par ailleurs, les circuits logiques d’un ordinateurs sont divisées en deux catégories suivant leur structure fonctionnelles : les circuits combinatoires et circuits sequentiels... Définition : Un circuit est dit combinatoire si les sorties ne dépendent que des valeurs assignées aux valeurs d’entrée au moment considéré. Autrement dit, dans un tel circuit, le comportement des sorties des fonctions logiques. E Variables d’entrée 1 En partie combinatoire S1 Sm peut toujours être exprimé pas fonctions d’entrée Définition : Un circuit est dit séquentiel si les sorties le comportement des sorties dépend des valeurs assignées aux variables ‘entrée et selon son histoire. De tels circuits contiennent une mémoire à côté d’une partie combinatoire. Cette mémoire a pour rôle de conserver l’histoire du circuit, histoire qui peut influencer les sorties pour une nouvelles combinaison de valeurs assignées aux entrées. L’information qui se trouve en mémoire à un moment donné définit l’état du circuit séquentiel. L’état suivant et le comportement des sorties sont déterminés par l’état actuel et la combinaison des valeurs données aux entrées. Par conséquent, un circuit séquentiel se caractérise par une séquence de signaux aux entrées et une séquence d’états pour chaque séquence de signaux appliquées aux entrées. E1 En Variables d’entrée partie Combinatoire S1 Sm États mémoire Dans ce qui suit, on ne va parler que de circuits combinatoires. 20 Fonctions de sortie ELECTRONIQUE NUMERIQUE 1BTS MSI BERTRAND TUENO Circuits combinatoires Habituellement, on ne reconstruit pas une fonction à partir de la représentation du circuit, mais on fait plutôt l'inverse: à partir d'un problème donné, on construit la table de vérité afin de dégager la fonction. Ensuite, on construit le circuit en utilisant les portes requises pour représenter cette fonction. D'une façon générale, la démarche est la suivante: 1. 2. 3. 4. 5. Identifier les entrées et les sorties (IN / OUT) de la fonction. Construire la table de vérité. Identifier la fonction à partir de la table de vérité. Simplifier la fonction. Dessiner le schéma du circuit. Quelques exemples de circuits simples . Le semi-additionneur Il s'agit de réaliser un circuit permettant d'additionner 2 bits d'entrée, et d'obtenir comme sortie le résultat de l'addition et la retenue: S x SEMI-ADDITIONNEUR R y Table de vérité du semi-additionneur X 0 0 1 1 y 0 1 0 1 S 0 1 1 0 R 0 0 0 1 21 ELECTRONIQUE NUMERIQUE 1BTS MSI BERTRAND TUENO On a deux fonctions la fonction S et la fonction R. S (x, y) x y xy R(x, y) xy Noter que ces deux fonctions ne peuvent plus être simplifiées. Dessin du circuit: x y R (retenue) S (somme) 22 ELECTRONIQUE NUMERIQUE 1BTS MSI BERTRAND TUENO L'additionneur Le semi-additionneur permet d'additionner deux bits, et de donner la somme et la retenue. L'additionneur complet tient compte non seulement des deux entrées, mais aussi de la retenue obtenue lors de l'addition des deux valeurs de la position précédente. On a alors, pour l'addition des deux valeurs de position n, les entrées suivantes: x n, yn et Rn-1 ( la retenue de l'addition des deux valeurs de la position n-1). entrées An Bn Rn-1 sorties Sn Rn ADDITIONNEUR Table de vérité de l'additionneur An 0 0 1 1 0 0 1 1 Bn 0 1 0 1 0 1 0 1 Rn-1 0 0 0 0 1 1 1 1 Sn 0 1 1 0 1 0 0 1 Les deux fonctions réunies nous donnent le circuit suivant: 23 Rn 0 0 0 1 0 1 1 1 ELECTRONIQUE NUMERIQUE 1BTS MSI BERTRAND TUENO An Bn R n-1 Sn Rn L'additionneur à n bits L'additionneur que nous venons de dessiner additionne deux bits de même position. On pourrait concevoir un additionneur qui additionnerait des nombres de plusieurs bits de longueur, tout simplement en jumelant plusieurs additionneurs. Notez que la retenue de départ est nulle. ... ... ... 0 1 2 ... A A A ... B0 B1 B2 ... ... ... Bn-1 ... ... A n-1 ... R0 S 0 R2 R1 S2 S1 24 Sn-1 R n-1 ELECTRONIQUE NUMERIQUE 1BTS MSI BERTRAND TUENO Demi-soustracteur La table de vérité pour un demi-soustracteur (ne tenant pas compte d'une éventuelle retenue provenant des bits de poids inférieurs) est la suivante : Table de vérité A B D C 0 0 0 0 0 1 1 1 1 0 1 0 1 1 0 0 Equations logiques de soties Où D représente le résultat de la soustraction A − B et C la retenue. Nous en déduisons les expressions logiques définissant D et C : {𝐷 = 𝐴. 𝐵 + 𝐴. 𝐵 = 𝐴 ⊕ 𝐵 𝐶 = 𝐴. 𝐵 Logigramme A D B C Logigramme un demi soustracteur Nous pourrions maintenant étudier un soustracteur prenant en compte la retenue. Nous allons plutôt tirer parti de certaines propriétés de la numération binaire pour traiter de la même manière l'addition et la soustraction. 25 ELECTRONIQUE NUMERIQUE 1BTS MSI BERTRAND TUENO Le comparateur. Imaginons maintenant, à titre d'exercice, un circuit qui ferait le traitement suivant: Si A > B alors S = 1 sinon S = 0 où A et B sont des nombres binaires sur deux bits, i.e. A = A1A0 et B = B1B0. Il s'agit d'un comparateur (ou structure de choix). Table de vérité du comparateur A1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 A0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 B1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 B0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 Avec la fonction simplifiée, on obtient le circuit suivant: 26 S 0 0 0 0 1 0 0 0 1 1 0 0 1 1 1 0 ELECTRONIQUE NUMERIQUE 1BTS MSI BERTRAND TUENO S A0 B0 ( A1B1 A1B1 ) A1 B1 27 ELECTRONIQUE NUMERIQUE 1BTS MSI BERTRAND TUENO A1 A0 B1 B0 S On pourrait aussi simplifier la fonction de façon à utiliser une porte XOR On obtiendrait alors le circuit suivant pour le comparateur: S ( A, B) (( A1 B1 ) ( A0 B0 )) ( A1 B1 ) A1 A0 B1 B0 S 28 ELECTRONIQUE NUMERIQUE 1BTS MSI BERTRAND TUENO Autre façon de concevoir le comparateur. Pour savoir si A > B, nous pouvons procéder autrement. Au lieu de comparer les deux chaînes binaires entrées, on pourrait comparer les bits de même rang de chacune des deux chaînes binaires: si A1 > B1 alors S 1 sinon si ( A1 = B1 et A0 > B0) alors S 1 sinon S0 Nous devons d'abord dessiner deux circuits: un circuit qui compare deux bits (qu'on utiliserait avec les deux paires d'entrées A1 B1 et A0 B0) et un autre circuit qui vérifie si deux bits sont égaux. Comparaison de deux bits de même rang Si A > B alors C <- 1 sinon C <- 0 A 0 0 1 1 A B B 0 1 0 1 > C C 0 0 1 0 C AB Circuit de la non-égalité (différence) . On peut reprendre ce circuit équivalent ÉGA pour construire un circuit qui vérifie si deux valeurs sont différentes: en effet, on a: C = 1 lorsque A = B et, par opposition: C = 0 lorsque A <> B C vérifie donc l'égalité. 29 ELECTRONIQUE NUMERIQUE 1BTS MSI BERTRAND TUENO Les Codeurs Définition Le codeur (ou encodeur) est un circuit logique qui possède 2N voies entrées, dont une seule est activée et N voies de sorties. Il fournit en sortie le code binaire correspondant. Schéma fonctionnel d’un codeur Principe d’un codeur 4 voies d’entrées et 2 bits de sortie Schéma fonctionnel 4 entrées dont une seule est activée à la fois M≤ 2n Représentation binaire de l’entrée activée (n bits) Figure 3 : Schéma fonctionnel d’un codeur 4 voies d’entrées et 2 bits de sortie Table de vérité Entées Codage 1 parmi 2n A3 A2 A1 A0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 Sorties Nombre binaire de n bits S1 S0 0 0 0 1 1 0 1 1 Equation des sorties S1=1 si (A2=1) ou (A3=1) ; S1=A2+A3 S0=1 si (A1=1) ou (A3=1) ; S0=A1+A3 30 ELECTRONIQUE NUMERIQUE 1BTS MSI BERTRAND TUENO Logigramme Schéma du logigramme d’un codeur Si nous activons simultanément les entrées A1 et A2 du codeur ci-dessus, les sorties S1S0 présente le nombre 11 qui ne correspond pas au code de l'une ou de l'autre des entrées activés. C'est plutôt le code qui représente l'activation de A3. Pour résoudre ce problème on utilise un codeur de priorité qui choisit le plus grand nombre lorsque plusieurs entrées sont activées à la fois. Exemple, lorsqu’A1 et A2 sont activées simultanément S1S0 sera égale à 10 qui représentent l'activation de A0. Les Décodeurs Définition et fonctionnement Un décodeur est un circuit logique combinatoire qui a une entrée binaire de n bits permettant 2n combinaisons et M sorties telles que 2n≥M. Figure 7: Schéma fonctionnel de décodeur Suivant le type de décodeur, la sortie peut traduire deux fonctions: Convertisseur de code à un code de sortie d'entrée correspond un code de sortie. Exemple: Un décodeur binaire octal possède 3 bits d'entrés permettant 23=8 combinaisons pour 31 activer chacun des 8 sortie de l'octal. Sélecteur de sortie: Une seule sortie parmi les M disponibles est activée à la fois en ELECTRONIQUE NUMERIQUE 1BTS MSI BERTRAND TUENO fonction de la valeur binaire affichée à l'entré. Ces fonctions permettent d'activer (sélectionner) un circuit intégré parmi plusieurs. Principe d’un décodeur 1 parmi 4 Pour pouvoir activer toutes les 4 voies on a besoin de 2 bits à l'entrée car c'est 22=4 2 bits permettant permettant 22=4 combinaison combinaison Figure 8: Schéma de principe d’un décodeur a. Table de vérité Table de fonctionnement Code binaire d’entrée Codage 1 parmi 4 sorties E1 E0 S3 S2 S1 S0 0 0 0 0 0 1 0 1 0 0 1 0 1 0 0 1 0 0 1 1 1 0 0 0 b. Equations de sorties S0 E1.E0 S1 E1.E0 S2 E1.E0 S3 E1.E0 c. Logigramm e Figure 9 : Schéma de logigramme d’un décodeur 32 Une Uneseule seule sortie parmi sortie parmi lesles4 4estest activée à la activée à la fois fois ELECTRONIQUE NUMERIQUE 1 BTS MSI BERTRAND TUENO Remarque: Certains n'utilisent pas toute la gamme de 2n combinaisons d'entrées possibles. C'est le cas du décodeur DCB décimal qui a 4 bits d'entrée et 10 sorties donc une seule est active dans chacune des 10 représentations du DCB Multiplexeur Définition Le multiplexeur (MUX) est un sélecteur de données qui permet d’aiguiller à l’aide des entrées de sélection (C1, C2,…, Cn) des données de provenances diverses (E1, E2,…, En) vers une seule sortie S. L’entrée sélectionnée est définie par son adresse. Multipleu2n vers 1 Décimale Cn C2 C1 S 0 1 2 3 0 0 0 0 0 0 1 1 0 1 0 1 E0 E1 E2 E3 2n-1 1 1 1 En Table de vérité Applications des multiplexeurs Conversion parallèle/série : aiguiller les informations présentes en parallèle à l’entrée du MUX en des informations de type série en33 sortie ; toutes les combinaisons d’adresses sont énumérées une par une sur les entrées de sélection. ELECTRONIQUE NUMERIQUE 1 BTS MSI BERTRAND TUENO Réalisation de fonctions logiques : toute fonction logique de N variables est réalisable avec un multiplexeur de 2N vers 1 a. Multiplexeur à 4 entrées (4 vers 1) Un multiplexeur 4 vers 1 est un circuit logique qui est formé de 4 entrées E0 , E1, E2, E3 qui sont transmises selon le choix indiqué par l’une des quatre combinaisons possibles des sorties de sélection C0 et C1 Table de fonctionnement Décimale 0 1 C0 0 0 C1 0 1 S E0 E1 2 3 1 1 0 1 E2 E3 Equation boolienne de sortie S C1.C0.E0 C1.C0.E1 C1.C0.E2 C1.C0.E3 Circuit logique Logigramme d’un multiplexeur b. Multiplexeur en circuit intégré Multiplexeur 4-vers-1 : 74153 Multiplexeur 8-vers-1 : 74151 Multiplexeur 16-vers-1 : 74150 34 ELECTRONIQUE NUMERIQUE 1 BTS MSI BERTRAND TUENO Démultiplexeur Le démultiplexeur réalise l’inverse d’un MUX : il aiguille une seule entrée vers une parmi 2 n vois de sorties. Les démultiplexeur fonctionnent comme un commutateur. Ils comportent une entrée de donné E, n entrées de sélection (C1, C2,…, Cn) et 2n sorties (S1, S2,…, S n) 2 Démultiplexeur 1 vers 2n Les démultiplexeurs sont surtout utilisés dans les conversions série - parallèle. Ils peuvent aussi faire office de décodeur. Table de vérité Décimale Cn C2 C1 S1 S2 S2 n 0 1 2 0 0 0 0 0 1 0 1 0 E 0 0 0 E 0 0 0 0 3 0 1 1 0 0 0 0 2n-1 1 1 1 0 0 E Remarque Dans certains cas on trouve : Si à 1 lorsqu’elles ne sont pas sélectionnées à la place de 0 E à la palace de E dans les Si, lorsqu’elles sont sélectionnés. Démultiplexeur en circuit intégré Démultiplexeur (décodeur) 8-vers-1 :74138 Décodeur /démultiplexeur : 74154 Circuits séquentiels Avec les circuits combinatoires, on sait traiter et manipuler de l’information. Il nous manque encore 35 ces circuits ne dépend que de l'entrée et pas de ce une chose : la mémoriser. La valeur de la sortie de qui s'est passé auparavant : les circuits combinatoires n'ont pas de mémoire. Pour répondre à ce besoin, les électroniciens ont inventé des circuits séquentiels qui possèdent une capacité de mémorisation. ELECTRONIQUE NUMERIQUE 1 BTS MSI BERTRAND TUENO L'ensemble des informations mémorisées dans un circuit séquentiel forme ce qu'on appelle l'état du circuit. Pour mémoriser cet état, un circuit doit posséder des composants pour stocker un ou plusieurs bits : ce sont des mémoires. On verra dans la suite de ce tutoriel comment les mémoires actuelles font pour stocker des bits : elles peuvent utiliser aussi bien un support magnétique (disques durs), optique (CD-ROM, DVD-ROM, etc), que des transistors (mémoires RAM, FLASH, ROM, etc), etc. Les mémoires d'un circuit séquentiel permettent de mémoriser des informations, que l'on peut récupérer plus tard. Ainsi, on peut parfaitement consulter une mémoire pour récupérer tout ou partie de son contenu : cette opération est ce qu'on appelle une opération de lecture. Mais évidemment, on peut aussi ranger des informations dans la mémoire ou les modifier : on effectue alors une opération d'écriture. Généralement, les informations lues sont disponibles sur la sortie de la mémoire, tandis que l'information à écrire dans une mémoire est envoyée sur son entrée (le circuit effectuant l'écriture sous certaines conditions qu'on verra plus tard). De manière générale, il se peut que l'état mémorisé dans la mémoire ne dépende pas que de la donnée envoyée sur l'entrée, mais aussi de l'état antérieur de la mémoire. Pour cela, le circuit contient un circuit combinatoire qui calcule le nouvel état en fonction de l'ancien état et des valeurs des entrées. Un circuit séquentiel peut ainsi être découpé en deux morceaux : des mémoires qui stockent l'état du circuit, et des circuits combinatoires pour mettre à jour l'état du circuit et sa sortie. Cette mise à jour de l'état du circuit dépend de l'entrée mais aussi de l'ancien état. Suivant la méthode utilisée pour déterminer la sortie en fonction de l'état, on peut classer les circuits séquentiels en deux catégories : les automates de Moore, où la sortie ne dépend que de l'état mémorisé ; et les automates de Mealy, où la sortie dépend de l'état du circuit et de ses entrées. Ces derniers ont tendance à utiliser moins de portes logiques que les automates de Moore. 36 ELECTRONIQUE NUMERIQUE 1 BTS MSI BERTRAND TUENO Bascules : des mémoires de 1 bit On vient de voir que la logique séquentielle se base sur des circuits combinatoires auxquels on ajoute des mémoires. Pour le moment, on sait créer des circuits combinatoires, mais on ne sait pas faire des mémoires. Pourtant, on a déjà tout ce qu'il faut : avec nos portes logiques, on peut créer des circuits capables de mémoriser un bit. Ces circuits sont ce qu'on appelle des bascules, ou flip-flop. On peut grosso-modo classer les bascules en quelques grands types principaux : les bascules RS, les bascules JK et les bascules D. Nous ne parlerons pas des bascules JK dans ce qui va suivre. Mais le principe qui se cache derrière toutes ces bascules est le même. La solution pour créer une bascule consiste à boucler la sortie d'un circuit sur son entrée, de façon à ce que la sortie rafraîchisse le contenu de l'entrée en permanence. Un circuit séquentiel contient toujours au moins une entrée reliée sur une sortie, contrairement aux circuits combinatoires, qui ne contiennent jamais la moindre boucle ! Pour créer une bascule, nous allons partir d'un circuit très simple, une vulgaire porte NON. Le circuit doit mémoriser ce qu'on place sur son entrée (celle de la porte NON). Si on boucle la sortie d'une porte NON sur son entrée, cela naïvement ne fonctionnera pas, vu que la sortie sera inversée et correspondra à l'inverse de l'entrée. Il faut donc rajouter une seconde porte NON pour réobtenir l'entrée initiale. Par exemple, si on place l'entrée de la première porte NON à zéro, la sortie de celle-ci passera à 1. Ce 1 sera inversé par la seconde porte NON, donnant un zéro. Zéro qui sera alors ré-envoyé sur l'entrée initiale. L'ensemble sera stable : on peut déconnecter l'entrée du premier inverseur, celle-ci sera alors rafraîchie en permanence par l'autre inverseur, avec sa valeur précédente. Le même raisonnement fonctionne si on met un 1 en sortie. 37 ELECTRONIQUE NUMERIQUE 1 BTS MSI BERTRAND TUENO Bascules RS Le circuit précédent met de coté un léger détail : boucler la sortie sur une entrée demande d'ajouter une entrée supplémentaire, ce qui fait que l'on doit faire quelques modifications à un circuit combinatoire pour le transformer en circuit séquentiel: il faut rajouter quelques portes logiques ou en changer. Pour cela, la porte NON du circuit précédent doit être modifiée pour obtenir une bascule. Pour cela, il faudra rajouter une seconde entrée : la porte NON devient soit une porte ET, soit une porte OU (ou une NAND/NOR). Les bascules RS appliquent directement ce principe. Les bascules RS possèdent : une sortie pour récupérer le bit mémorisé; avec éventuellement une autre sortie qui fournit l'inverse de ce bit ; deux entrées qui permettent de le modifier : une entrée permet de le mettre à 0, tandis que l'autre le met à 1. On classe ces bascules RS suivant ce qu'il faut mettre sur les entrées pour modifier le bit mémorisé, ce qui permet de distinguer les bascules RS à NOR des bascules RS à NAND. Bascules RS à NOR Les bascules RS à NOR comportent deux entrées R et S et une sortie Q, sur laquelle on peut lire le bit stocké. Le principe de ces bascules est assez simple : si on met un 1 sur l'entrée R et un 0 sur l'entrée S, la bascule mémorise un zéro ; si on met un 0 sur l'entrée R et un 1 sur l'entrée S, la bascule mémorise un un ; si on met un zéro sur les deux entrées, la sortie Q sera égale à la valeur mémorisée juste avant. Pour vous rappeler de ceci, sachez que les entrées de la bascule ne sont nommées ainsi par hasard : R signifie Reset (qui signifie mise à zéro en anglais) et S signifie Set (qui veut dire mise à un en anglais). Petite remarque : si on met un 1 sur les deux entrées, on ne sait pas ce qui arrivera sur ses sorties. Après tout, quelle idée de mettre la bascule à un en même temps qu'on la met à zéro ! Entrée Reset Entrée Set Sortie Q 0 0 Bit mémorisé par la bascule 38 0 1 1 1 0 0 ELECTRONIQUE NUMERIQUE 1 BTS MSI 1 1 BERTRAND TUENO Interdit Interface d'une bascule RS à NOR. Circuit d'une bascule RS à NOR. Fonctionnement d'une bascule RS à NOR. Bascules RS à NAND Les bascules RS à NAND utilisent des portes NAND pour créer une bascule. Cela n'a pas d'avantages, mais c'est une possibilité comme une autre. Ces bascules fonctionnent différemment de la bascule précédente : si on met un 1 sur l'entrée R et un 0 sur l'entrée S, la bascule mémorise un zéro ; 39 si on met un 0 sur l'entrée R et un 1 sur l'entrée S, la bascule mémorise un un ; si on met un zéro sur les deux entrées, la sortie Q sera égale à la valeur mémorisée juste avant. ELECTRONIQUE NUMERIQUE 1 BTS MSI BERTRAND TUENO Entrée Reset Entrée Set Sortie Q 0 0 Bit mémorisé par la bascule 0 1 1 1 0 0 1 1 Interdit Pour faciliter la compréhension, il est plus judicieux de raisonner avec des entrée /R et /S. si on met un 0 sur l'entrée /R et un 1 sur l'entrée /S, la bascule mémorise un zéro ; si on met un 1 sur l'entrée /R et un 0 sur l'entrée /S, la bascule mémorise un un ; si on met un 1 sur les deux entrées, la sortie Q sera égale à la valeur mémorisée juste avant. Interface d'une bascule RS à NAND. SR Flip-flop Diagram. Bascules RS à entrée Enable Dans la bascule RS à NAND du dessus, le bit mémorisé change dès que l'on envoie un bit à 1 sur une des deux entrées R et S. On verra plus tard qu'il peut être utile d'autoriser ou d'interdire cette modification dans certains cas. Dans ces conditions, on peut faire en sorte de créer une bascule où l'on pourrait « activer » ou « éteindre » les entrées R et S à volonté. Cette bascule mémoriserait un bit et aurait toujours des entrées R et S. Mais ces entrées ne fonctionneront que si l'on autorise la bascule à prendre en compte ses entrées. Pour cela, il suffit de rajouter une entrée E à notre circuit. Suivant la valeur de cette entrée, l'écriture dans la bascule sera autorisée ou interdite. Si l'entrée E vaut zéro, alors tout ce qui se passe sur les entrées R et S ne fera40 rien : la bascule conservera le bit mémorisé, sans le changer. Par contre, si l'entrée E vaut 1, alors les entrées R et S feront ce qu'il faut et la bascule fonctionnera comme une bascule RS normale. On peut aussi faire la même chose, mais avec une ELECTRONIQUE NUMERIQUE 1 BTS MSI BERTRAND TUENO bascule RS à NOR, mais le circuit n'est alors pas tout à fait le même. Dans tous les cas, on obtient alors une bascule RS à entrée Enable. Pour créer un tel circuit, rien de plus simple : nous allons ajouter un circuit avant les entrées R et S, qui inactivera celles-ci si l'entrée E vaut zéro. La table de vérité de ce circuit est identique à celle d'une simple porte ET. Le circuit obtenu est donc celui-ci : Bascule RS à entrée Enable. Circuit d'une bascule RS à entrée Enable. Bascule D Les bascules D sont différentes des bascules RS, même si elles ont deux entrées. La différence tient dans ce que l'on doit mettre sur les entrées pour mémoriser un bit. Le bit à mémoriser est envoyé directement sur une des entrées, notée D : la bascule a directement connaissance du bit à mémoriser. L'autre entrée, l'entrée Enable, permet d'indiquer quand la bascule doit mettre son contenu à jour : elle permet d'autoriser ou d'interdire les écritures dans la bascule. Ainsi, tant que cette entrée Enable reste à 0, le bit mémorisé par la bascule reste le même, peu importe ce qu'on met sur l'entrée D : il faut que l'entrée Enable passe à 1 pour que l'entrée soit recopiée dans la bascule et mémorisée. On peut créer une bascule D avec un simple multiplexeur. L'idée est très simple. Quand l'entrée Enable est à 0, la sortie du circuit est bouclée sur l'entrée : le bit mémorisé, qui était présent sur la sortie, est alors renvoyé en entrée, formant une boucle. Cette boucle reproduit en permanence le bit mémorisé. 41 Par contre, quand l'entrée Enable vaut 1, la sortie du multiplexeur est reliée à l'entrée D. Ainsi, ce bit est alors renvoyé sur l'autre entrée : les deux entrées du multiplexeur valent le bit envoyé en entrée, ELECTRONIQUE NUMERIQUE 1 BTS MSI BERTRAND TUENO mémorisant le bit dans la bascule. On peut aussi construire une bascule D à partir d'une simple bascule RS à entrée Enable : il suffit d'ajouter un circuit qui déduise quoi mettre sur les entrées R et S suivant la valeur sur D. On peut alors remarquer que l'entrée R est toujours égale à l'inverse de D, alors que S est toujours strictement égale à D. On obtient alors le circuit suivant. On peut aussi faire la même chose, mais avec la bascule RS à NAND. Bascule D fabriquée avec une bascule RS. Bascule D à NAND. Bascule D à NOR. 42 ELECTRONIQUE NUMERIQUE 1 BTS MSI BERTRAND TUENO Fonctionnement d'une bascule D à NOR. Porte C Enfin, nous allons voir la dernière porte logique : la porte C. Celle-ci sera utilisée quand nous verrons les circuits et les bus asynchrones. Celle-ci est une bascule qui comprend deux entrées A et B. Quand les deux entrées sont identiques, la sortie de la bascule correspond à la valeur des entrées (cette valeur est mémorisée). Quand les deux entrées différent, la sortie correspond au bit mémorisé. Entrée A Entrée B Sortie 0 0 0 0 1 Pas de changement 1 0 Pas de changement 1 1 1 Cette bascule peut être réalisée d'un grand nombre de manière différentes. La plus simple, basée sur des portes logiques, est celle indiquée dans le schéma suivant. Mais il existe une myriade de manières de construire des portes C avec des transistors. 43 ELECTRONIQUE NUMERIQUE 1 BTS MSI BERTRAND TUENO Registres : des mémoires de plusieurs bits Registre de 4 Bits. On voit que celui-ci contient 4 entrées (à gauche), et 4 sorties (à droite). On peut aussi remarquer une entrée CLK, qui joue le rôle d'entrée d'autorisation. On vient de voir comment créer des bascules, des circuits capables de mémoriser un seul bit. Il se trouve que l'on peut assembler des bascules pour créer des circuits capables de mémoriser plusieurs bits : ces circuits sont appelés des registres. Registres simples Les registres les plus simples sont capables de mémoriser un nombre, codé sur une quantité fixe de bits. On peut à tout moment récupérer le nombre mémorisé dans le registre : on dit alors qu'on effectue une lecture. On peut aussi mettre à jour le nombre mémorisé dans le registre, le remplacer par un autre : on dit qu'on effectue une écriture. Ainsi, les registres possèdent : des sorties de lecture, sur lesquelles on peut récupérer/lire le nombre mémorisé ; des entrées d'écriture, sur lesquelles on envoie le nombre à mémoriser (celui qui remplacera le 44 contenu du registre) ; et une entrée Enable, qui a le même rôle que pour une bascule. ELECTRONIQUE NUMERIQUE 1 BTS MSI BERTRAND TUENO Si l'entrée Enable est à 0, le registre n'est pas mis à jour : on peut mettre n'importe quelle valeur sur les entrées, le registre n'en tiendra pas compte et ne remplacera pas son contenu par ce qu'il y a sur l'entrée. La mise à jour, l'écriture dans un registre n'a lieu que si l'entrée Enable est mise à 1. Pour résumer, l'entrée Enable sert donc à indiquer au registre si son contenu doit être mis à jour quand une écriture a lieu. Ainsi, un registre est composé de plusieurs bascules qui sont toutes mises à jour en même temps : pour cela, toutes les entrées Enable sont reliées au même signal, à la même entrée de commande. Registres à décalage Certains registres sont toutefois plus complexes. On peut notamment citer les registres à décalage, des registres dont le contenu est décalé d'un cran vers la gauche ou la droite sur commande. On peut les classer selon le caractère de l'entrée, qui peut être parallèle (entrée de plusieurs bits) ou série (entrée d'un seul bit). Avec les registres à entrée et sortie série, on peut mettre à jour un bit à la fois, de même qu'on ne peut en récupérer qu'un à la fois. Ces registres servent essentiellement à mettre en attente des bits tout en gardant leur ordre : un bit envoyé en entrée ressortira sur la sortie après plusieurs commandes de mise à jour sur l'entrée Enable. 45 Les registres à décalage à entrée série et sortie parallèle sont similaires aux précédents : on peut ELECTRONIQUE NUMERIQUE 1 BTS MSI BERTRAND TUENO ajouter un nouveau bit en commandant l'entrée Enable et les anciens bits sont alors décalés d'un cran. Par contre, on peut récupérer (lire) tous les bits en une seule fois. Ils permettent notamment de reconstituer un nombre qui est envoyé bit par bit sur un fil (un bus série). Enfin, il reste les registres à entrée parallèle et sortie série. Ces registres sont utiles quand on veut transmettre un nombre sur un fil : on peut ainsi envoyer les bits un par un. On initialise les bascules, avant de déconnecter les entrées : les bits se propageront alors de bascule en bascule vers la sortie à chaque front ou signal sur l'entrée Enable. Registres à décalage à rétroaction linéaire Les registres à décalage à rétroaction linéaire sont des registres à décalage un peu bidouillés. Avec eux, le bit qui rentre dans le nombre n'est pas fourni sur une entrée, mais est calculé en fonction du 46 contenu du registre par un circuit combinatoire. la fonction qui permet de calculer le bit en sortie est assez spéciale. Dans le cas le plus simple, on dit qu'elle est linéaire, ce qui veut dire que le bit de sortie ELECTRONIQUE NUMERIQUE 1 BTS MSI BERTRAND TUENO se calcule à partir en multipliant les bits d'entrée par 0 ou 1, et en additionnant le tout. En clair, ce bit de sortie se calcule par une formule du style : 0∗a3+1∗a2+1∗a1+0∗a0 (on ne garde que le bit de poids faible du résultat). Penchons-nous un peu sur cette addition qui ne garde que le bit de poids faible : je ne sais pas si vous avez remarqué, mais il s'agit ni plus ni moins que d'un calcul de parité paire. En effet, si on additionne N bits, le bit de poids faible vaut zéro pour un nombre pair, et 1 pour un nombre impair. Le circuit combinatoire chargé de calculer le bit de résultat est donc un circuit qui calcule la parité de la somme des bits choisis. Pour cela, il suffit d'effectuer une série de XOR entre tous les bits à additionner. Il existe une variante de ce genre de registre, qui modifie légèrement son fonctionnement. Il s'agit des registres à décalages à rétroaction affine. Avec ces registres, la fonction qui calcule le bit de résultat n'est pas linéaire, mais affine. En clair, ce bit de sortie se calcule par une formule du style : 0∗a3+1∗a2+1∗a1+0∗a0+1. Notez le + 1 à la fin de la formule : c'est la seule différence. Avec ce genre de registre, le bit de résultat est donc calculé en faisant le calcul d'un bit d'imparité de certains (ou de la totalité) des bits du registre. Un tel circuit est donc composé de portes NXOR, comparé à son comparse linéaire, composé à partir de portes XOR. Petite remarque : si je prends un registre à rétroaction linéaire et un registre à rétroaction affine avec les mêmes coefficients sur les mêmes bits, le résultat du premier sera égal à l'inverse de l'autre. Les registres à décalage à rétroaction précédents sont appelés des registres à rétroaction linéaire de Fibonacci. Il existe un deuxième type de registres à décalage à rétroaction : les registres à décalage à rétroaction de Gallois. Ceux-ci sont un peu l'inverse des registres à décalages à rétroaction de Fibonacci. Dans ces derniers, on prenait plusieurs bits du registre à décalage pour en déduire un seul bit. Avec les registres à décalage à rétroaction de Gallois, c'est l'inverse : on prend le bit qui sort du nombre lors d'un décalage ; et on en déduit plusieurs bits à partir d'un circuit combinatoire ; et on fait rentrer ces bits à divers endroits bien choisis de notre registre à décalage. Bien sûr, la fonction qui calcule des différents bits à partir du bit d'entrée conserve les mêmes propriétés que celle utilisée pour les registres à décalages à rétroaction linéaire : elle est affine ou linéaire, et se calcule avec uniquement des portes XOR pour les fonctions linéaires, ou NXOR pour les fonctions affines. Compteurs et décompteurs : des circuits qui comptent 47 ELECTRONIQUE NUMERIQUE 1 BTS MSI BERTRAND TUENO Illustration du fonctionnement d'un compteur modulaire binaire de 4 bits, avec un pas de compteur de 1 (le contenu est augmenté de 1 à chaque mise à jour). Les compteurs/décompteurs sont des circuits électroniques qui mémorisent un nombre qu'ils mettent à jour régulièrement. Cette mise à jour augmente ou diminue le compteur d'une quantité fixe, appelée le pas du compteur. La plupart des compteurs utilisent un pas constant, qui est fixé à la création du compteur, ce qui simplifie la conception du circuit combinatoire. D'autres permettent un pas variable, et ont donc une entrée supplémentaire sur laquelle on peut envoyer le pas du compteur. Suivant la valeur du pas, on fait la différence entre les compteurs d'un coté et les décompteurs de l'autre. Comme leur nom l'indique, les compteurs comptent alors que les décompteurs décomptent. Les compteurs augmentent le contenu du compteur à chaque mise à jour, alors que les décompteurs le diminuent. Dit autrement, le pas d'un compteur est positif, alors que le pas d'un décompteur est négatif. Les compteurs-décompteurs peuvent faire les deux, suivant ce qu'on leur demande. Suivant le compteur, la représentation du nombre mémorisé change : certains utilisent le binaire traditionnel, d'autres le BCD, d'autre le code Gray, etc. Mais tous les compteurs que nous allons voir seront des compteurs/décompteurs binaires, à savoir que les nombres qu'ils utilisent sont codés sur bits. Au passage, le nombre de bits du compteur est appelé la taille du compteur, par analogie avec les registres. Vu que la taille d'un compteur est limitée, il cesse de compter au-delà d'une valeur maximale. On peut penser que tous les compteurs comptent de 0 à , avec la taille du compteur. C'est le cas pour la majorité des compteurs, mais d'autres compteurs ne comptent pas jusquelà : leur limite est plus basse que . Par exemple, certains compteurs ne comptent que jusqu'à 10, 150, etc. Outre la valeur de la limite du compteur, il est aussi intéressant de se pencher sur ce qui se passe quand le compteur atteint cette limite. Certains restent bloqués sur cette valeur maximale tant qu'on ne les remet pas à zéro "manuellement" : ce sont des compteurs à saturation. D'autres recommencent à compter naturellement à partir de zéro : ce sont des compteurs modulaires. Le circuit d'un compteur : généralités Un compteur/décompteur peut être vu comme une sorte de registre (il peuvent stocker un nombre), mais qu'on aurait amélioré de manière à le rendre capable de compter/décompter. Tous les compteurs/décompteurs utilisent un registre pour mémoriser le nombre, ainsi que des circuits combinatoires pour calculer la prochaine valeur du compteur. Ce circuit combinatoire est le plus souvent, mais pas toujours, un circuit capable de réaliser des additions (compteur), des soustractions (décompteurs), voire les deux (compteur-décompteur). Plus rarement, il s'agit de circuits conçus sur mesure, dans le cas où le pas du compteur est fié une bonne fois pour toute. Comme tout registre, un compteur/décompteur peut être initialisé avec la valeur de notre choix. Pour cela, ils possèdent une entrée d'initialisation sur laquelle on peut placer le nombre initial, couplée à une entrée Reset qui indique si le compteur doit être réinitialisé ou non. Certains compteurs/décompteurs spécifiques n'ont pas d'entrée d'initialisation, mais seulement une entrée de reset, mais il s'agit là d'utilisations assez particulières où le compteur ne peut qu'être réinitialisé à une valeur par défaut. Pour les compteurs/décompteurs, il faut aussi rajouter48une entrée qui précise s'il faut compter ou décompter. ELECTRONIQUE NUMERIQUE 1 BTS MSI BERTRAND TUENO Dans le cas le plus fréquent, les compteurs parcourent toutes les valeurs possibles que peut prendre leur registre. Ils ne se remettent à zéro qu'une fois qu'ils ont dépassé la valeur maximale. De tels compteurs compteurs sont appelés des compteurs modulo. Mais, comme dit plus haut, certains compteurs ont une valeur maximale qui est plus faible que la valeur maximale du registre. Par exemple, on peut imaginer un compteur qui compte de 0 à 9 : celui-ci est construit à partir d'un registre de 4 bits qui peut donc compter de 0 à 15 ! Ces compteurs sont construits à partir d'un compteur modulo, auquel on rajoute un circuit combinatoire. Ce dernier détecte le dépassement de la valeur maximale et remet à zéro le registre quand c'est nécessaire, via l'entrée de Remise à zéro (entrée Reset). L'incrémenteur/décrémenteur Certains compteurs, aussi appelés incrémenteurs comptent de un en un. Les décompteurs analogues sont appelés des décrementeurs. Nous allons voir comment créer ceux-ci dans ce qui va suivre. Il faut savoir qu'il existe deux méthodes pour créer des incrémenteurs/décrémenteurs. La première donne ce qu'on appelle des incrémenteurs asynchrones, et l'autre des incrémenteurs synchrones. Nous allons commencer par voir comment fabriquer un incrémenteur synchrone, avant de passer aux incrémenteurs asynchrones. 49 L'incrémenteur/décrémenteur asynchrone ELECTRONIQUE NUMERIQUE 1 BTS MSI BERTRAND TUENO Pour fabriquer un incrémenteur synchrone, la première méthode, il suffit de regarder la séquence des premiers entiers, puis de prendre des paires de colonnes adjacentes : 000 ; 001 ; 010 ; 011 ; 100 ; 101 ; 110 ; 111. On remarque que le bit sur une colonne change quand le bit de la colonne précédente passe de 1 à 0. Maintenant que l'on sait cela, on peut facilement créer un compteur avec quelques bascules. Pour la colonne la plus à droite (celle des bits de poids faible), on remarque que celle-ci inverse son contenu à chaque cycle d'horloge. Pour cela, on utilise le fait que certaines bascules contiennent une sortie qui fournit l'inverse du bit stocké dans la bascule : il suffit de boucler cette sortie sur l'entrée de la bascule. Pour les autres colonnes, il faut que l'inversion du bit ne se produise que lorsque le bit de la bascule précédente passe de 1 à 0. Le mieux est d'autoriser la mise à jour une fois la transition de la colonne précédente effectuée, c'est à dire quand le bit de la colonne précédente vaut 0. Ainsi, la méthode vue au-dessus reste valable à un changement près : l'entrée Enable de la bascule n'est pas reliée au signal d'horloge, mais à l'inverse de la sortie de la bascule de la colonne précédente. Le circuit précédent a cependant un problème : il ne peut pas être réinitialisé. Pour que cela soit possible, il faut ajouter quelque chose au compteur. Si les bascules du compteur ont une entrée de réinitialisation Reset, qui les force à se remettre à zéro, alors on peut l'utiliser. Il suffit d'ajouter une entrée Reset au compteur, et de la connecter aux entrées Reset des bascules. Ce faisant, le compteur peut être remis à zéro sur simple demande. Mais cela ne permet pas de réinitialiser le compteur à une valeur non-nulle, ce qui demande des modifications supplémentaires. Pour cela, il faut ajouter une entrée au compteur, sur laquelle on présente la valeur d’initialisation. Chaque bit de cette entrée est reliée à un multiplexeur, qui choisir quel bit mémoriser dans la bascule : celui fournit par la mise à jour du compteur, ou celui présenté sur l'entrée d'initialisation. On obtient le circuit décrit dans le schéma qui suit. Quand l'entrée Reset est activée, les multiplexeurs connectent les bascules aux bits sur l'entrée d'initialisation. Dans le cas contraire, le compteur fonctionne normalement, les multiplexeur s connectant l'entrée de chaque bascule à sa sortie.50 ELECTRONIQUE NUMERIQUE 1 BTS MSI BERTRAND TUENO Un décrémenteur est strictement identique à un incrémenteur auquel on a inversé tous les bits. On peut donc réutiliser le compteur du dessus, à part que les sorties du compteurs sont reliées aux sorties Q des bascules. L'incrémenteur/décrémenteur synchrone Passons maintenant à l'incrémenteur synchrone. Pour le fabriquer, on repart de la séquence des premiers entiers. Dans ce qui va suivre, nous allons créer un circuit qui compte de 1 en 1, sans utiliser d'additionneur. Pour comprendre comment créer un tel compteur, nous allons reprendre la séquence d'un compteur, déjà vue dans le premier extrait : 000 001 010 011 100 101 110 111 On peut remarquer quelque chose dans ce tableau : peu importe la colonne, un bit s'inversera au prochain cycle d’horloge quand tous les bits des colonnes précédentes valent 1. Et c'est vrai quelque soit la taille du compteur ou sa valeur ! Ainsi, prenons le cas où le compteur vaut 110111 : les deux premiers 1 sont respectivement précédés par la séquence 10111 et 0111 : vu qu'il y a un zéro dans ces séquences, ils ne s'inverseront pas au cycle suivant ; le bit qui vaut zéro est précédé de la séquence de bit 111 : il s'inversera au cycle suivant ; le troisième 1 en partant de la gauche est précédé de la séquence de bits 11 : il s'inversera aussi ; même raisonnement pour le quatrième 1 en partant de la gauche ; 1 le plus à droite correspond au bit de poids faible, qui s'inverse tous les cycles. Pour résumer, un bit s'inverse (à la prochaine mise à jour) quand tous les bits des colonnes précédentes valent 1. Pour implanter cela en circuit, on a besoin de deux circuits par bascules : un qui détermine si les bits des colonnes précédentes sont à 1, et un autre qui inverse le bit de la bascule. Le circuit qui détermine si tous les bits précédents sont à 1 est 51 un simple ET entre les bits en question. L'autre circuit prend en entrée le contenu de la bascule et un bit qui indique s'il faut inverser ou pas. En écrivant sa table de vérité, on s’aperçoit qu'il s'agit d'un simple XOR. ELECTRONIQUE NUMERIQUE 1 BTS MSI BERTRAND TUENO On peut appliquer la même logique pour un décrémenteur. Avec ce circuit, un bit s'inverse lorsque tous les bits précédents sont à zéro. En utilisant le même raisonnement que celui utilisé pour concevoir un incrémenteur, on obtient un circuit presque identique, si ce n'est que les sorties des bascules doivent être inversées avant d'être envoyée à la porte XOR qui suit. Les compteurs en anneau et de Johnson En plus des compteurs précédents, on trouve des compteurs plus simples à fabriquer, qui ont donc tendance à être plus rapides que leurs concurrents. Les compteurs en anneau sont des registres à décalage SIPO dont on a bouclé la sortie sur l'entrée. Avec n bits, ce compteur peut compter avec n nombres différents, qui ont tous un seul bit à 1. Petit détail : on peut créer un compteur "normal" en reliant un compteur en anneau avec un encodeur : la sortie de l'encodeur nous donne la valeur normale du compteur. Évolution du contenu d'un compteur en anneau. La séquence de ce compteur 4 bits est celle-ci : 1000 ; 0100 ; 0010 ; 0001. 52 ELECTRONIQUE NUMERIQUE 1 BTS MSI BERTRAND TUENO Dans d'autres cas, le bit de sortie est inversé avant d'être bouclé sur l'entrée : ce sont des compteurs de Johnson. Ce compteur a une limite supérieure double de celle d'un compteur en anneau. La séquence d'un tel compteur est : 1000 ; 1100 ; 1110 ; 1111 ; 0111 ; 0011 ; 0001 ; 0000. Les mémoires adressables 53 On a vu qu'il était possible d'assembler plusieurs bascules pour obtenir un registre. Et bien sachez qu'il ELECTRONIQUE NUMERIQUE 1 BTS MSI BERTRAND TUENO est possible de faire la même chose avec des registres : on peut en assembler plusieurs pour obtenir un dispositif de mémorisation plus "gros". Dans certains cas, on peut ainsi assembler plusieurs registres pour obtenir un registre plus gros : par exemple, on peut fabriquer un registre de 32 bits à partir de 2 registres de 16 bits, ou de 4 registres de 8 bits. Mais il est aussi possible d'organiser le tout d'une manière plus intelligente, de manière à ce qu'il soit possible de sélectionner le registre qu'on veut consulter ou modifier. On obtient alors ce qu'on appelle une mémoire adressable. Adressage mémoire Pour préciser le registre à sélectionner, chacun d'entre eux se voit attribuer un nombre : l'adresse. On peut comparer une adresse à un numéro de téléphone (ou à une adresse d'appartement) : chacun de vos correspondants a un numéro de téléphone et vous savez que pour appeler telle personne, vous devez composer tel numéro. Les adresses mémoires en sont l'équivalent pour les registres d'une mémoire adressable. Il existe des mémoires qui ne fonctionnent pas sur ce principe, mais passons : ce sera pour la suite. La mémoire contient alors une entrée de plusieurs bits, sur laquelle on peut envoyer l'adresse, une entrée R/W sur laquelle un bit précise si on veut lire ou écrire, une sortie sur laquelle on peut récupérer le registre sélectionné (on dit qu'on lit le registre) et une entrée sur laquelle on peut envoyer un nombre pour modifier le contenu d'un registre (on dit qu'on écrit le registre). Une telle mémoire peut se fabriquer assez simplement : il suffit d'un ou de plusieurs multiplexeurs et de registres. Quand on présente l'adresse sur l'entrée de sélection du multiplexeur, celui-ci va connecter le registre demandé à la sortie (ou à l'entrée). 54 ELECTRONIQUE NUMERIQUE 1 BTS MSI BERTRAND TUENO Mémoire mortes et mémoires vives Les mémoires vues plus haut, dont les registres peuvent être modifiés, sont communément appelées des mémoires vives. On entend parfois parler de mémoires RAM pour de telles mémoires, bien que ce soit un abus de langage (mais laissons cela à plus tard). Cependant, il faut signaler que certaines mémoires de ce type ont des registres qui ne peuvent être modifiés. Ceux-ci ne sont pas fabriqués avec des bascules, mais le sont d'une autre manière. Par exemple, on peut directement connecter les entrées des multiplexeurs directement sur la masse (le 0 Volts) ou la tension d'alimentation, selon que le bit en question 0 ou 1. Dans cette situation, on obtient alors une mémoire ROM, aussi appelée mémoire morte. 55 ELECTRONIQUE NUMERIQUE 1 BTS MSI BERTRAND TUENO 56 Table des matières 13. Addition en DCB .......................................................................................................................... 2 14. Portes logiques et algèbre de Boole ............................................................................................... 2 Simplification des fonctions logiques ........................................................................................ 16 Diagramme de Karnaugh ........................................................................................................... 17 États.......................................................................................................................................... 20 L'additionneur ........................................................................................................................... 23 L'additionneur à n bits ............................................................................................................... 24 Demi-soustracteur ..................................................................................................................... 25 Le comparateur. ........................................................................................................................ 26 Les Codeurs .............................................................................................................................. 30 Les Décodeurs .......................................................................................................................... 31 Principe d’un décodeur 1 parmi 4 .............................................................................................. 32 Multiplexeur ............................................................................................................................. 33 Démultiplexeur ............................................................................................................................. 35 57