Architecture des ordinateurs TD1 - Portes logiques et premiers circuits 1 Rappel : un peu de logique Exercice 1.1 Remplir la table de vérité suivante : a b a + b ab a + b ab a b 0 0 0 1 1 0 1 1 Exercice 1.2 : Règles de calcul 1. Vérifier les lois de distributivité et les loi de Morgan en donnant leurs tables de vérité. 2. Vérifier les relations suivantes par le calcul : a + ab = a (a + b)(a + b) = a a + ab = a + b a + b b + c = a + b + c 3. Simplifier la formule suivante afin de l écrire avec le minimum de OU et ET : abcd + abcd + abcd + abcd + abcd 4. Vérifier que la porte NON-OU est complète. 5. Simplifier l expression suivante au maximum : ((ab ab)c) (a(cd cd)) 2 Analyse de circuits logiques Exercice 2.1 : Un circuit simple 1. Quelle est l expression booléenne de la sortie S pour le circuit en Figure 1? 2. Écrire la table de vérité de ce circuit. En déduire une expression équivalente pour S. 3. Donner l expression simplifiée et le circuit correspondant en n utilisant que les opérateurs NON, ET, OU (par calcul algébrique et par méthode de Karnaugh). 1
a b c S Figure 1 Exercice 2.2 : Circuit mystère a b c S 1. Donner l expression booléenne de S en n utilisant que les opérateurs NON, ET et OU. 2. Calculer la table de vérité de ce circuit. 3. Proposer une version simplifiée du circuit avec des portes NON, ET et OU. 4. On autorise maintenant les portes XOR, NON-ET et NON-OU. Réaliser un circuit équivalent avec au maximum 6 portes. 5. Que fait ce circuit? 2
3 Réalisation de circuit Exercice 3.1 : À partir des tables de vérité a b c d S 3 a b c d S 4 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 0 1 0 1 a b c S 1 a b c S 2 0 0 1 1 1 0 0 1 1 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 1 1 0 1 0 1 0 0 1 0 1 1 0 1 0 1 0 1 0 0 0 1 1 0 1 0 1 1 0 0 0 1 1 0 0 1 1 1 0 1 1 1 1 0 1 1 1 1 1 0 0 0 1 0 0 1 1 0 0 0 0 1 0 0 0 1 1 0 1 1 1 0 1 0 1 0 0 1 0 1 0 0 1 0 1 1 0 0 1 1 0 1 1 0 1 0 0 1 0 1 0 1 1 1 1 1 1 1 1 0 1 0 1 1 1 1 0 1 1 1 1 1 0 0 0 1 1 0 0 1 1 1 0 1 0 1 1 0 1 1 1 1 1 0 0 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1. Réaliser les circuits correspondant aux fonctions S 1 et S 2. 2. Utiliser la méthode des tableaux de Karnaugh pour concevoir les circuits correspondant aux fonctions S 3 et S 4. Exercice 3.2 : Analyseur de code On cherche à analyser des codes binaires sur 4 bits. Un code correct est un code qui contient au plus deux 1 consécutifs. Le but de l exercice est de concevoir un circuit qui détecte tous les codes corrects (ex : 0100). 1. Écrire la table de vérité de cet analyseur. 2. En déduire le circuit correspondant. 3. Simplifier le circuit (par méthode algébrique et par méthode de Karnaugh). 4. On ajoute comme contrainte que le code ne doit pas contenir de 0 consécutifs (ex : 1011). Reprendre les 3 questions précédentes. 3
Architecture des ordinateurs TD2 - Circuits combinatoires et arithmétiques 1 Circuits combinatoires Exercice 1.1 : Multiplexeur et démultiplexeur 1. Donner les circuits logiques réalisant un multiplexeur et un démultiplexeur 4 2. 2. Montrer comment utiliser le démultiplexeur pour concevoir un décodeur 2 bits. Exercice 1.2 : Parité d un mot Le but de cet exercice est de concevoir un circuit permettant de détecter la parité d un mot de 4 bits, codé sur les entrées A, B, C et D. La sortie vaudra 0 si le nombre de 1 en entrée est pair (ex : 0011) et 1 sinon (ex : 1000). 1. Écrire la table de vérité correspondante. 2. Utiliser un multiplexeur 16 4 pour réaliser cette fonction. 3. Utiliser un démultiplexeur 4 16 pour réaliser cette fonction. Exercice 1.3 : Comparateur Un comparateur n bits est un circuit servant à comparer 2 mots A 0 A 1... A n 1 et B 0 B 1... B n 1 de n bits chacun. La sortie vaut 1 si les mots sont identiques et 0 sinon. 1. Réaliser le circuit logique correspondant à un comparateur 1 bit. 2. En déduire le circuit du comparateur 4 bits. Exercice 1.4 : Encodeur Un encodeur n bits est un circuit à 2 n entrées (mutuellement exclusives) et n sorties qui permet d encoder le numéro de la ligne d entrée activée en binaire. Par exemple, si la 6ème ligne d un encodeur 3 bits est activée, alors les sorties seront S 2 = 1, S 1 = 0 et S 0 = 1. 1. Quelle est la particularité de ce circuit? 2. Écrire la table de vérité pour l encodeur 2 bits. 3. Réaliser le circuit correspondant. 4. Donner un exemple d utilisation d un encodeur. 2 Circuits arithmétiques Exercice 2.1 : Additionneur 1. Rappeler la table de vérité de l additionneur complet 1 bit, ainsi que le circuit correspondant. 2. Concevoir (à partir d additionneurs 1 bit) un additionneur 4 bits avec retenues d entrée et de sortie. 1
Exercice 2.2 : Incrémenteur Une grande partie des additions effectuées par un ordinateur consiste simplement à ajouter 1 à une autre valeur x. Dans ce cas, on dit qu on incrémente la valeur x. 1. Réaliser un incrémenteur 1 bit avec retenue de sortie. 2. En déduire le circuit logique d un incrémenteur 4 bits avec retenue. 3. Comment faire un décrémenteur 4 bits? Exercice 2.3 : Décaleur Les multiplications et divisions binaires par 2 sont de simples décalages. Pour multiplier une valeur x par 2, il suffit de décaler x d un bit vers la gauche (i.e. ajouter un 0 à droite) et vice-etversa pour la division. Le but de cet exercice est de concevoir un circuit spécialisé pour ces deux opérations. 1. Réaliser un circuit qui prend en entrée le bit à décaler A 1 et un paramètre c pour indiquer le sens du décalage (0 = gauche, 1 = droite) et renvoie les bits décalés sur les sorties S 0 et S 2 : soit S 0 = A 1 et S 2 = 0 si c = 0, soit S 0 = 0 et S 2 = A 1 si c = 1. 2. En déduire le circuit d un décaleur 4 bits (avec le paramètre c pour le sens du décalage, les entrées A 0, A 1, A 2 et A 3 et les sorties S 0, S 1, S 2 et S 3 ). 3. Que fait le circuit suivant? A 0 A 1 A 2 A 3 c MUX MUX MUX MUX S 3 S 2 S 1 S 3 2
Architecture des ordinateurs TD3 - Circuits séquentiels Exercice 1 : Chronogrammes Compléter le chronogramme. On suppose que la sortie Q est initialement à 0. Q (flip-flop) Q (latch) D Q (flip-flop) Q (latch) J K Q (flip-flop) Q (latch) S R H t Exercice 2 : Bascules Analyser le comportement de ces 3 circuits. B Q 0 T Q H Q 1 Q (1) (2) E H Q Q (3) 1
Exercice 3 : Additionneur série Concevoir un circuit pour additionner 2 suites de bits transmises sur les entrées a et b. La somme sera envoyée sous la forme d une suite de bits sur la sortie S. Exercice 4 : Détecteur de signal Un détecteur de signal est un circuit séquentiel (synchrone ou asynchrone) qui lit une suite de n bits a = a 0... a n 1 et qui retourne 1 en sortie si a possède au moins un bit valant 1, et 0 si tous les bits de a sont à 0. Dans le cas asynchrone, tous les bits de a sont lus un par un et la sortie est mise à jour immédiatement. Dans le cas synchrone, un bit est lu à chaque front montant de l horloge et la sortie est mise à jour au même moment. 1. Expliquer pourquoi il est impossible de réaliser un détecteur de signal asynchrone par un circuit combinatoire (non séquentiel). 2. Donner la table d états du détecteur de signal. En déduire une expression booléenne qui exprime la valeur de la sortie S en fonction de l entrée a et de s, la valeur de la sortie S à l étape précédente. 3. Déduire de l expression booléenne de S un circuit séquentiel asynchrone réalisant un détecteur de signal. Exercice 5 : Comparateur série Un comparateur série est un circuit séquentiel synchrone qui permet de comparer deux suites de n bits a = a 0... a n 1 et b = b 0... b n 1. Les séquences a et b sont traitées de gauche à droite et à chaque front montant d horloge, deux bits correspondants sont comparés et la sortie est mise à jour. La sortie est finalement à 1 si les deux suites sont égales et à 0 sinon. 1. Le circuit admet deux entrées a et b (en plus de l entrée correspondant à l horloge), et une sortie R. Donner la table d états de ce circuit. En déduire une expression booléenne exprimant R en fonction de a, b et r (valeur de R à l étape précédente). 2. En sachant qu il est possible d utiliser une bascule D pour se souvenir de la valeur précédente de la sortie R, construire un circuit séquentiel synchrone réalisant le comparateur série. Exercice 6 : Messages en Morse Le but de cet exercice est de concevoir un circuit détecteur d erreurs dans la transmission de messages en Morse. Un message Morse est codé en binaire de la façon suivante : les 0 représentent les blancs un 1 correspond à un point et deux 1 à un trait le message ne doit pas commencer ou finir par un blanc il ne peut y avoir deux blancs consécutifs Le message est transmis sur une seule ligne d entrée que l on note M. Cette ligne est synchronisée avec l horloge : un nouveau bit du message est transmis à chaque front descendant. La sortie S vaut 1 si le message lu est bien du Morse et 0 sinon. 1. Parmi ces suites de bits, lesquelles représentent des messages en Morse : (a) 101 (b) 1001 (c) 1010110 2
(d) 110111011 2. Si le bit lu sur M est 0, dans quel(s) cas le message qui vient d être lu est bien du Morse? 3. Même question si le bit lu sur l entrée M est 1. 4. En déduire combien d états doit mémoriser le circuit. 5. Écrire la table de vérité des états du circuit, en fonction des états précédents et du bit lu sur l entrée M. 6. Concevoir un ciruit F qui calcule les nouveaux états en fonction des précédents et de M. 7. Utiliser le circuit précédent pour concevoir le circuit séquentiel analyseur de Morse (avec mémoire et remise à zéro). 3
Architecture des ordinateurs TD4 - Autour de la pile Exercice : Jeu d instructions (très) simple Instruction Description MPUSH mot Place le mot mot au sommet de la pile VPUSH var Place la variable locale désignée par var au sommet de la pile POP var Supprime le sommet de la pile et le place dans la variable désignée par var ADD POP les 2 mots au sommet de la pile et PUSH leur somme dans la pile INC Ajoute 1 au sommet de la pile SUB POP les 2 mots au sommet de la pile et PUSH leur différence dans la pile MUL POP les 2 mots au sommet de la pile et PUSH leur produit dans la pile NOT Remplace le sommet de la pile par sa négation AND POP les 2 mots au sommet de la pile et PUSH leur ET logique dans la pile JUMP label Saute vers l étiquette label JE0 label Saute vers l étiquette label si le mot au sommet de la pile vaut 0 NOP Ne fait rien Un mot correspond à une suite de bits sur une taille donnée (dépend du micro-processeur). Plus simplement, cela permet d indiquer directement une valeur (une constante) sans passer par une variable. 1. Quelles suites d instructions permettent de réaliser les opérations suivantes? Représenter l évolution de la pile pour chaque opération (a) i = i + 1 ; (b) i = i + 20 ; (c) i = j + k ; (d) i = k - (j*5 + 8*2) ; 2. Déterminer les opérations réalisées par chaque ensemble d instructions suivants : 1
VPUSH i JE0 L1 MPUSH 20 POP k L1: MPUSH 10 POP j (a) VPUSH i JE0 L1 MPUSH 20 POP j JUMP L2 L1: MPUSH 10 POP j L2: NOP (b) VPUSH i JE0 L1 VPUSH j MUL POP k JUMP L2 L1: POP k VPUSH k POP j L2: NOP (c) 4. Traduire les bouts de code suivants en instructions : si (k!= 0) alors i = j fin si (a) si (k == 30) alors i = j sinon i = k fin si (b) si (k == 0 ET j == 0) alors i = j fin si i = i + 1 (c) 5. Que fait le code suivant? MPUSH 2 POP i MPUSH 10 POP j MPUSH 1 POP k L1: VPUSH j JE0 L2 VPUSH i VPUSH k MUL POP k VPUSH j MPUSH 1 SUB POP j JUMP L1 L2: NOP 6. Réaliser l opération i = i + 1000 sans utiliser ADD 2
Architecture des ordinateurs Exercices sur l arithmétique binaire 1 Numérations et changement de base Écriture en base b La valeur décimale A 10 d un nombre A b = a n... a 2 a 1 a 0 écrit en base b est donnée par : A 10 = n a i b i i=0 = a n b n + a n 1 b n 1 +... + a 2 b 2 + a 1 b 1 + a 0 b 0 = a n b n + a n1 b n 1 +... + a 2 b 2 + a 1 b + a 0 = a 0 + b (a 1 + b (a 2 + b (... a n 1 + b (a n )...))) Les a i sont les chiffres de l écriture en base b, leur valeur est comprise entre 0 et b 1. Bases spéciales En informatique, on utilise généralement les 3 bases suivantes : la base 2, ou binaire : seuls les chiffres 0 et 1 la base 10, ou décimale : attention, les nombres décimaux sont fréquemment écrits en omettant la base (rien ne les distingue de nombres écrits dans une autre base). la base 16, ou hexadécimale : les chiffres sont 0, 1,..., 9, A, B, C, D, E et F ; les nombres hexadécimaux peuvent être notés de différentes manières : ABC 16 = 0xABC Exemples en base 10 : 1747 10 = 1 10 3 + 7 10 2 + 4 1 + 7 10 0 = 1000 + 700 + 40 + 7 = 1747 10 en base 2 : 100010001 2 = 2 8 + 2 4 + 2 1 = 256 + 16 + 1 = 273 10 en base 8 : 1747 8 = 1 8 3 + 7 8 2 + 4 8 1 + 7 8 0 = 512 + 448 + 32 + 7 = 999 10 en base 16 : 3E7 16 = 3 16 2 + E 16 1 + 7 16 0 = 3 256 + 14 16 + 7 = 999 10 Exercice 1.1 Écrire une table de conversion binaire/décimal/hexadécimal pour les 16 premiers nombres et la liste des puissances de 2 jusqu à 2 12. Exercice 1.2 : Conversions 1. Comment convertir un nombre binaire en base 10? 2. Et dans l autre sens (décimal vers binaire)? 3. Mêmes questions entre les nombres décimaux et hexadécimaux. 4. Remplir le tableau suivant en effectuant les conversions nécessaires : 1
Binaire 10 1101010 Décimal 16 255 Hexadécimal 31 100 7B9A Exercice 1.3 : Nombres à virgule flottante La valeur décimale d un nombre binaire 0, d 1 d 2 d 3... d n est donnée par : d1 2 + d2 4 + d3 8 +... + dn 2. n Pour convertir un nombre décimal à virgule en binaire, on distingue la partie entière du nombre (les chiffres à gauche de la virgule) et sa partie fractionnaire (les chiffres après la virgule). Ensuite, on procède en 2 étapes : 1) On commence par convertir la partie entière comme d habitude, 2) Puis on traite la partie fractionnaire avec l algorithme suivant : Tant que la partie fractionnaire n est pas nulle, faire : 1) la multiplier par 2 2) garder la partie entière obtenue 3) recommencer avec la nouvelle partie fractionnaire Exemple pour 0, 125 : 0, 125 2 = 0, 250 on garde le 0 et on continue avec 0, 250 0, 25 2 = 0, 50 on garde le 0 et on continue avec 0, 50 0, 50 2 = 1 on garde le 1 et on s arrête car la partie fractionnaire est 0 Résultat : 0, 125 = 0, 001 2 1. Convertir 42, 34375 10 en binaire 2. Expliquer pourquoi ça marche. 3. Convertir 68, 7 10 en binaire. Que remarque-t-on? 4. Comment faire la conversion dans l autre sens? 5. Convertir 10, 0101 2 en décimal. 2 Arithmétique binaire Exercice 2.1 Réaliser les opérations arithmétiques suivantes (convertir en base 10 pour vérifier) : 1000 + 0010 1101000 + 10110 100100 + 10110111 Que se passe-t-il si on ne dispose que de 7 bits? 101101 10100 10100 1111 1100000001 10110111 1100101010 / 1001 101010 / 101 2
Exercice 2.2 1. Donner une méthode rapide pour multiplier un nombre binaire par 2. 2. Et pour multiplier par 2 k? 3. Et pour diviser? 3 Codage des entiers Exercice 3.1 On s intéresse à des entiers codés sur 4 bits. Que se passe-t-il lorsqu on effectue les opérations arithmétiques suivantes? Exercice 3.2 : Entiers relatifs 1011 + 1000, 0011 0110, 0101 0110 Il existe différentes conventions pour représenter les entiers relatifs en binaire (sur n bits) : les valeurs signées : le bit de poids fort représente le signe (0 pour les nombres positifs et 1 pour les nombre négatifs) et les n 1 bits restants codent la valeur absolue du nombre. le complément à 2 : les positifs sont codés sur n 1 bits. Leurs opposés sont obtenus par complément à 2. 1. Comment distingue-t-on les représentations binaires des entiers naturels et relatifs? 2. Donner l intervalle des nombres représentables sur 8 bits pour chacune des conventions. 3. Quelles sont les valeurs décimales des nombres suivants? Signée sur 8 bits Complément à 2 sur 8 bits 0000 0000 1000 0000 1011 0001 0001 1110 4. Donner les représentations binaires de +77, 77, +15 et 15 sur 8 bits, suivant les deux conventions. Exercice 3.3 : Addition d entiers relatifs Lorsqu on additionne 2 entiers naturels sur n bits, la valeur de leur somme peut nécessiter n+1 bits. Cette notion de retenue n est plus pertinente pour les entiers relatifs dont la somme peut sortir de l intervalle des valeurs représentables sans pour autant faire apparaître de retenue. Par exemple, sur 4 bits, 5 10 + 6 10 se traduit par l addition binaire : 0101 + 0110 ; si on effectue la somme, on obtient 1011 = 3 11 10 (en signé) : il y a dépassement de capacité (overflow). Et on voit bien qu il ne s agit pas d une retenue, puisque l addtion tient sur 4 bits! 1. Peut-on avoir un overflow en additionnant 2 nombres du même signe? de signes différents? 2. Comment faire pour additionner des nombres signés? Pour répondre à cette question, tester les additions suivantes sur 4 bits : 6 + ( 5), 5 + ( 6), ( 5) + ( 6) et ( 3) + ( 4). 3. Et en complément à 2 (tester les mêmes additions)? 4. Comment peut-on détecter un overflow? 3