Vous êtes sur la page 1sur 40

CHAPITRE II :

- II.1 -

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 2 n é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

y

Act

bascule D, ainsi que son tableau de fonctionnement. D y Act y   D y t+

y

 

D

y t+? t

non

*

y t

0

0

oui

1

1

Act t+ ? t non * y t 0 0 oui 1 1 oui y y t

? t non * y t 0 0 oui 1 1 Act oui y y t

oui? t non * y t 0 0 oui 1 1 Act y y t t

y

y

t

t+? t : valeur suivante de l'état

: valeur courante 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

Act

R y S Act y

y

- II.3 - R y S Act y   R S y t+ ? t non
- II.3 - R y S Act y   R S y t+ ? t non
 

R

S

y

t+? t

non

*

*

y

t

0

0

y

t

oui

0

1

1

oui

1

0

0

oui

1

1

???

Act0 1 1 oui 1 0 0 oui 1 1 ??? oui a) schéma symbolique d'une

oui1 1 oui 1 0 0 oui 1 1 ??? Act a) schéma symbolique d'une bascule

a) schéma symbolique d'une bascule RS

b) fonctionnement

Figure II – 2 : bascule RS

J y

K

Act

RS b) fonctionnement Figure II – 2 : bascule RS J y K Act y  

y

 

J

K

y

t+?t

 

*

*

y

t

oui

0

0

y

t

oui

0

1

0

oui

1

0

1

oui

1

1

y

t

Act

0 oui 1 0 1 oui 1 1 y t Act non a) schéma symbolique d'une
0 oui 1 0 1 oui 1 1 y t Act non a) schéma symbolique d'une

0 oui 1 0 1 oui 1 1 y t Act non a) schéma symbolique d'une

non 0 oui 1 0 1 oui 1 1 y t Act a) schéma symbolique d'une bascule

a) schéma symbolique d'une bascule JK

b) fonctionnement

Figure II-3 : bascule JK

y T y Act
y
T
y
Act

a) schéma symbolique d'une bascule T

Figure II-4 : bascule T

Act

T

y

t+?t

non

*

y

t

oui

0

y

t

oui

1

y

t

b) fonctionnement

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).

1.4.A.

- II.4 -

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 D y ?
Act
D
y
?

a) verrou sensible au niveau haut

Act D y ?? ?? ? t1 ? t2
Act
D
y
??
??
? t1
? 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, t set-up ) et t2 (temps de maintien, t hold ) 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 D y ?
Act
D
y
?

a) bascule sensible au front montant

Act t1 t2 ? ? D
Act
t1 t2
?
?
D

y

??
??

? 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 D t après le front de l'horloge. A noter : ce retard est différent suivant le sens de variation ; passage de 0 à 1 : t pLH , passage de 1 à 0 : t pHL .

1.4.C.

Au lieu d'utiliser la notation "état à t+Dt", 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.

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 II-7 :

Il semble logique d'utiliser le montage de la figure

).

- II.6 -

a) montage

proposé

D y Act
D
y
Act

Act

D

- II.6 - a) montage proposé D y Act Act D ? ? ? ? ?
- II.6 - a) montage proposé D y Act Act D ? ? ? ? ?
- II.6 - a) montage proposé D y Act Act D ? ? ? ? ?
- II.6 - a) montage proposé D y Act Act D ? ? ? ? ?

? ? ? ? ?

y ? ? ? ? ?
y
? ? ? ? ?

Act

D

y

D y Act Act D ? ? ? ? ? y ? ? ? ? ?
D y Act Act D ? ? ? ? ? y ? ? ? ? ?
D y Act Act D ? ? ? ? ? y ? ? ? ? ?
D y Act Act D ? ? ? ? ? y ? ? ? ? ?
D y Act Act D ? ? ? ? ? y ? ? ? ? ?

?t ?? ?

Act Act D ? ? ? ? ? y ? ? ? ? ? Act D
Act Act D ? ? ? ? ? y ? ? ? ? ? Act D

b) utilisation d'un verrou

c) utilisation d'une bascule

sensible au front Figure II-7 : utilisation des bascules

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

, 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 :

se complémente

mais les changements

On obtient bien en sortie la séquence 010101

D t + t > t2,

D t est le temps de positionnement de y après le front d'activation, t 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 ( t pLH , t pHL .) + t

> t hold .

En général, les bascules

relation est toujours vérifiée.

De même, l'entrée d'activation Act doit respecter la contrainte suivante :

sont conçues

de façon à ce que Min ( t pLH , t pHL .) > t hold , donc cette

T > D 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 t = 0 (cas des registres à décalage, voir plus loin), on obtient :

T > t setup

+ Max( t pLH , t pHL .)

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).

obtient une bascule de type maître-esclave (Figure II-8). D D M y M Act D E

D

DM

y M

Act

DE

y E

Act

y

maître-esclave (Figure II-8). D D M y M Act D E y E Act y E1
maître-esclave (Figure II-8). D D M y M Act D E y E Act y E1

E1

E2

E1 E2 D y M y
E1
E2
D
y M
y

a) bascule maître - esclave

b) fonctionnement temporel

Figure II-8 : bascule maître-esclave

Quand E1 vaut 1, la valeur de l'entrée D (connectée à D M ) 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 (non- recouvrement 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

1

#

oui

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

cette entrée

de connecter l'horloge du système sur l'unique entrée d'activation de la bascule 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 y D y Act
- II.9 -
C
P
y
D
y
Act

C P Act

D

y

t+1

1

0

*

*

0

0

1

*

*

1

1

1

*

*

?

0

0 non

*

y

t

0

0 oui

0

0

0

0 oui

1

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

, pour initialiser à 1,

D = init-à-1 . état suivant).

initialisation synchrone (pour initialiser à 0, D = init - à - 0 . état suivant

1.6. BASCULES EN TECHNOLOGIE MOS

1.6.A.

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 y D
Act
y
D
utilisé pour réaliser un verrou (Fig. II-10) Act y D Figure II-10 : point de mémorisation

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.

1.6.B.

- II.10 -

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 y 1 0 y
Act
D
y
1
0
y

Figure II-11 : verrou statique

Un multiplexeur sélectionne soit l'entrée D, soit l'état courant y t , 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ître- esclave statique.

- II.11 -

3. REGISTRES ET MÉMOIRES

3.1. REGISTRE N BITS

Pour mémoriser un ensemble de n bits a n-1 , a n-2 ,

sont activées en même temps, donc par le même signal (Fig.III-20).

, a 0 , ou mot de n bits, on utilise n bascules qui

a a a n-1 n-2 0 E R y y y n-1 n-2 0 a)
a
a
a
n-1
n-2
0
E R
y
y
y
n-1
n-2
0
a) connexion des bascules
A n E R registre R n Y
A
n
E R
registre R
n
Y

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 E R 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

R1

R1
R1
R1
R1
R2
R2

R2

ER2

C

C

C
C
valeurs stables en entrée (Fig.III-21) E R1 R1 R2 E R2 C Figure III-21 : registres
valeurs stables en entrée (Fig.III-21) E R1 R1 R2 E R2 C Figure III-21 : registres

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 E R1 ), qui fournit de nouvelles valeurs en entrée du circuit combinatoire, et le chargement de R2 (commande E R2 ) 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 E R activé),

- chargement parallèle (si décal = 0 et E R 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 E R pour charger le registre.

a a a n-1 n-2 0 e decal 1 0 1 0 1 0 E
a
a
a
n-1
n-2
0
e
decal
1
0
1
0
1
0
E
R
y
y
y
n-1
n-2
0

a) conception d'un registre à décalage

e A n E R registre R decal n Y
e A
n
E R
registre R
decal
n
Y

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 E R .

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 III-

22),

-

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 : y 0 , un seul signal de commande),

-

etc.

Exercices

- II.13 -

III-16 Proposer 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 E R , / decald.

III-17 Une 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

sorties

b
b
b
b
PILE k mots de b bits

PILE

PILE k mots de b bits
PILE k mots de b bits
k mots de b bits

k mots de b bits

push

pull

a). entrées sorties b b PILE k mots de b bits push pull a ) c
a). entrées sorties b b PILE k mots de b bits push pull a ) c

a) circuit pile

entrées

sorties

b
b
b
b

push

pull

pleine

vide

t p i l e entrées sorties b b push pull pleine vide PILE k mots
t p i l e entrées sorties b b push pull pleine vide PILE k mots
t p i l e entrées sorties b b push pull pleine vide PILE k mots

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-18 Il 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.

ch R

incr R

raz R

A H n registre compteur n bits : comptage modulo 2 n n Y max
A
H
n
registre compteur
n bits : comptage
modulo 2 n
n
Y
max

incr R

ch R

Y

t+1

1

*

Y

t

plus 1

0

0

Y

t

0

1

A

la sortie max est égale à 1

quand le registre a la

valeur 2

n

-1

Figure III-24 : registre compteur

Ce compteur modulo 2 n 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 2 n –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 2 2n à partir de deux compteurs 2 n .

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-19 Proposer 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).

A B D C a) interconnexions à réaliser
A
B
D
C
a) interconnexions à réaliser
SB SC   SD  

SB

SB SC   SD  

SC

SB SC   SD  
 
SD

SD

 
 

ai

bi

   

ci

 

di

D

D

     

D

     

D

   

EA

EB

EC

 

ED

   

SA

fil i du bus

c) connexion par bus pour les bits de rang i

cB cC cD cA 0 1 2 3 0 1 2 3 0 1 2
cB
cC
cD
cA
0 1 2 3
0 1 2 3
0 1 2 3
0 1 2 3
ai
bi
ci
di
D
D
D
D
EA
EB
EC
ED
b) connexions par multiplexeurs
pour les bits de rang i
EA
EB
A
B
SA
SB
bus
SC
SD
EC
ED
C
D

transfert de B dans D : SB = 1 et ED = 1

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 2 n mots de b bits permet de mémoriser 2 n 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 -> 2 n , qui active un signal de sélection de mot d'après le numéro mis en entrée (cf chapitre III,§1),

- 2 n registres de b bits, qui mémorisent les mots.

select L / E mot 0 mot 1 numéro mot 2 n mot 2 n-2
select
L / E
mot 0
mot 1
numéro
mot 2
n
mot 2
n-2
mot 2 n-1
b
b
sortie mot
entrée mot

select

L / E

action

0 *

 

1 0

lecture

1 1

écriture

a) schéma d'une mémoire et tableau de fonctionnement

select

0 1 2 . . . . . n-1 2
0
1
2
.
.
.
.
.
n-1
2

numéro

select 0

 

mot 0

select 1

 

mot 1

 
 

select 2

 

mot 2

 
 

select 2 n-1

 

mot 2

n-1

 
écriture lecture select i D y ligne d'entrée ligne de sortie
écriture
lecture
select i
D
y
ligne d'entrée
ligne de sortie

b) sélection des mots d'une mémoire par un décodeur

c) point de mémorisation

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
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 select 1 i et select 2 i), 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.

Exercices

- II.18 -

III-21 Proposer 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.

2. AUTOMATES

- II.19 -

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 , d

, l ) 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

- d est l'ensemble des transitions à Q ¥ E ¥ Q

- l 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 ; d est redéfini comme une fonction appelée fonction de transition, d : 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 l est une fonction de Q dans S (les sorties ne sont fonction que de l'état), l : Q -> S

- automate de Mealy sinon

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)

l : Q ¥ E -> S

2.2. REPRESENTATIONS DES AUTOMATES

2.2.A.

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.

a

init A/non b a B/non a b a C/non b b D/non b a E/oui
init
A/non
b
a
B/non
a
b
a
C/non
b
b
D/non
b
a
E/oui
init A b/non a/non B a/non b/non a/non C b/non b/non D a/oui
init
A
b/non
a/non
B
a/non
b/non
a/non
C
b/non
b/non
D
a/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.

Exemple

Exercice

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.

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 état courant A A B non B C B non C D
entrée
a
b
état courant
A A
B
non
B C
B
non
C D
B
non
D A
E
non
E C
B
oui
état suivant
sortie

a) automate de Moore

entrée a b état courant A B/non A/non B B/non C/non C B/non D/non D
entrée
a
b
état courant
A B/non
A/non
B B/non
C/non
C B/non
D/non
D B/oui
A/non

état suivant

b) automate de Mealy

Figure II-20 : tableaux d'états

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
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 l et d , 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 y 2 y 1 y 0 , 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).

1

init 000/0 0 1 001/0 1 0 1 010/0 0 0 011/0 0 1 100/1
init
000/0
0
1
001/0
1
0
1
010/0
0
0
011/0
0
1
100/1

a) graphe d'états codé

x 1 0 y y y 3 2 1 0 0 0 0 0 1
x
1
0
y
y
y
3
2
1
0
0
0
0
0 1
0 0 0
0
0
0
1
0
0 1
0 1 0
0
0
1
0
0
0 1
0 1 1
0
0
1
1
1
0 0
0 0 0
0
1
0
0
0
0 1
0 1 0
1
état suivant
z
Y
Y
Y
3
2
1

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.

x

- II.24 -

init A x x B x x x C x x D x x E
init
A x
x
B x
x x
C
x
x
D
x
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 y j et des entrées, associe les valeurs suivantes des variables d'états

Y i : il s'agit d'un ensemble de fonctions booléennes

Y i = f i (y n , y n-1 ,

,y

0

, e k , e k-1 ,

,

e

0).

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

de la sortie z, donnés ci-dessous :

d'états codé de la figure II-22 b), on tire les tableaux de Karnaugh de Y 3 Y 2 Y 1 et

- II.25 -

y1 x y1 y3 y2 00 01 11 10 y3 y2 0 1 00 000
y1 x
y1
y3 y2
00
01
11
10
y3 y2
0
1
00
000
001 001 010
00
0
0
01
011
001 100 000
01
0
0
11
?
?
?
11
?
?
10
010
001
?
?
10
1
?

tableau de Y3 Y2 Y1

Figure 24

t ableau de z

A partir des tableaux, on détermine de manière classique les équations d'état :

Y 3 = y 2 y 1 x

Y 2 = y 2 + y 3 + y 1

Y 1 = y 2 + x +

x

ainsi que l'équation de la sortie z :

Exercice

z = y 3

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 y i (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 :

y i (t+1) = f(état(t), entrées(t))

y i (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
Exemple
Le circuit réalisant l'automate de la figure II-22 a) est donné figure II-25
x
z
C
y3
D3
y2
D2
y1
D1
init
H
Figure II-25 : réalisation de l'automate
avec :
D
3 = y 2 y 1 x
D
2 = y 2 + y 3 + y 1
D
1 = y 2 + x +
x
z
= y 3
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

la forme : y(t +1) = y(t) f1(état(t) ,

- II.27 -

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

J

J 1

3

2

=

=

=

y 2 y 1 x

+

y 1 x

x

+ y2

y 3 x

K 3

K 2

K1

=

y 2 y 1 x

1 x x + y 2 y 3 x K 3 K 2 K 1 =

=

y 1 x

y 2 y 3 x K 3 K 2 K 1 = y 2 y 1

=

y 2 x

+

y 3 x

On peut effectuer des identifications locales, et pour cela aussi utiliser le tableau de transition de la bascule JK donné ci-dessous :

y t

y t+1

J

K

0

0

0

j

0

1

1

j

1

0

j

1

1

1

j

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 000 001 001 010 01 011
y1 x
y3 y2
00
01
11
10
00
000
001 001 010
01
011
001 100 000
11
?
?
?
10
010
001
?
tableau de Y3 Y2 Y1
On obtient :
=
y 2 y 1 x
=
J 3
K 3
y1 x y3 y2 00 01 11 10 00 0? 0? 0? 0? 01 0?
y1 x
y3 y2
00
01
11
10
00
0?
0?
0?
0?
01
0?
0?
1?
0?
11
?
?
?
?
?
10
??
?? ?
?

t ableau de J 3 K 3

1

L'expression de K3 est plus simple que précédemment, car les j correspondant aux codes d'état non valides ont été utilisés.

3.2.E.

OPTIMISATION D'AUTOMATES

- II.28 -

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.

type

Moore

type

Mealy

init

H

x

A. type Moore type Mealy init H x a b a b D E A B
A. type Moore type Mealy init H x a b a b D E A B
A. type Moore type Mealy init H x a b a b D E A B
A. type Moore type Mealy init H x a b a b D E A B
a b
a
b
a b
a
b
D E A B C état z D B A B C état z
D
E
A
B
C
état
z
D
B
A
B
C
é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 :

- T Dt max

+ t a max + t setup ,

- t a min + Dt min = t hold ,

où T est le temps entre deux fronts d'activations des bascules, c'est-à-dire la période de

des

bascules,

bascules, t setup et t hold 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 Dt min = t hold ,

par construction. La premère inégalité permet de déterminer la fréquence maximale de l'horloge.

Dt min sont les temps maximal et minimal de changement d'état des

l'horloge, t a max est le temps maximal et t a min est le temps minimal de calcul des entrées

Dt max et

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).

deb

a

b

c

- II.31 -

init H s A t u
init
H
s
A
t
u

a) entrées et sorties de l'automate

état courant

état suivant

* entrée

A.

deb

A

A.

a deb

B

A.

a deb

D

B

C

C.

b

A

C.

b

E

D

E

E.

c

F

E.

c

C

F.

c

F

F.

c

C

c) tableau de transitions

b

init deb A a.deb a.deb B / s D /s,t 1 1 b E /
init
deb
A
a.deb
a.deb
B / s
D /s,t
1
1 b
E / u
C / t
c
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 y i à 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

y i

=

1, ce qui est caractérisé par y i = 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 yD s b b yE yC c u c t
deb
a.deb
yA
a.deb
yB
yD
s
b
b
yE
yC
c
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, unsi = (y2,y0)

- C i le monôme caractéristique du code de i (code de i = 0101, C i = y3 y2 y1 y0 )

Du graphe d'états de la figure II-27, on déduit que :

unsA = C A + C C

unsC = C B + c C E + c C F unsD = deb C A

unsE = b C C + C D

s = C B + C D t = C C + C D + C F u = C E + C F

unsB = a deb C A

unsF = C E + C F

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 M EF unique, d'où :

unsA = C A + C C unsB = a deb C A

unsC = C B + c M EF unsD = deb C A

unsE = b C C + C D unsF = M EF

s = C B + C D t = C C + C D + C F u = M EF

d'où une réalisation à 12 monômes.

De plus, on remarque que les monômes C C et C F ne sont générés que pour faire la somme C C + C D + C F : si ces 2 monômes sont adjacents, C C + C F se simplifie en un seul monôme M CF 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 C A et C C 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

respecte les contraintes.

- II.34 -

y2 y0 ETAT A B C D E F y3 00 01 11 10 CODE
y2 y0
ETAT
A
B
C
D
E
F
y3
00 01 11 10
CODE
000
001
011 010
101 111
0 A
B
C
D
1 -
E
F
-

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

incr

cha

valeur

* entrée

de

chargement

A.

deb

A

0

1

0

A.

a deb

B

0

1

6

A.

a deb

D

1

?

?

B

C

1

? ?

C.

b

A

1

? ?

C.

b

E

0

1 2

D

E

1

? ?

E.

c

F

1

? ?

E.

c

C

0

1 7

F.

c

F

0

1 3

F.

c

C

0

1 7

En utilisant sytématiquement des multiplexeurs, on obtient le circuit suivant (Fig.II-29).

codes

chargés

dans le

compteur

c

3

7

a deb 0 1 1 c 2 init H 0 3 0 4 raz En
a deb
0
1 1
c 2
init
H
0 3
0 4
raz
En
incr
0 5
1 6
compteur
b 7
déb
modulo 8
Y
Y
0
0
1
cha
6 1
0
1
7
A
(valeur de
0 2
3
chargement)
1 4
5
6
2
7

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 2 n+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 ROM T A T conditions champ champ circuit de séquencement commande testées
init
H
E
ROM
T
A
T
conditions
champ
champ
circuit de
séquencement
commande
testées
calcul de
l'état suivant

Figure II-30 : réalisation à l'aide d'une ROM

Exemple

- II.37 -

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 champ

seq cond

adr

sorties

S1 S0

C

A2 A1 A0

s t u

S1 SO

séquencement

   

0 -

état := état plus1

1 0

si condition = 1 état := adr sinon état := état plus1

1 1

état := entrée état

C condition 0 b 1 c
C condition
0 b
1 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)

1 1

f

f

f

f

0 0 0

mot

1 (état D)

0 f

f

f

f

f

1 1 0

mot

2 (état E)

1 0

1

1

1 1

0 1 0

mot

3 (état F)

1 1

f

f

f

f

0 1 1

mot 4

 

mot 5

mot 6 (état B)

0 f

f

f

f

f

1 0 0

mot 7 (état C)

1 0

0

0 1 0

0 1 0

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.

Exercice

- II.38 -

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.

3-

Modifier 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.

5-

Evaluer 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.

6- Gé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

 

S2 S1 S0

séquencement

0

0

0

état := état plus 1

0

0

1

si condition alors état := adr sinon état := état plus 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

champ cond

 

C1 C0

condition

0

0

a

0

1

b

1

0

c

1

1

d

II-19 Soit un automate à 15 états, A, B,

commande : (A, O) (D, L), (B, E, G), (C, F, I, M).

,0.

Certains états ont le même champ de

1-

Proposer une réalisation de l'automate à l'aide de 2 ROM et donner la taille de ces 2

ROM

2-

En 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.

3- Si 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.