Electronique Numerique
Electronique Numerique
Electronique Numerique
Gérald Ouvradou
Michel Jézéquel
ELP304/203 : ELECTRONIQUE
NUMERIQUE
Polycopié 2/2
Logique séquentielle
Techniques d’intégration
Sommaire
Sommaire
Chapitre 5 : Fonctions de base de la logique séquentielle ........................................................1
1. INTRODUCTION..................................................................................................................................................................1
i
Sommaire
4.3.6 Applications des registres à décalage.................................................................................................................. 28
4.3.6.1 Conversions parallèle-série et série-parallèle d'un train d'information................................................................... 28
4.3.6.2 Ligne à retard numérique........................................................................................................................................ 28
4.3.6.3 Multiplication et division par 2n ........................................................................................................................... 28
4.3.6.4 Réalisation de générateurs de séquences pseudo-aléatoires .................................................................................. 29
5. LES COMPTEURS..............................................................................................................................................................31
6.1 CHEMIN CRITIQUE ET FREQUENCE MAXIMALE DE FONCTIONNEMENT D’UN CIRCUIT SYNCHRONE ............... 43
6.1.1 Définition ................................................................................................................................................................... 43
6.1.2 Exemples de calcul de la fréquence maximale de fonctionnement d’un circuit séquentiel........................ 44
6.1.2.1 Registre à décalage ................................................................................................................................................. 44
6.1.2.2 Compteur modulo 8............................................................................................................................................... 44
6.2 REGLES D’ASSEMBLAGE SEQUENTIEL ET ALEAS DE FONCTIONNEMENT ................................................................ 45
6.2.1 Initialisation.............................................................................................................................................................. 45
6.2.2 Horloge....................................................................................................................................................................... 45
6.2.2.1 Décalage d’horloge ................................................................................................................................................. 45
6.2.2.2 Intégrité du signal d’horloge................................................................................................................................... 46
6.2.3 Entrées statiques / entrées dynamiques................................................................................................................ 46
8. BIBLIOGRAPHIE...............................................................................................................................................................59
ii
Sommaire
Chapitre 6 : Fonctions et systèmes séquentiels complexes ...................................................61
1. INTRODUCTION................................................................................................................................................................61
1.1 DEFINITIONS....................................................................................................................................................................... 61
1.2 SOLUTIONS ARCHITECTURALES ETUDIEES POUR LA REALISATION D’UNE UNITE DE CONTROLE ................... 62
3. LES SEQUENCEURS..........................................................................................................................................................67
6. BIBLIOGRAPHIE...............................................................................................................................................................91
iii
Sommaire
Chapitre 7 : Techniques d’intégration de systèmes numériques............................................93
1. INTRODUCTION................................................................................................................................................................93
2. LES CIRCUITS....................................................................................................................................................................93
4. BIBLIOGRAPHIE............................................................................................................................................................ 106
iv
Chapitre 5 : Fonctions de base de la logique séquentielle
1. Introduction
Avec les circuits séquentiels, nous abordons un type nouveau de comportement par rapport à celui
des circuits combinatoires, dans lequel la dimension temporelle joue un rôle fondamental.
Pour le mettre en évidence, étudions un exemple simple de circuit séquentiel. Le circuit considéré
dispose d’une entrée E(t) et d’une sortie Y(t), t étant la variable temps. Sa fonction consiste à
reproduire sur sa sortie la seconde impulsion dans un train de deux impulsions consécutives présenté
sur son entrée. Ce comportement est illustré par le chronogramme de la figure 5.1. On néglige, pour
simplifier, le temps de propagation du circuit.
t1 t2
On constate que, bien que E(t1 ) = E(t 2 ) , Y(t1 ) ≠ Y(t 2 ) . Un tel comportement ne peut être
engendré par un circuit combinatoire, dont, par définition, l’état de ses sorties est lié exclusivement à
celui de ses entrées.
1
Chapitre 5 : Fonctions de base de la logique séquentielle
différents. Ce modèle théorique est appelé automate à états finis (AEF). Ce modèle est couramment
utilisé dans les domaines de l’électronique numérique et de l’informatique.
Le comportement d’un AEF peut être défini par un graphe d’états. Ce graphe spécifie les
événements régissant les transitions entre les différents états internes de l’automate. Chaque transition
est matérialisée par un arc étiqueté par deux types d’attributs binaires : d’une part, les valeurs des
entrées de l’automate associées à la transition, et d’autre part, les valeurs des sorties associées à cette
même transition. Le graphe de la figure 5.2 présente une solution au problème posé par l’exemple
introductif. Nous laissons le soin au lecteur de le vérifier. Pour l’y aider, signalons que l’état B
correspond à la situation à l’instant t2 et que l’état D correspond à l’instant t1 (cf. figure 5.1).
Détecteur
E "une impulsion Y
sur deux"
Y=0
E=0 E=1
E=1
A B
Y=0
E=0 E=0
Y=1 <=> E=1
D C
E=0
E=1 E=1
Y=1 <=> E=1
D’une façon générale, dans un graphe d’états associé à un circuit séquentiel possédant m entrées, il
y a 2 m arcs issus de chaque état, ou nœud, du graphe. Chaque arc correspond à une combinaison
donnée des entrées. Si, pour un état de départ donné, seules p entrées parmi m interviennent dans les
transitions issues de cet état, le nombre d’arcs représentés peut être réduit à 2 p . Dans l’étiquetage, les
m − p autres entrées sont marquées par un « X » à la place d’une valeur binaire. Notons enfin que le
nombre d’états d’un AEF n’est pas lié au nombre de ses entrées, mais à la complexité de son
comportement, autrement dit, à la longueur des séquences d’événements d’entrée qu’il reconnaît.
2
Chapitre 5 : Fonctions de base de la logique séquentielle
description comportementale d’un système séquentiel (modèle d’AEF) à sa description structurelle
sous forme de machine de Mealy.
L’idée de base consiste à coder, c’est-à-dire à matérialiser, les états de l’AEF par un vecteur, ou n-
uplet, de variables booléennes X = ( X 0 , L , X n −1 ) . Les variables X i , i = 0L n − 1 , sont appelées
variables internes. Chaque état est codé par une et une seule combinaison de ces variables. Pour coder
un AEF à N états il faut donc au moins n variables internes, si n est le plus petit entier vérifiant
N ≤ 2n .
La tâche suivante consiste à caractériser les différentes transitions entre les états et à calculer les
sorties de l’automate pour chaque transition. Le graphe de la figure 5.2 montre que le franchissement
d’une transition inter-état (i. e. d’un arc) est conditionné par deux entités :
• d’une part, son état courant (ou état présent) X, représenté par une combinaison des
variables internes X i ,
L’état d’arrivée d’une transition, encore appelé état suivant ou état futur, est également fonction
des variables d’entrée et des variables internes. Soit G cette fonction. Si, pour une transition donnée, X
est le vecteur représentant l’état courant, X + le vecteur représentant l’état futur, et E le vecteur
constitué des variables d’entrée de l’automate permettant le franchissement de la transition, G est une
fonction combinatoire de X et E :
X + = G( X, E) (1)
La fonction G est dite fonction « état suivant » ou fonction d’excitation secondaire. Cette fonction
étant combinatoire, on sait la réaliser, quelle que soit sa complexité.
La lecture du graphe d’états montre que le vecteur Y des variables de sortie se calcule également
en fonction des variables d’entrée et de l’état courant de l’automate. La fonction F permettant d’obtenir
Y est donc également une fonction combinatoire de X et E :
Y = F( X, E) (2)
3
Chapitre 5 : Fonctions de base de la logique séquentielle
Afin de réaliser les fonctions F et G, il est nécessaire de pouvoir accéder à tout instant à l’état
interne courant de la machine. Il faut, pour cela, être capable de stocker les variables internes. On les
place, à cette fin, dans une boîte noire. Cette boîte, qui présente une entrée et une sortie par variable, a
pour unique rôle de ralentir l’évolution de l’état de la machine, pour la rendre observable, en
introduisant un délai temporel Δt entre sortie et entrée. Des réalisations possibles de cette boîte seront
étudiées plus loin dans ce chapitre (cf. section 3). En appelant X out le vecteur de sortie de la boîte et
X in son vecteur d’entrée, on peut caractériser cette boîte noire par :
X out (t ) = X in (t − Δt ) (3)
On interconnecte ensuite la boîte noire caractérisée par l’équation (2) avec les fonctions F et G de
telle façon que X = X out (t ) et X + = X in (t − Δt ) . La structure de la machine de Mealy est
représentée en figure 5.3.
E
Y
F
Δt
+ X
X
G X in X out
4
Chapitre 5 : Fonctions de base de la logique séquentielle
E Y
&
F
+ X
X
} }
&
1
X 0+ X0
& Δt
1
&
X 1+ X1
& Δt
&
G
Ce logigramme montre que deux variables internes X 0 et X 1 ont été créées pour coder les quatre
états de l’automate. Le codage choisi dans cette réalisation est donné par le tableau 5.1.
Etat A B C D
X 0 X1 00 01 11 10
tableau 5.1 : codage des états du détecteur « une impulsion sur deux »
La réalisation de la fonction de retard Δt n’est pas précisée sur la figure 5.4. En pratique, deux
solutions sont envisageables :
Bien que le modèle de Mealy soit tout à fait général et permette théoriquement de décrire le
fonctionnement de tout circuit séquentiel, on définit habituellement plusieurs classes de fonctions
séquentielles. Leur étude est abordée, dans la suite de ce chapitre, par ordre de complexité croissante.
On s’intéresse, dans un premier temps, aux fonctions séquentielles les plus élémentaires que sont les
bascules, puis à des fonctions plus élaborées comme les registres (cf. section 4) et les compteurs (cf.
section 5), jusqu’aux structures plus complexes des automates et des séquenceurs (cf. chapitre 6). Le
cas particulier des mémoires à semi-conducteur fait l’objet d’une section à part dans ce chapitre
(section 7).
6
Chapitre 5 : Fonctions de base de la logique séquentielle
1. Q = 0 et Q ∗ = 1
2. Q = 1 et Q ∗ = 0
Ces deux états sont stables car le circuit est câblé de telle sorte que la propagation de ces valeurs
dans les inverseurs confirme cet état (nombre pair d’inverseurs). D’autre part, d’un point de vue
électrique, ce circuit offre une certaine robustesse par rapport aux perturbations. Si un bruit vient
perturber le signal Q ou Q ∗ , le circuit conserve son état tant que ces signaux restent dans la marge de
bruit des inverseurs (cf. chapitre 3, § 3.1.2.2). Ce point mémoire est également désigné par le terme
bistable.
Q Q*
Ce bistable constitue la base de la structure des mémoires RAM statiques (cf. section 8).
Toutefois, une mémoire numérique ne présente un réel intérêt que si l’on peut modifier aisément
son contenu, ce qui n’est pas le cas du bistable présenté ici. Une évolution de la structure du bistable,
appelée bascule RS, permet de le rendre inscriptible.
7
Chapitre 5 : Fonctions de base de la logique séquentielle
3.2 La bascule RS
La bascule RS est un point mémoire dans lequel on peut écrire un 0 ou un 1 logique.
R Q
Q*
S
• Mode mémoire : Si R = S = 0 , les entrées R et S n’ont aucune action sur le circuit. Celui-
ci se comporte comme le bistable de la figure 5.5.
• La combinaison R = S = 1 est interdite car elle entraîne une mise à 0 des deux sorties, et
cette configuration n’est pas mémorisable car Q et Q ∗ doivent avoir des valeurs logiques
complémentaires.
Les entrées R et S ont une action sur l’état de la bascule lorsqu’elles sont positionnées à 1, elles
sont dites actives à 1. On peut également réaliser une bascule RS à l’aide de portes NAND
(figure 5.7). La fonctionnalité est équivalente, mais dans ce cas, les entrées R et S sont actives à 0.
8
Chapitre 5 : Fonctions de base de la logique séquentielle
S Q
Q*
R
La bascule RS a un comportement asynchrone car une commutation sur une de ses entrées peut
entraîner immédiatement la modification de l’état du circuit.
R
≥ tW
S
t p ( S → Q) t p ( R → Q)
Q
t p (S → Q∗ ) t p ( R → Q∗ )
Q*
On constate une dissymétrie dans le positionnement des sorties Q et Q ∗ , ce qui conduit à conclure
que Q ∗ = Q n’est vérifiée que d’un point de vue statique et à la condition d’exclure le cas de la
commande contradictoire R = S = 1 .
Lorsque l’entrée R ou S est activée, le circuit passe par un régime transitoire avant d’arriver à un
nouvel état stable. Les temps de propagation correspondants valent :
t p ( R → Q) = t p ( S → Q ∗ ) = t pHL ( NOR)
t p ( S → Q) = t p ( R → Q ∗ ) = t pHL ( NOR) + t pLH ( NOR )
Pour que la mise à zéro ou à un se passe correctement, il ne faut pas désactiver l’entrée R ou S
avant que la bascule ne soit dans un état stable. Par conséquent, l’activation d’une entrée doit être
maintenue pendant une durée minimale appelée durée minimale d’impulsion, notée tW (Width), et
9
Chapitre 5 : Fonctions de base de la logique séquentielle
égale au temps de réaction maximal du circuit, soit t pHL ( NOR ) + t pLH ( NOR) dans le cas de la
bascule RS-NOR.
Pour un circuit combinatoire, si l’on ne tient pas compte des temps de propagation, la table de
vérité et les équations logiques du circuit expriment directement les sorties en fonction des entrées.
Pour un circuit séquentiel, la table de transition et les équations font, de plus, intervenir l’état interne
du circuit, considéré à deux instants différents : état présent et état futur (cf. machine de Mealy).
Dans le cas de la bascule RS, l’état interne de la bascule peut être représenté par la variable logique
Q (ou Q ∗ ), qui est également une sortie. Les entrées R et S et l’état Q conditionnent l’état futur de la
bascule et donc les valeurs futures de Q et Q ∗ , notées Q + et Q ∗+ . Le tableau 5.2 donne la table de
transition de la bascule RS-NOR.
R S Q+ Q ∗+
0 0 Q Q
0 1 1 0
1 0 0 1
combinaison
1 1 0 0
interdite
Q + = Q R S + R S = (Q S + S ) R = (Q + S ) R
Q ∗+ = Q R S + R S = (Q R + R ) S = (Q + R ) S
N. B. Une analyse temporelle d’un circuit doit se faire à partir d’un schéma donnant la structure du
circuit. Les équations ou la table de transition ne suffisent pas, car elles peuvent donner lieu à plusieurs
logigrammes possibles.
10
Chapitre 5 : Fonctions de base de la logique séquentielle
D Q
E Q*
Q + = ED + E Q
Q ∗ + = ED + E Q
E D Q+ Q ∗+
0 0 Q Q
0 1 Q Q
1 0 0 1
1 1 1 0
Cette table permet de distinguer deux modes de fonctionnement de cette bascule, commandés par
l’entrée E :
11
Chapitre 5 : Fonctions de base de la logique séquentielle
On dispose, avec la D latch, d’un moyen de définir les instants où la bascule est autorisée à
évoluer, c’est le concept de synchronisation. Il s’agit ici d’une synchronisation sur niveau : la
bascule est autorisée à évoluer (mode transparent) lorsque le signal de validation E est au niveau
logique 1.
• L’entrée D (Data) est dite entrée de donnée car elle fournit à la bascule la donnée à
mémoriser. Cette entrée n’a aucune influence sur le mode de fonctionnement de la bascule.
N. B. Il existe également des bascules D latches avec validation active sur niveau bas (figure 5.10).
Dans la suite de cette section, on supposera que, sauf indication contraire, les latches étudiées sont
actives sur niveau haut du signal E.
D Q
E Q*
figure 5.10 : représentation symbolique d’une D latch active sur niveau bas
• Mode mémorisation
− D latch : E = 0
− Bascule RS : R = S = 0
• Mise à zéro
− D latch : E = 1 et D = 0
− Bascule RS : R = 1 et S = 0
• Mise à un
− D latch : E = 1 et D = 1
− Bascule RS : R = 0 et S = 1
12
Chapitre 5 : Fonctions de base de la logique séquentielle
On en déduit :
R = ED
S = ED
La figure 5.11 présente une réalisation possible de la bascule D latch à partir d’une bascule RS-
NOR.
D R Q Q
S Q* Q*
figure 5.11 : exemple de réalisation d’une D latch à partir d’une bascule RS-NOR
Cependant, en logique CMOS, ce type de structure est peu utilisé car trop encombrante. On lui
préfère généralement une structure à base d’interrupteurs. En effet, l’équation Q + = ED + EQ montre
que la bascule D latch peut être réalisée à partir d’un multiplexeur 2 vers 1 (figure 5.12).
0
Q*
D 1
La figure 5.13 propose une structure détaillée à base d’inverseurs et d’interrupteurs de cette
bascule.
13
Chapitre 5 : Fonctions de base de la logique séquentielle
E*
D Q*
E
E
E E*
E*
N. B. Pour réaliser une latch active sur niveau bas, il suffit d’inverser les commandes E et E ∗ des
portes de transfert dans le schéma de la figure 5.13.
E verrouillage
≥ t su ≥ t h
D
t pLH ( E → Q ∗ ) t pHL ( D → Q ∗ )
Q*
t pHL ( E → Q) t pLH ( D → Q)
14
Chapitre 5 : Fonctions de base de la logique séquentielle
obtenue en sommant les temps de propagation des opérateurs élémentaires situés sur le chemin entre
l’entrée considérée et Q ou Q ∗ .
N. B. Suivant que les sorties commutent de 1 vers 0 ou de 0 vers 1, il faut considérer les temps de
propagation à la montée t pLH ou à la descente t pHL . Tous les cas de transitions HL et LH sur les
sorties ne figurent pas sur la figure 5.14.
• D’une part, lorsque la bascule passe en mode transparent, l’entrée E doit rester à 1 assez
longtemps pour que la valeur de D présente à l’entrée puisse se propager dans la boucle de
rétroaction. Il faut donc respecter une durée minimale d’impulsion tW sur E.
3.4.1 Introduction
Avec les bascules à déclenchement sur front, on atteint le stade ultime qui permet de considérer le
temps comme une grandeur entière, et de raisonner dans un espace intégralement numérique.
La synchronisation sur niveau, bien qu’elle définisse des instants privilégiés d’activité des
bascules, ne permet pas une complète discrétisation du temps. Un exemple pour le démontrer : si la
bascule D latch discrétise le temps, il est alors possible de réaliser un dispositif permettant de compter
ses instants d’activité lorsque le temps s’écoule. Cette fonction peut, en principe, être réalisée à l’aide
d’un dispositif tel que celui de la figure 5.15 (qui traite le cas particulier de données codées sur 4 bits).
Il est constitué d’une fonction combinatoire d’incrémentation, associée à un ensemble de bascules
chargées d’enregistrer le résultat de l’incrémentation lorsque le signal de synchronisation est actif
(CK = 1). Le contenu des bascules est ensuite réinjecté en entrée de l’incrémenteur. Le but de ce
dispositif est donc d’incrémenter le contenu des bascules à chaque fois que le signal de synchronisation
est actif.
15
Chapitre 5 : Fonctions de base de la logique séquentielle
A3 A2 A1 A0
incrémentation (S = A+1)
S3 S2 S1 S0
D Q D Q D Q D Q
E E E E
CK
Q3 Q2 Q1 Q0
Le comportement attendu du circuit est l’énumération d’une suite binaire naturelle sur les sorties
Q3Q2 Q1Q0 . En pratique le comportement observé n’est pas du tout celui espéré. Lorsque le signal de
synchronisation est actif (CK = 1), les bascules sont en mode transparent et les données circulent en
boucle fermée dans le dispositif. On obtient alors un comportement global apparemment désordonné,
et dépendant à la fois de la durée d’activation du signal de synchronisation et des temps de propagation
de chacun des éléments du montage. Ce comportement erratique est lié au fait que plusieurs données
successives peuvent passer dans la bascule lorsque CK = 1. Pour obtenir un comportement correct, il
faudrait que chaque bascule ne mémorise qu’une seule donnée à chaque fois que le signal de
synchronisation est actif. Les bascules à déclenchement sur front ou flip-flops permettent d’obtenir
un tel comportement.
Les bascules à déclenchement sur front se caractérisent par le fait que leurs sorties ne peuvent
commuter que lors du passage du front actif (montant ou descendant) de l’horloge. Le tableau 5.4
donne la table de transition d’une bascule D à déclenchement sur front montant.
16
Chapitre 5 : Fonctions de base de la logique séquentielle
D Q D Q
CK Q* CK Q*
(a) (b)
CK D Q+ Q ∗+
0 X Q Q
1 X Q Q
0 0 1
1 1 0
CK L1 CK* L2
D Q
CK* CK
CK* CK
CK CK*
Q*
CK CK*
Le mode de fonctionnement de chacune des deux latches est lié à l’état de l’horloge CK :
• CK = 0
17
Chapitre 5 : Fonctions de base de la logique séquentielle
La bascule L1 est en mode transparent et la bascule L2 est verrouillée. Ainsi, la sortie de
L1 suit l’entrée D, à une inversion près, mais la sortie de L2 reste bloquée.
• CK = 1
Pour résumer, la bascule L1 est chargée de faire l’acquisition, sur niveau bas de CK, de la valeur de
D à mémoriser. Elle est appelée bascule d’enregistrement, d’acquisition ou bascule maître. La
bascule L2 a pour rôle d’afficher sur les sorties Q et Q ∗ la valeur acquise par L1, lorsque CK passe à 1.
Elle est appelée bascule d’affichage ou bascule esclave. Puisque, lorsque CK = 1 ou CK = 0, l’une des
deux latches est bloquée, un changement d’état sur D ne peut pas être répercuté sur les sorties. La
valeur présente sur l’entrée de donnée D n’est recopiée en sortie qu’à l’instant où CK passe de 0 à 1.
Tout se passe donc comme si la copie de D sur la sortie Q avait lieu au moment du front montant de
CK.
Dans le cas où les commandes des interrupteurs sont inversées par rapport au schéma de la
figure 5.17, la bascule effectue la copie de D sur les fronts descendants de l’horloge.
≥ tW ≥ tW
CK
≥ t su ≥ th ≥ t su ≥ t h
D
t pLH (CK → Q) t pHL (CK → Q)
Q
t pHL (CK → Q ∗ ) t pLH ( CK → Q ∗ )
Q*
figure 5.18 : caractéristiques temporelles d’une D flip-flop à déclenchement sur front montant
18
Chapitre 5 : Fonctions de base de la logique séquentielle
3.4.4.2 Contraintes sur les entrées
En pratique, pour que la copie de D sur Q (et Q ∗ ) se déroule correctement, il est nécessaire,
comme dans le cas de la D latch, de respecter certaines contraintes temporelles sur les entrées.
− D’une part, pour une acquisition correcte de la valeur de D dans L1, l’entrée D doit être
stable pendant un temps minimum avant le front actif de CK. Il s’agit du temps de
prépositionnement ou setup time t su de la bascule.
− D’autre part, pour un affichage correct en sortie de la bascule, il est nécessaire que D
reste stable pendant un temps minimum après le front actif de l’horloge. Il s’agit du
temps de maintien ou hold time t h de la bascule.
• Il faut également respecter une durée minimale d’impulsion tW sur les deux niveaux de
l’horloge pour garantir le bon fonctionnement des deux latches (cf. § 3.3.3.2).
Le tableau 5.5 donne la table de transition d’une bascule JK à déclenchement sur front descendant
(figure 5.19).
J Q
CK
K Q*
figure 5.19 : représentation symbolique d’une bascule JK à déclenchement sur front descendant
19
Chapitre 5 : Fonctions de base de la logique séquentielle
CK J K Q+ Q ∗+
0 X X Q Q
1 X X Q Q
0 0 Q Q
0 1 0 1
1 0 1 0
1 1 Q Q
tableau 5.5 : table de transition d’une bascule JK à déclenchement sur front descendant
Le fonctionnement synchrone de la bascule JK, qui est représenté par les 4 dernières lignes de la
table de transition, est régi par les équations séquentielles suivantes :
Q + = JQ + KQ
Q ∗+ = J Q + KQ
Ce type de bascule est en pratique peu utilisé dans les circuits CMOS. Notamment, les outils de
synthèse logique réalisent les fonctions séquentielles à base de bascules D exclusivement. La bascule
D est, en effet, d’un encombrement moindre que la bascule JK et sa fonctionnalité est plus simple. La
bascule JK est néanmoins présente dans la plupart des bibliothèques d’opérateurs logiques.
Les bascules sont, à cet effet, en général dotées d’entrées de mise à zéro ou à un prioritaire des
sorties. Ces entrées sont le plus souvent actives à zéro. Le tableau 5.6 donne la table de transition de la
bascule D flip-flop de la figure 5.20. Celle-ci possède une entrée de mise à zéro prioritaire CLR ∗
(clear ou reset), et une entrée de mise à un prioritaire PR ∗ (preset ou set).
20
Chapitre 5 : Fonctions de base de la logique séquentielle
PR*
D Q
CK Q*
CLR*
figure 5.20 : représentation symbolique d’une D flip-flop à déclenchement sur front montant avec clear
et preset actifs à 0
PR ∗ CLR ∗ CK D Q+ Q ∗+
0 0 X X état interdit
0 1 X X 1 0 mise à 1 asynchrone
1 0 X X 0 1 mise à 0 asynchrone
1 1 0 X Q Q
1 1 1 X Q Q
1 1 0 0 1
1 1 1 1 0
− …
21
Chapitre 5 : Fonctions de base de la logique séquentielle
Entrées statiques et dynamiques d’un circuit séquentiel synchrone
Pour résumer, on distingue deux types d’entrées dans un système séquentiel synchrone :
• Les entrées dont l’action sur le circuit est conditionnée à un événement de synchronisation
(niveau d’un signal de validation ou front d’un signal d’horloge) sont qualifiées d’entrées
statiques. Par exemple, les entrées D ou J et K d’une flip-flop sont des entrées statiques.
Une telle entrée ne peut entraîner une action sur le système considéré que si la commande
de synchronisation est active (par exemple au moment du front actif l’horloge, pour une
flip-flop).
• Les entrées dont une commutation suffit à provoquer un changement d’état du circuit sont
qualifiées d’entrées dynamiques. C’est le cas par exemple des entrées R et S d’une
bascule du même nom, des entrées d’initialisation, ou bien de l’entrée d’horloge d’un
circuit synchrone. Si l’on excepte l’entrée d’horloge, une entrée dynamique a une action
asynchrone sur le système, car indépendante de l’horloge.
E
Y
F
X+ X
G bascules
flip-flops
CK
• Pour obtenir une machine de Mealy dont le comportement est globalement synchrone, il est
indispendable que les entrées E soient synchronisées sur CK. Dans le cas contraire, les sorties Y
n’évoluent pas en synchronisation avec CK.
22
Chapitre 5 : Fonctions de base de la logique séquentielle
Dans les systèmes numériques, les informations traitées sont en général des mots ou des nombres
de n bits, et non des bits considérés indépendamment les uns des autres. Pour la réalisation de
fonctions séquentielles, on a alors besoin d’opérateurs permettant de traiter les mots binaires :
mémorisation d’un mot, extraction d’un bit ou d’un ensemble de bits du mot, pour effectuer un
traitement particulier en fonction de la valeur ou de l’emplacement de ces bits, etc. On a également
besoin de fonctions permettant d’établir un ordre de succession entre des événements. Deux types
d’opérateurs séquentiels couramment utilisés pour réaliser ces traitements sont les registres et les
compteurs.
4. Les registres
4.1 Introduction
Un registre est un ensemble de bascules permettant de stocker une information en attendant son
traitement. Suivant l’interconnexion des bascules, les données stockées peuvent être soumises à
différents types de manipulations.
⎧
entrées ⎨ E1 E2 En-1 En
⎩
D Q D Q D Q D Q
bascule bascule bascule bascule
1 2 n-1 n
CK CK CK CK
⎧
sorties ⎨ Q1 Q2 Qn-1 Qn
⎩
Le registre de la figure 5.22 utilise des bascules à déclenchement sur front (flip-flops), mais
pourrait également utiliser des bascules à verrouillage (latches).
23
Chapitre 5 : Fonctions de base de la logique séquentielle
E D Q D Q D Q D Q D Q Qn
bascule bascule bascule bascule bascule
1 i-1 i i+1 n
CK CK CK CK CK
Dans l’exemple de la figure 5.23, la valeur appliquée sur l’entrée E est recopiée sur la sortie de la
bascule n après n fronts actifs de l’horloge H. Le contenu du registre peut être lu en série sur la sortie
Qn , ou bien en parallèle sur l’ensemble des sorties Q1L Qn des bascules. On peut, à partir de ce
registre, réaliser une fonction de décalage circulaire (rotation) à droite en connectant Qn à E.
D Q Q1 D Q D Q D Q D Q
bascule bascule bascule bascule bascule
1 i-1 i i+1 n
CK CK CK CK CK
Dans l’exemple de la figure 5.24, la valeur appliquée sur l’entrée E est recopiée sur la sortie de la
bascule 1 après n fronts de l’horloge H. Le contenu du registre peut être lu en série sur la sortie Q1 ou
24
Chapitre 5 : Fonctions de base de la logique séquentielle
bien en parallèle sur l’ensemble des sorties Q des bascules. On peut, à partir de ce registre, réaliser une
fonction de décalage circulaire (rotation) à gauche en connectant Q1 à E.
entrée 1 1 1 1
ES 0 D Q 0 D Q 0 D Q 0 D Q
série bascule bascule bascule bascule
1 2 3 4
CK CK CK CK
4.3.4 Initialisation
Lorsqu’elle est activée, cette commande force le contenu du registre à une valeur prédéterminée.
Elle utilise les entrées dynamiques de remise à zéro ou à un des différentes bascules du registre (cf.
§ 3.6.1). Il s’agit, le plus souvent, d’une remise à zéro générale du registre. La figure 5.26 montre le
cas d’une initialisation à 0101 d’un registre à décalage de taille 4. La commande d’initialisation INIT
est active à zéro.
1
1
25
Chapitre 5 : Fonctions de base de la logique séquentielle
4.3.5 Registres universels
Les fabricants de circuits intégrés proposent dans leurs catalogues de circuits standard des registres
dits « universels » regroupant les différentes fonctionnalités décrites dans les sections précédentes. Ces
circuits permettent, en mode synchrone, de réaliser les fonctions suivantes :
La vue externe d’un tel registre est donnée par la figure 5.27.
entrées parallèles
6444447444448
E1 E2 En-1 En
ESD ESG
entrée série droite entrée série gauche
MODE
SENS REGISTRE UNIVERSEL
H
INIT
SSG SSD
sortie série gauche sortie série droite
Q1 Q2 Qn-1 Qn
Le mode de fonctionnement du registre est déterminé par deux entrées de contrôle, MODE et
SENS. La valeur logique de l’entrée MODE indique le mode de fonctionnement du registre, décalage
ou chargement parallèle. La valeur logique de SENS indique le sens du décalage, droite ou gauche. Les
entrées de données prises en compte sont ESD pour un décalage à droite, ESG pour un décalage à
gauche, E1L En pour un chargement parallèle.
Le contenu du registre peut être lu en parallèle sur les sorties Q1L Qn des bascules, ou en série sur
SSD (SSG) dans le cas d’un décalage à droite (à gauche).
Toutes les entrées, excepté INIT, sont statiques, car leur état n’est pris en compte que sur le front
actif de l’horloge H. L’entrée d’initialisation est dynamique car son activité est indépendante de celle
de l’horloge (asynchrone). Elle est, par conséquent, prioritaire sur les autres entrées.
26
Chapitre 5 : Fonctions de base de la logique séquentielle
Ei
(Qn +1 = ESG)
0
Qi +1 0 D Q Qi
1
1 bascule
Qi −1 i
(Q0 = ESD) MODE
CK
SENS
H INIT
• Horloge : H
• État présent : X = ( Q1 , K , Q n )
• État futur : X + = ( D1 , K , Dn )
• Sorties : Y = ( Q1 , K , Q n )
La fonction de sortie F est triviale puisque les sorties du registre sont données par les sorties Q des
bascules et la fonction « état suivant » G est donnée par
27
Chapitre 5 : Fonctions de base de la logique séquentielle
1. Premier front actif d’horloge : chargement parallèle d’un mot dans le registre,
Pour une récupération des données en série à un rythme f (fréquence de H), les mots doivent être
appliqués en parallèle au rythme f / n.
Si, au contraire l’information traitée est insérée en série au rythme f par décalage dans le registre
(entrée ESD ou ESG suivant le sens du décalage), la saisie des n sorties des bascules en parallèle au
rythme f / n permet une conversion série-parallèle.
0 1 0 1 1 0 → 22 : état initial
Ì Ì Ì Ì Ì
Ì Ì Ì Ì Ì
28
Chapitre 5 : Fonctions de base de la logique séquentielle
Un décalage à gauche de n bits, avec un remplissage à droite avec des zéros (ESG = 0), permet
d’effectuer une multiplication par 2n. Par exemple,
0 0 0 1 1 1 → 7 : état initial
Ë Ë Ë Ë Ë Ë
Ë Ë Ë Ë Ë Ë
h1 h2 h3 hn-1 hn
D Q D Q D Q D Q D Q
CK CK CK CK CK
H
Les sorties de certaines bascules du registre à décalage sont rebouclées sur l’entrée du registre par
l’intermédiaire d’opérateurs OUEX en fonction de la valeur des paramètres hi . La structure exacte du
générateur pseudo-aléatoire est donnée par son polynôme générateur
P( X ) = 1 + h1 X + h2 X 2 +L+hn −1 X n −1 + hn X n ; hi ∈{0,1} . Si hi = 1, la sortie de la bascule n° i est
rebouclée sur l’entrée, si hi = 0, elle ne l’est pas.
La séquence produite par un tel registre est de caractère pseudo-aléatoire (séquence périodique de
2n − 1 mots de n bits dont la fonction d’autocorrélation discrète est proche de celle d’un bruit blanc) si
le polynôme générateur P(X) est un polynôme primitif dans le corps de Galois GF(2) (i. e. P(X)
irréductible et k = 2n − 1 est le plus petit entier tel que P(X) divise 1 + X k ). La liste des polynômes
convenant est donnée dans tous les ouvrages spécialisés dans la théorie du codage.
29
Chapitre 5 : Fonctions de base de la logique séquentielle
D Q D Q D Q D Q
CK CK CK CK
H
Q1 Q2 Q3 Q4
La séquence résultante, obtenue par la saisie en parallèle des sorties des bascules à chaque période
de CK, est constituée de tous les mots binaires de 4 bits, excepté 0000. La séquence produite est la
suivante (le registre est initialisé au départ à 1111) :
30
Chapitre 5 : Fonctions de base de la logique séquentielle
5. Les compteurs
5.1 Introduction
D Q
H CK Q*
H
D = Q*
Q
N.B. Pour un fonctionnement correct du diviseur par 2, il faut s’assurer que le temps de propagation
entre l’entrée D et la sortie Q∗ est supérieur au temps de maintien ou hold time th de la bascule, ce qui
est toujours le cas en pratique.
31
Chapitre 5 : Fonctions de base de la logique séquentielle
5.1.3 Comptage synchrone / asynchrone
Les compteurs sont classés en deux catégories suivant leur mode de fonctionnement et leur
structure. On distingue :
Un système séquentiel est synchrone lorsque tous les changements d’états du système sont liés à
l’activité du même signal d’horloge (cf. § 2.4). Si cette condition n’est pas vérifiée, le système est dit
asynchrone. Par exemple, les registres à décalage et le diviseur par 2 sont des circuits synchrones. Les
compteurs étudiés dans la section suivante sont asynchrones.
Q1 Q2 Q3
D Q D Q D Q
H CK Q* CK Q* CK Q*
H
Q1
Q2
Q3
(Q3 Q2 Q1) 000 001 010 011 100 101 110 111 000 001
32
Chapitre 5 : Fonctions de base de la logique séquentielle
On notera que ce compteur réalise également les fonctions de division de fréquence par 2 (sorties
Q1 et Q1∗ ), par 4 (sorties Q2 et Q2∗ ), et par 8 (sorties Q3 et Q3∗ ).
Le chronogramme de la figure 5.32 ne tient pas compte des temps de propagation dans les
opérateurs. En pratique, la structure cascadée du compteur induit un cumul des retards entre l’horloge
H et les sorties. Les temps de propagation sur les 3 sorties sont donnés par :
t p ( H → Q1 ) = t p ( CK → Q) bascule1
t p ( H → Q2 ) = t p ( H → Q1∗ ) + t p (Q1∗ → Q2 ) = t p ( CK → Q ∗ ) bascule1 + t p ( CK → Q) bascule2
t p ( H → Q3 ) = t p ( H → Q1∗ ) + t p (Q1∗ → Q2∗ ) + t p (Q2∗ → Q3∗ )
= t p ( CK → Q ∗ ) bascule1 + t p ( CK → Q ∗ ) bascule2 + t p (CK → Q) bascule3
Les temps de propagation s’ajoutant d’une bascule à la suivante, les compteurs asynchrones de
grande taille sont relativement lents. D’autre part, le décalage des sorties les unes par rapport aux
autres produit des états transitoires indésirables après chaque front actif d’horloge.
Q1 Q2 Q3
D Q D Q D Q
H CK Q* CK Q* CK Q*
H
Q1
Q2
Q3
(Q3 Q2 Q1) 000 111 110 101 100 011 010 001 000 111
33
Chapitre 5 : Fonctions de base de la logique séquentielle
5.2.3 Compteurs / décompteurs asynchrones à cycles incomplets
Avertissement : la méthode présentée ci-après est parfois utilisée en pratique, mais nous ne la
recommandons pas car elle peut entraîner des aléas de fonctionnement, c’est-à-
dire des erreurs de fonctionnement difficilement prévisibles (cf. § 6.2).
2. On tronque son cycle par un rebouclage asynchrone : lorsque le cycle est terminé, le
compteur revient à l’état 0...0 par activation des entrées dynamiques de remise à zéro
(clear ou reset) des bascules. Il faut pour cela ajouter une fonction combinatoire de
détection de l’état N .
Q1 Q2 Q3
Montage
D Q D Q D Q déconseillé !
H CK Q* CK Q* CK Q* décodage
CL* CL* CL* de 101
Q1
Q2*
Q3
H
Q1
Q2
Q3
CL*
(Q3 Q2 Q1) 000 001 010 011 100 000 001 010 011 100
Le comptage débute normalement. Lorsque le compteur passe à l’état 5, cette configuration est
détectée (passage à 0 de la sortie de la porte NAND), le reset des bascules est activé, et les sorties Q
des bascules sont forcées à 0. Dès que la configuration 101 n’est plus présente en entrée de la porte
NAND, l’entrée de remise à zéro des bascules repasse à 1, et le compteur retourne dans un état de
comptage normal.
34
Chapitre 5 : Fonctions de base de la logique séquentielle
• D’une part, il faut prendre en compte la présence d’un état transitoire indésirable sur les
sorties Q lors de la détection entraînant la remise à zéro.
En pratique, les compteurs à cycles complets sont parfois utilisés pour des applications ne
nécessitant pas une fréquence d’horloge très élevée, mais les compteurs à cycles incomplets ne
présentant pas une sûreté de fonctionnement suffisante, on leur préfère de loin l’utilisation de
compteurs synchrones.
La réalisation d’un compteur à N états nécessite, comme dans le cas des compteurs asynchrones, n
bascules, avec 2n −1 < N ≤ 2n . La construction du compteur passe par l’écriture de sa table de
transition, c’est-à-dire la table donnant pour chaque état du compteur l’état suivant correspondant.
Cette table permet ensuite de calculer l’équation logique de l’entrée D de chaque bascule en fonction
des sorties Q de l’ensemble des bascules. Nous allons traiter plusieurs exemples pour illustrer ce
principe.
35
Chapitre 5 : Fonctions de base de la logique séquentielle
5.3.1.1 Exemple de synthèse de compteur binaire synchrone à cycle complet : compteur
modulo 8
La table de transition réduite du compteur binaire modulo 8 est donnée par le tableau 5.7. On n’y
fait apparaître que le fonctionnement purement synchrone du compteur, c’est-à-dire son comportement
au moment des fronts actifs d’horloge.
0 0 0 0 0 1
0 0 1 0 1 0
0 1 0 0 1 1
0 1 1 1 0 0
1 0 0 1 0 1
1 0 1 1 1 0
1 1 0 1 1 1
1 1 1 0 0 0
Le compteur est donc constitué de 3 bascules. L’expression des entrées D des bascules en fonction
de Q1 , Q2 , et Q3 est directement déduite de la table de transition précédente, car pour les bascules D,
Qi+ = Di , i ∈{1;2;3} (cf. § 3.4.2). Ces expressions peuvent être simplifiées soit directement, soit en
utilisant la méthode de Karnaugh.
0 1 0 1
Q3 0 1 0 1
Q3 1 1 0 1
36
Chapitre 5 : Fonctions de base de la logique séquentielle
La structure du compteur correspondant est donnée en figure 5.35. On a utilisé au maximum les
sorties Q ∗ des bascules pour minimiser le nombre de portes logiques nécessaires à la réalisation de la
fonction « état suivant ». Notamment, la fonction ET ( Q1 . Q2 ) est réalisée à l’aide d’une porte NOR,
moins encombrante qu’une porte ET en logique CMOS (cf. chapitre 3).
D Q D Q D Q
3 2 1
H CK Q* CK Q* CK Q*
Q3 Q2 Q1
H
Q1
Q2
Q3
(Q3 Q2 Q1) 000 001 010 011 100 101 110 111 000 001
Le chronogramme obtenu est globalement le même que celui d’un compteur asynchrone, mais
toutes les sorties du compteur sont directement obtenues à partir des fronts actifs d’horloge, si bien
que, si les temps de propagation des bascules sont identiques, toutes les sorties du compteur
commutent en même temps.
N.B. On peut montrer que pour un compteur binaire à cycle complet quelconque, la structure du
compteur est donnée par les relations suivantes :
D1 = Q1
Di = ( Q1K Qi −1) ⊕ Qi , pour i > 1
37
Chapitre 5 : Fonctions de base de la logique séquentielle
0 0 0 0 0 1
0 0 1 0 1 0
0 1 0 0 1 1
0 1 1 1 0 0
1 0 0 0 0 0
Le compteur est donc constitué de 3 bascules, tout comme le compteur modulo 8. La méthode
d’obtention des expressions des entrées D des bascules en fonction de Q1 , Q2 , et Q3 est identique. On
pourra utiliser les états indifférents des tables de Karnaugh lors de la simplification.
• Expression de D1 Q1 Q2
D1
1 0 0 1
Q3 0 ⎯ ⎯ ⎯
• Expression de D2 Q1 Q2
D2
0 1 0 1
Q3 0 ⎯ ⎯ ⎯
On obtient D2 = Q1 Q2 + Q1Q2 = Q1 ⊕ Q2 .
• Expression de D3 Q1 Q2
D3
0 0 1 0
Q3 0 ⎯ ⎯ ⎯
38
Chapitre 5 : Fonctions de base de la logique séquentielle
D Q D Q D Q
H CK Q* CK Q* CK Q*
Q3 Q2 Q1
H
Q1
Q2
Q3
(Q3 Q2 Q1) 000 001 010 011 100 000 001 010 011 100
1 1 0 1 0 1
1 0 1 1 0 0
1 0 0 0 1 1
0 1 1 0 1 0
0 1 0 0 0 1
0 0 1 1 1 0
• D1 = Q1
• Expression de D2 Q1 Q2
⎯ 1 1 0
Q3 1 0 ⎯ 0
D2 = Q1 Q2 + Q1Q3
39
Chapitre 5 : Fonctions de base de la logique séquentielle
• Expression de D3 Q1 Q2
⎯ 1 0 0
Q3 0 1 ⎯ 1
D3 = Q2 Q1 + Q2 Q3
Ces circuits sont dits « compteurs programmables ». La figure 5.37 montre les principales
entrées / sorties d’un tel compteur.
entrées de chargement
E4 E3 E2 E1
LOAD
ENABLE
UP / DOWN COMPTEUR PROGRAMMABLE
H
INIT
Q4 Q3 Q2 Q1
sorties
La figure 5.38 montre un exemple de réalisation d’une cellule d’un tel compteur, avec les entrées
de commande suivantes :
40
Chapitre 5 : Fonctions de base de la logique séquentielle
• LOAD = 1, mode chargement parallèle,
Le chargement synchrone à l’aide des entrées LOAD et Ei est similaire au chargement parallèle
synchrone d’un registre à décalage (cf. 4.3.3). Parfois, certains compteurs possèdent également une
entrée de remise à zéro synchrone, qui permet le chargement synchrone direct de l’état 0...0, sans
utiliser les entrées Ei .
L’entrée ENABLE valide le comptage : si elle est active, le comptage se déroule normalement,
sinon il y a rebouclage de la sortie Q de chaque bascule sur son entrée D.
Pour un compteur / décompteur, les deux fonctionnalités sont implantées dans le circuit, et l’entrée
de programmation UP/DOWN permet de sélectionner la fonction logique correspondante à appliquer
sur l’entrée de chaque bascule.
Ei
1 Di Qi
0 D Q
Qi+ (décomptage) 0 0
Qi+ bascule
1 i
Qi+ (comptage) 1
LOAD CK
ENABLE
UP / DOWN
H INIT
En général, les circuits programmables possèdent également une sortie de détection de l’état final
du comptage (tous Qi à 1).
41
Chapitre 5 : Fonctions de base de la logique séquentielle
• Adressage de mémoires (cf. § 8.2) : par exemple pour la réalisation d’un séquenceur (cf.
chapitre 6, section 3).
42
Chapitre 5 : Fonctions de base de la logique séquentielle
6.1.1 Définition
Dans un circuit séquentiel synchrone, l’état des éléments séquentiels est remis à jour à chaque
front actif de l’horloge. Pour étudier les retards liés à la propagation des valeurs logiques dans le
circuit, il faut donc s’intéresser à ce qui se passe pendant chaque période du signal d’horloge. Les
chemins de propagation considérés ne sont alors pas les chemins allant des entrées du circuit jusqu’à
ses sorties, comme pour une fonction combinatoire, mais les chemins de propagation entre deux
opérateurs de mémorisation, deux bascules par exemple (figure 5.39). On définit alors le chemin
critique d’un circuit séquentiel comme étant le chemin de propagation qui limite sa fréquence de
fonctionnement.
Horloge
La figure 5.40 permet d’analyser les différentes contraintes temporelles à prendre en compte sur le
chemin de propagation de la figure 5.39. Pendant une période T de l’horloge, il faut prendre en
compte :
43
Chapitre 5 : Fonctions de base de la logique séquentielle
Horloge
Entrée A
EA
≥ thold ( A)
Sortie A
SA
Entrée B t p ( A)
EB
figure 5.40 : contraintes temporelles sur le chemin de propagation d’un circuit séquentiel synchrone
En pratique, les différents temps de propagation d’une bascule sont toujours supérieurs au temps
de maintien, quelle que soit la charge de la bascule. La période T du signal d’horloge doit donc vérifier
pour tous les chemins de propagation la relation suivante :
Le chemin critique est le chemin de propagation « le plus long » du circuit, c’est-à-dire celui qui
impose la contrainte la plus forte sur T.
N.B. Les 2 fonctions de mémorisation de la figure 5.39 ne sont pas, en pratique, nécessairement
distinctes. Il peut s’agir de la même bascule (cas du rebouclage d’une sortie sur l’entrée).
44
Chapitre 5 : Fonctions de base de la logique séquentielle
4. Bascule 1 → bascule 2, passant par Q1 ,
6.2.1 Initialisation
Lors de la conception de systèmes/circuits séquentiels, il faut toujours prévoir une commande
d’initialisation des circuits. Cette commande est connectée aux entrées dynamiques de remise à zéro ou
à un des bascules et permet de les forcer dans un état connu, à la mise sous-tension du circuit
notamment.
Pour certaines applications, la présence d’une commande d’initialisation est facultative, comme ce
peut être le cas pour un registre à décalage utilisé en ligne à retard numérique. En revanche, pour
d’autres applications, elle est obligatoire, en particulier pour des circuits contenant des rebouclages :
générateur pseudo-aléatoire, compteurs. Pour de telles fonctions, il est nécessaire de pouvoir à un
moment donné forcer l’état des bascules.
6.2.2 Horloge
Le concepteur de cette fonction a voulu réaliser un registre à décalage fonctionnant sur front
descendant de l’horloge H1 et utilisant deux bascules différentes. L’horloge de la bascule 2, H 2 , est
obtenue à partir de H1 par inversion. Le rôle de la bascule 2 consiste à copier la valeur de Q1 sur Q2
aux fronts montants de H 2 . On peut observer sur le chronogramme de la figure 5.41 que le
fonctionnement de la bascule 2 va dépendre du rapport entre les temps de propagation de l’inverseur et
de la bascule 1. Suivant que t p (inv) < t p ( bascule 1) ou le contraire, la valeur stockée dans la bascule
2 est différente. D’autre part, même si t p (inv) < t p ( bascule 1) , il y a de fortes chances pour que le
45
Chapitre 5 : Fonctions de base de la logique séquentielle
temps de prépositionnement en entrée de la bascule 2 ne soient pas respecté. Ce montage a donc toutes
les chances de ne pas fonctionner correctement en raison du décalage d’horloge.
Q1
D1 D Q D Q Q2
Bascule 1 Bascule 2
H1 H2
CK CK
H1
H2 t p ( inv) t p ( inv)
D1
Q1
t p ( bascule 1) t p ( bascule 1)
46
Chapitre 5 : Fonctions de base de la logique séquentielle
Q1 Q2 Q3
D Q D Q D Q
H
CK Q* CK Q* CK Q*
CL* CL* CL*
H
Comportement
escompté
Q1 Comportement
réel possible
Q2
Q3
CL*
En utilisant un décompteur synchrone, le problème du décalage cumulé des sorties disparaît. Mais,
même dans ce cas, l’utilisation d’une telle commande asynchrone n’est pas fiable : il suffit que les
bascules présentent des temps de réaction à CL∗ très différents les uns des autres (si les sorties des
bascules n’ont pas la même sortance, par exemple), et la commande asynchrone peut forcer le
décompteur dans un état autre que celui prévu. Ce type de commande est donc à proscrire !
47
Chapitre 5 : Fonctions de base de la logique séquentielle
Dans le cas où un circuit séquentiel est commandé par des signaux extérieurs, généralement sans
lien avec l’horloge du circuit, c’est-à-dire asynchrones, il faut synchroniser ces signaux avant leur
utilisation. La figure 5.43 montre la synchronisation d’une entrée par une bascule D flip-flop.
E D Q Esync
H CK
INIT
INIT
Esync
tp tp tp
48
Chapitre 5 : Fonctions de base de la logique séquentielle
7.1 Introduction
Une mémoire est un dispositif permettant de stocker puis de restituer une information. Un tel
dispositif de stockage a été étudié avec le registre tampon (cf. § 4.2). Néanmoins, cette solution à base
de registres devient encombrante dès lors que la quantité d’information à stocker devient importante (à
partir de quelques centaines de bits). C’est la raison pour laquelle il existe des fonctions spécialement
dédiées à la mémorisation de grandes quantités d’information, ce sont les mémoires intégrées à semi-
conducteur.
Elles sont apparues dans les années 70. Elles se sont alors rapidement substituées aux mémoires à
tore de ferrite et à tambour magnétique dans l’équipement de la mémoire centrale des ordinateurs, en
raison de leurs multiples avantages : absence de pièces mécaniques, emploi aisé dû au conditionnement
sous forme de circuits intégrés, et grande rapidité d’accès aux informations.
• Sa capacité : C’est la quantité d’information qui peut être stockée dans la mémoire. Elle
s’exprime en bits, ou en mots de n bits, si l’information est stockée sous la forme de mots
binaires. L’octet (mot de 8 bits) est couramment utilisé dans les systèmes à
microprocesseurs.
• Son organisation : Les mémoires sont en général structurées sous la forme d’un tableau
de mots binaires. L’organisation de la mémoire désigne les dimensions de ce tableau : « l
lignes et c colonnes » (sa capacité est alors égale à l × c × n bits, dans le cas du stockage
de mots de n bits).
• Ses modes de fonctionnement : Les deux opérations possibles sur une mémoire sont
l’écriture d’informations dans la mémoire et la lecture de ces informations. On distingue
de ce point de vue deux grandes catégories de mémoires à semi-conducteur :
− Les mémoires vives dont le contenu est accessible aussi bien en lecture qu’en écriture,
− Les mémoires mortes, qui ne sont accessibles qu’en lecture lors de leur utilisation
dans un système numérique, et pour lesquelles l’opération d’écriture représente un
événement exceptionnel et est plutôt appelée programmation.
• Son type d’accès : Il n’est évidemment pas réaliste d’envisager une connexion externe
pour chaque mot mémorisé. Il faut alors recourir à une technique de multiplexage pour
minimiser la connectique. Le principe du multiplexage donne lieu à deux types
d’implémentations :
− Multiplexage spatial : A chaque cellule mémoire est associée une adresse. Toutes les
cellules sont alors connectées à un dispositif de décodage (le décodeur d’adresses) qui
permet de sélectionner les mots en fonction de l’adresse appliquée sur son entrée. La
mémoire est alors dite à accès aléatoire ou direct.
De ce fait, on constate que les mémoires à accès aléatoire sont employées dans une grande majorité
des applications. Les mémoires à accès séquentiel sont cependant utilisées pour des applications bien
spécifiques : mémoires de files d’attente FIFO (First In First Out), mémoires de piles LIFO (Last In
First Out). Certaines mémoires, comme les mémoires vidéo sur les cartes graphiques, allient les deux
types d’accès : écriture des pixels par adressage (accès aléatoire en écriture), et envoi des informations
vers le dispositif de visualisation (lecture) sous forme de trames, dans l’ordre croissant des adresses
(accès séquentiel en lecture).
Pour un type d’accès donné, le temps d’accès est également lié à la capacité et à l’organisation de
la mémoire.
N.B. Pour certains types de mémoires (DRAM notamment), la notion de temps d’accès n’est pas
suffisante pour caractériser les performances en vitesse de la mémoire. On définit alors la notion de
temps de cycle (cf. section 7.2.2.3, page 54).
L’adresse de lecture ou d’écriture A est codée sur un bus de p bits. Le décodeur d’adresses permet
de sélectionner un mot de la mémoire parmi au plus 2 p en fonction de la valeur de A. En général, le
décodage est en fait réalisé à l’aide de deux décodeurs tirant parti de l’organisation de la mémoire : le
premier sélectionne une ligne de la mémoire (décodeur ligne), et le second sélectionne une colonne
(décodeur colonne). Ceci permet de réduire la complexité de la circuiterie de décodage.
Le bus de données DO (Data Out) permet de lire le mot sélectionné par l’adresse A en mode
lecture, et le bus de données DI (Data In) porte le mot à écrire à l’adresse A en mode écriture. Dans le
cas d’une mémoire morte, seule l’opération de lecture est possible, et le bus DI est absent. Dans le cas
d’une mémoire vive, les entrées DI et les sorties DO peuvent être regroupées en n accès
bidirectionnels, utilisant des opérateurs 3 états. Certaines mémoires vives, dites à double port,
possèdent deux jeux de bus (adresses + données) distincts permettant deux opérations simultanées
(2 lectures, 2 écritures, ou 1 lecture et 1 écriture).
La logique de contrôle reçoit les commandes de sélection de la mémoire, d’écriture/lecture, et gère
l’écriture et la lecture des mots de la mémoire. Toute mémoire à accès aléatoire possède au moins les
entrées de commande suivantes:
50
Chapitre 5 : Fonctions de base de la logique séquentielle
• Une entrée R / W de sélection de la lecture ou de l’écriture pour les mémoires vives,
décodeur
d'adresses
p --> 2p
A1
Plan
mémoire
p
2 mots de n bits
Ap-2
Ap-1
logique
commandes de circuit d'entrée/sortie
contrôle
51
Chapitre 5 : Fonctions de base de la logique séquentielle
Suivant la structure de la cellule mémoire, il existe plusieurs types de mémoires RAM. On
distingue principalement :
• Les mémoires statiques, dont la cellule de base est constituée d’un bistable (cf. § 3.1), et
qui conservent l’information tant que le circuit reste sous tension,
• Les mémoires dynamiques, dont la cellule de base est constituée par un condensateur.
Les RAM statiques et dynamiques sont des mémoires dites volatiles car leur contenu disparaît
lorsque l’alimentation est coupée. Il existe cependant des RAM non volatiles (NVRAM) munies d’une
source d’énergie, en général constituée de piles au lithium incorporées au boîtier du circuit.
B B
sélection ligne
L’écriture et la lecture sont autorisées lorsque la ligne sur laquelle se situe la cellule mémoire est
sélectionnée. La cellule pratique CMOS est donnée par la figure 5.46.
B B
sélection ligne
Pour l’écriture d’une valeur logique dans une cellule mémoire, deux connexions sont utilisées en
pratique, une pour chaque accès du point mémoire : l’application d’un 0 logique sur B permet d’écrire
52
Chapitre 5 : Fonctions de base de la logique séquentielle
un 0 dans la cellule et l’application d’un 0 sur B permet d’écrire un 1. Pour la lecture, les connexions
verticales B et B sont connectées à l’entrée d’un amplificateur différentiel, utilisé en comparateur, qui
délivre un 1 logique si B = 1 et B = 0, et un 0 logique dans le cas contraire. La structure d’une SRAM
de 32 mots de 1 bit est donnée en figure 5.47. Le décodage des adresses (5 bits) se décompose en un
adressage ligne sur 3 bits ( L0 , L1, L2 ), et un adressage colonne sur 2 bits ( C0 , C1 ). Pour chaque
adresse, une ligne et une colonne sont activées, et les interrupteurs MOS correspondants sont fermés.
Par exemple sur la figure 5.47, lors de l’application de l’adresse L2 L1 L0 C1C 0 = 00111, la deuxième
ligne et la quatrième colonne sont activées. L’écriture d’un 0 ou d’un 1 dans la cellule située à
l’intersection est obtenue par application d’un 1 logique sur la grille du transistor adéquat.
L0 L1 L2
1 0 0
1 1
+ -
C0 C1
écriture écriture
du 0 du 1
B13
Sij
donnée
sélection
Cs ≈ 0,01 pF
I f ≈ 10−10 A
d’où dV / dt = − I f / Cs ≈ −0,1 V / ms .
Avec ces valeurs, l’information est donc disponible pendant une durée de l’ordre de la dizaine de
millisecondes. En raison de cette courte durée de rétention, il faut intégrer dans la circuiterie de la
mémoire un dispositif de rafraîchissement de la mémoire. Le contenu des cellules est régénéré à une
fréquence de l’ordre de quelques centaines de Hz.
D’autre part, la lecture du contenu d’une cellule requiert des organes de contrôle supplémentaires :
• Les niveaux récupérés en lecture sont très faibles à cause de la capacité parasite de la ligne de
lecture, beaucoup plus élevée que C s (rapport 50, typiquement). Par conséquent, la lecture
nécessite la présence d’amplificateurs en sortie.
• L’opération de lecture détruit la valeur mémorisée, il faut donc prévoir un dispositif de
réécriture des données lues.
C’est grâce à ce type de mémoire de très grande capacité que peuvent progresser les technologies
MOS, en particulier en ce qui concerne les réductions de géométrie des transistors et l’augmentation du
nombre de couches métalliques. En effet, la structure très répétitive des mémoires dynamiques permet
l’optimisation d’une technologie sur les critères de vitesse et de densité d’intégration.
7.2.2.3 Critères de choix SRAM / DRAM
Les RAM statiques sont beaucoup plus encombrantes que les RAM dynamiques. Ces dernières
permettent ainsi une intégration beaucoup plus dense, et donc une très grande capacité de
mémorisation à un moindre coût par bit.
En contre-partie, les organes de contrôle d’une DRAM sont beaucoup plus complexes que ceux
d’une SRAM : dispositifs de rafraîchissement, amplificateurs de lecture, etc... Leur utilisation est
54
Chapitre 5 : Fonctions de base de la logique séquentielle
beaucoup plus délicate que celle des SRAM, les contraintes dynamiques étant nombreuses.
Notamment, étant donné leurs grandes capacités, les constructeurs ont été souvent amenés à
multiplexer l’accès aux adresses, pour réduire le nombre de broches des circuits. L’utilisateur doit alors
présenter séquentiellement sur les mêmes fils l’adresse ligne puis l’adresse colonne. On définit alors
pour les mémoires dynamiques le temps de cycle de la mémoire, qui représente la durée minimale à
respecter entre deux accès consécutifs. D’autre part, l’accès à la mémoire est bloqué pendant le
rafraîchissement. En conséquence, dans le cas d’application à fortes contraintes temporelles, on utilise
de préférence des SRAM (ex : mémoire cache).
Pour des applications imposant des hautes performances en vitesse, il existe des RAM dites
synchrones [Pri96], incluant une interface synchrone chargée de gérer les opérations d’écriture et
lecture. En entrée et sortie de la mémoire, des latches commandées par l’horloge du système
permettent de stocker temporairement les adresses, les signaux de contrôle et les données. L’interface
synchrone est gérée de telle sorte qu’une opération d’écriture ou de lecture peut être exécutée par cycle
d’horloge. Cependant, en raison du temps d’accès de la mémoire, les données ne sont disponibles en
sortie qu’après un nombre fixé de cycles d’horloge (latence).
Le tableau suivant donne un aperçu du standard du marché des RAM en 2008 (RAM les plus
couramment utilisées par les équimentiers) :
temps d’accès
capacité ou temps de cycle
typique
55
Chapitre 5 : Fonctions de base de la logique séquentielle
Le procédé d’inscription peut être inaccessible à l’utilisateur, c’est le cas des mémoires ROM
proprement dites dont l’inscription est effectuée par une opération technologique à la fabrication, ou
accessible d’une façon irréversible (ROM programmables) ou réversible (ROM reprogrammable).
colonnes
sortie
C1 C2 C3
R
VDD
L1
lignes
L2
L3
On observe la présence d’un transistor à l’intersection de chaque ligne et chaque colonne. Suivant
la valeur inscrite dans la cellule considérée, 0 ou 1, le transistor est connecté (inscription d’un 0) ou
non (inscription d’un 1) à sa colonne de sélection. Suivant la technique de réalisation de la mémoire,
les transistors sont « déconnectés » suivant des procédés différents : dans le cas d’une ROM (non
programmable), le constructeur dote les transistors à « déconnecter » d’une couche d’oxydation
supplémentaire qui augmente considérablement leur tension de seuil et les bloque de manière
permanente. Dans le cas des ROM programmables, chaque transistor est relié à la colonne de sélection
56
Chapitre 5 : Fonctions de base de la logique séquentielle
par un fusible (figure 5.50), qui peut être détruit en faisant passer un courant fort dans le transistor
correspondant.
colonne
fusible
ligne
Lorsque la colonne i et la ligne j sont sélectionnées, si le transistor sélectionné est valide, il est
passant et impose un 0 logique sur la sortie, sinon, il est bloqué et la sortie est ramenée à 1.
Les ROM et les PROM réalisées en logique CMOS mettent rarement en œuvre un réseau dual de
transistors PMOS. En pratique, l’étage P est limité à un MOS correctement polarisé, ce qui ramène au
cas de la matrice NMOS étudiée précédemment.
N. B. La fabrication de masques spécifiques pour réaliser une ROM est une opération lourde et
coûteuse, qui n’est justifiée que pour la fabrication de grandes séries (au moins 100 000 pièces).
• Les EPROM (Erasable PROM), dont la programmation électrique peut être effacée par
une exposition du circuit à un rayonnement ultraviolet,
• Les mémoires flash sont les mémoires programmables les plus récentes (début des années
90). Elles sont également programmables et effaçables électriquement, mais beaucoup plus
denses que les EEPROM.
L’organisation des EPROM est identique à celle des PROM, les transistors MOS et les fusibles
étant remplacés par des transistors à grille flottante ou FAMOS (Floating gate Avalanche injection
MOS), qui peuvent être rendus passants par l’application d’une impulsion de tension, puis être de
nouveau rendus isolants lorsqu’il sont exposés un certain temps à des U.V. (entre 5 et 30 mn).
Une limitation importante des EPROM est leur effacement par U.V. qui n’est pas réalisable in situ
(il faut ôter le circuit de la carte). D’autre part, une opération d’effacement entraîne la
déprogrammation de la totalité de la mémoire. Les EEPROM sont des mémoires dont l’opération
d’effacement est réalisée électriquement et peut être sélective et ne porter que sur un mot. Ces
mémoires font appel à des technologies très spécifiques, dérivées de la technologie MOS (notamment
transistors MNOS, Metal Nitride Oxide Semiconductor [PBOZ97]). Le principal inconvénient de ces
composants est leur faible densité d’intégration par rapport aux EPROM. Les EEPROM sont de plus
en plus remplacées par les mémoires flash.
57
Chapitre 5 : Fonctions de base de la logique séquentielle
Les mémoires flash connaissent un développement rapide depuis ces dernières années. Ce sont des
dispositifs qui combinent la densité d’intégration des EPROM et les facilités d’effacement et de
reprogrammation des EEPROM. Les points mémoires sont constitués de transistors dits « à grille
flottante » [PBOZ97]. Les temps d’effacement et de programmation sont respectivement de l’ordre de
quelques millisecondes et de quelques centaines de microsecondes. En 2008, le standard du marché des
mémoires flash utilise typiquement des mémoires de 2 à 16 GOctets alimentées sous 2,5 Và 3,3V, avec
des temps d’accès de25 ns.
On distingue deux catégories de mémoires vives à accès séquentiel : les files d’attente ou FIFO
(First In First Out), et les piles ou LIFO (Last In First Out). Dans une FIFO, les informations sont
accessibles dans l’ordre où elles ont été écrites. Dans une LIFO, elles sont accessibles dans l’ordre
inverse de leur écriture.
La figure 5.51 représente l’architecture d’une FIFO. Il s’agit en fait d’une RAM double-port dont
un bus d’adresses est dédié à la lecture et l’autre à l’écriture, et dont l’adressage est géré par des
compteurs. A chaque écriture ou lecture, le pointeur correspondant est incrémenté par comptage. Ce
dispositif sert le plus souvent d’interface entre deux flots de données de fréquences différentes. La
capacité de la FIFO, ainsi que les mécanismes prévenant les dépassements doivent être dimensionnés
en fonction de l’application à traiter.
E mémoire S
Les LIFO ne comportent qu’un pointeur associé à un compteur / décompteur qui s’incrémente à
chaque écriture et se décrémente à chaque lecture.
Pour certaines applications telles que le stockage momentané d’images (Vidéo RAM), on utilise
des dispositifs dits « à transfert de charge » ou CCD (Charge Coupled Devices) qui sont à la frontière
du numérique et de l’analogique car il s’agit d’éléments réalisés en technologie MOS capables de
58
Chapitre 5 : Fonctions de base de la logique séquentielle
décaler des quantités de charges variables en synchronisme avec deux ou trois signaux d’horloge
décalés dans le temps.
8. Bibliographie
[CLDS86] M. Cand, J.-L. Lardy, E. Demoulin, et P. Senn, Conception des circuits intégrés MOS,
éléments de base, perspectives, Collection Technique et Scientifique des
Télécommunications, Eyrolles, Paris, 1986.
[LSI89] LSI Logic, Logic Design Manual fir ASICs, LSI Logic, 1989.
[Dan96] J. D. Daniels, Digital Design from Zero to One, Wiley & Sons Inc., 1996.
[Pri96] B. Prince, High Performance Memories, Wiley & Sons Inc., 1996.
[PBOZ97] P. Pavan, R. Bez, P. Olivo, and E. Zanoni, « Flash memory cells - An overview »,
Proc. of the IEEE, vol. 85, n°8, august 1997.
59
Chapitre 5 : Fonctions de base de la logique séquentielle
60
Chapitre 6 : Fonctions et systèmes séquentiels complexes
1. Introduction
1.1 Définitions
Les systèmes séquentiels qui ont été décrits jusqu’ici peuvent être qualifiés de simples car leur
structure est directement superposable au modèle général des systèmes séquentiels, l’automate à états
finis (AEF) présenté au chapitre 5, § 2.1.
Pour aborder les problèmes de conception de manière progressive et hiérarchique, il est nécessaire
de partitionner le système en sous-ensembles dévolus soit au traitement des données, soit au pilotage
ou séquencement de ces traitements (cf. figure 6.1). Les sous-ensembles du premier type constituent la
partie opérative du système, les seconds, la partie contrôle (encore appelée commande, ou
supervision). Ces deux types de sous-ensembles relèvent de techniques de réalisation qui leur sont
propres.
Le comportement général d’une unité de contrôle consiste à positionner des signaux destinés au
contrôle de la partie opérative en fonction d’un état interne et de l’état de signaux d’entrée provenant
de la partie opérative ainsi que de l’extérieur du système. Le comportement d’une unité de contrôle
répond donc strictement à la définition d’un système séquentiel simple tel qu’on l’a défini dans le
chapitre 5. L’objet de ce chapitre est de présenter les possibilités de réalisation de telles unités. On
exclut toutefois les solutions à base de microcontrôleurs car elles relèvent plutôt d’un cours sur les
processeurs.
61
Chapitre 6 : Fonctions et systèmes séquentiels complexes
commandes
Partie Partie
contrôle signaux d'état opérative
Environnement
• La première est basée sur la mise en œuvre directe de l’automate à états finis, appelée
machine à états finis. On étudiera deux variantes de cette machine, l’une baptisée
machine de Mealy, déjà présentée dans le chapitre 5, l’autre nommée machine de
Moore, qui est une restriction de la précédente.
• La seconde approche fait appel au concept de séquenceur, utilisé dans les unités de
contrôle des premières générations de processeurs. La complexité de l’unité de contrôle y
est réduite au prix de restrictions comportementales. Nous étudierons deux variantes de
mise en œuvre, le séquenceur câblé et le séquenceur microprogrammé.
1 Il existe toutefois des systèmes complexes n'utilisant pas d'horloge. De tels systèmes sont dits autosynchronisés (self
timed) ou insensibles aux délais (delay insensitive). Leur conception relève de techniques bien particulières qui n’ont pas
lieu d’être abordées dans ce bloc.
62
Chapitre 6 : Fonctions et systèmes séquentiels complexes
(graphe d’états) car cette action est en général implicite. Il faut donc jamais perdre de vue que l’on
doit raisonner dans un espace temporel discret.
E
Y
Entrées F
(synchronisées Sorties
sur CK)
X n +1
X
Xn
G bascules
flip-flops
CK
Horloge
E
Y
Entrées F
(synchronisées Sorties
sur CK)
X n +1
XXn
G bascules
flip-flops
CK
Horloge
63
Chapitre 6 : Fonctions et systèmes séquentiels complexes
Il s’agit d’une restriction de la machine de Mealy. On constate que la fonction de sortie F ne reçoit
plus le vecteur d’entrée E. En conséquence les valeurs de sortie ne sont plus directement liées aux
entrées, elles ne dépendent plus que de l’état interne de la machine.
Au plan comportemental, cette restriction implique qu’il n’est plus possible comme dans le cas de
l’automate de Mealy de conditionner directement les valeurs de sortie à celles des entrées de
l’automate. Comme l’illustre la figure 6.4 pour un automate à une entrée E et une sortie S, un état E1
exhibant une sortie conditionnelle dans la spécification d’un automate de Mealy (figure 6.4 (a) et (b))
ne peut être traduit à l’aide d’un automate de Moore qu’au prix de l’insertion d’un état supplémentaire
E’1 (figure 6.4 (c) et (d)). La machine de Moore est donc potentiellement moins rapide que la machine
de Mealy.
E=0 E=0
S=1
E=1
S=0 E=1
S=1 S=0
E=0 E=0
E=1 E=1
Notation : Sur la figure 6.4, les schémas (a) et (b) donnent deux représentations graphiques possibles
d’une même portion du graphe d’états d’une machine de Mealy. Les schémas (c) et (d) montrent deux
représentations graphiques possibles d’une même portion du graphe d’états d’une machine de Moore.
64
Chapitre 6 : Fonctions et systèmes séquentiels complexes
Nous citons ici une possibilité de réalisation d’une machine de Moore ou de Mealy à l’aide de
deux composants seulement. Elle consiste à utiliser une mémoire PROM et un registre tampon R à
déclenchement sur front, tel que le montre la figure 6.5.
PROM
E
S
@ Dout
R
CK
figure 6.5 : réalisation d’une machine à états finis par PROM et registre
Sur cette figure, on constate que le vecteur d’entrée et le vecteur d’état sont connectés aux entrées
d’adresse (notées @) de la PROM. Le codage des fonctions F et G est effectué sous forme de table de
vérité au sein de la PROM. Chaque mot mémoire correspond à une combinaison des variables internes
et d’entrée, son contenu est défini comme les valeurs correspondantes qui sont prises par les fonctions
F et G. Cette solution a l’avantage d’être compacte et générale (structure unique pour Mealy et
Moore). En contrepartie, elle ne se prête à aucune optimisation dans la réduction du coût de
réalisation.
N. B. : Dans la sémantique de la machine à états synchrone, les commutations des entrées sont
supposées être synchrones avec les commutations des variables d’état. Si tel n’est pas le cas, le
comportement de la machine est erratique. Dans une telle situation, il est indispensable de
resynchroniser les entrées avant de les exploiter dans la machine (cf. chapitre 5, § 6.2.3).
L’implantation PROM-registre permet d’intégrer très simplement cette modification comme le montre
la figure 6.6. Toutefois, cette disposition a une influence dont il faut tenir compte dans le
comportement de l’automate, puisqu’il y a un retard dans la réaction de celui-ci vis-à-vis de ses
entrées d’au plus une période d’horloge.
65
Chapitre 6 : Fonctions et systèmes séquentiels complexes
PROM
E
S
R @ Dout
CK
figure 6.6 : réalisation d’une machine à états finis par PROM et registre avec traitement des entrées
asynchrones
Dans le cas d’une machine séquentielle, la complexité associée à la réalisation des blocs
combinatoires F et G dépend de deux facteurs :
2 Comme il s'agit d'une estimation, on exprime généralement la complexité à une constante multiplicative près. Parfois
même, on ne s'intéressera qu'à son comportement asymptotique (i.e. quand la taille du problème tend vers l'infini). Les
fonctions définissant respectivement les bornes inférieure et supérieure de la complexité sont notées Ω() et O().
66
Chapitre 6 : Fonctions et systèmes séquentiels complexes
inférieure de la complexité. On peut ainsi facilement atteindre P 2 n en opérant un codage dense des
états de l’automate.
Toutefois, lorsque l’on restreint le problème au cas de la réalisation d’unités de contrôle, une autre
voie d’optimisation s’offre : identifier un comportement stable de l’unité et tenter d’en tirer parti pour
réduire la complexité. Une autre voie, qui peut être complémentaire, consiste à jouer sur un
compromis entre complexité matérielle et temporelle (fréquence maximale de fonctionnement). Ce
sont ces deux idées qui sont exploitées conjointement dans le concept de séquenceur qui est présenté
dans la suite.
3. Les séquenceurs
Ce concept est issu de travaux consacrés au développement des ordinateurs qui datent des années
50. Le point de départ en a été la constatation que le caractère dominant dans le comportement d’une
unité de contrôle est la séquence. D’où l’idée du séquenceur en tant que machine à produire des
séquences. Une telle machine se construit assez naturellement à partir d’un compteur binaire. Mais un
comportement réel montre des irrégularités qui consistent à commuter (i.e. faire un saut) d’une
séquence à une autre. Un compteur programmable, grâce à sa fonction de chargement, peut répondre à
ce besoin. Enfin, une unité de contrôle ne se limite pas à un comportement aveugle, elle doit pouvoir
réagir à des événements externes, il faut donc pouvoir conditionner l’exécution de ces sauts à des
signaux externes. C’est ici qu’intervient le compromis entre complexité matérielle et temporelle.
Contrairement à une machine à états finis, on impose dans un séquenceur des restrictions sur
l’ensemble des entrées influant sur l’exécution d’un saut. La position extrême qui consiste à limiter,
pour un saut donné, ce sous-ensemble à une seule entrée, est dans les faits souvent retenue. D’un point
de vue matériel, cette fonctionnalité de sélection « 1 parmi n » est naturellement prise en charge par un
multiplexeur adressé par la position courante du séquenceur.
Ce principe ainsi mis en œuvre est appelé séquenceur câblé. On verra par la suite, une évolution
visant à intégrer un niveau logiciel dans la machine, que l’on nomme séquenceur microprogrammé.
• Un décodeur d’actions dont le rôle est d’activer une sortie en fonction de la position
courante du compteur.
• Un transcodeur dont le rôle est de calculer l’adresse des sauts, c’est-à-dire la valeur qu’il
faudra charger dans le compteur si la condition de saut est satisfaite.
Il est important de comprendre qu’il n’existe qu’une alternative dans le cas d’un saut : soit il se
réalise, soit le compteur progresse d’un pas, c’est-à-dire, en séquence. C’est encore une restriction
comportementale par rapport à une machine à états finis, qui permet de réduire la complexité
matérielle. On note enfin que certaines entrées du multiplexeur de conditions peuvent être connectées
au 0 logique (i.e. condition toujours fausse) ou au 1 logique (i.e. condition toujours vraie). La
condition toujours fausse impose au compteur le fonctionnement en séquence, c’est-à-dire son mode
67
Chapitre 6 : Fonctions et systèmes séquentiels complexes
de base. La condition toujours vraie est une facilité offerte au concepteur pour organiser plus aisément
l’algorithme qui sera implémenté par le séquenceur.
Une fois le câblage et la fonction de transcodage établis, le comportement du séquenceur est figé,
d’où l’expression de séquenceur « câblé ».
Transcodeur
load
Compteur
Enb programmable
CO
Multiplexeur
de Décodeur
conditions d'actions
0 1 0
Une notion essentielle qui apparaît ici est celle d’algorithme. En effet, pour spécifier le
comportement d’un séquenceur, on n’utilise plus le graphe d’états comme pour les AEF, mais
l’algorithme. L’algorithme représente par rapport au graphe d’états la même restriction
comportementale que le séquenceur par rapport à la machine à états finis. Dans la conception d’une
unité de contrôle par séquenceur, on sera donc parfois amené à transformer un graphe d’états en
algorithme, celui-ci devant répondre aux restrictions de séquencement du séquenceur. Ce problème est
abordé dans la section 5.2.2.
68
Chapitre 6 : Fonctions et systèmes séquentiels complexes
plus complexes en offrant au concepteur (programmeur) une vue plus abstraite du support
d’exécution. Ensuite, gagner en flexibilité. Ainsi, à partir d’un même support matériel d’exécution, on
peut engendrer des comportements variables.
Dans cette optique, une mémoire a été insérée au niveau des sorties du compteur ordinal (cf.
figure 6.8). En conséquence, celui-ci n’agit plus directement sur le reste de la structure. Il sélectionne
un mot dans la mémoire, et c’est le contenu de ce mot qui agit sur la structure. Les mots stockés en
mémoire constituent les instructions du séquenceur, ou plus exactement ses micro-instructions afin
de faire le distinguo avec les instructions machine d’un ordinateur.
load
Compteur
Enb programmable
CO
adresse
Bloc Mémoire
combinatoire (PROM)
sorties
Multiplexeur
Décodeur
de Enb
d'actions
conditions
Par principe, le comportement d’un séquenceur microprogrammé ne peut être appréhendé sans lui
associer la structure de la micro-instruction élaborée par le concepteur. La figure 6.9 présente, à titre
d’exemple, une structure typique de micro-instruction pour le séquenceur de la figure 6.8.
69
Chapitre 6 : Fonctions et systèmes séquentiels complexes
C1 D1 D2 D3 D4 D5 D6 D7 D8 D9
Une interprétation possible du contenu de la micro-instruction est proposé dans la suite de cette
section : le bit C1 constitue le code opératoire ou code d’ordre de la micro-instruction et les bits
restants (D1, …, D9) forment le champ opérande de celle-ci.
Dans ce cas les bits D1 à D9 codent le numéro de la sortie à activer (en fait 3 bits parmi
les 9 suffisent pour sélectionner une sortie sur 8 du décodeur). Ce champ peut lui-même
être segmenté s’il est nécessaire d’activer plusieurs sorties simultanément. On peut même
afficher directement l’état des sorties dans ce champ.
Un bloc combinatoire est chargé d’élaborer les commandes du compteur ordinal (cf. figure 6.8). Il
reçoit en entrée les bits C1, D1, D2 de la micro-instruction ainsi que le signal issu du multiplexeur de
conditions.
70
Chapitre 6 : Fonctions et systèmes séquentiels complexes
4. Bilan comparatif
Si l’on prend comme critère la complexité, on peut établir un bilan assez simple dans la
comparaison des approches « machine à états » et séquenceur (figure 6.10). On peut même y
introduire aisément le microcontrôleur qui offre un support tout intégré à une approche fortement
dominée par le logiciel.
Machine
à états Séquenceur Microcontrôleur
finis
Complexité temporelle
Complexité matérielle
D’un point de vue pratique, il s’ensuit qu’une machine à états est plus rapide que les solutions
concurrentes, qui, elles, font des économies en matériel au prix d’une séquentialisation du
comportement.
Toutefois, cette figure ne mentionne pas des critères également importants tels que :
La figure 6.11 tente d’évaluer ces deux premiers critères pour les différentes approches
envisagées.
degré d'universalité
Machine
à états Séquenceur Microcontrôleur
finis
71
Chapitre 6 : Fonctions et systèmes séquentiels complexes
L’abstraction du matériel grâce à une couche logicielle permet de repousser les limites de la
complexité comportementale synthétisable. Il est peut-être moins évident de comprendre l’évolution
du degré d’universalité qui montre un creux pour l’approche séquenceur. En fait, le modèle
conceptuel sur lequel repose la machine à états, (i.e. l’automate à états finis), est à la fois très simple et
très puissant. Un graphe est beaucoup plus général qu’un algorithme, ce dernier étant obtenu au prix
de contraintes comportementales fortes. Il s’ensuit que la structure du séquenceur est plus restrictive
sur le comportement que celui-ci peut engendrer. Autrement dit, la structure du séquenceur est plus
fortement dépendante du comportement à synthétiser que celle de la machine à états. On pourrait
s’attendre à ce que cette dépendance entre comportement et structure soit encore plus marquée dans le
cas du microcontrôleur. La réalité est inverse car le comportement de celui-ci est synthétisé par
l’intermédiaire d’un langage. Ce n’est plus la structure du support matériel qui fixe le degré
d’universalité, mais le langage auquel on recourt pour fixer son comportement. La seule exigence
étant que le support d’exécution offre les mécanismes de base nécessaires à l’implémentation du
langage.
72
Chapitre 6 : Fonctions et systèmes séquentiels complexes
• Quand la complexité de l’automate est faible et que l’on recherche une implantation
compacte, une solution plus coûteuse à base de séquenceur ou de microcontrôleur ne se
justifie pas.
Si l’on n’est pas dans l’un ou l’autre des cas précédents, on s’orientera plutôt vers une réalisation
à base de microcontrôleur. Toutefois, s’il n’existe pas sur le marché de modèle suffisamment
performant pour satisfaire aux contraintes de temps de l’application, ou encore si une réalisation ASIC
est imposée, on optera pour un séquenceur.
6. Établir le schéma logique (et les listings de programmation dans le cas où des composants
programmables sont utilisés),
Chacune de ces étapes peut donner lieu à un travail d’optimisation éventuel (réduction du nombre
d’états, codage astucieux des états, minimisation des fonctions F et G). Ces opérations sont souvent
délicates ou fastidieuses car elles sont en général à base d’heuristiques (i.e. de recettes de cuisine)
[CV86].
73
Chapitre 6 : Fonctions et systèmes séquentiels complexes
Un exemple de synthèse est traité en section 5.3.3 afin d’illustrer cette méthode.
4. Faire une simulation fonctionnelle et temporelle du schéma logique obtenu ; corriger les
paramètres si nécessaire, jusqu’à l’obtention de résultats satisfaisants,
2. La seconde étape consiste à choisir entre une structure câblée et une structure
microprogrammée. L’abstraction qu’offre le concept de programmation, ainsi que la plus
grande flexibilité des structures microprogrammées plaident naturellement en faveur de
cette seconde solution. Toutefois, si l’unité de contrôle à réaliser présente un comportement
relativement simple ou si les contraintes en temps sont trop sévères pour une réalisation
microprogrammée, on s’orientera plutôt vers une solution câblée.
74
Chapitre 6 : Fonctions et systèmes séquentiels complexes
X./Y
XY
A B
/(X/Y)
XY
XX Y/Y
A Ω B
X
/X Y
Y
figure 6.13 : addition d’un état Ω dans le graphe de la figure 6.12, permettant de limiter le test à une
seule entrée
La figure 6.14 donne une illustration de ce principe pour l’exemple de la figure 6.12.
Dans cet exemple, on suppose que les états de l’automate sont codés sur 3 bits Q2 , Q1 ,
Q0 , et que le code correspondant à l’état A est 010.
75
Chapitre 6 : Fonctions et systèmes séquentiels complexes
000
X 001
& 010
Y 011
100
101
110
111
Q2 Q1 Q0
Toutefois, cette seconde méthode n’est pas applicable lorsque les états présentent plus de
deux transitions sortantes. Dans ce cas, on ne peut se soustraire à une restructuration du
graphe.
En conclusion, lorsque ces opérations ont été réalisées (si besoin est), la fonction chargée
d’élaborer les sorties du séquenceur peut s’exprimer par un simple décodage des sorties du compteur
ordinal.
Ces problèmes, s’ils surviennent, peuvent éventuellement être réglés en multipliant la fréquence
de l’horloge qui cadence l’automate ou bien encore en réintroduisant du parallélisme dans
l’architecture du séquenceur. C’est cette dernière possibilité qui rend l’approche des séquenceurs
délicate car ce concept est ouvert à de nombreux compromis entre complexité matérielle et temporelle.
76
Chapitre 6 : Fonctions et systèmes séquentiels complexes
77
Chapitre 6 : Fonctions et systèmes séquentiels complexes
transmission devant avoir un débit suffisant pour donner ainsi l’illusion aux stations clientes que la
communication s’effectue simultanément dans les deux sens.
STATION A STATION B
DEA DEB
CANAL
DRA UNIQUE
DRB
DE : Données Émission
DR : Données Réception
Le transport des informations sur le canal ne peut se faire directement sous forme brute. En effet,
certaines données technologiques (récupération d’horloge, détection d’erreurs de transmission, …) et
la synchronisation nécessaire au dialogue entre les stations requièrent la mise en place de protocoles
de communication. Ceci implique l’ajout d’informations supplémentaires aux données brutes à
transporter. On parle d’encapsulation des données. L’ensemble des données véhiculées par le canal
est structuré sous la forme de trames de communication. Dans le cas de l’application considérée, la
structure de la trame de communication est présentée en figure 6.16.
Synchro. (2o) Fanion (1o) Signalis. (1o) Données (32o) LRC (1o)
Les stations qui communiquent à travers le système d’alternat ont chacune leur horloge
propre, qui sont calées aussi précisément que possible sur la même fréquence. Toutefois,
il n’existe pas de référence de phase commune, ce qui pose problème côté réception pour
échantillonner les bits. Le champ de synchronisation contient une alternance de 1 et de 0
qui permet à une boucle à verrouillage de phase pilotant le récepteur de se caler sur la
phase du train de bits reçu.
Le fanion est un motif binaire attendu par le récepteur pour lui indiquer la fin du champ
de synchronisation et afin de se repérer dans la trame.
• Signalisation (1 octet) :
78
Chapitre 6 : Fonctions et systèmes séquentiels complexes
demande de son interlocuteur, de signaler une erreur de transmission sur la dernière trame
reçue, …
• LRC (1 octet) :
• formatage des données en réception (conversion des paquets en flots continus de données,
démultiplexage vers les voies de sortie).
79
Chapitre 6 : Fonctions et systèmes séquentiels complexes
8
Registre RAM émission
série-//
8
64 x 8 bits
8
8
8
8
Construction paquets
8
Insertion Fanion
Automate Insertion LRC
Données émission de gestion
émission 8 Paquets
émission
Registre
Gestion des //-série Canal de
horloges Registre transmission
série-//
Paquets
8 réception
Automate
Registre de gestion
//-série 8 réception Détection fanion
Vérification LRC
8
8 Récupération
8 rythme
8 réception (DPLL)
RAM
réception
Données réception 64 x 8 bits
8
En suivant le cheminement des données dans la voie d’émission, on y trouve tout d’abord un
étage de parallélisation des flux de données qui convertit les trains de bits en octets. Cette opération
permet d’effectuer ensuite le multiplexage de ces voies sans contention. En effet, grâce à ce formatage
en octets, on conserve le débit d’information présent à l’entrée tout en travaillant avec une fréquence
d’horloge 8 fois plus faible. Les octets de données ainsi multiplexés sont mis dans une mémoire
(RAM émission) en attente de leur insertion dans une trame de communication (bloc « construction
paquets, insertion fanion et LRC ») et de leur conversion sous forme d’un train binaire qui est injecté
sur le canal de transmission.
Finalement, cette analyse nous a conduits à laisser de côté trois blocs : d’une part, les deux
automates assurant respectivement la gestion de l’émission et de la réception et, d’autre part, un bloc
appelé « gestion des horloges », dont le rôle est de fournir les signaux de cadencement des autres
blocs du système.
On s’intéresse, dans la suite, à la conception des unités de contrôle du système à travers les deux
principaux modèles de réalisation présentés en sections 5.1 et 5.2 : les machines à états finis
synchrones (de Mealy ou de Moore) et les séquenceurs, câblés ou microprogrammés.
80
Chapitre 6 : Fonctions et systèmes séquentiels complexes
fenêtre validation VF
de fanion automate
E1 détection
fanion DP
horloge octet
E2
VF : validation de fanion
DP : détection de porteuse
décode
01111100
trame reçue
Registre décalage 8 bits
horloge trame
E1.E2=0
VF=DP=1 Ù E1.E2=1
A
E1=0 E1.E2=1
E1.E2=1 E1.E2=1
D B E1=1
E1.E2=1 VF=0
VF= 1 Ù E1.E2=1 E1=0 DP=1
DP=1 Ù E1=1 E1.E2=1
C VF= 1 Ù E1.E2=1
DP=1
E1=0
81
Chapitre 6 : Fonctions et systèmes séquentiels complexes
Etat Q2 Q1
A 0 0
B 0 1
C 1 1
D 1 0
Q2 Q1 E1 E2 Q2+ Q1+ VF DP
0 0 0 X 0 0 0 0
0 0 1 1 0 1 1 1
0 0 1 0 0 0 0 0
0 1 1 X 0 1 0 1
0 1 0 X 1 1 0 1
1 1 0 X 1 1 0 1
1 1 1 1 0 1 1 1
1 1 1 0 1 0 0 1
1 0 0 X 0 0 0 0
1 0 1 1 0 1 1 1
1 0 1 0 1 0 0 1
E1 E1
0 0 1 0 0 0 0 0
1 1 1 1 1 1 0 0
Q1 Q1
1 1 1 0 1 1 0 1
Q2 Q2
0 0 1 0 0 0 0 1
E2 E2
82
Chapitre 6 : Fonctions et systèmes séquentiels complexes
E1 E1
0 0 1 0 0 0 1 0
0 0 0 0 1 1 1 1
Q1 Q1
0 0 1 0 1 1 1 1
Q2 Q2
0 0 1 0 0 0 1 1
E2 E2
VF = E1 E 2 Q1 + E1 E 2 Q2 DP = Q1 + E1 E 2 + E1Q2
E1 E2 E1 E2
DP
VF
D Q
basc 1
CK NQ
NR
D Q
basc 2
HO CK NQ
NR
INIT*
83
Chapitre 6 : Fonctions et systèmes séquentiels complexes
Synchro. (2o) Fanion (1o) Signalis. (1o) Données (32o) LRC (1o)
VAFE SYNC
FANE
FCI
SIGN
Horloge DATA
octet
LRC
Init* NEM
LRC Ù FCI=1
DATA Ù FCI=0
G FCI=1 E D
F
FCI=0
NEM DATA SIGN
84
Chapitre 6 : Fonctions et systèmes séquentiels complexes
Étant donné le nombre important de sorties, on n’a spécifié sur les arcs du graphe que les sorties
activées, c’est-à-dire les sorties valant 1.
L’objet de cette opération est de traduire les structures de contrôle en sauts (ou branchements)
conditionnels. Pour ce faire, on insère une étiquette sur chaque ligne qui est destination d’un saut. Les
lignes sont alors mises sous la forme : [étiquette] action, séquencement;
85
Chapitre 6 : Fonctions et systèmes séquentiels complexes
• Assemblage du programme
Cette opération consiste à assigner une adresse à chaque ligne de l’algorithme en prévision de son
implantation dans le séquenceur.
CO CO+
0 0
1 X
2 X
3 X
4 X
5 X
6 6
7 0
86
Chapitre 6 : Fonctions et systèmes séquentiels complexes
Q1
D’où
Q0+ = 0
Q2+ = Q1+ = Q1 Q0
C0 C1 C2 C3 C4 C5 C6 C7 Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
≥1 ≥1
VAFE 0 0 0 0 0 FCI 1
NEM FANE LRC
SIGN
SYNC
DATA
Il s’agit de créer le jeu d’instructions du séquenceur. On distinguera d’un part les instructions de
séquencement et, d’autre part, les instructions d’actions. Dans le cas étudié, la structure de
l’algorithme est très simple. On limite les modes de séquencement au saut conditionnel. Pour plus de
souplesse dans l’écriture du programme, on prévoit toutefois le saut sur condition vraie et le saut sur
condition fausse. Pour les instructions d’actions, comme il n’y a pas de simultanéité d’actions dans
l’algorithme, on se limite à un champ unique pour coder le numéro d’action.
87
Chapitre 6 : Fonctions et systèmes séquentiels complexes
Si l’on réexamine l’algorithme à implémenter, on constate que des actions interviennent à chaque
pas d’horloge. On peut difficilement engendrer un tel comportement si l’on alterne des instructions de
séquencement et des instructions d’action. On pourrait éventuellement s’affranchir de ce problème en
synchronisant le séquenceur sur une horloge de fréquence multiple de celle qui anime la partie
opérative. On préfére ici, par souci de simplicité, prendre une autre voie. Elle consiste à fusionner les
instructions de séquencement et les instructions d’action. Ainsi, chaque pas de programme peut
exécuter une action tout en contrôlant la progression du compteur ordinal.
Pour traduire l’algorithme en un programme dédié au séquenceur que nous sommes en train de
concevoir, nous définissons un langage mnémonique. A titre d’exemple :
N. B.
• On constate l’existence d’une action nulle (NOP) qui permet au programmeur d’insérer
éventuellement des lignes de code qui ne générent pas d’action.
/*seq_émission(VAFE,FCI Bool
SYNC,FANE,SIGN,DATA,LRC,NEM Bool Out)*/
{
while TRUE
{
while(not(VAFE)) NEM;
SYNC;
SYNC;
FANE;
SIGN;
DATA;
while(not(FCI)) DATA;
LRC;
NEM;
}
}
88
Chapitre 6 : Fonctions et systèmes séquentiels complexes
• Pour coder le numéro d’action, 3 bits sont nécessaires (1 parmi 7) soit <A2 … A0>.
P C1 C0 D2 D1 D0 A2 A1 A0
On en déduit que la taille du mot mémoire doit être supérieure ou égale à 9 bits.
A ce stade, les caractéristiques des composants et leur câblage sont complètement définis, on peut
donc tracer le logigramme du séquenceur.
89
Chapitre 6 : Fonctions et systèmes séquentiels complexes
Horloge octet
Init*
CLR* D2 D1 D0
Load* compteur
synchrone
Enb
Q2 Q1 Q0
A2 A1 A0
PROM
=1 O0O1O2O3O4O5O6O7O8
Mux 4 ->1
Décodeur 1 : 8
E0 E1 E2 E3
Y0 Y1 Y2 Y3 Y4 Y5 Y6
Il reste à élaborer le programme en code binaire qui doit être chargé dans la mémoire PROM.
Cette opération s’effectue en deux passes. Tout d’abord, en affectant une adresse d’implantation à
chaque instruction du programme. On substitue donc aux étiquettes des adresses.
Il faut ensuite générer le code binaire correspondant au programme à partir de la structure qui a
été retenue pour l’instruction.
90
Chapitre 6 : Fonctions et systèmes séquentiels complexes
Ce tableau doit être saisi sous la forme d’un fichier informatique. Ce fichier est ensuite utilisé par
un dispositif de programmation de mémoire afin d’être implanté dans le composant PROM qui a été
choisi pour réaliser le séquenceur.
6. Bibliographie
[CV86] M. Courvoisier et R. Valette, Commande des procédés discontinus, logique
séquentielle, Collection Dunod-Université, Dunod, 1986.
[BH90] J.M. Bernard et J. Hugon, Pratique des circuits logiques, Collection technique et
scientifique des télécommunications, Eyrolles, 1990.
[Gr86] D. Green, Modern logic design, Electronic Systems Engineering Series, Addison-
Wesley, 1986.
91
Chapitre 6 : Fonctions et systèmes séquentiels complexes
92
Chapitre 7 : Techniques d'intégration de systèmes numériques
1. Introduction
Lors de l'intégration d'un système numérique plusieurs possibilités se présentent à l'intégrateur :
• utiliser des circuits standard, en les associant sur un ou plusieurs circuits imprimés pour réaliser le
système désiré,
• concevoir un (ou des) circuit(s) spécifique(s) ce qui permet d'avoir une bonne densité
d'intégration (peu de circuits pour réaliser le système)
• utiliser des circuits programmables qui peut être une solution intermédia ire entre les deux
précédentes.
Le but de ce chapitre est de présenter ces trois solutions et de donner quelques critères permettant de
choisir celle qui est la mieux adaptée à un système particulier. Mais, pour bien comprendre les
différences entre ces solutions, il est nécessaire de présenter de manière rapide la fabrication des
circuits intégrés.
Une seconde partie de ce chapitre est consacrée aux outils utilisés pour la conception des circuits
intégrés.
2. Les circuits
2.1 La fabrication des Circuits Intégrés
Le matériau de base le plus couramment utilisé pour la réalisation de circuits intégrés se présente
sous forme de plaquettes de silicium monocristallin. L'arséniure de gallium est réservé à des
applications bien particulières (analogique radiofréquence, très haut débit numérique ...). Ces plaquettes
(wafers ) circulaires d'un diamètre de 100 ou 150 mm et d'une épaisseur de 600 à 700µm possèdent 2
méplats servant de repères pour le positionnement lors des différentes étapes de fabrication des
circuits.
La fabrication consiste d'abord à créer sur le cristal de silicium, appelé substrat, les zones actives
des transistors (Drain, Source, Grille s'il s'agit de MOS) selon une géométrie précise de façon à
optimiser l'encombrement tout en respectant les caractéristiques électriques de fonctionnement, puis à
interconnecter ces transistors par des liaisons métalliques. Ces opérations se font chez un industriel
appelé "fondeur" (par exemple : MATRA MHS, SGS THOMSON ...) qui dispose de la description
topologique de chacun des niveaux qu'il traite (diffusion N ou P pour le drain et la source, polysilicium
pour la grille, métal pour les liaisons). C'est grâce à cette description qu'il fabrique des masques
(éléments de base pour la fabrication des circuits intégrés).
93
Chapitre 7 : Techniques d'intégration de systèmes numériques
2.1.1 La microlithographie
Pour créer une couche M quelconque (figure 7.1.a) sur un substrat il faut d'abord déposer sur toute
la surface du circuit une couche uniforme du matériau M elle -même recouverte d'un film de résine
positive dite photorésistante (figure 7.1.b). Le circuit est ensuite exposé à un rayonnement ultraviolet
(figure 7.1.c), à travers un masque photographique, tel que seule la surface de la forme M soit soumise
aux rayons. Au cours de l'étape de la figure 7.1.d, la "photographie" ainsi réalisée est "développée"
c'est à dire qu'elle est soumise à un agent chimique qui a la propriété de dissoudre la résine non
exposée. Dans l'étape suivante (figure 7.1.e), le matériau M qui n'est plus protégé est enlevé par
attaque chimique. Un dernier procédé chimique supprime la résine exposée et donne le motif attendu
(figure 7.1.a).
a
Masque
c UV
b
Photorésistant
d e
Le masque peut être physiquement une plaque de verre comportant des zones claires et opaques
(utilisation des U.V. ou rayons X) ou alors un fichier informatique contrôlant le balayage d'un faisceau
d'électrons sur des résines multifonctions (écriture directe par faisceau d'électrons).
Le rôle de la microlithographie et donc des masques est très important. Les informations doivent
être transcrites sur le silicium avec le maximum de précision et de fiabilité, dans un temps réduit, ce qui
constitue une des limitations de l'intégration à grande échelle.
Les différentes étapes de fabrication d'un circuit intégré sont illustrées ci-après en prenant comme
exemple un inverseur CMOS.
94
Chapitre 7 : Techniques d'intégration de systèmes numériques
Il est possible de considérer dans un circuit intégré trois types de niveaux actifs auxquels peuvent
être associés trois types de masques :
• un niveau de diffusion d'impuretés (source, drain, caisson),
• un niveau de dépôt de polysilicium (grille),
• un niveau de connexion (interconnexions sur un ou plusieurs niveaux de métal).
Les différents niveaux de conduction sont séparés les uns des autres par une couche isolante d'oxyde
de silicium épais (typiquement 7000 à 8000 Å) pour minimiser les effets capacitifs.
Un inverseur CMOS est constitué d'un transistor canal N et d'un transistor canal P. Partant d'un
substrat dopé P il est possible de construire un transistor canal N. Par contre pour réaliser un transistor
canal P il est nécessaire de créer une zone dopée N qui servira de substrat, cette zone est appelée
caisson ou puits.
A A
Résine
N P Oxyde
La première étape consiste à réaliser ce caisson (figure 7.2) : une couche d'oxyde épais est tout
d'abord déposée sur toute la surface du circuit. Une fenêtre, correspondant à l'ouverture du masque,
est ensuite créée dans cette couche par microlitographie. Enfin la diffusion ou l'implantation d'atomes
dopants de type donneurs (arsenic, phosphore) au travers de cette fenêtre est réalisée. Le reste du
substrat est protégé par l'oxyde qui est ensuite éliminé.
A A
Oxyde
N P
95
Chapitre 7 : Techniques d'intégration de systèmes numériques
La seconde étape est celle de la création des transistors. Le masque en pointillé fin de la figure 7.3
permet d'obtenir par gravure une couche de nitrure de silicium dans ses ouvertures. Une oxydation des
zones non protégées par le nitrure est ensuite réalisée. Ces zones oxydées s'enfoncent partiellement
dans le silicium et vont servir à isoler le transistor N du transistor P. Les zones recouvertes de nitrure
de silicium sont mises à nu et une mince couche d'oxyde de silicium est créée (typiquement 300 à
500 Å). Cet oxyde sert d'oxyde de grille.
Poly
A A Poly
Oxyde
N P
Une bande de polysilicium (grille du transistor) est ensuite déposée par microlithographie (figure 7.4).
Poly
A A Oxyde
Résine
Oxyde
N P
La figure 7.5 montre le dopage de type P+, fait par l'implantation ionique dans la zone non protégée
par le polysilicium l'oxyde épais ou la résine. Les ions accélérés pénètrent dans le substrat au travers
des zones d'oxyde mince formant ainsi les sources et drain des transistors. Le même traitement est
effectué de l'autre côté en protégeant par de la résine le transistor P précédemment créé et en
implantant des impuretés constituées par des atomes donneurs.
Pour pouvoir interconnecter tous les transistors, il est nécessaire d'avoir plusieurs niveaux de
métallisation isolés les uns des autres : métal1, métal2, etc... La troisième étape a pour objet de créer
les interconnexions entre transistors. Le circuit est de nouveau recouvert d'une couche d'oxyde et des
trous de contact sont creusés au travers de cette couche soit jusqu'au substrat soit jusqu'au polysilicium
(figure 7.6).
96
Chapitre 7 : Techniques d'intégration de systèmes numériques
Poly
Contact
A A
Oxyde
Oxyde
P+ P+ N+ N+
N P
Contacts
Vue de dessus Coupe AA
Une métallisation en métal1 des zones correspondant aux ouvertures du masque de métal1 est ensuite
réalisée. Des métallisations en métal2, métal3, ... sont effectuées suivant le même procédé lorsque la
technologie le permet.
VDD
Entrée Masse
Poly
Métal
A A
Oxyde
Métal Oxyde
P+ P+ N+ N+
N P
Sortie
Vue de dessus Coupe AA
La dernière étape a pour objet de protéger le circuit par la création d'une couche d'oxyde sur toute
la surface (couche de passivation).
Il faut, ensuite, tester chaque puce, découper le wafer, mettre en boîtier les circuits fonctionnant
correctement puis faire un test final.
L'avantage de cette technique réside dans le fait que la réalisation du système peut être
relativement rapide (sous réserve de la disponibilité des composants). Cependant les composants
n'étant pas exactement adaptés aux besoins de l'application le taux d'intégration (c'est à dire la
97
Chapitre 7 : Techniques d'intégration de systèmes numériques
complexité du système par rapport à la quantité de composants utilisés ) est, en général, relativement
modeste. C'est une technique bien adaptée aux petites séries.
Les premiers circuits disponibles sur le marché proposaient des fonctions simples. En effet les
technologies de l'époque ne permettaient pas d'intégrer des fonctions complexes. Par contre
l'association de ces circuits permettait de réaliser des systèmes avec une densité d'intégration qui était
importante comparée aux techniques jusqu'alors utilisées.
Des circuits SSI (Small Scale Integration) ou MSI (Medium Scale Integration), réalisant des
fonctions combinatoires ou séquentielles élémentaires, sont toujours utilisés dans certains cas. Il est
ainsi possible de trouver des circuits de 14 ou 16 broches qui intègrent, par exemple, 4 portes NAND à
2 entrées. Cependant, actuellement, ces composants sont généralement remplacés par des PLD
(cf. §2.4).
La limite entre fonctions simples et fonctions complexes n'est pas facile à déterminer. Cependant,
des circuits intégrant des fonctions complexes réalisées à l'aide de plusieurs millions de transistors sont
maintenant disponibles sur catalogue. Ils peuvent être classés en 3 catégories : Les processeurs dédiés,
les processeurs d'usage général et les processeurs spécialisés.
2.2.3 Mémoires
Une grande variété de mémoires est proposée au concepteur de systèmes numériques. Elles
peuvent être classées suivant leur capacité, leur organisation ... (cf. chapitre 5, §7).
98
Chapitre 7 : Techniques d'intégration de systèmes numériques
Une fonction qui nécessiterait plusieurs composants standard peut être intégrée dans un ASIC.
Cette technique apporte, donc, un gain d'encombrement et de consommation. Par contre la conception
de tels composants est relativement coûteuse et, de plus, les circuits ainsi conçus sont rarement
utilisables pour d'autres applications.
C'est une technique qui offre l'avantage d'avoir un temps de conception plus court que la
précédente. Cependant la surface de silicium utilisée est légèrement plus importante. C'est, donc, une
technique adaptée aux grandes séries (supérieur à 10000 pièces).
99
Chapitre 7 : Techniques d'intégration de systèmes numériques
L'intérêt de cette technique par rapport à la précédente n'apparaît pas dans une réduction du temps
de conception, car les méthodes utilisées sont équivalentes, mais dans l'économie réalisée sur al
réalisation des masques. En effet les masques (§2.1.2) des niveaux de diffusion et de polysilicium sont
déjà fabriqués et communs à tous les circuits réalisés avec la matrice choisie. Seuls les masques du
niveau de connexion sont spécifiques à l'application.
Par contre la surface de silicium n'est pas optimisée car le choix en tailles de matrices étant limité il
existe quasiment toujours un nombre non négligeable de transistors qui ne sont pas utilisés. De plus
l'intégration de fonctions telles que les mémoires n'est pas efficace dans les prédiffusés. Cette
technique est utilisée pour des applications où le nombre de pièces à réaliser est plus faible que dans le
cas des précaractérisés (à partir de 1000 pièces).
Ce sont des réseaux prédiffusés dont une partie de la surface est occupée par des blocs prédéfinis
qui se prêtent mal à l'intégration sur prédiffusés (par exemple : des mémoires ou des fonctions
analogiques). Le fondeur propose un catalogue de matrices de différentes tailles avec un choix plus ou
moins important de blocs prédéfinis. Le concepteur choisit la matrice la mieux adaptée à son
application. Suivant les cas cette technique permet d'obtenir une intégration plus efficace qu'en utilisant
des circuits prédiffusés. Les composites sont utilisés pour des séries de 1000 pièces minimum.
Les PLD sont programmés au moyen d'un programmateur du même type que ceux utilisés pour les
PROM. Les entrées de ces circuits attaquent un plan ET qui génère des termes produits. Ces termes
produits attaquent ensuite un plan de OU qui génère des sommes. Ces sommes peuvent être utilisées
comme sorties ou, dans certains cas, réinjectées dans le plan ET via une bascule D. Cette architecture
est particulièrement bien adaptée pour réaliser des machines séquentielles synchrones (automates). La
figure 7.8 donne un cas d'école de représentation graphique de la fonctionnalité d'un circuit PLD. Dans
cet exemple le circuit est programmé comme suit : S1 = E1. E2 + E3 et S2 = E1.( E1. E2 ) −t + E2 où
( E1 . E2 ) −t représente la valeur de ( E1 . E2 ) avant le front montant d'horloge. Les circuits proposés par
les constructeurs sont, en fait, plus complexes que celui présenté dans l'exemple de la figure 7.8 mais la
structure de base est toujours inspirée de celle -ci.
100
Chapitre 7 : Techniques d'intégration de systèmes numériques
E1
E2
E3
S2
>1
S1
>1
CLR
Horloge
Les FPGA sont des circuits constitués de cellules interconnectées. La fonction de ces cellules ainsi
que les interconnexions sont programmables ce qui donne une plus grande souplesse d'utilisation que les
PLD. La programmation consiste à connecter des équipotentielles afin d'obtenir les connexions et les
fonctions souhaitées par l'utilisateur. Il existe actuellement deux technologies principales pour réaliser
cette programmation. La première utilise de la mémoire vive statique associée à des transistors utilisés
en interrupteurs, la seconde met en oeuvre des "antifusibles".
C'est en 1984 que la société XILINX a commercialisé pour la première fois un circuit FPGA sous
la dénomination de LCA (Logic Cell Array). Bien que cette société ne soit plus la seule sur ce marché
elle a continué à élargir sa gamme et propose actuellement une grande variété de produits qui utilisent
la technologie de la mémoire vive [Xil].
Un exemple d'architecture de FPGA proposé par XILINX est présenté figure 7.9. Comme le
montre cette figure le circuit est composé de trois types d'éléments programmables :
• Les blocs d'entrée/sortie (I/O blocks) qui assurent l'interface avec l'extérieur du circuit,
101
Chapitre 7 : Techniques d'intégration de systèmes numériques
Cette technique est d'autant plus intéressante qu'il est possible de reconfigurer très rapidement le
circuit. Un même circuit peut ainsi être utilisé pour assurer différentes fonctions par simple changement
de sa programmation.
La technique de l'antifusible a été introduite plus tard (année 90). Elle consiste à isoler deux lignes
de connexions par une fine couche d'oxyde. Il n'y a donc pas de liaison électrique entre ces lignes de
connexions. Par contre si une impulsion de haute tension (une vingtaine de volts) est appliquée à cet
antifusible la couche d'oxyde est trouée et les deux lignes sont reliées. La programmation est donc
irréversible ce qui peut être un inconvénient. Par contre cette technique permet une plus grande densité
d'intégration que celle à mémoire vive. A titre d'exemple, la société ACTEL propose ce type de
composants [Act].
Actuellement les circuits full customs, très longs à concevoir, ne sont que très rarement retenus
car les délais de conception sont souvent prohibitifs. Par contre les précaractérisés intégrant
éventuellement quelques cellules "full customs" offrent un très bon compromis entre le temps de
conception et la densité d'intégration.
D'autre part les prédiffusés, qui ont joué un rôle primordial dans le processus de démocratisation
des techniques d'intégration de circuit, sont actuellement en perte de vitesse car concurrencés d'une
part, par les précaractérisés qui offrent de plus en plus de souplesse d'utilisation et d'autre part par les
FPGA qui proposent une capacité d'intégration de plus en plus importante. De plus, de nombreux
fondeurs proposent des versions "masquées" de FPGA, c'est à dire des circuits qui peuvent être
fabriqués comme des prédiffusés classiques mais sur la base des fichiers informatiques qui servent à la
programmation des FPGA. Cette approche permet d'associer facilité de conception et faible coût de
fabrication. L'avenir des prédiffusés est donc incertain.
102
Chapitre 7 : Techniques d'intégration de systèmes numériques
Enfin, les fabricants de composants proposent de plus en plus des jeux de composants permettant
de réaliser des systèmes complets comme, par exemple, un récepteur GSM. La valeur ajoutée du
fabricant de système se limite dans ce cas à l'ergonomie du système, l'ajout de fonctionnalité, ... et la
commercialisation.
103
Chapitre 7 : Techniques d'intégration de systèmes numériques
• Confidentialité : Il est relativement facile de lire une mémoire. C'est pourquoi, lorsque la
confidentialité est un critère important, il est préférable d'utiliser des ASICs.
• Taille : Là aussi les ASICs sont les mieux adaptés puisqu'ils sont totalement adaptés à l'application
(plus particulièrement le Full custom et le précaractérisé).
• Consommation : Critère particulièrement sensible dans les applications possédant une alimentation
autonome. Il conduit à favoriser des solutions ASIC pour les mêmes raisons que le critère
précédent.
• Savoir faire : Critère fondamental et qui peut remettre en cause les choix induits par les
précédents, et même la faisabilité du projet. En effet le concepteur a toujours intérêt à utiliser aux
mieux son savoir faire et celui de son entreprise.
5 simulation structurelle
6 outil de placement-routage
N étapes
3
validation de la
découpe contraintes :
* de surface
* temporelles
* électriques
4 synthèse logique
bibliothèque
rétro-annotation
vérification de la
5
netlist
104
Chapitre 7 : Techniques d'intégration de systèmes numériques
105
Chapitre 7 : Techniques d'intégration de systèmes numériques
D'autre part l'évolution actuelle des technologies (diminution de la longueur de canal) entraîne une
augmentation du temps de propagation dû aux connexions par rapport à celui dû aux portes. Ceci rend
plus difficile les estimations des retards avant les opérations de placement et de routage ce qui conduit
à des remises en cause plus fréquentes des résultats de synthèse. Des recherches sont actuellement
menées pour diminuer ces retours à la synthèse.
4. Bibliographie
[Tav96] C. Tavernier, Circuits logiques programmables, Dunod, 1996
[Har] http://www.semi.harris.com/
[Mot] http://www.motorola.com/
[Xil] http://www.xilinx.com/
[Act] http://www.actel.com/
106
Chapitre 7 : Techniques d'intégration de systèmes numériques
107