Cours Complet sur l'Architecture des Ordinateurs
Cours Complet sur l'Architecture des Ordinateurs
Cameroun
Université de Republic of University of
Yaoundé I Cameroun Yaounde I
par
Ecole Nationale
Supérieure Polytechnique
SOMMAIRE
(4)
Mémoire
(5) (5)
ALU (2)
CPU
(3)
1. Mémoire centrale
C’est un ensemble d’emplacements ou cases qui ont la même taille. Une case
est généralement appelée un mot. La mémoire d’un ordinateur est réalisée à l’aide
d’éléments électronique appelés bascules. Une bascule peut se mettre dans deux
états : elle peut être sous tension ou hors tension. On représente l’état sous tension
par 1 et hors tension par 0. La représentation 1 et 0 est appelée représentation binaire
et les chiffres 1,0 sont encore appelés bit.
Lecture Ecriture
Lecture Adresse
Ecriture 0
.
.
.
0 1 1 0 174
0110 10111001
Registre de Registre
données d’adresse
On perd le contenu de ces types de mémoire lorsque la machine est mise hors
tension. Les données à conserver doivent toujours résider dans la mémoire secondaire ou
de masse (disque dur, disquette, CD, DVD …). Les données manipulées par l’unité centrale
résident dans la mémoire vive ou centrale ou RAM.
ROM (read only memory) fait pour contenir des logiciels, des
programmes particuliers comme le système d’exploitation. Le contenu d’un ROM ne
peut être modifié, c’est aussi une mémoire à accès aléatoire.
RWM (read write memory) ou mémoire centrale.
2. Unité centrale
Elle comprend l’unité de contrôle et l’unité arithmétique et logique. Elle est
organisée au tour d’un bus.
UAL
Registres
Pointeur
Registre
Instruction Registre Registre
d’adresse tampon
Les registres sont des emplacements de mémoires qui ont un temps d’accès court,
leurs tailles varient selon l’usage.
Entrée A Résultat
Signaux de contrôle
indiquant la fonction à
Composantes de l’UAL
additionneur
circuit des tests logiques
circuit de décalage des bits (permuter ou décaler d’une position)
circuit de comparaison
circuit des tests arithmétiques
circuit de multiplication ou de division
b) unités de contrôle
Bus d’adresse
Bus de donnée
Registre Buffer
d’adress
Registre
Mémoire
Pointer
d’instruction
UAL
UC
Cycle de chargement
En générale les instructions sont lus une à une dans la mémoire, décodées puis
exécutées. Les étapes du cycle de chargement sont :
charger le contenu du pointeur dans le registre d’adresse mémoire.
Demander à la mémoire de lire la donnée et de la placer sur le bus.
Ranger la valeur lue dans le buffer de l’unité centrale.
Transférer la donnée du buffer dans le registre d’instruction.
incrémenter le pointeur d’une unité.
Ces étapes sont exécutées par des signaux envoyés par l’unité de contrôle.
cycle d’exécution
Batch
Langage compilé
NON
Programme Fichier
OK Code
dans un Système Compilateur Objet
objet
langage de d’exploi
haut niveau tation
Programme
source Code
Editeur de lien
exécutable
L’éditeur des liens vérifie si le programme invoque des fonctions qui résident dans la
bibliothèque du système, retrouve ses codes et les adjoints aux codes objets.
Lorsqu’on demande d’exécuter le programme, le système d’exploitation charge le
Langage assembleur
Un langage assembleur est à cheval entre un langage de haut niveau et un langage
machine (binaire). On a la possibilité de faire usage d’emplacement de mémoire à cet
effet, on se sert d’adresse symbolique. Une instruction a la structure suivante :
[ad] CO OP
ad= adresse (on peut la préciser ou pas)
Co= code de l’opération à effectuer
Op=opérande.
On peut avoir 0, 1, 2, 3 opérande. Dans cas de plus d’un opérande ils sont séparés par
des virgules.
Les opérandes sont généralement les adresses de mots ou d’instructions.
L’interprétation des mots dépend du code. On se sert en général des symboles
comme adresse de mot mémoire ou d’instructions.
L’adresse symbolique consiste à donner au choix un symbole à l’adresse mémoire
Algorithme de
résolution
(2)
Vérification non
(nous même) Modification
oui
(3)
Traduction en langage
de haut niveau
(4)
Programme
source
(5)
Vérification non
(nous même) Corriger
oui
(6)
Compiler non
(compilateur) Rejet et
modification
Ok
(7)
Fichier Objet
(8)
Fichier
exécutable
(10)
a) Instructions à 3 adresses
Sa structure est : [AD] CO OP1, OP2, OP3 ou OP1, OP2 et Op3 sont des
adresses symboliques des mots mémoires,
Interpretations: OP3 OP1 Co OP2
Example: CO: ADD= addition
MPY= multiplication
SUB= soustraction
DIV= division
Supposons qu’on a X=A+B
L’équivalent c’est ADD A, B, X
Y = C-D SUB C, D, Y
Z = A/B DIV A, B, Z
S=T U MPY T, U, S
Exemple : on veut A 0 SUB A, A, A
On aura alors A A–A
Ou on veut A B,
On aura SUB A, A, A
ADD A, B, A
b) Instructions à 2 adresses
Sa structure : [AD] Co OP
Ici, on suppose que l’accumulateur dispose du 1er opérande et que le 2nd se
trouve dans le mot mémoire qui a pour adresse OP
Interprétation : AC AC Co OP
d) Instruction à 0 adresse
La structure est la suivante : Co, l’adresse des opérandes n’est pas indiquée sauf pour
deux instructions particulières : chargement et déchargement. Cette structure
suppose que les opérandes sont disposés de façon séquentielle dans une pile, les
résultats des opérations arithmétiques sont aussi sauvegardés dans la pile. Une pile
fonctionne sur le principe LIFO (last in first out), "premier entré dernier servi".
Interprétation des opérations arithmétiques
On suppose qu’à tout moment, la pile contient toutes les données nécessaires, en
particulier, la pile contient deux entrées (mots) :
TL (tête de pile)
SL (entrée située juste en dessous de la tête de pile)
Instruction de chargement PUSH
PUSH X (mettre au-dessus de la pile le contenu de X)
A 4
-5
B 3 PUSH B
3
PUSH C
C -5
Après POP
4 4
4 TL 7
3 3 7
-5
-5 3 SL -5
Exemple : on a Z = A B + C/D
Ecrire des programmes assembleurs à 0,1 2 et 3 adresses qui permettent d’évaluer
l’expression ci-dessus.
e) Instruction de débranchement (pour les 4 types d’instructions)
I. Généralités
Le système le plus couramment utilisé est le système décimal qui utilise les chiffres
de 0 à 9, c'est le système de référence. Le nombre de chiffres utilisés dans un système
s'appelle sa base. Les machines digitales ou numériques fonctionnent en binaire,
c'est-à-dire selon le système de base 2.
En particulier on a :
0 et 1 : base 2
0à7: base 8
0 à 9 et de A à F : base 16
Si B est la base, alors un nombre entier N en base B s'exprime sous la forme :
Ou
en notation de position. La position d'un chiffre rappelle la
puissance de la base qui multiplie ce chiffre. Dans le cas des ai c'est Bi.
En base 10
152 = 1 x 102 + 5 x 101+ 2 x 100 ce qui s'écrit encore :
a2a1a0 = a2102 + a1101+a0100
Un nombre fractionnaire P, c'est-à-dire compris entre 0 et 1 s'exprime sous la forme
suivante dans la base B:
Ou
en notation de position.
On fait précéder le premier chiffre non nul de "0." pour signifier que c'est un nombre
décimal. La puissance de la base qui correspond à un rang donné s'appelle le poids
de ce nombre. Pour éviter des confusions, du fait que les mêmes chiffres sont
communs à plusieurs bases, on spécifie la base de la manière suivante :
13 (13)10 (1101)2 (15)8 (D)16
Ou
13 1310 11012 158 D16
1. Partie entière
On a [N]= (anan-1…a1a0) on veut avoir [N]=(cmcm-1…c1c0)
Il y a deux méthodes :
i. On connait la table de conversion de chiffre entre les deux bases, on connait la table
de multiplication dans la base . On connait la table de l’addition dans la base . On écrit
N dans sa base polynômiale qui est :
N=a0+ (a1+ (a2+… (an-1+ an))) puis on remplace et chaque ai par leur
représentation en puis on fait l’arithmétique en base .
Exemple : convertir X = (2BAD)16 en base 10
On a X= D+16(A+16(B+16 2))
R c0 R=reste
Si on divise N par on a le quotient Q et le reste c0. En répétant le processeur on
retrouve c0 jusqu’à cm le processus s’arrête lorsque le quotient est 0. Il faut retenir que
les chiffres de la représentation de sont retenus dans l’ordre inverse.
Exemple : convertir (3781)10 en base 2
3781 2
1890 2 1 c0
945 2 0 c1
472 2 1 c2
c11
On a donc (111011000101)2
En base 8 on a
3781 8
472 8 5
59 8 0 qui donne (7305)8
7 8 3
7 8 7
0
En base 16 on a
3781 16 5
236 16 C d’où (EC5)16
16 E
0
2. La partie fractionnaire
d0= c0=1
a. Conversion 2 8 16
(i) 2 8
On suppose que n+1 est un multiple de 3 sinon on adjoint des zéros au début pour en
faire. On constate alors que les puissances de 2 dans la nouvelle expression peuvent
se mettre sous forme d’une puissance de 8. Les coefficients de chacune de ces
puissances sont des chiffres de la base 8. Chacun étant constitué de 3 chiffres
binaires, on retrouve la subdivision précédente
F
En remarquant dans cette décomposition que les puissances négatives de 2 sont en
même temps ceux de 8 et que les coefficients de ces puissances sont les chiffres de la
base 8 ce qui justifie la subdivision précédente.
(ii) 2
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1
b) Multiplication
0 0 0
0 1 0
1 0 0
1 1 1
c) Division
0 0 !
0 1 0
1 0 !
1 1 1
d) Soustraction
0 0 0 0
0 1 1 1
1 0 1 0
1 1 0 0
1. Nombre en complément
La représentation des nombres en complément facilite l’opération de soustraction dans les
ordinateurs. Ainsi, au lieu de soustraire, on ajoute le complément.
Exemple : .
Pour chaque base , il existe 2 types de complément d’un nombre.
- Le complément à
- Le complément à
Exemple : base 10 : complément à 10, à 9
Base 2 : complément à 2, à 1
i) complément à
Exemple : si
Le complément à 1 c’est le nombre qu’on obtient en remplaçant chaque chiffre par
son complément. On remplace 1 par 0 et 0 par 1.
ii) complément à
Pour
Exemple :
2. Soustraction en complément
L’inconvénient avec cette approche (nombre sans signe) c’est qu’il faut comparer M
et N pour savoir ce qu’il faut faire du résultat. On contourne cette difficulté en
représentant les nombres avec signe.
Le premier bit représente le signe, le reste c.-à-d. n-1 la valeur absolue du nombre
Exemple : n=8 représentation de 5 et -5
00000101 et 10000101 respectivement
ii) complément à 1 avec le signe
On représente la valeur absolue du nombre sur les n bits et on le remplace par son
complément à r y compris le 1er bit (s’il est négatif on le remplace par son complément à r)
11111010 et 00000101
(-5) (5)
Remarque :
Exemple : n=4
[-8,7] complément à 2
1. Virgule fixe
Dans cette représentation la partie entière est représentée sur n bits et la partie
fractionnelle sur p bits, en plus un bit est utilisé pour le signe.
Exemple : si n=3 et p=2 on va avoir les valeurs suivantes
0 000 00 + 0,0
0 000 01 + 0,25
0 000 10 + 0,5
0 000 11 + 0,75
0 001 .00 + 1,0
. . . .
. . . .
Dans cette représentation les valeurs sont limitées et nous n’avons pas une grande
précision
2. Virgule Flottante
En interne, les nombres réels sont représentés à l’aide d’une notation spéciale appelée
virgule flottante. La représentation se fait à l’aide d’un mot en précision simple et de
plusieurs mots en grande précision.
Pour un mot de n bits, la représentation se décompose de la façon suivante :
1 n1 n2
Signe de la
mantisse
Mantisse
Exposant
sur n2 bits
sur n1 bits
n=1+n1+n2 (nombre de chiffres qu’il faut pour la représentation)
Pour
Si est égal à zéro alors
- L’exposant t est un entier relatif, il peut être représenté sous la forme à complément
ou sous la forme signe + | | ou sous une forme spéciale dite biaisée.
1 0 1 0 0 1 1 0 1 0 0 0 0
Remarque : si la mantisse est sur k bits et si elle est représentée dans la machine
sur k’ bits tel que k> k’, alors la mantisse sera tronquée : on va prendre uniquement
k’ bits perdre dans la précision.
Forme biaisée
En complément à 2, l’intervalle des valeurs qu’on peut représenter sur p bits :
-2 (p -1) ≤ N ≤ 2 (p -1) -1
Si on rajoute la valeur 2 (p -1) à tous les termes de cette inégalité :
- 2 (p -1) + 2 (p -1) ≤ N + 2 (p -1) ≤ 2 (p -1) - 1 + 2 (p -1)
0 ≤ N + 2 (p -1) ≤ 2p - 1
On pose N’= N + 2 (p -1) donc : 0 ≤ N’ ≤ 2p -1
Dans ce cas on obtient des valeurs positives.
La valeur 2p-1 s’appelle le biais ou le décalage
On a donc ainsi :
Exposant Biaisé = Exposant réel + Biais ou encore N’= N + 2 (p -1)
Exemple :
On veut représenter les nombres (0,015)8 et -(15, 01)8 en virgule flottante dans une
machine ayant le format suivant :
Signe mantisse Exposant biaisé Mantisse normalisée
1bit 4bits 11bits
(i) (0,015)8=(0,000001101)2= 0,1101 * 2-5
Un nombre flottant simple précision est stocké dans un mot de 32 bit : 1 bit de signe,
8 bits pour l'exposant et 23 pour la mantisse.
si l'exposant et la mantisse sont tous deux nuls, le nombre est ±0 (selon le bit
de signe)
si l'exposant est égal à 2e – 1 (1 sur tous les bits de l’exposant), et si la mantisse
est nulle, le nombre est ±infini (selon le bit de signe)
si l'exposant est égal à 2e − 1, mais que la mantisse n'est pas nulle, le nombre
est NaN (not a number : pas un nombre)
Remarque :
La version 1985 de la norme IEEE 754 définit 4 formats pour représenter des nombres à
virgule flottante :
simple précision (32 bits : 1 bit de signe, 8 bits d'exposant (-126 à 127), 23 bits de
mantisse, avec bit 1 implicite),
simple précision étendue (≥ 43 bits, obsolète, implémenté en pratique par la double
précision),
double précision (64 bits : 1 bit de signe, 11 bits d'exposant (-1022 à 1023), 52 bits de
mantisse, avec bit 1 implicite),
double précision étendue (≥ 79 bits, souvent implémenté avec 80 bits : 1 bit de signe,
15 bits d'exposant (-16382 à 16383), 64 bits de mantisse, sans bit 1 implicite).
Exercice : (i) Donner la représentation des deux nombres N1= (-0,014)8 et N2=(0,14)8
sur la machine suivante :
Signe mantisse Exposant baisé Mantisse normalisée
1bit 5bits 10bits
(ii) Calculer N2-N1 ; montrer qu’on a le même résultat en utilisant l’exposant réel d’une
part et l’exposant biaisé d’autre part.
Solution :
Avant de représenter les deux nombres on doit calculer le biais (décalage)
B = 2 5-1 = 24 = 16
N1 = (-0,014) 8 = (-0,000001100) 2= (-0,1100) 2 . 2 - 5
ExpB= -5 + 16 = 11 = (01011)2
N2 = (0,14)8 = (0,001100)2= (0,1100)2. 2 -2
ExpB = -2 + 16 = 14 = (01110) 2
Donc on va avoir la représentation suivante pour N1 et N2:
N1 1 01011 1100000000
N2 0 01110 1100000000
I. Algèbre de Boole
Soient un ensemble B = {1,0}, +, . et − (la complémentarité) les opérateurs définis
de la manière suivante :
00...…………0
00…………...1
00.…………10
Exemple :
x Y Z F(x,y,z)
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 1 0
1 1 1
1 0 1
7.
8.
9.
Commutativité
10.
11.
Associativité
12.
13.
Distributivité
14.
15. x y . z x y . x z
Théorème de l’absorption (1)
16.
17.
Théorème de l’absorption (2)
18.
19. a b .b a.b
Divers
20.
21.
Théorème de De Morgan
x Y S r p
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1
Exemple :
Construire l’expression booléenne de
0 0 1
0 1 0
1 0 1
1 1 1
Remarque : Si chacun des produits contient toutes les variables d’entrée sous une
forme directe ou complémentée, alors la forme est appelée « première forme
canonique » ou « forme canonique disjonctive ». Chacun des produits est alors
appelé minterme.
II.2 Forme conjonctive : Expression sous forme de produit des termes somme
Principe :
On construit la table de vérité
On ajoute à la table de vérité une colonne appelée colonne de termes somme
Chaque entrée comprend la somme des inputs construit de la manière
suivante :
Si une variable prend la valeur 0 elle intervient sous sa forme normale
Si elle prend la valeur 1 elle intervient sous forme complémentaire
L’expression s’obtient en prenant le produit des termes somme correspondant
aux entrées où la fonction est fausse (0).
Exemple :
0 0 1
0 1 0
1 0 1
1 1 1
On peut démontrer qu’une expression sous forme produit des termes sommes
est le duale d’une expression somme des termes produits.
Exemple :
X Y p
0 0 0
0 1 0
1 0 1
1 1 0
Remarque : Si chacune des sommes contient toutes les variables d’entrée sous une
forme directe ou complémentée, alors la forme est appelée « deuxième forme
Il est possible d’inclure jusqu’à six ensembles (six variables) et d’exprimer des
énoncés logiques relativement complexes. Par exemple, la fonction A.B est exprimée
ainsi :
Exemple :
a)
b)
c)
b) Règles de simplification
Attention !
a) Notion d’Impliquant
Une expression ф implique une expression ϕ si la condition ф = 0 ne peut
jamais exister, on le traduit par ф ϕ, ou encore on dit que ф est inclus dans ϕ.
Une base peut être de telle sorte qu’en enlevant un seul de ses éléments, on ne puisse
plus réaliser la fonction de départ. Une telle base est dite base première.
On appelle base complète l’implication comprenant tous les impliquants premiers de
la fonction.
Ainsi le problème de simplification va se réduire à celui de la détermination
des impliquants premiers d’une base commode du point de vue de la réalisation
pratique. Avant d’aborder le problème de la simplification, nous allons voir quels
sont les critères qui les guident.
e) Principe
1) Pour toute fonction quelconque F = ß, on peut l’écrire sous la forme canonique de
première espèce en utilisant le théorème ; F= ß (х+ x ). Pour n variables, on aura donc
des termes produits de n variables (sous la forme directe ou complémentée).
2) On applique le théorème ß х+ß x = ß à tous les termes 2 à 2, de façon à passer de n
variables à n-1 variables pour tous les termes. Le théorème sera appliquée autant de
fois que l’on peut, jusqu’au moment où on ne le pourra plus. On a alors la liste des
impliquants premiers, parmi lesquels il faudra faire un choix ultérieur.
Exemple : soit f = A B +B C + B C + A B
Cette fonction fait apparaître la présence de 3 variables : A, B et C.
On va donc mettre f sous la forme canonique de 1ère espèce.
f = A B ( C +C) +B C (A+ A ) + A B(C+ C )
= A B C + A B C + AB C + A B C + A BC + A B C
On diminue les termes identiques pour n’en garder qu’un seul de chaque groupe.
f = A B C+A B C +AB C + A B C + A B C+ A BC
On les écrit sous la forme
A B C. A B
AB C B C
AB C A C
A BC BC
A BC AB
A BC. A C
Ici, on a les termes à n-1 variables. Il faudrait encore appliquer le théorème.
Mais on constate qu’il n’y a plus de termes qui se simplifient on garde donc les
termes obtenus. Dans l’expression, on a 2 termes dont on peut bien se passer,
puisqu’ils n’apparaissent pas dans l’expression de f.
Après avoir utilisé la méthode de Quine pour avoir l’ensemble des impliquants
premiers, voyons maintenant comment choisir ces impliquants.
F1= A B + B C + A C
F2= B C+ A C + A B
On peut donc réaliser f de 2 manières différentes. Ici, on constate que même les coûts
(niveaux et diodes) sont équivalents pour les 2 réalisations.
Ayant cette liste des impliquants premiers, il suffit d’utiliser l’une des 2 méthodes précédentes
(méthode du tableau des impliquants premiers, méthode de Pet Nick) pour déterminer les
combinaisons minimales.
Exemple :
Soit S = {1, 8, 9, 10, 14, 15}
On écrit l’équivalent binaire de chaque combinaison et ensuite on les regroupe.
1 0001 1-9 -001 P
8 1000 8-9 100- Q
9 1001 8-10 10-0 R
10 1010 10-14 1-10 U
14 1110 14-15 111- T
1111
Ne pouvant plus regrouper les combinaisons de la 2è colonne, P, Q, R, U, T sont
les impliquants premiers.
Choix : 1ère méthode
S=P+R+T
Cette combinaison est celle qui comporte le moins d’éléments. on représente les
termes P, R, et t en omettant les variables à la place desquelles il y a un tiret. Un
« 1 » représente une variable directe, tandis qu’un « 0 » représente une variable
complémentée.
Il faut remarquer ici que 2 impliquants premiers sont essentiels (ou obligatoires).
En effet, pour réaliser la combinaison 1, il faut absolument l’impliquant P, tandis
que l’impliquant T est absolument nécessaire pour réaliser la combinaison 15.
2è méthode
Pour réaliser 1 : on a les impliquants P
8 : on a les impliquants Q ou R
9 : on a les impliquants P ou Q
10 : on a les impliquants R ou U
14 : on a les impliquants U ou T
15 : on a les impliquants T.
Les conditions à remplir sont donc :
S = P (Q + R) (P + Q) (R + U) (U + T ) T
Chacune de ces intersections d’impliquants constitue une réalisation de la
fonction. Il y a autant de bases qu’il y a d’intersections dans l’expression
précédente. On a donc ici 4 cas. Parmi ces bases, nous en avons 2 qui sont
première {R+P+T} et {P+Q+U+T}. Pour les autres bases, on pourrait enlever U
dans {P+R+U+T} ou Q dans {P+Q+R+T} et réaliser néanmoins la fonction. Elles
ne sont donc pas premières.
Exercices :
Simplifier S = {0,1,2,3,4,6,7,8,9,11,15}
= B C + AD + A D .
Remarque : Lorsqu’il y a des conditions disponibles, on introduit leurs numéros pour faire le
travail de concentration, mais on ne le fait pas apparaître dans le tableau des impliquants
premiers au moment du choix, puisqu’on a pas l’obligation de les réaliser.
Exemple : S = {1, 3, 5, 10, 11, 12, 13, 14, 15} combinaison disponible : 0 et 4.
1ère colonne 2è colonne 3è colonne
1. Généralités
Les circuits logiques sont des appareillages électroniques destinés à manipuler des
grandeurs binaires: le 0 et le 1.
Dans un circuit logique, chaque variable logique est matérialisée par un conducteur
et sa valeur logique par la tension électrique du conducteur. La correspondance entre
les valeurs logiques et les tensions électriques est généralement:
Les circuits nécessitent une alimentation (généralement +5v) qui donne l'énergie
nécessaire au fonctionnement du circuit. On la fournit par un générateur placé entre
une broche d'alimentation et une broche de masse.
Opérateur OU Opérateur ET
Un chronogramme :
OU
ET
Porte non
Porte ET (AND)
Porte OU (OR)
x
Porte OU EXCLUSIF (XOR)
(XAND)
X Y S R
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1
S XOR
R AND
Half Adder
Le circuit ADD4 possède huit entrées, sur lesquelles il admet deux opérandes de
quatre bits, X et Y, et cinq sorties sur lesquelles il donne en résultats la somme S et le
report rep de l'addition binaire des opérandes. L'utilisation particulière illustrée ici
consiste à lui faire calculer 0101 plus 0011 : il faut imposer les tensions
correspondantes sur les entrées du circuit.
Pour imposer une tension sur un conducteur, il faut le connecter à une source de
tension. Ici les opérandes sont connus, ce sont les constantes 0101 et 0011 ; il suffit
donc de connecter les entrées à des sources de tension fixes 0v et +5v (masse et
alimentation par exemple). Le résultat du calcul est alors disponible sur les sorties,
sous forme de tensions qu'il suffit d'observer.
Pour ce qui nous concerne, l'état physique d'un conducteur peut être:
- Libre, son potentiel électrique n'est pas imposé avec force (ex: un fil en l'air).
- Forcé, son potentiel est imposé avec force (ex: fil connecté à une source de tension).
Dans ce cas, le potentiel peut être:
- sans signification logique (ne correspond ni à 0 ni à 1),
- avec signification logique, 0 (0v...0.8v) ou bien 1 (2.4v...5v).
On les appelle ainsi parce que la sortie est prélevée sur le collecteur d'un
transistor qui n'est pas connecté internement; on les appelle également "sorties à
drain ouvert" (AngI. "open drain"), parce qu'en technologie MOS c'est le drain d'un
transistor à effet de champ qui joue ce rôle. Ces sortie sont réservées à des usages
assez particuliers: par elles-mêmes, elles ne peuvent forcer un 1 ; on les utilise
Règles de connexion
Les quelques règles simples qui suivent doivent être respectées pour espérer avoir un
assemblage qui fonctionne correctement.
Lorsqu'on veut réaliser un circuit, on distingue:
les entrées et les sorties du circuit que l'on réalise (abréviations : E et S),
les entrées et les sorties (subdivisées en sorties normales et sorties trois-états)
des circuits que l'on utilise (abréviations : e, s, et st).
Par contre, il est interdit de connecter ensemble des s, ou des E, ou des s et des E.
Les raisons de cette interdiction sont doubles:
- D'un point de vue logique, c'est un non-sens que de vouloir forcer une variable
simultanément à deux valeurs potentiellement différentes.
- D'un point de vue électrique, on risque le court-circuit, dans le cas où l'on cherche à
imposer des potentiels différents: l'une des sorties essaye de forcer une tension 0v, et
l'autre une tension +5v.
Pour des motifs analogues, il ne faut pas connecter ensemble deux E dans le circuit,
car on 1 empêche alors l'extérieur de communiquer des valeurs; si par exemple il
désire présenter 0 sur l'une des entrées et 1 sur l'autre, on provoque également un
court-circuit chez l’utilisateur du circuit: on vient de fabriquer un piège.
Sorties normale
Elles ne peuvent être connectées entre elles car il y a risque de court circuit.
Collecteur ouvert
Les collecteurs ouverts peuvent être connectés entre eux et à une résistance pour
réaliser le ET-câblé, le multiplexeur ou encore des connections à un bus, on s'en sert
Lorsquec1 et c2 valent 0, les sorties du circuit restent libre : ce sont encore des sorties
3-états du circuit total. L’utilisateur de ce circuit ne doit pas présenter la
configuration d’entrées c1c2=11, sinon deux ADD4 essayent simultanément de forcer
leur sortie (court-circuit)
Les circuits électroniques peuvent être réalisés selon diverses technologies qui
diffèrent par:
la sortie de transistors employés (transistors bipolaires, transistors à effet de champ),
l'organisation électronique de ces transistors pour réaliser les dispositifs élémentaires,
le procédé de fabrication.
On distingue quatre grandes familles parmi les technologies actuelles (1988), ce sont :
Les technologies ECL et TTL utilisent des transistors bipolaires; les technologies
nMOS et CMOS par contre utilisent des transistors à effet de champ.
La rapidité, les niveaux logiques acceptés, les précautions à prendre pour les
interconnexions, la fiabilité, la consommation en énergie, les températures de
fonctionnement, les tolérances sur les tensions d'alimentations
Le tableau suivant résume les principales caractéristiques de ces diverses
technologies. La rapidité et la consommation indiquée sont à peu-près ceux d'une
"porte" utilisable externement.
La technologie nMOS fut une des premières à permettre une forte intégration
(microprocesseur sur une seule puce) ; elle est plutôt lente, mais ceci est surtout du
au fait que c'est une technologie en voie d'extinction, que les laboratoires ne
cherchent plus à faire progresser, car elle est remplacée par la technologie CMOS
La technologie CMOS est la technologie la plus sollicitée actuellement (1988) ; elle
cumule presque tous les avantages sur les technologies concurrentes: rapidité
pouvant être supérieure au TTL-S, consommation faible, tolérance considérable sur
I - Introduction
Un circuit combinatoire est un circuit logique numérique dans lequel les sorties à
un instant donné ne dépendent que des entrées à cet instant. Ce circuit a un
comportement temporel très simple
Il réalise sur les sorties une fonction de ses entrées
Il fait le calcul en un temps connu borné
Si on présente des opérandes sur les entrées et on les maintient sans les modifier
pendant une certaine durée connue Tp, on peut observer alors sur les sorties le
résultat de la fonction indiquée pour le circuit.
La durée Tp ou « délais de propagation » dépend de l’organisation interne du
circuit. Elle dépend principalement du temps que met le signal pour traverser les
éléments du circuit (additionneur, soustracteur,…).
Le temps que mettra le signal pour traverser le circuit est le temps maximal des
sommes des durées de calcul des circuits rencontrés sur les chemins des entrées vers
les sorties (durée du chemin le plus long).
10 ns
S
E
30 ns
40 ns
1. Additionneur complet
Un additionneur complet est un additionneur qui accepte trois entrées, les bits
à additionneur et une possible retenue provenant de l’additionneur des bits
antérieurs. On utilise généralement dans des additionneurs en cascade.
x y
si
Additionneur
Ri-1
complet ri
Full Adder
x y ri-1 S ri
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1
y
DA
x
ri
Ri-1 DA
AC
2. Générateur de parité
Lorsqu’on transmet les informations (binaires) sur une longue distance, il y a
possibilité de perturbation qui se manifeste par des changements de bits. Il y a___20
plusieurs techniques pour détecter ces types d’anomalies. L’approche la plus simple
consiste à ajouter au départ un bit de parité. Le bit est choisi de manière que le
nombre de bits de même type soit pair ou impaire.
X y Z P
0 0 0 0
0 0 1 1
0 1 0 1
0 1 1 0
1 0 0 1
1 0 1 0
1 1 0 0
1 1 1 1
V x Y Z a b c d E F g
0 0 0 0 1 1 1 1 1 1 0
0 0 0 1 0 1 1 0 0 0 0
0 0 1 0 1 1 0 1 1 0 1 a
0 0 1 1 1 1 1 1 0 0 1
0 1 0 0 0 1 1 0 0 1 1
0 1 0 1 1 0 1 1 0 1 1
0 1 1 0 0 0 1 1 1 1 1
0 1 1 1 1 1 1 0 0 0 0
1 0 0 0 1 1 1 1 1 1 1
1 0 0 1 1 1 1 0 0 1 1
1 0 1 0
1 0 1 1 X
1 1 0 0
1 1 0 1
1 1 1 0
1 1 1 1
Exercice :
Affecter les valeurs vraies aux entrées X et trouver les expressions simplifiées des
sorties (a, b, c, d, e, f, g) qui ne font intervenir que deux entrées au plus (expression :
somme des termes produits)
4. Décodeur
Dans tout système numérique de traitement d’informations, les informations,
qu’elles soient traitantes (instructions) ou à traiter (données), sont transmises au
moyen de chiffres binaires regroupés en mots. Chaque mot ou groupe de mots
correspond à une représentation d’objet particulier c'est-à-dire la valeur d’un mot
peut être le code de données, de l’instruction, de l’adresse.
Il se pose alors deux problèmes :
Celui du transfert de l’information d’un point à l’autre dans la machine,
Celui d’identification d’un objet.
Dans un système numérique, on doit être capable de détecter une combinaison
binaire ou un code particulier. Ce processus d’identification est appelé le décodage
de l’information.
En pratique, le décodage est réalisé par un circuit logique spécialisé qui active à sa
sortie une ligne particulière si et seulement si à l’entrée du circuit est appliqué le code
de cette ligne. Un tel circuit est appelé « décodeur ».
Un décodeur est un circuit combinatoire qui converti les informations binaires
codées sur n bits en entrée à 2n sorties maximum.
On parle de décodeur n-à-2n lignes,
Exemple : Décodeur 2/4
Table de vérité
A1 A0 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
S 0 A1 A 0
S1 A 1 A 0 ; S 2 A 1 A 0 ; S3 A 1A 0
Symbole :
A0 A1
Décodeur 2/4
Diagramme logique :
S0 S1 S2 S3
Remarques :
On peut concevoir ce circuit de décodage de façon à obtenir le niveau Haut en
sortie, auquel cas on utilisera des portes Et et des inverseurs. Pour obtenir des
niveaux bas en sortie, on utilisera des portes Non-Et et des inverseurs.
les décodeurs vendus généralement contiennent une ou plusieurs entrées de
validation pour contrôler les opérations du circuit.
Exemple : le décodeur précédant (2/4) peut être construit avec une entrée de
validation et des portes NAND
E A1 A0 S0 S1 S2 S3
0 0 0 0 1 1 1
0 0 1 1 0 1 1
0 1 0 1 1 0 1
0 1 1 1 1 1 0
1 x x 1 1 1 1
Ce décodeur est valide lorsque l’entrée de validation E est à 0 au quel cas une seule
des sorties est sélectionnée, cette sortie est celle qui contient 0.
Exercices :
1) Construire le logigramme de ce décodeur,
2) Réaliser un décodeur 8 bits à l’aide de décodeur 4 bits.
5. Le multiplexeur
Un multiplexeur est un circuit combinatoire qui sélectionne des informations
binaires sur une ou plusieurs entrées vers une seule sortie. La sélection d’une valeur
particulière est contrôlée par une variable ou adresse. Pour N entrées d’adresses, les
multiplexeurs ont 2N entrées de données.
C’est donc un circuit ayant (n+2n) entrées et qui par l’intermédiaire d’une adresse
de n bits indique laquelle des 2n entrées doit être reliée à la sortie. Un multiplexeur
est donc l’équivalent logique d’un sélecteur 2n lignes vers une seule ligne.
Exemple : n=2 , 2n = 4
S1 S0 Y
0 0 D0
0 1 D1
1 0 D2
1 1 D3
Symbole :
S0
S1 Multiplexeur 2/4
Y
Diagramme logique :
NB : Il est possible de réaliser n’importe quelle fonction logique de n+1 variables avec
un multiplexeur à 2n entrées (avec n<5) et éventuellement un inverseur (porte non). Il
en est de même pour le décodeur.
F A BC ABC AB
Par identification on a:
On peut donc construire F à l’aide d’un multiplexeur à 4 entrées et une porte non (un
inverseur). A B
Mux F
+5v
Symbole :
A0 S0
A1 S1
DEMux S2
E S3
Le signal E n’est transmis à une sortie S que lorsque l’adresse binaire vaut i
(combinaison de A0 et A1).
. DEMux
Mux
.
.
Adresse
Adresse récepteur
émetteur
La communication ici est orientée. Elle se fait du multiplexeur vers le
démultiplexeur. Une communication bi directionnelle devra donc faire appel à deux
structures de ce type.
NB : Un critère impartial est le nombre de broches (les entrées et les sorties) c’est souvent ce
qui fixe le coup d’un composant.
a) Phase d’analyse
Elle consiste à exprimer chaque sortie sous forme d’une fonction booléenne des
entrées à partir de la table de vérité qui permet d’exprimer tous les cas possibles.
b) Phase d’optimisation
Cette phase consiste à appliquer les règles de simplification d’expressions
booléennes de manière à diminuer la quantité de portes nécessaires pour un petit
nombre de variables, on utilise en général des tableaux de Karnaugh
Exemple :
Soit à réaliser un additionneur binaire modulo 4 (opérandes 2bits, résultats 2 bits).
Table de vérité :
X1 X0 Y1 Y0 S1 S0
0 0 0 0 0 0
S0 = x 0 y 0 x 0 y 0
0 0 0 1 0 1
0 0 1 0 1 0
0 0 1 1 1 1
0 1 0 0 0 1
0 1 0 1 1 0
0 1 1 0 1 1
0 1 1 1 0 0
S1 y1 x1 x 0 y1 y 0 x1 y1 y 0 x1
1 0 0 0 1 0
x1 x0 y1 y1 y 0 x1 x0 y1 y 0 x1 x0
1 0 0 1 1 1
1 0 1 0 0 0
1 0 1 1 0 1
1 1 0 0 1 1
1 1 0 1 0 0
1 1 1 0 0 1
1 1 1 1 1 0
a) Phase d’analyse
Elle se traite en trois parties :
La structuration des entrées
La décomposition des fonctions à réaliser
L’analyse des sous fonctions en respectant les relations entre les entrées et les
sorties.
Phase d’analyse
Structuration des entrées et des sorties
On les regroupe en paquets, auxquels on donne une signification, une
interprétation :
La nature et le rôle constituent un guide
X 8
X
8
Un nombre M
Max(YX,) Max
Un nombre
Y 8
Y
Un nombre
D’où le circuit suivant : où on voit apparaître deux nouveaux circuits à réaliser. Ces
circuits sont supposés être plus simples à réaliser que le circuit de départ
X
Y Comparateur
M
Sélecteur
C'est-à-dire
Si A= 10110010
B= 01001010 A>B
Résultat représentable
Ret=0 01101000
Si A= 01001010
B= 10110010 A>B
Résultat non représentable
Ret=1 10011000
Donc cette sortie peut nous permettre de décider si A>B ou A<B. On pourra donc
utiliser un soustracteur binaire 8 bits si celui-ci existe dans le catalogue sinon il faut le
réaliser.
8
A X
8
D
Sous8
8 ret
Y 1
B
La sélection pourra être réalisée par un sélecteur deux voies de 8 bits (sel2V8) qui
peuvent être réalisé par des portes ou à l’aide d’adaptateurs trois états.
x
F(x)
F(x)
x ≡
G(x)
G(x)
F(X)
≡
G(X) G(X) F(X)
F(x)
Sélection
Si(cond) alors
F(x) ≡
G(x)
sinon G(x)
Cond
Phase d’optimisation :
0
1
1 Equal ≡
0 X
X
- Non utilisation de certaines sorties : Supprimer du circuit tous les composants qui
ne servent qu’à élaborer les sorties inutilisées
Les factorisations :
On cherche à profiter au maximum d’un même calcul intermédiaire.
V
F1
V1 Sélecteur
F2
V2
C
V1
Sélecteur
V2
Réalisation de Si (c) alors f(V,V1) sinon f(V,V2) = f(V, si c alors V1 sinon V2)
I - Introduction.
Un système séquentiel est un système dont le comportement dépend de la valeur
des entrées, mais aussi de la valeur d’une entrée propre au système : son état. L’état
du système résulte des valeurs passées des entrées.
Un système séquentiel peut être définit par :
des entrées de valeur (v),
Une entrée d’horloge (h) qui fournit une séquence d’évènement,
un état interne, qui prend un nombre fini de valeurs,
Des sorties de valeurs (s)
Une fonction de transition (ft), qui définit la valeur future de l’état à partir de
la valeur présente de l’état et des entrées.
Une fonction de sortie (fs), qui définit la valeur présente des sorties à partir
de l’état actuel et des entrées.
Les circuits séquentiels sont des systèmes dont le comportement peut être
entièrement décrit, on les appelle machine ou automate à l’état fini. Ce
comportement est défini par l’intermédiaire d’une table d’état ou par une notation
graphique appelé digramme d’état.
x
FT R FS FT : fonction de transition,
FS : fonction de sortie,
R : registre
h
H : horloge.
2) Les systèmes dans lesquels les sorties ne dépendent que de l’état actuel du
système : ce sont des <<machines de Moore>>.
x
FT R FS
II - Elément de mémoire
Un élément de mémoire dans une machine binaire doit être à même de
représenter deux états différents et de garder des états (rester dans un état aussi long
temps qu’on veut et de changer d’état lorsqu’on veut). Ces éléments sont
généralement appelés des bascules, on en distingue plusieurs types mais malgré leur
diversité, on peut les représenter avec des portes logiques.
Table de vérité
0 0 0 0
0 0 1 1
0 1 0 1
0 1 1 1
1 0 0 0
1 0 1 0
1 1 0 x
1 1 1 ×
R Q
Horloge
2. Bascule D
Pour contourner la difficulté d’avoir à éviter les entrées R=S=1 dans la bascule
RS, on peut forcer l’entrée R à devenir le complément de S on a donc une bascule à
une seule entrée : une telle bascule est appelée bascule D.
Table d’état
0 0
1 1
Horloge
3. Bascule J. K.
Deux entrées J. K. lorsque J=K=0 la bascule ne change pas d’état
Table d’état
0 0
0 1 0
1 0 1
1 1
0 0 0 0
0 0 1 1
0 1 0 0
0 1 1 0
1 0 0 1
1 0 1 1
1 1 0 1
1 1 1 0
0 0 0 X
0 1 1 X
1 0 X 1
1 1 X 0
Application :
Réalisation du contrôleur de feux de circulation (diagramme d’état de la page
60) avec la bascule J K
Exprimons et en fonction de x et y
JY Y
Rouge
Orange
Rouge : et
Orange : et
Vert :
Méthode
Table de changement d’état des bascules
0 0 0 X 0 X 0 0
0 1 1 X 1 0 1 1
1 0 X 1 0 1 0 1
1 1 X 0 X 0 1 0
Exemple 0/0
On reste dans cet état
00
1/0
1/1 11
01
0/0
1/0 0/0 1/1
10
0/0
0 0 0 0 0 0 0 0
0 0 1 0 1 1 0 1
0 1 0 1 0 0 1 0
0 1 1 0 1 0 0 1
1 0 0 1 0 0 1 0
1 0 1 1 1 1 1 1
1 1 0 1 1 0 1 1
1 1 1 0 0 0 0 0
2. On donne le circuit ou alors les équations des entrées du circuit et on demande la table
d’état, le diagramme d’état, les équations d’état c'est-à-dire définir en fonction
de et des entrées.
Méthode
A partir du circuit on peut définir les équations des entrées et par la suite
définir la table d’état à partir de laquelle on donne le diagramme d’état.
Exemple d’application
Equations d’état
Table d’état
Etat présent prochain état
A B X Y A B Z
0 0 0 0 0 0 0 0 0
0 0 0 1 1 0 1 0 0
0 0 1 0 0 0 0 0 0
0 0 1 1 0 0 0 0 0
0 1 0 0 0 1 0 1 1
0 1 0 1 1 1 1 1 1
0 1 1 0 0 0 0 0 0
0 1 1 1 0 0 0 0 0
1 0 0 0 0 0 0 0 1
1 0 0 1 1 0 1 0 0
1 0 1 0 1 1 1 1 1
1 0 1 1 1 1 1 1 1
1 1 0 0 0 1 0 1 1
1 1 0 1 1 1 1 1 1
1 1 1 0 1 1 1 1 1
1 1 1 1 1 1 1 1 1
1. Définition
Une machine à état finis est une machine séquentielle algorithmique caractérisée par
un vecteur d’entrées, un vecteur de sorties, et une séquence d’états définissant son
comportement. La machine (également appelée automate) va passer d’un état à
l’autre suivant les séquences d’entrée qu’elle reçoit. On attribue généralement à la
machine un état de départ lui permettant de débuter son fonctionnement à partir
d’un point fixe.
Les machines à états finis sont généralement représentées par un diagramme des
états permettant de visualiser les transitions entre les états selon le patron de
stimulation reçu par le vecteur d’entrées. Les états sont alors représentés par des
cercles ; le nom rattaché à chaque état à l’intérieur de chaque cercle ; les transitions
entre les états sont représentés par des arcs dirigés reliant les cercles ; les conditions
(valeurs du vecteur d’entrée) enclenchant ces transitions sont notées sur les arcs ; et
finalement la valeur des sorties est généralement indiquée soit sur l’arc (séparée des
entrées par un trait oblique : /) ou à l’intérieur du cercle (séparée du nom de l’état par
un trait oblique : /).
Voici un exemple de machine à états finis où les sorties sont indiquées à l’intérieur des
cercles :
0/0
Ça a l’air un peu complexe, mais il suffit de suivre les états pour bien comprendre.
Reprenons l’analyse :
Tous les arcs ont pour sortie 0, sauf celui de la transition de E3 à E4 où l’arc porte une sortie qui
vaut 1. Est-ce qu’il y a moyen de simplifier cette machine ? Affirmatif. Il existe une méthode
systématique qui sera expliquée plus en détails plus bas. En attendant, regardant cette solution :
Exemple d'application :
On veut concevoir une machine de Mealy qui reçoit une entrée x et qui affiche à sa
sortie (s2s1s0) le nombre de fois qu’un 0 apparaît à cette entrée. Le compteur est
décrémenté à chaque fois qu’un 1 apparaît à l’entrée. Si une séquence de quatre 0
apparaît à l’entrée, le compteur est remis à zéro
Cptt Cptt+1 Q2 Q1 Q0
0 1 0 0 0
000 100
1 2 0 0 1
2 3 0 1 0
3 4 0 1 1
001 010 011
4 5 1 0 0
5 6 1 0 1
Diagramme d’état
6 7 1 1 0
7 0 1 1 1
Qt Qt+1 J K D S R
0 0 0 X 0 0 X
0 1 1 X 1 1 0
1 0 X 1 0 0 1
1 1 X 0 1 X 0
Table d’incitation
Table de vérité
J Ai K Ai A0 A1 ....Ai 1
D Ai Ai ( A0 A1 ... Ai 1 )
i) compteur binaire synchrone : Dans ce cas de figure, toutes les bascules sont
cadencées avec la même horloge.
2. Compteur- décompteur
Dans ce circuit, lorsque les entrées de commande Inc (incrémenter) et Dec
(décrémenter) sont égales à 00 respectivement, le circuit ne change pas d’état, quand
c’est 01 on incrémente, quand c’est 10 on décrémente et 11 la fonction de transition
n’est pas définie.
Table d’état.
Diagramme d’état
00 00 00
01 01
000 001 111
10 10
01
10
3. Registres
Un registre est un circuit permettant la mémorisation d’information. Un registre
de n bits est composé de n bascules (généralement la bascule D) mémorisant chacune
1 bit.
Il existe types de registres :
d1 q1
d2 q2
d3 q3
d4 q4
Dans cet exemple on utilise pour mémoriser les informations la bascule D qui est
une mémoire élémentaire d’un bit. Elle enregistre la donnée présente sur l’entrée D.
d0 q0
d1 q1
d2 q2
Si c = 0 alors Di=Qi
d3 q3 Si c = 1 alors Di = di
d4 q4
c) Registre de décalage
Les registres de décalages sont des registres dont l’état, formé de n bits, peut être
décalé d’une position vers la droite ou vers la gauche.
q3q2q1q0 = d q3q2q1
q3 q2 q1 q0
Lors d’une opération de décalages, la position de bit libre prend la valeur présentée
entré R (décalage droite) ou L (décalage gauche).
Table d’état.
S0 S1 Q4 Q3 Q2 Q1 Q0
0 0 Q4 Q3 Q2 Q1 Q0
0 1 R Q4 Q3 Q2 Q1
1 0 Q3 Q2 Q1 Q0 L
1 0 R d2 d1 d0 L
Exemple :
On désire réaliser un circuit d’accès à une ressource qui ne peut être utilisé que
par une et une seule personne à la fois. Le but du circuit sera d’accorder correctement
la ressource.
Chaque utilisation manifeste son désire d’utilisation de la ressource sur e1 et e2.
C'est-à-dire, ei=1 si i désire la ressource ou ei=0 sinon.
une priorité à la demande. Cette priorité change à chaque attribution, le client qui
obtient la ressource devient de priorité inférieure. Mais le client garde la ressource tant
qu’il la désire.
L’analyse permet de déduire le diagramme d’état suivant.
Poids 64 32 16 8 4 2 1
Nombres
5 1 0 1
12 1 1 0 0
109 1 1 0 1 1 0 1
45 1 0 1 1 0 1
Code "Décimal Codé Binaire Naturel" : 8.4.2.1 ou DCBN (Se dit BCD en terminologie
américaine).
Dans ce code, chaque chiffre est représenté par son équivalent binaire, par groupe de
4 bits. Ainsi, 925 s'écrit : 1001 0010 0101
Tableau
Poids 8 4 2 1
Nombres
0 0 0 0 0
1 0 0 0 1
2 0 0 1 0
3 0 0 1 1
4 0 1 0 0
5 0 1 0 1
6 0 1 1 0
7 0 1 1 1
8 1 0 0 0
9 1 0 0 1
Pour ce code, les combinaisons 1010 à 1111 sont interdites. Ce code n'est intéressant
que dans la mesure où il permet d'effectuer des opérations arithmétiques, en
particulier l'addition et la multiplication.
Supposons que nous ayons à effectuer l'addition de deux chiffres décimaux a et b ;
plusieurs cas :
1) si a + b 9 le résultat est correct et appartient au code
2) si 10 a + b 15 il faut ajouter 6 au résultat
3) si a + b > 15 on ajoute 6 au résultat.
Exemples :
3 0011 5 0101 8 1000
+ + + + + +
5 0101 7 0111 9 1001
__ ____ __ _____ ___ ______
8 1000 12 1100* 17 1 0001**
+ +
0110 0110
______ _______
1 0010 1 0111
* : combinaison interdite : donc résultat erroné ;
** : résultat erroné, on est tenté de lire 11, ce qui est évidemment faux.
Exemples :
2 0010 3 0010
+ + + +
1 0001 4 0100
__ ____ __ _____
3 0011 7 0111 (interdit)
+
0110
____
1101
2) Un seul des 2 nombres est décalé : réponse correcte
Exemples : 4 0100
+ +
9 1111
__ ______
13 10011
1 3
3) Les 2 nombres sont décalés
Si la somme S 14 : retrancher 6 (en binaire pur)
Si la somme S 15 : réponse correcte
Exemples :
6 1100 7 1101
+ + +
8 1110 9 1111
__ ____ __ ____
14 11010 16 11100
Interdit -0110 1 6
_____
10100
1 4
Définition 1 :
Un code est dit auto-complémentaire (à 9) si pour 2 chiffres a et b tels que a+b = 9,
les bits de a sont obtenus en inversant ceux de b, et vice-versa.
Définition 2 :
Un code symétrique est un code tel que pour deux nombres symétriques par rapport
à la liste des codes, il suffit d'inverser les bits de l'un pour avoir ceux de l'autre : c'est
le cas des autos complémentaires.
On démontre qu'une condition nécessaire pour qu'un code pondéré sur 4 positions
soit auto complémentaire est que la somme des poids soit égale à 9.
Les seuls codes auto complémentaires des poids positifs sont les codes (3,3,2,1)
(2,4,2,1) (4,3,1,1) et (5,2,1,1). Par contre, on en trouve 13 avec des poids positifs ou
négatifs, par exemple (6, 4, 2,-3).
b. Codes binaires non pondérés
Dans ce groupe, nous en étudierons 2, qui sont parmi les plus utilisés : XS3 et GRAY.
Nombres Combinaisons
0 0 0 1 1
1 0 1 0 0
2 0 1 0 1
3 0 1 1 0
4 0 1 1 1
5 1 0 0 0
6 1 0 0 1
7 1 0 1 0
8 1 0 1 1
9 1 1 0 0
Ce code est symétrique et auto complémentaire. Il s'obtient en supprimant les 3
premières et les 3 dernières combinaisons du code binaire pur sur 4 bits : les
combinaisons interdites sont donc ici :
0000 0001 0010
1101 1110 1111
Pour les additions en XS3 :
- Si la somme décimale est inférieure à 10, la somme en XS3 est inférieure à 16 : et il
n'y a pas de report. La réponse correcte est alors obtenue en retranchant la valeur 3
(binaire : 0011) au résultat (3 en binaire = 0 en XS3).
- Si la somme décimale est supérieure à 10, il y a un report de 1 en XS3 : il faut alors
ajouter 3 au résultat obtenu pour avoir la réponse correcte.
Exemples :
3 0110 5 1000 8 1011
+ + + + +
Code de Gray
Ce code a déjà été vu en partie, lorsque nous avons étudié les diagrammes de
Karnaugh. Nous allons l'étudier ici de manière générale. Voici comment il se
construit.
Numériques Combinaisons
0 0 0 0 0
1 0 0 0 1
2 0 0 1 1
3 0 0 1 0 0
4 0 1 1 0 1
5 0 1 1 1 2
3
6 0 1 0 1
4
7 0 1 0 0 Code réfléchi de Gray
5
8 1 1 0 0 6
9 1 1 0 1 7
10 1 1 1 1 8
11 1 1 1 0 9
12 1 0 1 0
13 1 0 1 1
14 1 0 0 1
15 1 0 0 0
Sur le diagramme de Karnaugh
Le code de Gray se caractérise par le fait qu'on passe d'une combinaison à la suivante
immédiate en changeant un seul bit. Si on appelle distance entre deux caractères
codés, le nombre de bits qui changent lorsqu'on passe d'un caractère au caractère
consécutif suivant, alors celle-ci est de un pour le code de Gray.
Définition :
On dira qu'un code est réfléchi ou cyclique si deux caractères adjacents ont une
distance de un : c'est le cas du code de Gray tel que le représente le diagramme ci-
dessus. On peut constater dessus que pour la représentation des chiffres décimaux, le
code DCB de Gray n'est pas réfléchi, alors que le code XS3 l'est.
Nous avons donné plus haut quelques-unes des combinaisons retenues pour les
codes de Gray décimaux. Ce ne sont pas les seules, on pourrait par exemple avoir
aussi
1) 2)
1) est bien un code de Gray à 10 positions, en plus cyclique, mais il ne peut garder la
distance unité en cas de plusieurs décades.
2) est un code de Gray réfléchi, où le complément à 9 s'obtient par simple
complémentation du digit de plus faible poids. Les chiffres pairs ont un nombre
impair de 1 et les chiffres impairs, un nombre pair de 1.
On peut remarquer que dans le code réfléchi de Gray, le complément à 9 s'obtient en
prenant le complément du digit de plus fort poids.
Les codes de Gray se prêtent très mal aux opérations arithmétiques, n'étant pas
pondérés. Par contre leur utilisation est très répandue dans la transmission des
informations, en particulier les codes réfléchis. Ceci est en plus très important
lorsqu'on veut éviter les transitions sur plusieurs positions. Ils sont très intéressants
pour réaliser des codeurs et les réseaux asynchrones.
Supposons que, pour une raison quelconque, nous ayons des informations dans le
code de Gray, et qu’on ait aussi à effectuer des opérations qui ne sont pas commodes
avec ce code. Dans ce cas, se fait sentir la nécessité de convertir cette information
dans un autre code plus approprié. Par exemple, comment passer du code binaire
pur au code de Gray, et vice versa. Appelons b3 b2 b1 b0, les 4 bits d’informations en
binaire pur ; la même information en code de Gray sera obtenue en déterminant les
bits g3 g2 g1 g0 correspondants par les relations suivantes, tirées de la présente table :
Au lieu d’avoir 5 éléments binaires, on en a ici 6, ce qui permet d’avoir un code plus
adapté pour les calculateurs, et en plus, les 10 chiffres décimaux sont codés à l’aide
des combinaisons dont les 4 éléments de plus faible poids donnent leur équivalent
binaire. Ces codes sont bien nombreux, aussi nous n’insistons pas là-dessus. On en
utilise sur des bandes magnétiques.
b. Code Hollerith
C’est le code dans lequel étaient perforées les cartes à 80 colonnes. Chaque caractère
par exemple correspond à un certain nombre de perforations sur la carte. Il y a au
total 12 perforations possibles, mais les chiffres sont perforés sur une seule position,
les lettres alphabétiques sur 2 positions, et les autres caractères sur 2 ou 3.
c. Codes télégraphiques à 5 moments
Il a été mis au point pour les échanges télégraphiques, mais ne permet aucune
opération de traitement. Il est encore utilisé sur les réseaux actuels de télex. Ce code
n’utilise que 5 éléments binaires, ce qui permet uniquement 32 combinaisons. Pour le
rendre plus efficace, on utilise des caractères pour indiquer dans quel sous jeu de
caractères (lettres ou chiffres) il faut considérer les codes qui suivent :
L’attribution des combinaisons aux différentes lettres a été faite par les
télégraphistes, de manière que celles les plus simples correspondent aux lettres très
fréquemment utilisées.
d. Code ISO à 7 moments significatifs
C’est un code à 8 moments, antérieur au code ISO. Il est souvent utilisé pour la
commande des organes périphériques électromécaniques (les imprimantes rapides
par exemple). Ce code a été adopté dans plusieurs machines pour la représentation
interne des données alphanumériques. Il n’est pas très dense, car on n’utilise qu’une
partie des 256 combinaisons possibles. Celles utilisées<seront choisies de manière à
faciliter le passage au code Hollerith.
f. Codes de HAMMING
Présentation :
Ce sont des codes qui ont pour particularité de permettre la détection et/ou la
correction des erreurs. Dans ces codes, certains digits vont servir uniquement au
contrôle, et vont alors occuper des positions particulières en fonction du nombre de
bits du code. Les positions des bits de contrôle sont les puissances successives de 2 :
1, 2, 4, 8, …
Le code de Hamming est utilise dans les transmissions de données car il permet de
détecter et de corriger une erreur survenue dans un bloc transmis.
Principe du codage.
On fixe un entier k et on code chaque bloc de m = 2k – k - 1 bits de données par un
bloc de n = 2k - 1 bits en ajoutant donc k bits, dits de correction, a certaines positions
au bloc de m bits. Le tableau suivant indique les nombres de bits de correction, de
données pour différentes valeurs de k.
k =3 m=4 n=7
k=4 m=11 n=15
k=5 m=26 n=31
1 0 1 0 1 0 1
H 0 1 1 0 0 1 1
0 0 0 1 1 1 1
k1 m1 m 2 m 4 Omod ulo 2
k 2 m1 m3 m4 Omod ulo 2
k 3 m 2 m3 m4 O
mod ulo 2
Remarque : les opérations d’addition sont faites à modulo 2. Par exemple : 1+0=1 ;
1+1=0 ; 1+1+1=1 ; etc.
Le bloc A parfaitement déterminé est alors envoyé.
s3 s2 s1 est le code binaire de position de l’erreur dans le bloc C qui est corrigée en
changeant le bit à la position à 1 s’il était à 0 et vice versa.
Exercice :
1) On souhaite envoyer le bloc de données 1110. Déterminer le bloc A que l’on
envoie effectivement en utilisant le code de Hamming.
2) On reçoit le bloc 0011101. Vérifier qu’il ne contient pas d’erreur et corriger le
éventuellement. Ecrire alors le bloc de données envoyé.
Dans les opérations arithmétiques par exemple, on s’aperçoit que les circuits du code
binaire pur sont plus faciles à réaliser que ceux des codes décimaux (codés binaires) ;
Ici, on mettra en œuvre des dispositifs par exemple pour détecter les combinaisons
interdites, ce qui permet, pour les codes DCB, de dépister les erreurs. De même, on
peut spéculer sur les bits de parité, sans obtenir des codes tels ceux de Hamming.
Un code sera d’autant plus efficace que le nombre d’erreurs qu’il engendre est réduit,
sa mise en œuvre fiable, avec sur le plan technologique une réalisation qui n’entraîne
pas un bruit de fond important, capable de perturber le message transmis.