ChapII bascules et automates.rtf

publicité
- II.1 -
CHAPITRE II :
CIRCUITS SEQUENTIELS ET SYNTHESE D'AUTOMATES
INTRODUCTION
Un circuit séquentiel est un circuit dont la sortie dépend de la séquence d'entrées appliquées
depuis la mise en route du circuit : ce circuit mémorise une information. La valeur de
l'information mémorisée forme l'état du circuit ; le support de cette information est les
variables d'états. Ces variables étant binaires, un circuit séquentiel à n variables d'état peut
prendre 2n états.
Nous n'étudierons ici que les circuits séquentiels synchrones : les changements de valeur de
chacune des variables d'état sont synchronisés par un signal ; quand ce signal n'est pas actif,
l'état ne peut pas être modifié.
Après avoir présenté l'élément de base des circuits séquentiels : les bascules, et leur utilisation
pour réaliser des registres (§1), le modèle d'automate synchrone sera présenté (§2), ainsi que
les méthodes de synthèse d'automates (§3).
1. CIRCUITS SEQUENTIELS DE BASE : BASCULES ET REGISTRES
1.1. DEFINITION
Une bascule est un circuit séquentiel élémentaire, capable de mémoriser une variable d'état et
- II.2 donc qui peut prendre 2 états (état 0 et état 1). Il existe différents types de bascules, qui
peuvent être classés par :
- leurs entrées de valeur,
- l'interprétation de leur(s) entrée(s) d'activation,
- les entrées d'initialisation dont elles disposent.
1.2. BASCULE D
Une bascule D (pour Delay) synchrone est un circuit à 2 états, qui a une entrée de valeur D,
une entrée d'activation Act, et 2 sorties y (état de la bascule) et .
La figure II-1 définit les entrées et sorties d'une bascule D, ainsi que son tableau de
fonctionnement.
D
Act
y
Act
D
y t+? t
y
non
oui
oui
*
0
1
yt
0
1
yt
: valeur courante de l'état
y t+? t : valeur suivante de l'état
a) schéma symbolique d'une bascule D
b) fonctionnement
Figure II-1 : bascule D
Tant qu'il n'y a pas activation de la bascule (Act : non), la bascule garde son état antérieur,
quelle que soit la valeur de l'entrée D. Quand la bascule est activée (Act : oui), l'état de la
bascule prend la valeur de l'entrée D : une bascule D permet de mémoriser une valeur entre
deux activations.
La bascule D est la plus utilisée, en particulier pour réaliser des registres, mais il existe d'autres
bascules avec des entrées de valeurs différentes.
1.3. BASCULES JK, RS, ...
Les bascules JK, RS et T sont définies ci-dessous (figures II-2 à II-4).
- II.3 -
R
y
S
y
Act
Act
R S
non
oui
oui
oui
oui
*
0
0
1
1
a) schéma symbolique d'une bascule RS
*
0
1
0
1
y t+? t
yt
yt
1
0
???
b) fonctionnement
Figure II – 2 : bascule RS
J
y
Act
J K
y t+?t
K
y
non
oui
oui
oui
oui
*
0
0
1
1
yt
yt
0
1
yt
Act
a) schéma symbolique d'une bascule JK
*
0
1
0
1
b) fonctionnement
Figure II-3 : bascule JK
y
T
Act
y
a) schéma symbolique d'une bascule T
Act
T
y t+?t
non
oui
oui
*
0
1
yt
yt
yt
b) fonctionnement
Figure II-4 : bascule T
Une bascule D peut être réalisée à partir d'une bascule RS (avec S = D et R complémentaire)
ou d'une bascule JK (avec J = D et K complémentaire). Une bascule T peut être réalisée à
partir d'une bascule JK (avec J et K = T).
1.4. FONCTIONS D'ACTIVATIONS
DES BASCULES
On distingue trois types de bascules d'après la fonction d'activation (l'interprétation de l'entrée
Act).
- II.4 1.4.A.
BASCULES DE TYPE VERROU (LATCH)
Il s'agit de bascules sensibles à la valeur de l'entrée Act :
- verrou sensible au niveau haut : la bascule est activée dès que (et tant que) Act = 1,
- verrou sensible au niveau bas : la bascule est activée dès que (et tant que) Act = 0,
ce qui veut dire que quand la bascule est activée, son état est égal à la valeur de l'entrée D : un
verrou est "transparent" quand il est activé.
Le fonctionnement temporel d'un verrou D sensible au niveau haut est indiqué à l'aide d'un
chronogramme donné dans la figure II-5 : la figure II-5 a) illustre le fonctionnement de type
verrou, tandis que la figure II-5 b) met en évidence les retards associés au fonctionnement (en
fait, c'est plus complexe : les retards sont différents suivant que l'état passe de 0 à 1 ou de 1 à
0 ; de plus, les retards sont différents pour la sortie y et la sortie .
Act
Act
D
D
y
??
y
? t1
?
a) verrou sensible au niveau haut
??
? t2
b) retards de positionnement de y
par rapport à Act ( ? t1) et D ( ? t2)
Figure II-5 : fonctionnement temporel d'un verrou D
Si l'entrée D change "au moment où" l'entrée d'activation Act passe de 1 à 0 (pour un verrou
sensible au niveau haut), l'état de la bascule après la fin de l'activation est indéterminé : on ne
sait pas si la nouvelle valeur de l'entrée a été mémorisée ou non. Des intervalles de temps t1
(temps de positionnement, tset-up) et t2 (temps de maintien, thold ) définissent l'intervalle de
temps où D doit être stable autour du passge de Act de 1 à 0.
1.4.B .
BASCULES SENSIBLES AU FRONT (EDGE-TRIGGERED FLIP -FLOPS )
Il s'agit de bascules sensibles aux changements de valeurs de l'entrée d'activation Act :
- bascule sensible au front montant : la bascule est activée quand Act passe de 0 à 1,
- bascule sensible au front descendant : la bascule est activée quand Act passe de 1 à 0,
ce qui veut dire qu'une telle bascule ne peut changer d'état qu'à des instants bien précis : la
(les) entrée(s) de valeur sont échantillonnées aux fronts de l'entrée d'activation.
- II.5 -
Act
Act
t1 t2
? ?
D
D
y
??
y
?
a) bascule sensible au front montant
?t
b) l'entrée D doit être stable autour
du front montant de Act
Figure II-6 : fonctionnement temporel d'une bascule D sensible au front
La figure II-6 illustre le fonctionnement temporel d'une bascule D sensible au front montant : il
faut que D soit stable t1 avant le front de Act (temps de positionnement, set-up time) et t2
après le front (temps de maintien, hold-time). La sortie varie ∆ t après le front de l'horloge. A
noter : ce retard est différent suivant le sens de variation ; passage de 0 à 1 : tpLH , passage de
1 à 0 : tpHL .
Au lieu d'utiliser la notation "état à t+∆t", on peut se contenter de définir le fonctionnement
d'une bascule sensible au front en termes de l'état à t + 1 en fonction de l'état et des entrées à
t, car les fronts d'activation des bascules permettent une discrétisation du temps.
1.4.C .
UTILISATION DES DIFFERENTS TYPES DE BASCULES
Supposons qu'on veuille concevoir un circuit à 2 états, qui complémente son état à chaque
activation (séquence d'états 0101010.....). Il semble logique d'utiliser le montage de la figure
II-7 :
- II.6 -
a) montage
proposé
y
D
Act
Act
Act
?????
D
y
?????
D
?t
?? ?
y
c) utilisation d'une bascule
sensible au front
Figure II-7 : utilisation des bascules
b) utilisation d'un verrou
Si la bascule utilisée dans le montage de la figure II-7 a) est de type verrou, le fonctionnement
n'est pas correct (Fig.II-7 b)) : dès que la bascule est activée, l'état y est complémenté ;
l'entrée D est complémentée en conséquence. Comme le verrou est toujours activé, son état
se complémente ..... On obtient bien en sortie la séquence 010101..., mais les changements
de valeurs ne sont pas synchronisés par l'entrée d'activation, et quand Act passe à 0, l'état de
la bascule est indéterminé.
Note : un verrou D toujours activé, rebouclé suivant le schéma de la figure II-7-a avec une
chaîne de 1 ou 2p +1 inverseurs permet de générer un signal d'horloge dont la période
dépend du nombre et du retard des inverseurs utilisés. Mais il ne s'agit pas s d'un circuit
séquentiel synchrone : le changement d'état n'est pas synchronisé par un signal (Act toujours
vrai).
Quand on utilise une bascule sensible au front, le fonctionnement est correct (Fig. II-7 c)), à
condition que l'entrée reste stable autour du front de Act, c'est-à-dire que :
∆ t + τ > t2,
où ∆ t est le temps de positionnement de y après le front d'activation, τ est le retard de
l'inverseur et t2 est le temps de stabilité nécessaire de D après le front (hold time).
Pour que le fonctionnement soit correct, on obtient la condition suivante:
- II.7 Min ( tpLH , tpHL .) + τ > thold .
En général, les bascules sont conçues de façon à ce que Min ( tpLH , tpHL .) > thold , donc cette
relation est toujours vérifiée.
De même, l'entrée d'activation Act doit respecter la contrainte suivante :
T > ∆ t + τ + t1 , où T est le temps entre 2 fronts de Act et t1 le temps minimal de
stabilité de D avant le front d'activation (set-up time)
ce qui fixe une fréquence maximale pour Act. Par exemple, si τ = 0 (cas des registres à
décalage, voir plus loin), on obtient :
T > tsetup + Max( tpLH , tpHL .)
Pour les circuits TTL utilisés en travaux pratiques (les temps caractéristiques se comptent en
nano-secondes), on obtient des fréquences maximales entre 16MHz (7474) et 75 MHz
(74AS74). Pour les technologies actuelles, où les temps se comptent en pico-secondes, on
obtient des fréquences maximales de l'ordre du GHz.
1.4.D.
BASCULES DE TYPE MAITRE-ESCLAVE (MASTER -SLAVE FLIP -FLOPS )
Pour réaliser le type de montage de la figure II-7, on peut aussi utiliser 2 bascules de type
verrou au lieu d'une bascule sensible au front : on connecte ces 2 verrous en série, en les
activant alternativement. On obtient une bascule de type maître-esclave (Figure II-8).
E1
D
DM
yM
DE
yE
Act
Act
E1
E2
a) bascule maître - esclave
y
E2
D
yM
y
b) fonctionnement temporel
Figure II-8 : bascule maître-esclave
Quand E1 vaut 1, la valeur de l'entrée D (connectée à DM) est recopiée dans le premier
verrou ; quand E1 passe à 0, la dernière valeur de D est mémorisée. Dès que E2 passe à 1,
cette valeur est recopiée dans le deuxième verrou et affichée sur la sortie y, où elle sera stable
jusqu'à la prochaine activation. Le premier verrou est appelé verrou maître, et le deuxième,
verrou esclave.
- II.8 Quand E2 = , cette bascule se comporte comme une bascule sensible au front descendant de
E1. La bascule ne se comporte correctement que si on a toujours E1 . E2 = 0 (nonrecouvrement des activations).
Attention, les bascules JK ou RS maître-esclave ne fonctionnent pas comme des bascules JK
ou RS sensibles au front : toutes les variations des entrées J,K ou R,S durant le niveau
d'activation de l'étage maître sont prises en compte, et le résultat est recopié dans l'étage
esclave quand il est activé. En général, il faut assurer que les entrées de l'étage maître sont
stables durant toute l'activation de cet étage.
1.4.E.
BASCULES AVEC PLUSIEURS ENTREES D'ACTIVATION
Certaines bascules (en particulier les bascules sensibles au front) ont plusieurs entrées
d'activation :
- une entrée d'horloge, notée H ou CK (clock), qui fournit le front d'activation,
- une entrée d'autorisation, notée En (enable), qui autorise l'activation.
Le tableau ci-dessous précise la prise en compte de ces entrées pour l'activation d'une
bascule sensible au front montant :
En
CK
Activation
0
*
non
1
$,0,1 non
oui
#
1
Pour une bascule qui ne doit pas évoluer à chaque période d'horloge, cela permet de
connecter directement l'entrée d'horloge de la bascule à l'horloge du système, et donc d'avoir
un signal pas trop dégradé et sans aléas, et d'utiliser l'entrée En pour autoriser ou non
l'évolution (la fonction d'autorisation peut être une fonction booléenne complexe).
Pour une bascule qui doit évoluer à chaque période d'horloge, l'entrée En est inutile : il suffit
de connecter l'horloge du système sur l'unique entrée d'activation de la bascule ... cette entrée
d'ailleurs est souvent appelée entrée d'horloge H ou CK dans les documentations.
1.5. ENTREES D'INITIALISATION DES
BASCULES
Outre les entrées de données et d'activation, les bascules ont des entrées d'initialisation à 0 et /
ou à 1 : ces entrées sont prises en compte indépendamment de l'entrée d'activation, et servent
à imposer une valeur initiale dans les bascules à la mise sous tension du circuit (Fig.II-9)
- II.9 -
C P Act D y
C
P
y
10 *
01 *
11 *
0 0 non
0 0 oui
0 0 oui
D
y
Act
*
*
*
*
0
1
t+1
0
1
?
y t
0
1
Figure II-9 : entrées d'initialisation
L'entrée C (Clear) force un état à 0, l'entrée P (Preset) force un état à 1.
Ces entrées permettent une initialisation asynchrone de l'état. On peut aussi assurer une
initialisation synchrone (pour initialiser à 0, D = init - à - 0 . état suivant , pour initialiser à 1,
D = init-à-1 . état suivant).
1.6. BASCULES
1.6.A.
EN TECHNOLOGIE MOS
BASCULES DYNAMIQUES
Nous avons vu au chapitre I (§3.1.) que des capacités réalisent, en technologie MOS, une
mémorisation rudimentaire : ce mécanisme peut être utilisé pour réaliser un verrou (Fig. II-10)
Act
D
y
Figure II-10 : point de mémorisation dynamique en technologie nMOS
Quand Act est à 1, la capacité associée à la grille du transistor de l'inverseur se charge si D
est à 1, se décharge si D est à 0 ; quand Act passe à 0, l'entrée de l'inverseur n'est pas
connectée et donc la dernière valeur de D est mémorisée (fonctionnement de type verrou).
Cependant, la capacité va se décharger lentement, et une valeur mémorisée à 1 va disparaître
au bout d'un certain temps : ce verrou n'est utilisable que quand il est activé régulièrement. On
parle d'un point de mémorisation dynamique.
A l'aide de deux verroux de ce type, activé l'un par Act, l'autre par son complémentaire, il est
possible de réaliser une bascule maître-esclave, qui elle aussi est dynamique.
- II.10 1.6.B .
BASCULES STATIQUES
Pour obtenir un verrou capable de mémoriser indéfiniment une information (tant que le circuit
st alimenté), la valeur de l'état est rebouclée en entrée quand Act= 0 (Fig. II-11).
Act
D
1
0
y
y
Figure II-11 : verrou statique
Un multiplexeur sélectionne soit l'entrée D, soit l'état courant yt, d'après la valeur de Act (ce
multiplexeur est en général réalisé par un réseau de transistors MOS (cf Fig.I-19)).
En utilisant 2 verrous à activations complémentaires, on peut réaliser une bascule maîtreesclave statique.
- II.11 -
3. REGISTRES ET MÉMOIRES
3.1. REGISTRE N BITS
Pour mémoriser un ensemble de n bits an-1, an-2, .., a0, ou mot de n bits, on utilise n bascules qui
sont activées en même temps, donc par le même signal (Fig.III-20).
a n-1
an-2
A
a0
ER
n
ER
registre R
yn-1
yn-2
y0
a) connexion des bascules
Y
n
b) schéma d'un registre
Figure III-20 : registre n bits
Le type de bascules utilisé est choisi d'après l'utilisation du registre. On utilise souvent des
bascules à deux entrées d'activation (horloge et autorisation) : l'horloge du système est
connectée à l'entrée d'horloge des bascules, le signal ER est connecté à l'entrée d'autorisation.
3.2. UTILISATION DES
REGISTRES EN ENTREE ET SORTIE D'UN CIRCUIT COMBINATOIRE
L'utilisation de registres permet d'échantillonner les sorties d'un circuit combinatoire
lorsqu'elles sont valides, et de lui fournir des valeurs stables en entrée (Fig.III-21)
ER1
R1
ER2
C
R2
Figure III-21 : registres d'entrée et de sortie d'un circuit combinatoire
L'intervalle de temps séparant le chargement de R1 (commande ER1), qui fournit de nouvelles
valeurs en entrée du circuit combinatoire, et le chargement de R2 (commande ER2) ne doit pas
être inférieur au temps de retard maximal du circuit C, ceci pour charger un résultat valide dans
R2 (il faut aussi tenir compte des temps de positionnement et de maintien des bascules).
La présence d'un registre en entrée d'un circuit combinatoire permet de disposer des variables
- II.12 sous les deux formes, normale et complémentée, car chaque bascule du registre affiche en
sortie ces deux formes.
3.3.REGISTRES
À DECALAGE
Si on veut décaler à gauche ou à droite les bits d'information mémorisés dans un registre, il
faut le munir de la capacité de décalage. Un circuit registre qui a deux fonctionnalités :
- décalage à droite (si decal = 1 et ER activé),
- chargement parallèle (si décal = 0 et ER activé)
est donné figure III-22.
En entrée de chaque bascule, un multiplexeur commandé par le signal "decal" permet de
sélectionner soit la valeur du bit de gauche, soit la valeur d'entrée. Dans tous les cas, il faut
activer le signal ER pour charger le registre.
e
a n-1
decal 1 0
ER
yn-1
an-2
a0
e
1 0
1 0
yn-2
ER
decal
n
registre R
Y
y0
a) conception d'un registre à décalage
A
n
b) schéma d'un registre
à décalage
Figure III-22 : registre à décalage à droite
Ce type de registre ne peut pas être réalisé avec des verrous : il y aurait un nombre
indéterminé de décalages durant le niveau actif de ER.
Il existe de nombreux types de registres à décalage :
- entrée parallèle, sortie parallèle plus décalage d'une position à droite (celui de la figure III22),
- entrée parallèle, sortie parallèle plus décalage d'une position à gauche,
- entrée parallèle, sortie parallèle plus décalage à gauche ou à droite,
- entrée série, sortie série et décalage à droite (entrée série : cf entrée e de la figure II-14,
sortie série : y0, un seul signal de commande),
-
etc.
- II.13 Exercices
III-16Proposer un circuit registre à décalage entrée série, sortie série et décalage à gauche ou
à droite d'une position ( 2 signaux de commandes : chargement du registre ER, / decald.
III-17Une pile de dimension k est un circuit qui permet de mémoriser k mots de b bits, et de
les relire dans l'ordre inverse de celui de leur arrivée (dernier entré, premier sorti, ou Last In,
First Out : LIFO). Ecrire un mot dans la pile est appelé "empiler" ou push, lire un mot dans la
pile est appelé "dépiler" ou pull (pop).
Proposer une réalisation d'une pile de 4 mots de 2 bits, à l'aide de registres à décalage tel que
celui réalisé dans l'exercice III-16. Les entrées et sorties du circuit sont indiquées figure III-23
a).
entrées
b
sorties
sorties
b
b
push
pull
entrées
b
push
PILE
k mots de
b bits
a) circuit pile
pull
pleine
vide
PILE
k mots de
b bits
b) pile avec indicateurs
de l'état de la pile
Figure III-23 : entrées / sorties d'un circuit pile
III-18Il est intéressant de connaître l'état de la pile : pile pleine (donc on ne peut plus faire
d'opération Push), pile vide (donc qui ne contient plus d'informations). Compléter le schéma
précédent pour générer ces indicateurs. La solution la plus simple consiste à prévoir un bit
supplémentaire dans chaque mot de la pile : V, indicateur de validité. Si V = 1, le mot associé
est valide, sinon le mot est invalide (ne fait pas partie de l'ensemble des informations stockées
actuellement dans la pile).
3. 4. REGISTRES
COMPTEURS
Si on veut pouvoir incrémenter et / ou décrémenter l'information contenue dans un registre
facilement, il est possible de le connecter à un circuit d'incrémentation et/ou de décrémentation
- II.14 pour obtenir un registre compteur/ décompteur. La figure III-24 donne le schéma d'un registre
compteur à entrée parallèle, sortie parallèle.
A
H
n
incr R
ch R
incr R
raz R
1
0
0
registre compteur
n bits : comptage
modulo 2 n
Y
ch R
*
0
1
Y t+1
Yt plus 1
Yt
A
la sortie max est égale à 1
quand le registre a la
valeur 2n -1
n
max
Figure III-24 : registre compteur
Ce compteur modulo 2n est activé à chaque période de l'horloge H. Il peut être forcé à 0 par
la commande raz R (asynchrone), ou à la valeur d'entrée A par la commande de chargement
ch R (prise en compte à l'activation par H). La commande d'incrémentation incr R est
prioritaire sur la commande de chargement. La sortie max est à 1 quand le compteur atteint sa
valeur maximale 2n –1 (dans certains compteurs, la sortie max est à 1 quand le compteur
passe de sa valeur maximale à 0). La sortie max permet de cascader des compteurs, par
exemple pour construire un compteur modulo 22n à partir de deux compteurs 2n .
Il existe de nombreux types de compteurs, avec ou sans entrées et / ou sorties parallèles, qui
effectuent l'incrémentation et la décrémentation ou seulement une des opérations.
Exercices
III-19Proposer une réalisation du registre compteur de la figure III-24 à l'aide d'un registre n
bits, d'un incrémenteur n bits et de n multiplexeurs 2 -> 1.
III-20Proposer une réalisation d'un registre compteur / décompteur à l'aide d'un circuit
incémenteur / décrémenteur.
3.5. INTERCONNEXION ENTRE REGISTRES : BUS
ET PORTES
3-ETATS
Supposons qu'on conçoive un circuit comportant un ensemble de registres et qu'il soit
nécessaire de pouvoir transférer les valeurs des registres de l'un à l'autre (Fig.III-25 a). Il est
possible de créer cette interconnexion à l'aide de multiplexeurs (Fig.III-25 b), mais cette
solution est très coûteuse en fils de connexion. En général, si il n'y a pas de nécessité de
transferts en parallèle, un bus (moyen de transport en commun) est utilisé : il s'agit d'un fil de
connexion par bit, auquel les bascules de même rang des différents registres sont connectées à
- II.15 travers des interrupteurs (Fig III-25 c). Les commandes de ces interrupteurs et celles de
chargement des registres permettent de commander les transferts de registre à registre
(Fig.III-25 d).
cB cC
cA
A
B
C
D
0123
ai
D
a) interconnexions à réaliser
0123
0123
0123
bi
ci
di
D
EA
D
EB
EC
SB
ai
SC
bi
D
EA
EA
di
D
EB
EC
SA
SD
ci
D
D
ED
fil i du bus
D
ED
b) connexions par multiplexeurs
pour les bits de rang i
A
SA
cD
SC
EB
B
SB
bus
SD
C
EC
ED
D
transfert de B dans D : SB = 1 et ED = 1
c) connexion par bus pour
les bits de rang i
d) schéma global
Figure III-25 : interconnexion par bus
Attention, on ne peut transférer la valeur que d'un registre à un instant donné (ce moyen de
transport en commun est plus un taxi – véhicule partagé dans le temps, avec un seul utilisateur
à la fois – qu'un bus !). Pour assurer qu'au plus un regsitre est connecté en sortie au bus à un
instant donné, il est prudent de générer les signaux SA,SB,SC et SD à l'aide d'un décodeur ou
démultiplexeur.
Les interrupteurs peuvent être réalisés par des transistors, en technologie MOS. On appelle
de tels interrupteurs "portes 3-états" (tri-state drivers) : leur sortie peut prendre la valeur 0 ou
la valeur 1 lorsque l'interrupteur est fermé, et prend une 3ème valeur, haute impédance, notée
Z, lorsque l'interrupteur est ouvert.
3.6. MÉMOIRES
VIVES
Une mémoire vive est une mémoire dans laquelle on peut lire et écrire : Read/Write Memory
ou RWM (par opposition aux ROM, Read Only Memory, vues chapitre III, §2).Une
- II.16 mémoire vive de 2n mots de b bits permet de mémoriser 2n informations de b bits, qui sont
repérées par un numéro codé sur n bits (Fig.III-26 a). Ce numéro de mot est appelé adresse
du mot.
Une telle mémoire peut être réalisée à l'aide de (cf Fig.III-26 b) :
- un décodeur n -> 2n, qui active un signal de sélection de mot d'après le numéro mis en
entrée (cf chapitre III,§1),
- 2n registres de b bits, qui mémorisent les mots.
select
L/E
mot 0
mot 1
mot 2
numéro
select L / E action
n
mot 2 n-2
mot 2 n-1
b
sortie mot
0
*
1
1
0
1
lecture
écriture
b
entrée mot
a) schéma d'une mémoire et tableau de fonctionnement
select
select 0
mot 0
0
select 1
1
numéro
mot 1
select 2
2
mot 2
.
.
.
.
. n-1 select 2 n-1
mot 2 n-1
2
écriture
lecture
select i
D y
ligne d'entrée
ligne de sortie
b) sélection des mots d'une mémoire
c) point de mémorisation
par un décodeur
Figure III-26 : mémoire vive
Une telle mémoire est appelée mémoire à accès aléatoire (parce que le temps d'accès est le
même, quel que soit le mot accédé) ou Random Access Memory (RAM). Notez qu'il y a
- II.17 souvent une confusion entre les modes d'accès possibles et le type d'accès qui mène à
opposer RAM et ROM, alors qu'une ROM est en fait une RAM.
Un point de mémorisation en technologie MOS est proposé figure III-26 c) : il s'agit d'une
réalisation naïve, non optimale. On utilise un verrou, toujours activé :
- quand la commande de lecture est à 1 et que le mot est sélectionné (select i = 1), l'état du
verrou est affiché sur la ligne de sortie (similaire à une ligne de bus),
- quand la commande d'écriture et select i sont à 1, la valeur sur la ligne d'entrée est
mémorisée dans le verrou,
tant que select i est à 0, l'état du verrou reste inchangé.
Le verrou peut être de type statique ou dynamique ; dans le dernier cas, il nécessite moins de
transistors, mais il est nécessaire de "rafraîchir" l'information mémorisée régulièrement (en la
lisant puis en la réécrivant). Il est possible de réaliser des mémoires RWM avec 5 ou 6
transistors par point mémoire (type statique) ou même un seul transistor (type dynamique).
ligne d'entrée/sortie
ligne de sélection mot i
Point de mémorisation dynamique
Il est possible de réaliser, par extension du schéma de la figure III-26 c), des mémoires à
double accés en lecture et / ou en écriture :
- si il y a 2 décodeurs (qui générent des signaux select1i et select 2i), 2 commandes de lecture
et 2 lignes de sortie par bit, il est possible de lire en même temps 2 mots d'adresses
différentes (ou non),
- avec ces 2 décodeurs, il est aussi possible de lire un mot et d'en écrire un autre, mais il faut
éviter de lire et écrire le même mot.
- II.18 Exercices
III-21Proposer un point de mémorisation pour une mémoire à double accés en lecture (cf
Fig.III-26 c).
II-7 On peut réaliser une pile (cf exercice III-17 et III-18) à l'aide d'une mémoire RWM et
d'un registre compteur / décompteur (cf exercice III-20). Proposer une telle réalisation.pour
une pile de 32 mots de b bits.
Comparer le coût de réalisation d'une pile à l'aide de registres à décalages (exercice III-18) et
celui de la réalisation à l'aide d'une mémoire. On suppose que les registres à décalage sont
réalisés avec des bascules maître-esclave MOS de 12 transistors, et que la mémoire est une
mémoire statique à points de mémorisation de 6 transistors.
III-22Une file d'attente de k mots de b bits permet de mémoriser des mots et de les relire
dans l'ordre de leur arrivée (premier entré, premier sorti, ou First In, First Out : FIFO). Une
telle structure peut être réalisée à l'aide d'une mémoire RWM et de registres compteurs, qui
mémorisent l'adresse du mot de tête de la file et l'adresse du mot de queue de la file dans la
mémoire. Proposer une réalisation d'une file de 32 mots de b bits.
- II.19 -
2. AUTOMATES
Tout circuit séquentiel peut être modélisé formellement par un automate. Inversement,
"effectuer la synthèse d'un automate" est "réaliser un circuit séquentiel". Après avoir défini un
automate, nous en étudierons les représentations.
2.1. DEFINITION
Un automate A est défini par un quintuplet ( Q , E , S , δ , λ ) où :
-
Q est l'ensemble des états de l'automate,
E est son vocabulaire d'entrée (ensemble des valeurs possibles des entrées),
S est son vocabulaire de sortie
δ est l'ensemble des transitions ⊂ Q × E × Q
λ est l'ensemble des sorties ⊂ Q × E × S
Un automate peut être :
- synchrone : les changements d'états sont autorisés par une horloge,
- asynchrone : les changements d'états sont toujours autorisés et peuvent se produire dès
qu'une entrée change de valeur,
- à état initial fixé ou non, unique ou non,
- non déterministe ou déterministe : dans ce dernier cas, il s'agit d'un automate à état initial
unique, où à tout couple (état, entrée) est associée une transition au maximum ; δ est
redéfini comme une fonction appelée fonction de transition, δ : Q × E -> Q
- non réactif ou réactif : dans ce dernier cas, à tout couple (état, entrée) est associée une
transition au minimum (on parle aussi d'automates complet),
- automate de Moore : la fonction de sortie λ est une fonction de Q dans S (les sorties ne
sont fonction que de l'état), λ : Q -> S
automate de Mealy sinon λ : Q × E -> S
Nous n'étudierons que les automates synchrones, principalement de type Moore, à état initial
fixé, déterministe et réactif (à chaque couple état, entrée est associée une et une seule
transition)
2.2. REPRESENTATIONS
2.2.A.
DES AUTOMATES
GRAPHE D'ETATS
Un automate peut être spécifié par un graphe d'états où :
- II.20 - chaque sommet représente un état,
- chaque arc représente une transition d'un état à un autre, et est étiqueté par l'élément du
vocabulaire d'entrée qui conditionne cette transition,
- les sorties sont associées aux arcs (automate de Mealy) ou aux états (automate de
Moore).
Exemple
On veut faire le graphe d'états d'un automate défini par :
E = { a , b} , S = { oui, non}
tel que la sortie vaut oui si et seulement si les 4 dernières entrées reçues forment la séquence a
b b a.
Les graphes d'état pour un automate de type Moore et un automate de type Mealy,
répondant à cette spécification, sont donnés figure II-19.
init
init
A/non
b
a
a
b
b
b
b
B
a/non
a/non b/non
C
C/non
a
b/non
a/non
B/non
a
A
D/non
b/non
b/non
a/oui
D
a
E/oui
a) automate de Moore
b) automate de Mealy
Figure II-19 : graphes d'états
L'état initial est l'état A.
On peut interpréter les états de la façon suivante ; état A : l'automate n'a pas encore reçu
d'entrée intéressante ; état B : l'automate a reçu a ; état C : l'automate a reçu a puis b ; état D
: l'automate a reçu a puis b puis b. Ensuite, dans le cas de l'automate de Mealy, la sortie passe
à oui si une entrée a est reçue, puis l'automate se met dans l'état B. Dans le cas de l'automate
- II.21 de Moore, l'automate passe à l'état E où la sortie prend la valeur oui, puis se met dans l'état B
ou C, suivant la valeur de l'entrée suivante.
Ces 2 automates sont équivalents (pour toute séquence d'entrées, les séquences de sortie sont
identiques), mais ont un fonctionnement temporel différent (cf §3.2.E).
2.2.B .
TABLEAU D'ÉTATS
On peut aussi représenter un automate par un tableau d'états, donnant l'état suivant et la sortie
en fonction de l'état courant et de l'entrée.
Exemple
Pour les automates spécifiés par les graphes d'états de la figure II-19, les tableaux d'états sont
les suivants :
entrée
a
b
entrée
état courant
A
B
C
D
E
B
B
B
E
B
A
C
D
A
C
état suivant
non
non
non
non
oui
b
état courant
A
B
C
D
sortie
a) automate de Moore
a
B/non
B/non
B/non
B/oui
A/non
C/non
D/non
A/non
état suivant
b) automate de Mealy
Figure II-20 : tableaux d'états
Exercice
II-9 Soit un automate spécifié par :
E = { a, b, c }, S = {d, e, f}, tel que la sortie vaut d ssi les 3 dernières entrées étaient abc,
vaut e ssi les 2 dernières entrées étaient cb, et f sinon.
Faire le graphe d'états et le tableau d'états de cet automate (type Moore et Mealy).
3. SYNTHÈSE D'AUTOMATES
3.1. PRINCIPE
Nous étudions ici la réalisation d'un automate synchrone par un circuit digital. Ce circuit sera
toujours du type indiqué figure II-21.
- II.22 -
entrées
sorties
C
bascules d'état
init
H
Figure II-21 : circuit réalisant un automate
Un ensemble de bascules mémorisent l'état de l'automate ; elles peuvent être mises à l'état
initial par le signal init (qui agit sur les entrées d'initialisation des bascules), et sont activées par
le signal H, qui est l'horloge de synchronisation de l'automate. Ces bascules doivent être
sensibles au front ou maître-esclave, comme il y a rebouclage des sorties des bascules vers les
entrées, et que l'état ne doit évoluer qu'une fois au maximum durant une période d'horloge.
Le circuit combinatoire C réalise les fonctions λ et δ , d'après les valeurs des entrées et l'état
courant du circuit.
3.2. METHODE DE SYNTHESE
3.2.A.
CODAGE
Avant de songer à réaliser un automate, il faut choisir un codage binaire des états et des
vocabulaires d'entrée et de sortie. Ce codage peut être quelconque, ou imposé par la
spécification de l'automate (en général, c'est le cas pour les entrées et sorties).
Après cette étape de codage, on peut déterminer le graphe d'états codé : à un noeud est
associé le code de l'état qu'il représente, à un arc est associé les valeurs des variables
booléennes d'entrée et éventuellement de sortie.
Exemple
Pour l' automate de Moore des figures II-19 a et II-20 a, nous choisissons le codage :
- II.23 - vocabulaire d'entrée : 2 éléments, codage par une variable booléenne x, a est codé 1, b est
codé 0,
- vocabulaire de sortie : 2 éléments, codage par une variable booléenne z, oui est codé 1,
non est codé 0,
- états : 5 états, codage par 3 variables d'états y2 y1 y0 , A : 000, B : 001, C : 010, D : 011,
E : 100.
On en déduit le graphe d'états codé et le tableau d'états codé (Fig.II.22).
init
000/0
0
1
x
001/0
1
1
0
010/0
0
1
0
011/0
1
100/1
a) graphe d'états codé
1
0
001
001
001
100
001
000
010
011
000
010
y3 y2 y1
0
0
0
0
0
1
0
0
1
1
0
0
1
0
1
0
état suivant
Y3 Y2 Y1
0
0
0
0
1
z
b) tableau d'états codé
Figure II-22 : graphe et tableau d'états codés
On a noté Y3Y2Y1 le code de l'état suivant (y3(t+1) y2(t+1)y1(t+1).
Pour un automate complexe, une autre forme de graphe d'états codé permet de raisonner plus
facilement : au lieu d'associer aux arcs les valeurs des entrées qui provoque la transition, on
leur associe la fonction booléenne des variables d'entrées qui vaut 1 si et seulement si cette
transition doit être effectuée. De même, au lieu d'indiquer la valeur des sorties pour tout arc
(ou tout état), on indique dans quel cas la sortie vaut 1.
Exemple
Le graphe d'état de la figure II-19 a ) peut être représenté, après codage du vocabulaire
d'entrée et de sortie, par le graphe de la figure II-23.
- II.24 init
A
x
x
B
x
x
x
C
x
x
x
x
D
x
E/z
Figure II-23 : autre représentation du graphe d'états codé
Attention, notre automate devant être
- déterministe, le produit 2 à 2 des expressions booléennes associées aux arcs sortants d'un
état doit être égal à 0
- complètement défini, la somme des expressions booléennes associées à l'ensemble des
arcs sortants d'un état doit être égale à 1.
3.2.B .
DÉTERMINATION DES ÉQUATIONS D'ETATS
Le circuit C réalise la fonction de transition d'états : cette fonction, à une configuration de
valeur des variables d'état yj et des entrées, associe les valeurs suivantes des variables d'états
Yi : il s'agit d'un ensemble de fonctions booléennes
Yi = fi(yn, yn-1, ...,y0, ek, ek-1, ..., e0).
Cet ensemble de fonctions booléennes définit les équations d'état, qu'il est facile de déterminer
à partir du tableau d'états codé.
De même, les équations des sorties du circuit sont déterminés à partir du tableau d'états codé.
Exemple
Du tableau d'états codé de la figure II-22 b), on tire les tableaux de Karnaugh de Y3 Y2 Y1 et
de la sortie z, donnés ci-dessous :
- II.25 -
y1 x
y3 y2
00
01
11
10
y1
00 01 11 10
y3 y2
000 001 001 010
011 001 100 000
?
?
?
010 001
?
tableau de Y3 Y2 Y1
00
01
?
11
? 10
0
1
0
0
?
1
0
0
?
?
t ableau de z
Figure 24
A partir des tableaux, on détermine de manière classique les équations d'état :
Y3 = y2 y1 x
Y2 = y2 + y3 + y1
Y1 = y2 + x + x
ainsi que l'équation de la sortie z :
z = y3
Exercice
II-10 Proposer un codage pour l'automate étudié à l'exercice II-9 ; faire le tableau d'états
codé et déterminer les équations d'états et des sorties de l'automate.
3.2.C .
REALISATION D'UN AUTOMATE AVEC DES BASCULES
D
Les équations d'état indiquent pour chacune des variables d'état la valeur de yi (t+1) en
fonction de l'état et des entrées à t. Note : cette équation n'est pas directement implémentable,
car elle inclue une dimension temporelle.
Le fonctionnement de la bascule D peut être décrit par y(t+1) = D(t)
On a donc, pour un automate à n variables d'états et p entrées, les deux équations suivantes
pour y i :
yi (t+1) = f(état(t), entrées(t))
yi (t+1) = D(t)
On en déduit qu'à l'instant t, on doit avoir :
D(t) = f(état(t), entrée(t))
On peut donc déterminer les équations des entrées des bascules D, donc la spécification du
- II.26 circuit C, qui peut être réalisé à l'aide de portes ou de circuits de moyenne complexité.
L'utilisation de PLA est fréquente. Les bascules qui mémorisent les variables d'états ne
peuvent pas être de type verrou : au même moment, l'ancienne valeur des bascules est utilisée
et une nouvelle valeur est chargée. Ces bascules sont activées par l'horloge de l'automate et
initialisées par le signal init (Fig.II-24).
Exemple
Le circuit réalisant l'automate de la figure II-22 a) est donné figure II-25
x
z
C
y3
y2
y1
D3
D2
D1
init
H
Figure II-25 : réalisation de l'automate
avec :
D3 = y2 y1 x
D2 = y2 + y3 + y1
D1 = y2 + x + x
z = y3
3.2.D.
REALISATION D'UN AUTOMATE AVEC DES BASCULES
JK,...
L'équation de fonctionnement d'une bascule JK est :
y (t +1) = y(t) K(t) + y (t) J(t)
Pour pouvoir déterminer les équations de J et de K, il faut mettre chaque équation d'état sous
- II.27 la forme : y(t +1) = y(t) f1(état(t) , entrées(t)) + y(t ) f2(état(t) , entrées(t))
On en déduit que J = f2(état(t), entrées(t)) et K = f1(état(t) , entrées(t))
Exemple
Pour notre exemple, on obtient :
J 3 = y2 y1 x
K 3 = y 2 y1 x
J 2 = y1 x + y 3 x
K 2 = y1 x + y 3 x
J 1 = x + y2
K1 = y2 x
On peut effectuer des identifications locales, et pour cela aussi utiliser le tableau de transition
de la bascule JK donné ci-dessous :
yt
yt+1
J
K
0
0
0
ϕ
0
1
1
ϕ
1
0
ϕ
1
1
1
ϕ
0
Ce tableau indique quelle doivent être les valeurs de J et K pour chaque transition d'état de la
bascule. On peut alors pour chaque case du tableau d'états (ou plutôt du tableau de Karnaugh
qu'on en a déduit cf. figure II 24) déterminer quelles doivent être les valeurs de J et de K.
Exemple
y1 x
y3 y2
00
01
11
10
00 01 11 10
000 001 001 010
011 001 100 000
?
?
?
010 001
?
tableau de Y3 Y2 Y1
y1 x
y3 y2
00 01 11 10
00
01
11?
? 10
0?
0?
?
??
0?
0?
0?
1?
?
?? ?
0?
0?
?
?
?
t ableau de J 3 K3
On obtient :
J 3 = y2 y1 x
K3 = 1
L'expression de K3 est plus simple que précédemment, car les ϕ correspondant aux codes
d'état non valides ont été utilisés.
- II.28 3.2.E.
OPTIMISATION D'AUTOMATES
La réalisation d'un automate peut être optimisée à différents niveaux :
au niveau de la spécification du circuit à réaliser, par minimisation du nombre d'états
de l'automate : 2 états A et B d'un automate sont équivalents si et seulement si, pour toute
séquence d'entrées appliquée à A, la séquence de sorties est la même que si la séquence était
appliquée à l'état B. Si 2 états sont équivalents, ils peuvent être confondus en 1 seul état.
au niveau du codage des entrées et des sorties, éventuellement (en général, ces codes
sont fixés),
au niveau du codage des états : le codage des états est en général choisi par le
concepteur ; deux codages différents peuvent mener à des équations des variables d'état et
des sorties plus ou moins complexes.
Exercices
On rappelle les étapes de la synthèse d'un automate :
-
à partir de la spécification, déterminer le graphe d'états (et le minimiser, si nécessaire)
-
codage des entrées, des sorties et des états => tableau d'états codés
déterminer les tableaux de Karnaugh et/ou les équations des variables d'états et des
sorties
-
choisir un type de bascules et déterminer les équations des entrées des bascules
-
faire la synthèse du circuit.
II – 11 Réaliser l'automate de Mealy donné figure II-20-b à partir de bascules D puis de
bascules JK.
II-12 Même exercice pour l'automate étudié dans les exercices II-9 et II-10.
II-13 Déterminer les tableaux de transitions des bascules RS et des bascules T. Faire la
synthèse de l'automate de Moore qui nous a servi d'exemple (le tableau d'états et de la sortie
sont indiqués figure II-24).
3.2.F.
FONCTIONNEMENT TEMPOREL DES AUTOMATES
Il reste à analyser les aspects temporels du fonctionnement des automates, c'est-à-dire les
relations entre l'horloge, le type de bascule, l'évolution temporelle des entrées, le type
- II.29 d'automate et l'évolution temporelle de la sortie.
Cette analyse sera faite pour des automates réalisés avec des bascules sensibles au front
montant (ou des bascules maître-esclave dont l'étage esclave est activé par H). Prenons
comme exemples les automates étudiés au paragraphe précédent : la figure II-26 indique
l'évolution temporelle de la sortie z (ou chronogramme de z), lorsque la séquence d'entrée 1 0
0 1 (séquence à reconnaitre a b b a) est appliquée sur l'entrée x à partir de l'état initial A.
init
H
x
type
Moore
a
état
b
a
b
A
B
C
D
E
A
B
C
D
B
z
type
Mealy
état
z
Figure II-26 : chronogrammes
Sur cette figure, l'évolution de l'entrée x est telle que sa valeur est spécifiée autour du front
montant de H, sans préjuger des instants de variation (les portions en grisé indiquent une
valeur indéterminée).
On voit que :
- dans l'automate de Moore, la sortie reste stable entre 2 fronts d'horloge (elle ne dépend
que de l'état, qui est stable entre 2 fronts) ;
- dans l'automate de Mealy, la sortie n'est valide que autour de chaque front (en effet, elle
est fonction de l'état et des entrées, or l'état change au front),
Dans le cas de l'automate de Mealy, pour avoir une valeur de la sortie stable assez longtemps
pour pouvoir l'exploiter, il faut
-
soit s'assurer que l'entrée est stable longtemps avant le front de changement d'état (de
- II.30 préférence juste après le front de changement d'état précédent),
soit mémoriser la valeur des sorties dans un ensemble de bascules, ce qui revient en
fait à un automate de Moore.
C'est pour cela que nous concevrons principalement des automates de Moore, dont les
sorties sont stables une période d'horloge complète, et non des automates de Mealy.
Pour qu'un automate fonctionne correctement, il faut que les 2 inégalités suivantes soient
respectées :
- Τ ≥ ∆tmax + tamax + t setup,
- tamin + ∆t min = thold,
où T est le temps entre deux fronts d'activations des bascules, c'est-à-dire la période de
l'horloge, tamax est le temps maximal et tamin est le temps minimal de calcul des entrées des
bascules, ∆tmax et ∆t min sont les temps maximal et minimal de changement d'état des
bascules, tsetup et thold sont les temps minimaux imposés de stabilité des entrées des bascules
avant et après le front d'activation.
En général, la 2ème inégalité est toujours respectée : les bascules sont telles que ∆tmin = thold,
par construction. La premère inégalité permet de déterminer la fréquence maximale de
l'horloge.
3.3. SYNTHESE D'AUTOMATES
COMPLEXES
La méthode de synthèse exposée ci-dessus est valable pour tout automate. Cependant,
certaines techniques sont utiles pour réaliser des automates complexes, à beaucoup d'entrées
et / ou beaucoup d'états.
3.3.A.
REPRESENTATIONS DES AUTOMATES COMPLEXES
On représentera en général un automate complexe par un graphe d'états où figurent
uniquement les fonctions booléennes des variables d'entrée qui provoquent les transitions, et
où une sortie n'est indiquée que quand elle est activée (cf Fig.II-23).
On peut aussi le représenter par un tableau de transitions (cf Fig.II-27 c).
Exemple
On prendra comme exemple l'automate défini par le graphe de la figure II-27 (il n'est pas
vraiment complexe, mais il permet d'illustrer les techniques employées).
- II.31 init
deb
a
b
c
H
init
s
A
t
A
u
a.deb
a) entrées et sorties de
l'automate
état courant état suivant
* entrée
A. deb
A. a deb
A. a deb
B
C. b
C. b
D
E. c
E. c
F. c
F. c
deb
A
B
D
C
A
E
E
F
C
F
C
c) tableau de transitions
a.deb
B/s
b
D /s,t
1
b
C/t
c
1
E/u
c
c
F /t,u
c
b) graphe d'états
Figure II-27 : exemple d'automate complexe
Les techniques employées pour la synthèse de tels automates différent suivant le type de
circuit utilisé. Nous allons en voir quelques exemples.
3.3.B .
SYNTHÈSE EN CODAGE 1 PARMI N
Au lieu de coder les états à l'aide du minimum de variables d'état, on choisit un code dit code
1 parmi n, qui associe une variable d'état yi à chaque état i: les codes valides sont de la forme
0 0 0 .... 0 1 0 .... 0, avec un seul 1 parmi des 0. L'automate est dans l'état i si et seulement si
.... yi ......= 1, ce qui est caractérisé par yi = 1.
Les équations d'état sont triviales, et la réalisation de l'automate peut être faite directement à
partir du graphe d'états de l'automate.
Exemple
Pour l'automate spécifié figure II-27, les équations d'états et des sorties, ainsi que la réalisation
de l'automate sont données figure II-28. Les équations d'état sont obtenues à partir du graphe
d'états ou du tableau de transitions, en déterminant les états antécédents d'un état et les
conditions de transitions
- II.32 YA = deb. yA + b . yC
YB = a. deb. yA
YC = yB + c. yE + c. yF
YD = a. deb. yA
YE = b . yC + yD
YF = c . yE + c. yF
s = yB + yD
t = yC + yD + yF
u = yE + yF
deb
a.deb
yA
a.deb
yB
b
yC
yD
b
c
s
yE
u
c
t
c
yF
c
Figure II-28 : réalisation en codage 1 parmi n
La bascule mémorisant yA est initialisée à 1 (signal init connecté à l'entrée "Preset"), les autres
sont initialisées à 0 ; toutes les bascules sont activées par l'horloge de l'automate.
La synthèse en codage 1 parmi n simplifie les équations d'états et les équations des sorties
(donc la partie combinatoire du circuit ), mais utilise un grand nombre de bascules.
3.3.C .
SYNTHESE EN CODAGE COMPACT ET RÉALISATION AVEC UN PLA
On peut coder les états d'un automate complexe avec le minimum de variables, pour le
réaliser avec un PLA par exemple. On cherche alors à choisir un code optimisant la taille du
PLA, c'est-à-dire minimisant le nombre de monômes. Ce type de solution est intéressant en
conception de cartes, car il existe des boitiers PLA incluant des bascules, qui permettent de
réaliser en un seul boitier un automate de moyenne complexité. En conception de circuits
- II.33 intégrés, l'intérêt de ces solutions vient de la régularité d'implémentation des PLA.
Exemple
Pour une synthèse avec des bascules D, on s'interesse aux variables d'états à 1 dans le code
de chaque état.
On note :
unsi la liste des variables à 1 dans le code de l'état i (par exemple, si i est codé 0101
sur les variables y3,y2,y1,y0, uns i = (y2,y0)
-
Ci le monôme caractéristique du code de i (code de i = 0101, Ci = y3 y2 y1 y0 )
Du graphe d'états de la figure II-27, on déduit que :
unsA = CA + CC
unsB = a deb CA
unsC = CB + c CE + c CF
unsD = deb CA
unsE = b CC + CD
unsF = CE + CF
s = CB + C D
t = CC + CD + CF
u = CE + CF
A priori, il y a 14 monômes distincts à synthétiser. Mais si les codes de E et de F sont
adjacents, on peut créer un monôme MEF unique, d'où :
unsA = CA + CC
unsB = a deb CA
unsC = CB + c MEF
unsD = deb CA
unsE = b CC + CD
unsF = MEF
s = CB + C D
t = CC + CD + CF
u = MEF
d'où une réalisation à 12 monômes.
De plus, on remarque que les monômes CC et CF ne sont générés que pour faire la somme CC
+ CD + CF : si ces 2 monômes sont adjacents, CC + CF se simplifie en un seul monôme MCF et
la réalisation n'aura plus que 11 monômes.
Il nous reste à choisir l'état codé 0 : cet état n'aura pas de 1 dans son code, et donc les
monômes correspondants ne seront pas générés ; on a donc intérêt à utiliser le code 0 pour
l'état ayant le plus d'antécédents. Ici, on choisit A codé 0 et une réalisation à 9 monômes au
plus (les monômes CA et CC ne seront pas générés).
On obtient ainsi un ensemble de contraintes d'adjacences sur les codes des états ; il reste à
trouver un codage qui les satisfait (ce n'est pas toujours possible). Dans notre cas, il s'agit
d'associer les états aux cases d'un tableau de Karnaugh à 3 variables ; le placement suivant
- II.34 respecte les contraintes.
y2 y0
y3
00 01 11 10
0
1
A B C D
- E F -
ETAT
CODE
A
B
C
D
E
F
000 001 011 010 101 111
Exercices
II-14 Déterminer les équations du PLA pour l'automate de l'exemple, dont un codage a été
proposé ci-dessus.
II-15 Rechercher un codage optimisant la réalisation sur PLA pour l'automate étudié à
l'exercice II-9. Comparer la solution obtenue avec celle trouvée à l'exercice II-10.
3.3.D.
SYNTHÈSE À L'AIDE DE COMPTEURS
Dans la gamme des boitiers de moyenne complexité, on dispose de compteurs modulo 16 ou
32. A partir de cet automate compteur, il est possible de réaliser d'autres automates, en jouant
sur les entrées de chargement et d'incrémentation du compteur (cf §1.7.D.).
On choisit un codage qui maximise le nombre de transitions où les codes des états d'origine et
destination sont des entiers consécutifs. Si un état a plusieurs successeurs, le code du ou des
états qui ne sont pas obtenus par incrémentation sont chargés dans le compteur.
Exemple
Pour l'exemple de la figure II-27, on prend le codage :
A : 0, D : 1, E : 2, F : 3, B : 6, C : 7.
On en déduit le tableau suivant, qui indique les valeurs des entrées du compteur pour chaque
transition, en utilisant le compteur défini figure II-16 pour lequel l'entrée d'incrémentation est
prioritaire sur l'entrée de chargement (attention, ce n'est pas forcément ce type de compteur
que vous utiliserez en travaux pratiques !) :
- II.35 -
état courant état suivant
* entrée
A. deb
A. a deb
A. a deb
B
C. b
C. b
D
E. c
E. c
F. c
F. c
incr
A
B
D
C
A
E
E
F
C
F
C
cha
0
0
1
1
1
0
1
1
0
0
0
valeur
de chargement
1
1
?
?
?
1
?
?
1
1
1
0
6
?
?
?
2
?
?
7
3
7
En utilisant sytématiquement des multiplexeurs, on obtient le circuit suivant (Fig.II-29).
codes
chargés
dans le
compteur
c
3
7
déb
0
6
a deb
1
c
0
0
0
1
b
init
H
incr raz En
compteur
modulo 8
Y
0
1
0
1
0
1
2
3
4
5
6
7
7
2
0
1
2
3
4
5
6
7
Y
1 cha
A (valeur de
chargement)
Figure II-29 : réalisation avec un compteur
L'entrée cha est toujours à 1. Un multiplexeur sert à sélectionner la valeur de l'entrée
d'incrémentation en fonction du code de l'état, la valeur sélectionnée étant fonction des entrées
de l'automate dès qu'un état a plus d'un successeur.
Un système de multiplexage sert à sélectionner la valeur à charger en fonction du code de
l'état et éventuellement des entrées de l'automate, d'où les 2 systèmes de multiplexeurs 2 -> 1,
qui seraient avantageusement remplacés par de simples connexions. Par exemple, le
multiplexage commandé par déb peut être remplacé par les valeurs déb, déb, 0 connectées
sur les entrées 0 du système de multiplexage en fonction du code de l'état (si déb = 0, on
- II.36 obtient le code 0, si déb =1, on obtient le code 6). De même pour le multiplexage commandé
par c (valeurs c,1,1)Les multiplexeurs, n'étant pas complétement utilisées, peuvent être
simplifiés ou remplacés par un PLA. Les sorties sont générées à partir du code de l'état Y.
3.3.E.
REALISATION AVEC UNE ROM ET MICROPROGRAMMATION
Principe
On peut chercher à réaliser un automate à base de ROM, mais il n'est pas envisageable de
réaliser directement le circuit combinatoire C par une ROM : en effet, si il y a n variables
d'états, m entrées, la ROM aurait 2n+m mots (soit, pour notre exemple d'automate pas très
complexe, à 3 variables d'état et 4 entrées, une ROM de 128 mots de 6 bits pour générer
l'état suivant et les sorties !).
La solution employée est d'associer un mot de la ROM à chaque état (et non à chaque couple
(état , valeurs des entrées)), et d'indiquer dans ce mot la valeur des sorties et comment
calculer l'état suivant. Il est évident que ce principe ne peut s'appliquer qu'aux automates de
type Moore.
Les primitives de calcul de l'état suivant peuvent être :
- incrémenter l'état courant,
- suivant une condition, incrémenter l'état courant ou charger le code indiqué (branchement
conditionnel),
charger un code fourni par un circuit combinatoire.
Ceci est assez similaire à la synthèse à l'aide de compteur. Le schéma de principe d'une telle
réalisation est donné figure II-30.
init
H
E
T
A
T
conditions
testées
circuit de
calcul de
l'état suivant
ROM
champ
séquencement
Figure II-30 : réalisation à l'aide d'une ROM
champ
commande
- II.37 Exemple
On reprend l'exemple précédent, avec le codage utilisé figure II-29.
Un mot de la ROM a le format suivant :
champ séquencement
seq cond
adr
S1 S0 C
champ
sorties
A2 A1 A0 s t u
S1 SO séquencement
0 -
C condition
état := état plus1
0
1
1 0 si condition = 1
état := adr sinon
état := état plus1
1 1 état := entrée état
b
c
codage des champs
Le contenu de la ROM, pour implémenter l'automate, doit être :
numéro de mot champ séquencement
sorties
S1S0
C
A2A1A0
s t u
mot 0 (état A)
11
φ
φφφ
000
mot 1 (état D)
0φ
φ
φφφ
110
mot 2 (état E)
10
1
111
010
mot 3 (état F)
11
φ
φφφ
011
mot 6 (état B)
0φ
φ
φφφ
100
mot 7 (état C)
10
0
010
010
mot 4
mot 5
Le circuit de calcul de l'état suivant a comme entrées : les entrées de l'automate (a,deb,b,c) et
l'état courant. Suivant le champ séquencement , il en déduit le code de l'état suivant.
- II.38 Exercice
II-16 Proposer une réalisation du circuit de calcul de l'état suivant, pour l'exemple ci-dessus.
Ce circuit comporte un incrémenteur (cas S1 S0 = 0 - ou 10), un circuit de calcul du code de
l'état suivant (cas S1 S0 = 11), un circuit de calcul de la condition (cas S1 S0 = 10), et un
système de multiplexage qui permet de sélectionner le code correct pout l'état suivant.
Généralisation : microprogrammation
L'avantage de ce type de réalisation à base de ROM est sa flexibilité : avec une même ROM
et un même circuit de calcul de l'état suivant, il est possible de réaliser différents automates.
De plus, cette réalisation nécessite peu de boitiers. Cette technique a été proposée dès les
années 60 par Wilkes, et très employée dans les années 70 ; pour souligner sa flexibilité, le
nom de microprogrammation est utilisé : le circuit de la figure II-30 est un séquenceur
microprogrammé ; le circuit de calcul de l'état suivant est un microséquenceur (séquenceur du
séquenceur) ; les bascules mémorisant l'état forment le registre compteur de microprogramme
; une ligne de la ROM contient une microinstruction.
Les extensions possibles par rapport au cas simple que nous avons traité sont :
la possibilité de sous-microprogramme : quand une séquence de microinstructions se
répéte dans la ROM, il est possible de ne l'écrire qu'une seule fois et d'effectuer un
branchement vers cette séquence unique en sauvegardant le code de l'état de retour (état
après la fin de l'exécution de la séquence) : à la fin de la séquence, le code sauvegardé est
rechargé dans le compteur de microprogramme. Dans ce cas, le circuit de calcul de l'état
suivant comporte une pile de sauvegarde, et on ajoute aux primitives de séquencement les
possibilités de branchement à sous-microprogramme (pile : = état + 1 ; état := adr) et de
retour de sous-microprogramme (état := pile).
la possibilité de microprogrammation verticale ; dans ce cas, il existe deux types de
microinstructions : les microinstructions de commande, où des sorties sont activées et pour
lesquelles, par convention, l'état suivant est obtenu par incrémentation, et les microinstructions
de séquencement, où les primitives de séquencement complexes sont utilisées. Les
microinstructions sont alors codées avec 2 formats possibles :
0 champ commandes
1 champ séquencement
Cela permet d'éviter de prévoir un champ séquencement dans toute microinstruction, alors
qu'il n'est pas toujours utilisé, donc de diminuer le nombre de bits de la ROM ; mais, dès qu'il
y a branchement, 2 microinstructions au lieu d'une seule seront exécutées. A noter : l'automate
- II.39 réalisé avec ce principe n'est pas équivalent à l'automate initial (périodes d'horloge
supplémentaires durant lesquelles il n'y a pas de sorties émises). Cette solution sera donc
réservée à des cas particuliers : commande de la partie opérative d'un circuit complexe ou
d'un processeur, étudiés par la suite.
séparation des champs commande et séquencement : pour certains automates, le
même champ commande est associé à plusieurs états. Si une ROM contient les champs
séquencement, et une autre les champs commande, cette dernière ne contient alors qu'un
exemplaire de chaque valeur de champ commande. Il faut cependant ajouter un circuit de
calcul de l'adresse ROM commande à partir du code de l'état, ce qui ralentit l'émission des
commandes. En choisissant des codes adjacents pour les états ayant le même champ
commande, on peut optimiser ce circuit.
Exercices
II-17 Nous avons réalisé pour notre exemple une solution à microprogrammation horizontale
(champ séquencement et champ commandes dans le même mot de la ROM). Il s'agit
d'étudier une solution à microprogrammation verticale, avec deux types de microinstructions.
1-
Définir le format des microinstructions verticales.
2-
Proposer une spécification du circuit microséquenceur.
3Modifier le graphe d'états pour prendre en compte la diminution des possibilités de
séquencement, choisir un codage des états et écrire le microprogramme.
4-
Réaliser le circuit microséquenceur.
5Evaluer la rentabilité des deux solutions ; le temps sera mesuré par le nombre moyen
d'accés à la ROM à effectuer pour chaque état de l'automate initial ; le coût sera mesuré par
le nombre de bits de la ROM (pour les mots effectivement utilisés), et la rentabilité est définie
classiquement par : 1 / temps * coût.
6Généréralisation du résultat : on suppose que l'automate initial est tel que x% des états
peuvent être codés avec des codes consécutifs ; que le champ séquencement nécessite m bits
et le champ commande n bits. Dans quelles conditions la solution de microprogrammation
verticale est-elle intéressante ?
II-18 Proposer une réalisation d'un microséquenceur offrant les primitives de séquencement
suivantes :
- II.40 champ séq
champ cond
S2 S1 S0
séquencement
C1 C0
0 0 0
état := état plus 1
0 0 1
si condition alors
état := adr sinon
état := état plus 1;
0
0
1
1
0 1 1
si condition alors
pile := état +1, état := adr
sinon état := état plus 1
1 0 0
état := pile
1 0 1
état := entrée1
1 1 0
état := entrée2
1 1 1
état := 0.....0
0
1
0
1
condition
a
b
c
d
II-19 Soit un automate à 15 états, A, B, ...,0. Certains états ont le même champ de
commande : (A, O) (D, L), (B, E, G), (C, F, I, M).
1Proposer une réalisation de l'automate à l'aide de 2 ROM et donner la taille de ces 2
ROM
2En supposant qu'il n'y ait pas de contraintes sur le codage des états dues au
séquencement, proposer un codage des états et un adressage de la ROM commande.
3Si le champ séquencement nécessite n bits de codage, et le champ commande m,
évaluer les coûts (en points-mémoire) de la solution n'utilisant qu'une ROM et de celle
proposée ici.
Téléchargement