Vous êtes sur la page 1sur 13

L1 MIASHS - UFR Mathématiques et Informatique 2013 - 2014

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
L1 MIASHS - UFR Mathématiques et Informatique 2013 - 2014

a b c

Figure 1

Exercice 2.2 : Circuit mystère

a b c

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
L1 MIASHS - UFR Mathématiques et Informatique 2013 - 2014

3 Réalisation de circuit

Exercice 3.1 : À partir des tables de vérité

a b c d S3 a b c d S4
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 S1 a b c S2 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 S1 et S2 .


2. Utiliser la méthode des tableaux de Karnaugh pour concevoir les circuits correspondant aux
fonctions S3 et S4 .

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
L1 MIASHS - UFR Mathématiques et Informatique 2013 - 2014

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 A0 A1 . . . An−1 et B0 B1 . . . Bn−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 à 2n 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 S2 = 1, S1 = 0 et S0 = 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
L1 MIASHS - UFR Mathématiques et Informatique 2013 - 2014

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-et-
versa 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 A1 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 S0 et
S2 : soit S0 = A1 et S2 = 0 si c = 0, soit S0 = 0 et S2 = A1 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 A0 , A1 , A2 et A3 et les sorties S0 , S1 , S2 et S3 ).
3. Que fait le circuit suivant ?

A0

A1

A2

A3

MUX MUX MUX MUX

S3 S2 S1 S3

2
L1 MIASHS - UFR Mathématiques et Informatique 2013 - 2014

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 T
Q0
Q
H
Q
Q1

(1)
(2)

E
Q
H
Q

(3)

1
L1 MIASHS - UFR Mathématiques et Informatique 2013 - 2014

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 = a0 . . . an−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 = a0 . . . an−1 et b = b0 . . . bn−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 synchro-
nisé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
L1 MIASHS - UFR Mathématiques et Informatique 2013 - 2014

(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
L1 MIASHS - UFR Mathématiques et Informatique 2013 - 2014

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
L1 MIASHS - UFR Mathématiques et Informatique 2013 - 2014

VPUSH i
VPUSH i JE0 L1
VPUSH i JE0 L1 VPUSH j
JE0 L1 MPUSH 20 MUL
MPUSH 20 POP j POP k
POP k JUMP L2 JUMP L2
L1: MPUSH 10 L1: MPUSH 10 L1: POP k
POP j POP j VPUSH k
L2: NOP POP j
L2: NOP
(a)
(b)
(c)

4. Traduire les bouts de code suivants en instructions :

si (k == 30) alors
si (k == 0 ET j == 0) alors
si (k != 0) alors i = j
i = j
i = j sinon
fin si
fin si i = k
i = i + 1
fin si
(a)
(c)
(b)

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
L1 MIASHS - UFR Mathématiques et Informatique 2013 - 2014

Architecture des ordinateurs


Exercices sur l’arithmétique binaire

1 Numérations et changement de base

Écriture en base b

La valeur décimale A10 d’un nombre Ab = an . . . a2 a1 a0 écrit en base b est donnée par :
n
X
A10 = ai × bi
i=0

= an × bn + an−1 × bn−1 + . . . + a2 × b2 + a1 × b1 + a0 × b0

= an bn + an1 bn−1 + . . . + a2 b2 + a1 b + a0

= a0 + b × (a1 + b × (a2 + b × (. . . an−1 + b × (an ) . . .)))

Les ai 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 omet-
tant 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 : ABC16 = 0xABC

Exemples

– en base 10 : 174710 = 1 × 103 + 7 × 102 + 41 + 7 × 100 = 1000 + 700 + 40 + 7 = 174710


– en base 2 : 1000100012 = 28 + 24 + 21 = 256 + 16 + 1 = 27310
– en base 8 : 17478 = 1 × 83 + 7 × 82 + 4 × 81 + 7 × 80 = 512 + 448 + 32 + 7 = 99910
– en base 16 : 3E716 = 3 × 162 + E × 161 + 7 × 160 = 3 × 256 + 14 × 16 + 7 = 99910

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’à 212 .

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
L1 MIASHS - UFR Mathématiques et Informatique 2013 - 2014

Binaire 10 1101010
Décimal 16 255
Hexadécimal 31 100 7B9A

Exercice 1.3 : Nombres à virgule flottante

dn
La valeur décimale d’un nombre binaire 0, d1 d2 d3 . . . dn est donnée par : d1 d2 d3
2 + 4 + 8 + . . . + 2n .
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, 0012

1. Convertir 42, 3437510 en binaire


2. Expliquer pourquoi ça marche.
3. Convertir 68, 710 en binaire. Que remarque-t-on ?
4. Comment faire la conversion dans l’autre sens ?
5. Convertir 10, 01012 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
L1 MIASHS - UFR Mathématiques et Informatique 2013 - 2014

Exercice 2.2

1. Donner une méthode rapide pour multiplier un nombre binaire par 2.


2. Et pour multiplier par 2k ?
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 ?
1011 + 1000, 0011 × 0110, 0101 − 0110

Exercice 3.2 : Entiers relatifs

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 ?

0000 0000 1000 0000 1011 0001 0001 1110

Signée sur 8 bits


Complément à 2 sur 8 bits

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, 510 + 610 se traduit par l’addition binaire : 0101 + 0110 ; si on effectue la
somme, on obtient 1011 = −3 6= 1110 (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 ?

Vous aimerez peut-être aussi