Coursmi 2
Coursmi 2
Gaffé 1
Électronique Numérique
Cours
C. Belleudy, [Link]́
version 1.2
2 Électronique Numérique
Chapitre 1
Les mémoires
1.1 Introduction
La somme d’informations que doit traiter tout système automatique nécessite l’utilisation de cir-
cuits ayant la capacité de conserver des données soit figées, soit volatiles. Ces circuits capables de
recevoir et de restituer les informations portent le nom de MEMOIRE.
Cellule mémoire : Plus petite subdivision d’une mémoire dans laquelle un élément d’information
a été ou peut être introduit, dans laquelle il est ou peut être conservé et de laquelle il peut être extrait.
Il existe différentes technologies de cellule qui caractérisent d’ailleurs la catégorie de mémoires as-
sociée. Conceptuellement, on representera souvent une cellule mémoire par un registre 1 n bits c’est
à dire n bascules D synchronisée sur la même horloge. Les n bits caractérisent le format de donnée
que l’on peut mémoriser : Historiquement 8 bits (un octet), on trouve aujourd’hui des mémoires de
16,32 voire 64 bits. Ils sont notés Dn , Dn−1 , . . . , D0 .
D D Q D D Q D D Q
7 7 6 6 0 0
+
Q n =D n quand H=1
H +
Q =Q sinon
n n
Information volatile : Information dont le contenu est perdu lorsque les tensions d’alimentation
ne sont plus appliquées ou, dans le cas, d’une mémoire à fonctionnement dynamique lorsque les cel-
lules mémoires ne sont pas rafraı̂chies correctement.
1
cf. cours de première année, second semestre
3
4 Électronique Numérique
Chaque mémoire contient un grand nombre de cellules élémentaires. Pour sélectionner une cel-
lule particulière parmi les autres, on identifie chaque cellule par un numéro unique que l’on appelle
adresse (comme une adresse postale). Cette adresse est elle-même codée en binaire et est notée
An , An−1 , . . . , A0 . Bien-sur, plus la mémoire a une capacité importante, plus n est grand. Atten-
tion, la taille de la cellule mémoire est totalement indépendante de celle de l’adresse. Pour spécifier
complètement une mémoire, il est bien indispensable de donner les deux paramètres ; par exemple :
32k x 8 caractérise une mémoire contenant 32768 cellules de 8 bits chacune.
Les cellules élémentaires mises à la suite forment un tableau (espace mémoire). Chaque ligne
correspond à une adresse unique. Toutes les adresses transitent par les mêmes fils qui forment le bus
d’adresse Toutes les données écrites dans les cellules élémentaires transitent également par un réseau
unique de fils appellé bus de données en écriture. Il existe symétriquement le bus de données en
lecture qui est souvent commun avec le précédent, on parle alors de bus de données bidirectionnel.
Le sens de transfert est alors défini par le signal supplémentaire R/W et la validation par cs (bus de
contrôle).
adresse 0 0 0 0 1 0 1 1 0
adresse 1 1 1 0 0 0 1 0 0
An
décodeur
CS
A0 R/W
bus d’adresses
n
adresse 2 -1
D7 D0
bus de données
– ROM (Read Only Memory) : L’écriture est faite, dans ces mémoires, de manière définitive par
le fabricant ; l’utilisateur ne peut que lire son contenu.
– PROM (Programmable Read Only Memory) : l’utilisateur écrit le contenu de la mémoire à
l’aide d’un programmateur de mémoires ; après cette opération, le contenu y est écrit définitivement
et ne peut plus être modifié ; il ne peut qu’être lu. Les cellules élémentaires sont constituées de
fusibles.
– EPROM (Erasable Programmable Read Only Memory) : le contenu de la mémoire peut être
effacé à l’aide de rayons ultra-violets, ce qui permet une nouvelle programmation.
– EEPROM (Electrically Erasable Programmable Read Only Memory) : le contenu de la mémoire
peut être effacé électriquement.
Chaque mémoire doit être capable d’atteindre n’importe quelle cellule élémentaire via son adresse.
Pour cela elle doit contenir la logique combinatoire nécessaire.
Si nous y regardons de plus près, ce système logique doit sélectionner une de ses sorties parmi n
en fonction d’un nombre binaire en entrée. C’est exactement la définition du démultiplexeur 1 vers
n vue en première année !
2
Ces aspects technologiques ont une grosse incidence sur les performances : il faut savoir par exemple que le proces-
seur du ZX81 passait plus de 90de son temps à rafraı̂chir sa DRAM !
6 Électronique Numérique
Y0
Y1
E Yi Yi = E si S=i
Y2 −2n
Y2 n −1
S S
n−1 0
L’entrée du DEMUX est reliée au signal d’activation global de la mémoire cs. Chaque sortie
sert d’horloge de validation pour la cellule sélectionnée. Bien-sur, n bits d’adresses nécessitent un
démultiplexeur à 2n sorties.
A l’inverse, les données en lecture sont remultiplexées pour converger vers un bus unique (non
représenté sur le schéma qui suit).
Remarque : En pratique, les signaux d’activation sont souvent actifs niveau bas d’ou leur nom cs
pour ChipSelect.
D0
D7
D7 D6 D0
D D D
x8
D7 D6 D0
D D D
DEMUX
1 −> 65536
cs
x 65536
D7 D6 D0
D D D
A15 A0
Dans la réalité, un système à microprocesseurs possède toujours plusieurs mémoires séparées (au
moins une RAM et une ROM). Cet ensemble est vu comme une mémoire unique globale par le micro-
processeur et est appelé espace d’adressage.
Comme le bus de données est commun à toutes les mémoires, il est indispensable d’ajouter des
composants logiques pour activer une mémoire à la fois en fonction de l’adresse qui nous intéresse.
Cette tâche est classiquement dévolue à des démultiplexeurs spéciaux appelés décodeurs donc le rôle
est d’activer le bon cs.
Une autre façon de l’expliquer, consiste à remarquer que tout démultiplexeur 1 → 2 n peut être
remplacé par deux démultiplexeur 1 → 2n−1 et d’un démultiplexeur 1 → 2. Il est donc toujours
possible de remplacer une mémoire unique à un seul démux. interne par une mémoire unique à trois
démux. internes, puis par deux mémoires plus petites (dont chacune contient un démux local) et un
démultiplexeur externe.
An−1
ROM
A0
cs
0
DEMUX
cs
1 −> 2
1 An−1
RAM
A0
An
cs
Classiquement, on utilise les lignes d’adresse hautes pour sélectionner un boitier mémoire plu-
tot qu’un autre et conserver ainsi la numérotation des lignes basses. Le nombre de lignes d’adresses
qui attaque le démultiplexeur définit le nombre de plage mémoire différente. La première adresse de
chaque plage est appellée “adresse de base”. Chaque plage a la même taille et couvre au minimum
l’espace d’adressage de la mémoire locale.
L’exemple qui suit montre l’organisation d’un espace d’adressage 16 bits (64k). Les adresses sont
exprimées en hexa (regroupement des adresses par 4) pour plus de concision.
8 Électronique Numérique
A13 D7
RAM
A0
16k
D0
cs
A13 D7
RAM
A0
16k
D0
0 cs
DEMUX A13 D7
cs
1 −> 4 RAM
1 A0
16k
D0
cs
A15 A14
A13 D7
ROM
A0
16k
D0
cs
Les démultiplexeurs peuvent être cascadés. Les sorties peuvent être recombinées. Dans ce cas il ap-
parait des sous-plages de taille plus petite ...
[Link], [Link]́ 9
A12 D7
RAM
A0
8k
D0
cs
A13 D7
RAM
00
DEMUX A0
16k
01
1 −> 4 D0
10 cs
0
DEMUX 11 A12 D7
cs 1 −> 2 RAM
1 A0
8k
A14 A13
D0
cs
A15
A14 D7
ROM
A0
32k
D0
cs
Remarque 1 : Une plage peut être plus grande que la mémoire associée si celle-ci ne possède pas
assez de bits d’adresses : dans ce cas la mémoire voit plusieurs adresses différentes comme une seule
et même adresse. On parle alors “d’adresse mirroir”.
A13
RAM
A0
cs
0
DEMUX
cs
1 −> 2
1 A14
ROM
A0
A15
cs
Sur le schéma qui précède, la RAM réagit de la même manière à la présentation des adresses
$0000 et $4000 car elle est insensible au bit A14 . De même toute donnée dont l’adresse est comprise
entre $0000 et $3FFF se reverra entre $4000 et $7FFF.
Remarque 2 : La multiplication des mémoires est également intéressante lorsque le bus de données
est plus grand que celui des mémoires disponibles. On connecte alors plusieurs mémoires identiques
sur les mêmes adresses et le même cs de telle sorte que chacune prenne une partie du bus de données :
par exemple D0-D7,D8-D15 pour un bus de données 16 bits et des mémoires 8 bits de données.
D15
D8
D7
D0
D7
D0
D7
D0
2k x 8 2k x 8
A10
A0
cs
A10
A0
cs
Or toute fonction boolénne peut être complêtement spécifiée par une table de vérité ; chaque ligne
correspondant à une combinaison unique des entrées.
Il suffit donc d’affecter chaque bit d’adresse de la mémoire à une entrée et d’écrire à chaque
adresse An , ...A0 l’image f (An , ...A0 ).
adresse 0 0 0 0 1 0 1 1 0
a b c f(a,b,c)
adresse 1 1 1 0 0 0 1 0 0
0 0 0 1
An 0 0 1 0
0 1 0 0
décodeur
CS 0 1 1 1
1 0 0 1
A0 R/W 1 0 1 1
1 1 0 0
bus d’adresses
n 1 1 1 1
adresse 2 −1
D7 D0
bus de données
En fait, une mémoire possède plusieurs bits de données : Dans le cas d’une mémoire 8 bits, on
pourra synthétiser 8 fonctions indépendantes simutanément ...
Remarque : A la main, cette solution est pratique tant que le nombre d’entrée est faible, mais
devient rapidement laborieuse pour n > 4 car il faut écrire 2n lignes !
12 Électronique Numérique
Chapitre 2
([Link]
13
14 Électronique Numérique
Em
E0
Sp
F
S0
Sp
F
S
0
Em
+ E +
0
Qn Qn
G + G +
Q0 Q0
Qn Qn
Q0 Q0
H H
MEALY MOORE
Exemple 1 : Les compteurs vu l’année dernière sont en fait un cas particulier de machine de Moore
ou la fonction F est l’identité (les sorties sont directement les états du système). Considérons ainsi un
compteur modulo 4 doté d’une commande d’incrémentation. Le graphe d’états associé à ce système
est présenté figure 2.3.1. Il comporte quatre états internes codable par deux variables d’état Q 1 , Q0 et
une entrée incr. Ici, les sorties S0 et S1 sont directement les variables d’état S0 = Q0 et S1 = Q1 .
0 0 0 0
entrées
1 1 1
00 01 10 11 X Y
incr
En rêgle générale, sur les systèmes synchrones le codage des états n’a pas d’importance 1 . On
le choisira après coup de telle sorte qu’il simplifie les équations des sorties et de changement d’état.
Dans un premier temps, on identifiera juste les états par des lettres.
0 0 0 0
entrées
1 1 1
A B C D X Y
incr
Complètons maintenant ce compteurs par trois sorties : valeur S du compteurs sur deux bits et T
signal de fin de cycle. Nous obtenons deux graphes différents suivant le choix de synthèse (Mealy ou
Moore).
0 0 0 0
entrées
1 1 C 1 D X Y
A B
000 001 010 111 Sorties Sorties
incr
1 Sorties=TS 1S 0
MOORE
1/000
MEALY
Exemple 2 : En Informatique, vous avez peut être déjà étudié des “graphe de transition” capable de
reconnaitre les expressions régulières. Il sagit bien de la même notion de systèmes séquentiels.
Considérons par exemple, l’expression régulière écrite avec la notation de Keene : (a|b) ∗abb
Cette expression peut être reconnue par l’automate suivant en synthèse de Moore :
1
Ce n’est pas du tout le cas sur les systèmes asynchrones où l’on se rapprochera le plus possible d’un codage de Gray
pour éviter de tomber dans des états non prévus !
16 Électronique Numérique
a a
a b b D
A B C
a OK
a
b b
On remarque que cet automate est non déterministe car l’occurence de a peut laisser l’automate
dans l’état A ou l’amener dans l’état B. Or notre finalité est de synthétiser physiquement les automates.
Donc nous lui préfèrerons la version déterministe suivante :
a 0
a b b D A 0 B 1 C 1 D
A B C
a OK 0 0 0 0 1
a 0
b a 1 0
b E 1
E
codage de a,b et OK 0
b 1
– La “notation liste” consiste à donner l’état des variables qui permettent la transition : ainsi
“01” signifie que la première variable (ex. a) doit être à 0 et la seconde (b) à 1 pour transiter.
– La “notation équationnel” consiste à donner l’équation logique entre les variables qui ca-
ractérise la transition. Pour le même exemple cela donnerait a.b. Cette notation est souvent
préférée à la première car elle n’impose pas d’ordre des variables.
La figure qui suit montre différents exemples d’équivalence entre les deux notations :
[Link], [Link]́ 17
10 a.b
0X a
X1 b
XX 1
1X
a+b
X1
Dans le cas de Moore, on peut isoler les sorties dans une table de correspondance à part car un
état stabilisé impose toujours la même combinaison de sortie indépendement des entrées.
MOORE
18 Électronique Numérique
Chapitre 3
Em
E0
Sp
F
S0
Sp
F
S
0
Em
+ E +
0
Qn Qn
G + G +
Q0 Q0
Qn Qn
Q0 Q0
H H
MEALY MOORE
L’objectif de ce travail de synthèse est de déterminer les équations logiques des fonctions F et G
des machines de Mealy ou de Moore. Cela revient à :
– d’une part déterminer les équations de chaque entrée des bascules afin de conditionner leurs
évolutions lors de la prochaine impulsion d’horloge. C’est la même problèmatique que la
syntèse des compteurs vu l’année dernière : à un instant t, quelles sont les valeurs à appli-
quer aux entrées pour qu’à l’impulsion d’horloge suivante l’état prenne la valeur spécifiée par
l’automate ;
– d’autre part déterminer les équations des sorties en fonction de l’état seul (machine de Moore)
ou de l’état et des entrées (machine de Mealy).
19
20 Électronique Numérique
00 / 00 11 / 00
10 / 10 01 / 01 e1e0 / S 1S 0
11 / 01
0x / 10 B C
x0 / 00
10 / 10 x1 / 01
1x / 00
D E
1x / 00 0x / 01
De cet automate, nous pouvons extraire la table de changement d’état aussi appelée table
d’évolution :
état e1 .e0 e1 .e0 e1 .e0 e1 .e0
A A /S1 , S0 C /S1 , S0 B / S 1 , S0 A / S 1 , S0
B B /S1 , S0 B /S1 , S0 D / S 1 , S0 A / S 1 , S0
C B /S1 , S0 E /S1 , S0 B / S 1 , S0 E / S 1 , S0
D E /S1 , S0 E /S1 , S0 E / S 1 , S0 E / S 1 , S0
E E /S1 , S0 E /S1 , S0 D / S 1 , S0 D / S 1 , S0
On numérote en binaire tous les états. Ici, il y a 5 états différents, d’où trois bits nécessaires :
Q2 ,Q1 ,Q0 .
A 000
B 001
C 010
D 011
E 100
Le codage n’a pas d’importance a priori. Il a juste une incidence sur la complexité des équations
d‘état et des sorties obtenues (cf. 3e cycle universitaire !). Pour une question d’initialisation correcte
à la mise sous tension du système, nous choisirons tout de même A → 000 ou A → 111.
[Link], [Link]́ 21
Q2 Q1 Q0 e1 e0 Q2 + Q1 + Q0 +
0 0 0 0 0 A→A 0 0 0
0 0 0 0 1 A→C 0 1 0
0 0 0 1 0 A→B 0 0 1
0 0 0 1 1 A→A 0 0 0
0 0 1 0 0 B→B 0 0 1
0 0 1 0 1 B→B 0 0 1
0 0 1 1 0 B→D 0 1 1
0 0 1 1 1 B→A 0 0 0
0 1 0 0 0 C→B 0 0 1
0 1 0 0 1 C→E 1 0 0
0 1 0 1 0 C→B 0 0 1
0 1 0 1 1 C→E 1 0 0
0 1 1 0 0 D→E 1 0 0
0 1 1 0 1 D→E 1 0 0
0 1 1 1 0 D→E 1 0 0
0 1 1 1 1 D→E 1 0 0
1 0 0 0 0 E→E 1 0 0
1 0 0 0 1 E→E 1 0 0
1 0 0 1 0 E→D 0 1 1
1 0 0 1 1 E→D 0 1 1
1 1 x x x - x x x
1 x 1 x x - x x x
De cette table de vérité, on déduit par Karnaugh les équations logiques des variables d’état :
Q0 + = Q2 .e1 + Q1 .Q0 .e0 + Q1 .Q0 .e1 + Q1 .Q0 .e0 + Q1 .Q0 .e1 .e0
Q1 + = Q2 .e1 + Q1 .Q0 .e1 .e0 + Q2 .Q1 .Q0 .e1 .e0
Q2 + = Q1 .Q0 .e0 + Q1 .Q0 + Q2 .e1
Finalement, pour obtenir les expressions des entrées des bascules, il faut (comme en première
année) procéder par identification avec l’expression de la bascule considérée :
Q2 Q1 Q0 e1 e0 S1 S0
0 0 0 0 0 0 0
0 0 0 0 1 0 1
0 0 0 1 0 1 0
0 0 0 1 1 0 0
0 0 1 0 0 1 0
0 0 1 0 1 1 0
0 0 1 1 0 1 0
0 0 1 1 1 0 1
0 1 0 0 0 0 0
0 1 0 0 1 0 1
0 1 0 1 0 0 0
0 1 0 1 1 0 1
0 1 1 0 0 0 0
0 1 1 0 1 0 0
0 1 1 1 0 0 0
0 1 1 1 1 0 0
1 0 0 0 0 0 1
1 0 0 0 1 0 1
1 0 0 1 0 0 0
1 0 0 1 1 0 0
1 1 x x x x x
1 x 1 x x x x
00 11
10 01 e 1e 0
11
B C
0x
S1 S0
x0
10 x1
1x
D E
S1 S0
1x 0x
Donc si nous prenons le même codage des états nous obtiendrons les mêmes équations de chan-
gement détat.
Q0 + = Q2 .e1 + Q1 .Q0 .e0 + Q1 .Q0 .e1 + Q1 .Q0 .e0 + Q1 .Q0 .e1 .e0
Q1 + = Q2 .e1 + Q1 .Q0 .e1 .e0 + Q2 .Q1 .e1 .e0
Q2 + = Q1 .Q0 .e0 + Q1 .Q0 + Q2 .e1
Par contre, il est nécessaire d’établir pour les sorties la table de correspondance avec les états.
état S1 S0
A 0 0
B 1 0
C 0 1
D 1 0
E 0 1
24 Électronique Numérique
S1 = Q 0
S0 = Q2 + Q1 .Q0
Dans un premier temps, on établit comme précédemment la table d’évolution associé à l’auto-
mate. A partir de cette dernière et de la table de fonctionnement de la bascule utilisée, on construit un
autre tableau où les sorties représentent les valeurs à appliquer aux entrées des bascules. Le rôle de la
table de fonctionnement est de donner la valeur des entrées à appliquer pour les quatre cas possibles
d’évolutions de la bascule considérée.
Dans le cas d’une bascule JK, cette table est (rappel de 1e année) :
Q Q+ J K
0 0 0 x
0 1 1 x
1 0 x 1
1 1 x 0
0
entrée e
A sortie OK
0
1
1
C 1
B
OK
0
[Link], [Link]́ 25
état e e
A A B
B A C
C B A
qui devient après codage des états (A → 00, B → 01,C → 10) la table de vérité :
Q1 Q0 e Q+1 Q+0
0 0 0 0 0
0 0 1 0 1
0 1 0 0 0
0 1 1 1 0
1 0 0 0 1
1 0 1 0 0
1 1 0 x x
1 1 1 x x
Q1 Q0 e Q+1 Q+0 J1 K1 J0 K0
0 0 0 0 0 0 x 0 x
0 0 1 0 1 0 x 1 x
0 1 0 0 0 0 x x 1
0 1 1 1 0 1 x x 1
1 0 0 0 1 x 1 1 x
1 0 1 0 0 x 1 0 x
1 1 0 x x x x x x
1 1 1 x x x x x x
J1 = Q1 .e
K1 = 1
J0 = Q1 .e + Q1 .e
K0 = 1
Ces tables nous permettent de déduire aisément les équations logiques des entrées des bascules. Il
y a deux fois plus de Karnaughs à dessiner, mais ils contiennent beaucoup plus d’indifférents ...
Ce problème reste vrai dans le cas général : Après synthèse, il faut “dérouler” les équations de
changement détat sur tous les états non spécifiés et regarder le comportement du système.
Q2 Q1 Q0 e1 e0 Q2 + Q1 + Q0 +
0 0 0 0 0 A→A 0 0 0
0 0 0 0 1 A→C 0 1 0
0 0 0 1 0 A→B 0 0 1
0 0 0 1 1 A→A 0 0 0
0 0 1 0 0 B→B 0 0 1
0 0 1 0 1 B→B 0 0 1
0 0 1 1 0 B→D 0 1 1
0 0 1 1 1 B→A 0 0 0
0 1 0 0 0 C→B 0 0 1
0 1 0 0 1 C→E 1 0 0
0 1 0 1 0 C→B 0 0 1
0 1 0 1 1 C→E 1 0 0
0 1 1 0 0 D→E 1 0 0
0 1 1 0 1 D→E 1 0 0
0 1 1 1 0 D→E 1 0 0
0 1 1 1 1 D→E 1 0 0
1 0 0 0 0 E→E 1 0 0
1 0 0 0 1 E→E 1 0 0
1 0 0 1 0 E→D 0 1 1
1 0 0 1 1 E→D 0 1 1
1 0 1 0 0 - 1 0 1
1 0 1 0 1 - 1 0 1
1 0 1 1 0 - 0 1 1
1 0 1 1 1 - 0 1 1
1 1 0 0 0 - 1 0 1
1 1 0 0 1 - 1 0 0
1 1 0 1 0 - 0 1 1
1 1 0 1 1 - 1 1 1
1 1 1 0 0 - 1 0 0
1 1 1 0 1 - 1 0 0
1 1 1 1 0 - 1 1 1
1 1 1 1 1 - 1 1 1
et le graphe complété :
[Link], [Link]́ 27
00 / 00 11 / 00
000
10 / 10 01 / 01
11 / 01
0x / 10 001 010
x0 / 00
0x 10 / 10 x1 / 01
1x / 00
1x
101 011 100
00 10 1x / 00 0x / 01
01
110
11
111
0x
1x
Sur ce graphe, nous voyons que le système peut localement se bloquer suivant les entrées, mais il
finit toujours par tomber dans un état spécifié.
Dans l’absolue, il faudrait également regarder l’incidence des états parasites sur les sorties !
ligne n−1
action k
n
compteur
décodeur
n −> 2
action k’
n
ligne 0
séquenceur
En fait, un séquenceur de base est une machine de Moore, qui a la propriété de ne posséder qu’un
cycle (celui du compteur sous-jacent) et aucune d’entrée.
1
second semestre, chapitre 7
28 Électronique Numérique
Action 1
Action n
Nous pouvons donc le synthétiser directement sans se référer au décodeur et le résultat obtenu
sera identique. D’ailleurs l’étude de la partie purement séquentielle est celle du compteur !
Mais nous pouvons également concevoir des séquenceurs plus complexe ou le cycle dépend d’une
ou plusieurs entrées.
R
1
x
x
O R
1 0
x
V V
0
Le cycle normal est R,R,V,V,O. Mais l’appel pı́éton peut conduire aux deux cycles plus courts :
R,R ou à R,R,V,O.
Chapitre 4
4.1 Introduction
Lorsqu’on désire effectuer la synthèse d’un système séquentiel, plusieurs solutions s’offrent en
fonction de la taille de l’application, du nombre d’exemplaires à fournir et du suivi du produit. Si
l’application est de faible complexité, il est préférable d’utiliser une solution câblée, car sa vitesse
est toujours plus rapide. Si de plus le nombre d’exemplaire à produire est grand, on s’orientera vers
la conception d’un circuit spécialisé (ASIC : Application Specific Integrated Circuits). Par contre,
si l’application est complexe et susceptible de subir des évolutions, l’utilisation de composants pro-
grammables (au sens informatique) est fortement conseillé : microprocesseurs et séquenceurs pro-
grammables.
action 1
n
compteur
décodeur
n -> 2
n n
action 2
29
30 Électronique Numérique
Bien sûr, ce séquenceur peut être directement conçu comme une machine de Moore.
Contrairement à leurs homologues câblés qui effectuent toujours la mème séquence, les séquenceurs
programmables interrogent en permanence une mémoire (par exemple RAM) pour déterminer :
adresse
compteur décodeur
commandes
Ce type de séquenceur présente un avantage sur le précédent du fait que l’on peut modifier le fonc-
tionnement du système dans une large mesure en inscrivant un nouveau contenu dans la mémoire, sans
toucher au câblage. Afin de constituer une partie commande entièrement microprogrammée, on in-
clut dans la mémoire les commandes à fournir à l’unité de traitement. Cette mémoire est alors appelé
mémoire de programme. Elle est associe à un compteur spécifique : le Compteur Programme CP (ou
PC en englais) dont elle contient également les différentes adresses de saut. Chaque case mémoire est
appelée instruction.
En général, le compteur programme doit être capable d’executer un certain nombre de tâches par
exemple :
autorisation de comptage
remise à 0 chargement
entrées sorties
compteur
H
F IG . 4.3 – Description externe du compteur programme
Pratiquement tous les compteurs du commerce ont ces possibilités. A chaque adresse fournie
par le compteur, correspond une instruction du programme. Cette instruction est décrite en binaire
sous forme d’un mot de n bits. Ce dernier est partagé en zone ou champs spécifique à chaque bloc
fonctionnel qui en est destinataire.
L’explosion que l’on connait est lié à la vocation universelles des microprocesseurs. Le nombre
de fonctions qu’ils réalisent est très étendu, ce qui les rend apte à traiter n’importe quelle application,
sous réserve des contraintes de vitesse.
environnement
périphériques mémoires
adresses
données
controle
micro-processeur horloge
Le constructeur fournit la liste des fonctions réalisées par le microprocesseur et les commandes à
appliquer à ce dernier pour les accomplir. Le concepteur peut alors :
– soit établir manuellement l’enchainement des fonctions à réaliser à partir de l’organigramme et
placer cette séquence de code en mémoire,
– soit implémenter le système dans un langage évolué qui puisse être compilé (c’est à dire traduit
dans la séquence de code précédente) de manière automatique.
0
registre intermédiaire 8 MUX
de donnees 2 −> 1 1
8
8
registres
bus
0 données
CCR
equal
MUX
2 −> 1
UAL
AL
8
8
0 11
8
8 10
8 8
BL 01
bus
8 MUX
adresse
opcode 4 −> 1
compteur 8
00
programme
load BL
registre equal
d’instruction load AL
5 5 load CCR
adrREG
Séquenceur
opcode
selectREG
incPC
loadPC 2
select adr
R/W
memCS
load instruction
load data
H
RESET
– chargement de l’opcode,
– traitement du mode d’adressage,
– traitement de l’instruction associée à l’opcode et au mode d’adressage.
t1
chargement
opcode
t2
t3 t6
t4 t5
t9
traitement
t7 t8 t10
du mode
t11
d’adressage
t12
t13 t14
t15
t18 t19
t16 t17
traitement
de l’instruction
t21 t22
t20 t23
t24
Dans cet exemple, l’opcode occupe 5 bits : 3 bits sont réservés pour le type d’instruction, 2 bits
servent à définir le mode d’adressage de chargement
OPCODE
0 0 0 x x x y y
Pour vous familiariser avec vos futurs enseignements d’assembleur, nous avons pris une syntaxe
du jeu d’instruction proche du Pentium.
Remarques :
Ce processeur a deux opcodes particuliers qui ne respectent pas les tableaux précédents.
– 00000100 qui s’écrit mov BL,AL
– 00011100 qui s’écrit mov [BL],AL
les opérations de comparaison cmp permettent de positionner le bit equal du registre CCR, lui
même utilisé par les instructions je et jne.
Les transparents suivants montre comment l’instruction add AL,3 est traitée par le processeur :
[Link], [Link]́ 37
38 Électronique Numérique
[Link], [Link]́ 39
Pour argumenter notre propos, considérons l’exemple suivant : On veux calculer la somme des
éléments d’un tableau. Ce code peut s’écrire simplement en langage C.
somme = 0;
for (n=0; n!= 10; n++)
{
somme = somme + tab[n];
}
En supposant que “somme” est rangée en mémoire à l’adresse 255, “n” à l’adresse 254 et “tab”
(tableau de 10 octets) à l’adresse 200, un compilateur C pourrait générer de manière automatique et
systématique le code pour notre processeur.
40 Électronique Numérique
somme = XXX
qui est écrit en réalité en binaire (code machine) pour être compris par le processeur :
adresse instruction
0 00000010 00000000
2 00000110 11111111
4 00011100
5 00000110 11111110
7 00011100
8 00000011 11111110
10 00001110 00000101
12 00010010 00100001
14 00001010 11001000
16 00000100
17 00000011 11111111
19 00011100
20 00000011 11111110
22 00001010 00000001
24 00000110 11111110
26 00011100
27 00011010 00001000
Pour simplifier1 , chaque ligne d’origine est toujours traduite par le même groupe d’instructions
assembleurs, (donc de codes machine). Ceci a l’avantage d’être systématique, mais à l’inconvénient
de générer fréquement du code inutile ou redondant. Après cette phase, il est donc indispensable
d’optimiser le code produit pour réduire les temps d’execution et la mémoire utilisée.
4.6 Conclusion
La conception avec microprocesseur simplifie notre étude car nous partons d’éléments connus.
Il reste cependant à concevoir des équipements spécifiques de l’application. La richesse richesse des
possibilités d’un microprocesseur permet d’offrir à l’utilisateur des prestations de plus haut niveau.
Mais l’utilisation de ce type de composants nécessite un personnel qualifié donc par conséquent un
gros effort de formation.
1
en fait ce serait plutot chaque structure ou constructeur du langage