Vous êtes sur la page 1sur 40

UNIVERSITE DE VERSAILLES-SAINT-QUENTIN-EN-YVELINES

I.U.T. de VELIZY

RESEAUX
ET
TELECOMUNICATIONS

Cours dinformatique : module I2

Logique squentielle

Emmanuelle Peuch

IUT Vlizy - GTR / Emmanuelle Peuch

Chapitre 4 : Logique squentielle

INTRODUCTION
Nous avons tudi jusqu maintenant des circuits logiques combinatoires :
les sorties, un instant donn, ne dpendent que des valeurs prsentent sur
les entres. Toute condition antrieure na aucun effet sur les valeurs actuelles
des sorties, parce que les circuits combinatoires nont pas de mmoire. Ainsi,
chaque tat des variables dentre correspond un seul tat des
variables de sortie et inversement.
Avec les circuits squentiels, il nen est plus de mme : ltat prsent de la
sortie dpend non seulement de la combinaison applique lentre mais aussi
de son tat antrieur. Ces circuits ont donc un effet mmoire (ils se
souviennent de leur tat prcdent). Ainsi, un tat des variables dentre
peut correspondre plusieurs tats diffrents.
Nous prsenterons dans un premier temps les oprateurs squentiels de base,
les bascules, ainsi que leur description VHDL.
Ensuite nous dcrirons quelques fonctions squentielles synchrones courantes
telles les compteurs, les registres dcalage.
Pour terminer, nous tudierons une mthode de synthse dun systme
squentiel synchrone et son implantation dans un FPGA.

IUT Vlizy - GTR / Emmanuelle Peuch

Chapitre 4 : Logique squentielle

Table des matires

I.

Les bascules asynchrones _______________________ 1

1 Introduction _______________________________________________ 1
2 Latch D ou verrou __________________________________________ 1
3 Synchronisation des systmes squentiels _____________________ 2

II.

Les bascules synchrones ___________________________ 3

1 Les bascules D_____________________________________________ 4


2 Bascule JK ________________________________________________ 9
3 Exigences de synchronisation _______________________________ 12

3.1 Temps de pr-positionnement _____________________ 12


3.2 Temps de maintien ______________________________ 13
3.3 Frquence maximale de fonctionnement ____________ 15
3.4 Synchronisation des entres asynchrones dun systme
synchrone_________________________________________ 16

III.

Les compteurs binaires / diviseurs de frquence


synchrones ________________________________________ 19

1 Gnralits et dfinitions ___________________________________ 19


2 Ralisation VHDL dun compteur synchrone ___________________ 20
3 Ralisation matrielle dun compteur synchrone ________________ 24

IUT Vlizy - GTR / Emmanuelle Peuch

Chapitre 4 : Logique squentielle

IV.

Les registres et registres dcalage ______________ 26

1 Dfinition dun registre (entres parallles et sorties parallles) ___ 26


2 Les registres dcalage ____________________________________ 27

2.1 Applications des registres dcalage : _____________ 29


2.2 Description VHDL _______________________________ 30

ANNEXES _________________________________________ 31

IUT Vlizy - GTR / Emmanuelle Peuch

Chapitre 4 : Logique squentielle

Oprateurs squentiels - fonctions


squentielles
Llment de mmorisation de base est la bascule. Elle est constitue de une
ou plusieurs entres et de deux sorties complmentaires Q et Q .

I. Les bascules asynchrones


1 Introduction
Les deux principaux types de bascules asynchrones sont le latch D et la
bascule R-S.
La transition dun tat un autre est provoque par des changements de
niveaux dune ou plusieurs entres.

2 Latch D ou verrou
Cette bascule constitue la version la plus simple de la mmoire lmentaire.
 Son principe est le suivant :
- Une entre D de donnes
- Une entre L de commande
- Deux sorties Q et son complment.
L
0
1
1

IUT Vlizy - GTR / Emmanuelle Peuch

D
X
0
1

Qn
Qn-1
0
1

Chapitre 4 : Logique squentielle

 Si L est au niveau haut alors la sortie Q recopie lentre D.


 Si L est au niveau bas alors la sortie conserve sa valeur quelle que
soit lentre D : cest le mode mmoire.
(Les niveaux actifs de lentre de commande L peuvent tre inverss).

 Exemple de ralisation :

&
0

0
0

>=1
0

L
D

&
0

 Description VHDL :
VHDL ne connat pas la fonction mmoire comme lment primitif.

-- D Latch
-GATE: in STD_LOGIC; entre de commande active ltat haut
-DIN: in STD_LOGIC; entre de donnes
-DOUT: out STD_LOGIC;
process (GATE, DIN)
begin
if GATE='1' then
DOUT <= DIN;
end if;
end process;

3 Synchronisation des systmes squentiels

 Quelques dfinitions :
Dans les systmes asynchrones, la sortie des circuits logiques peut changer
dtat tout moment quand une ou plusieurs entres changent. Un systme
asynchrone est difficile concevoir et dpanner.
Par contre, dans un systme synchrone, le moment exact o la sortie
change dtat est command par un signal que lon appelle signal
dhorloge.
IUT Vlizy - GTR / Emmanuelle Peuch

Chapitre 4 : Logique squentielle

Ainsi, dans une bascule synchrone, le changement dtat de la sortie qui


correspond une nouvelle combinaison dtat des entres ne peut
seffectuer que sur le front actif, montant ou descendant, dun signal de
synchronisation ou signal dhorloge.
La majorit des systmes numriques existants sont surtout des
machines
synchrones
(mme
si
certaines
parties
sont
asynchrones), du fait que les circuits synchrones sont simples
concevoir et dpanner. Leur dpannage est plus facile parce que
leur sorties ne peuvent changer qu des instants prcis bien
connus.

La solution couramment adopte est de construire les systmes


squentiels avec des bascules synchrones qui disposent
dune entre qui fixe les instants des ventuels
changements dtat : lhorloge.

II. Les bascules synchrones


Il existe plusieurs types de bascules synchrones. Les points communs ces
bascules sont :
1- Une entre dhorloge CLK

CLK

Actif sur front


montant

CLK

Actif sur front


descendant

2- Au moins une entre de commande. Ces entres sont dsignes


par diffrentes lettres, selon leur fonction. Ce sont ces entres qui
dterminent ltat de sortie de la bascule, mais cet tat napparat
en sortie de la bascule quau moment de la transition active de

IUT Vlizy - GTR / Emmanuelle Peuch

Chapitre 4 : Logique squentielle

lhorloge. Leffet de ces entres est donc synchronis avec lapplication


du signal dhorloge : ce sont des entres dites synchrones.
3- Deux sorties complmentaires Q et Q .

1 Les bascules D
 Symbole
Cette bascule possde une
commande D (Data) synchrone.

entre

de

Fonctionnement : sur le front actif de lhorloge


(ici sur le front montant), la sortie Q recopie
lentre D.

 Table de vrit
Horloge

D
0
1

Q
0
1

 Formes dondes

 Remarque
La majeure partie des bascules synchrones possde, en plus, des entres
asynchrones qui agissent indpendamment du signal dhorloge et des
entres synchrones. Ce sont des entres qui permettent, nimporte quel
IUT Vlizy - GTR / Emmanuelle Peuch

Chapitre 4 : Logique squentielle

moment, de forcer 1 ou 0 la sortie Q de la bascule quelles que soient


les conditions des entres (initialisation du circuit).
Dans lexemple de la bascule D on voit quil y a deux entres asynchrones
CLR (Clear = initialisation 0) et SET (initialisation 1).

Doc.
technique

Extrait de la documentation du constructeur du circuit intgr 74HC74

Symbole logique :

Ces bascules sont dotes de deux entres supplmentaires CLR


(Clear) et PRE (Preset). Ces deux entres sont indpendantes de
lhorloge (elles agissent quelque soit le niveau ou front de lhorloge).
Elles sont dites entres asynchrones. Ici, elles sont actives ltat
bas.

IUT Vlizy - GTR / Emmanuelle Peuch

Chapitre 4 : Logique squentielle

 Diagramme dtat :

Voir annexe de ce polycopi (diagramme dtat) p.33

Etat 0 : la sortie est 0.


Le systme passera dans ltat 1 si
il y a un front actif dhorloge qui se
prsente (implicite mais il ne faut
pas loublier) et si lentre D est 1.
La sortie se positionnera alors 1.
..

 Description VHDL dune bascule D :


entity bascule_D is
Port ( CLK : in std_logic;
D : in std_logic;
Q : out std_logic);
end bascule_D;
architecture version_1 of bascule_D is
begin
process (CLK)

-- le process nest activ que si un front dhorloge se


-- prsente (voir table de vrit : Q recopie D que si un
-- front actif dhorloge se prsente !)

begin
if CLK'event and CLK='1' then
Q <= D;
end if;
end process;

--actif sur front montant


-- Q recopie alors D

end version_1;

Schma correspondant aprs synthse :

IUT Vlizy - GTR / Emmanuelle Peuch

Chapitre 4 : Logique squentielle

 Description VHDL avec entres Reset et Set asynchrones :


Lentre de mise zro RESET est prioritaire sur lentre de mise un SET
entity bascule_d1 is
Port ( D : in std_logic;
CLK : in std_logic;
SET : in std_logic;
RESET : in std_logic;
Q : out std_logic);
end bascule_d1;
architecture version_2 of bascule_d1 is
begin
process (CLK, RESET, SET)
begin
if RESET = '1' then
Q <= '0';
elsif SET = '1' then
Q <= '1';
elsif CLK'event and CLK='1' then
Q <= D;
end if;
end process;

-- entre la plus prioritaire !

-- actif sur front montant

end version_2;

Schma correspondant aprs synthse :

IUT Vlizy - GTR / Emmanuelle Peuch

Chapitre 4 : Logique squentielle

 Description VHDL de la bascule vue comme une machine dtat :

On traduit directement le diagramme dtat en langage VHDL. On doit donc dfinir


un type : voir syntaxe p 15
Nous utiliserons aussi linstruction squentielle CASE, voir p. 27

entity bascule_D is
Port ( D : in std_logic;
CLK : in std_logic;
RESET : in std_logic;
Q : out std_logic);
end bascule_D;
architecture version_3 of bascule_D is
type bulle is (etat0, etat1); -- dfinition de lensemble des tats
signal etat : bulle ;
begin
-- Evolution de la machine dtats: description du diagramme dtats
process (CLK, RESET)
begin
if RESET = '1' then
-- remise zro asynchrone, actif tat haut
etat <= etat0; -- on choisit de mettre la sortie Q 0 lors d linitialisation. La
-- machine est donc dans ltat 0.

elsif ( clkevent and clk = 1) then


case etat is
when etat0 => if D = 1 then
etat <= etat1
else
-- cas o D = 0
etat <= etat0
end if ;
when etat1 => if D = 1 then
etat <= etat1
else
-- cas o D = 0
etat <= etat0
end if ;
end case ;
end if;
end process;
-- Cablge des sorties
Q <= 1 when etat = etat1 else
0 ;
End version_3 ;
IUT Vlizy - GTR / Emmanuelle Peuch

Chapitre 4 : Logique squentielle

2 Bascule JK
 Symbole

Les entres J et K sont les entres synchrones.

 Table de vrit

Horloge

J
0

K
0

0
1
1

1
0
1

Qn+1
Qn Mmorisation (on garde le niveau de la sortie Q qui
tait prsent avant le passage du front actif)

0
1
Qn

mise zro
Mise 1
Commutation (passage ltat oppos)

 Formes dondes

IUT Vlizy - GTR / Emmanuelle Peuch

Chapitre 4 : Logique squentielle

Doc.
technique

Extrait de la documentation constructeur du circuit intgr 74HC73

Ces bascules sont dotes de deux entres asynchrones CLR (Clear)


et PR (Preset).

 Diagramme dtat :

 Description VHDL :
Dans le diagramme dtat (ou la table de vrit), on voit que la sortie Q
linstant n peut tre gale la sortie Q linstant n-1 (mmorisation) ou
son complment (commutation). Or le signal Q, est dclar comme une
sortie au niveau de lentit (OUT) et ne peut donc pas tre utilis comme
une entre ! Pour contourner cette difficult on va utiliser un signal
interne qui, lui, peut tre la fois une entre et une sortie (Q_inter dans
notre exemple).
Avec cette faon dcrire, les signaux de sortie ne sont jamais utiliss
comme des entres. Cela permet une plus grande portabilit du code.

IUT Vlizy - GTR / Emmanuelle Peuch

10

Chapitre 4 : Logique squentielle

entity bascule_JK is
Port ( CLK : in std_logic;
J : in std_logic;
K : in std_logic;
Q : out std_logic);
end bascule_JK;
architecture V1 of bascule_JK is
--dclaration du signal intermdiaire
signal Q_inter: std_logic;
begin
process(clk)
begin
if CLK'event and CLK='1' then

--actif sur front montant

if J='0' and K='0' then


Q_inter <= Q_inter;
elsif J='0' and K='1' then
Q_inter <= '0';
elsif J='1' and K='0' then
Q_inter <= '1';
else
Q_inter <= not Q_inter;
end if;
end if;
end process;
Q <= Q_inter;
end V1;
 Description VHDL de la bascule vue comme une machine dtat :

Exercice

Ecrire la description VHDL de la bascule JK vue comme une


machine dtats.

IUT Vlizy - GTR / Emmanuelle Peuch

11

Chapitre 4 : Logique squentielle

3 Exigences de synchronisation
Pour que le fonctionnement dune bascule synchrone soit efficace, deux
conditions sont ncessaires : lune concerne la dure de stabilisation (temps de
pr positionnement) et lautre la dure de maintien.
Les temps de pr positionnement (set up time, tsu) et de maintien (hold time,
tH) concernent les positions temporelles relatives de deux entres dun
mme circuit : par exemple la position de lentre D et de lhorloge dune
bascule D synchrone qui ragit aux fronts montants de son horloge.

Pour que la bascule interprte correctement la valeur de


lentre, quelle que soit cette valeur, celle-ci doit tre stable
avant la transition active dhorloge et maintenue stable
aprs cette transition.

3.1 Temps de pr-positionnement


Sur cet exemple : la sortie Q recopiera
effectivement la donne D = 1 au
moment du front actif dhorloge
uniquement si cette donne D = 1 tait
prsente depuis une certaine dure
tsu avant le front actif dhorloge.
Le constructeur fournit la dure de pr
positionnement minimale admissible.

IUT Vlizy - GTR / Emmanuelle Peuch

12

Chapitre 4 : Logique squentielle

tsu = intervalle de temps qui prcde immdiatement le


front actif du signal dhorloge pendant lequel lentre
synchrone doit tre garde au niveau appropri.
Si on ne respecte pas ce temps, il nest pas garanti que la bascule rponde
correctement larrive du front.

Pour la srie CMOS-HC, le temps de pr positionnement minimal est de 14 20 ns


pour une tension dalimentation de 5V.

3.2 Temps de maintien

Si le retour de lentre de commande


ltat 0 (ici, entre D) intervient trop tt
aprs le front actif du signal
dhorloge, la variable de sortie peut
reprendre la valeur 0.
Pour viter ce mauvais fonctionnement,
ltat 1 de lentre D doit tre maintenue
suffisamment longtemps (dure tH).
Le constructeur fournit un temps de
maintien minimal.

Pour la srie CMOS-HC, le temps de maintient minimal est de 0 5 ns pour une


tension dalimentation de 5V.

Lintrt davoir un temps de maintien nul apparat ds que les


entres dun circuit synchrone sont les sorties dun autre circuit
synchrone.

Ainsi, la valeur prendre en compte au moment de la transition active


de lhorloge est alors, sans ambigut, celle qui prcde cette
transition.

IUT Vlizy - GTR / Emmanuelle Peuch

13

Chapitre 4 : Logique squentielle

 Pour illustrer ceci, tudions le montage suivant :

La bascule D, cble de cette faon, ralise la fonction diviseur de


frquence par 2 . Cest un montage qui change dtat chaque
transition active. Si la bascule possde un temps de maintien nul, le
montage fonctionne correctement pourvu que le temps de pr
positionnement tsu soit suprieur celui fournit par le constructeur.
Ainsi, le temps de maintien doit tre nul ou, au pire, infrieur au
plus petit des temps de propagation.
 Autre exemple : dans nombre de circuits numriques, la sortie dune
bascule est couple directement, ou par lintermdiaire de portes
logiques, lentre dune autre bascule, et ces bascules sont
commandes par le mme signal dhorloge.
Examinons le circuit ci-dessous :
SET

Vcc

J1

Vcc

K1 CLR Q 1

Q1

J2

SET

Q2

Sortie

K2CLR Q 2

On rappelle la table de vrit de la bascule JK :


Horloge

IUT Vlizy - GTR / Emmanuelle Peuch

J
0
0
1
1

K
0
1
0
1

Qn+1
Qn Mmorisation
0
Reset
1
Set
Qn Commutation

14

Chapitre 4 : Logique squentielle

Formes dondes :

3.3 Frquence maximale de fonctionnement


Reprenons le circuit diviseur par deux , mais en tenant compte cette fois
ci des temps de propagation dans les bascules. On doit prendre en compte
les dfauts afin dvaluer les limites de fonctionnement dun montage.

Pour que le montage fonctionne correctement les paramtres des circuits


doivent vrifier :
tH < min(tpHL, tpLH)
Relation indpendante de la frquence de lhorloge. Cette relation est
toujours vrifie pour des circuits dont le temps de maintien est nul, do
lintrt de ces circuits.
IUT Vlizy - GTR / Emmanuelle Peuch

15

Chapitre 4 : Logique squentielle

tsu < TCK - max(tpLH, tpHL)


soit

FCK <

1
tsu + max(tpHL, tpLH)

Remarques : un dysfonctionnement par violation de pr positionnement


(tsu) se corrige en rduisant la frquence de lhorloge ou en
choisissant une technologie plus rapide.
Un dysfonctionnement par violation de temps de maintien (tH),
par contre, est indpendant de la frquence dhorloge et
ncessite, en gnral, une refonte complte du systme.

3.4 Synchronisation des entres asynchrones dun systme


synchrone
Pour quun systme qui volue chaque transition dhorloge comme ceux
tudis prcdemment fonctionne correctement, il faut sassurer que les
conditions sur les temps de maintien et la frquence dhorloge sont
respectes.
Il faut galement sassurer que les entres extrieures soient correctement
positionnes par rapport lhorloge. Cela peut tre assur en
synchronisant, au moyen dune bascule D, toute entre asynchrone par
rapport lhorloge locale.
Soit le systme ci-dessous :

Il est impossible dassurer que les rgles prcdentes sont respectes si les
changements des entres (p entres) sont asynchrones de lhorloge. On
risque alors de voir apparatre des transitions fausses. Pour viter ce type de
dsagrment, la mthode consiste systmatiquement synchroniser les
entres asynchrones au moyen de bascules D (on ralise alors un registre de
synchronisation) :

IUT Vlizy - GTR / Emmanuelle Peuch

16

Chapitre 4 : Logique squentielle

Les dures de tous les chemins sont dfinies, ce qui permet de contrler le
respect des temps de maintien et de pr positionnement.

Exemple

Les signaux asynchrones sont souvent lancs par un oprateur qui ouvre
ou ferme un interrupteur un moment quelconque par rapport au
signal dhorloge. Ce manque de synchronisme peut parfois produire
des rsultats imprvisibles et indsirables.

Un signal A est gnr par un interrupteur antirebond quactionne un


oprateur :
A passe au niveau haut lorsque linterrupteur est ouvert et au
niveau bas lorsque linterrupteur est ferm.
Ce signal sert donc commander le transfert du signal dhorloge
sur la sortie X lorsque linterrupteur est ouvert (A=1). Cette horloge est
destine commander un systme synchrone (un compteur par
exemple).

Problme : comme A peut changer dtat tout moment, on peut se


retrouver avec, sur la sortie X, des parties dimpulsion
dhorloge. Ceci se produit lorsque A change dtat pendant
que H est au niveau haut (voir trac ci-dessus).

Solution : utilisation dune bascule D pour synchroniser lentre A avec


les fronts descendants de lhorloge H.

IUT Vlizy - GTR / Emmanuelle Peuch

17

Chapitre 4 : Logique squentielle

IUT Vlizy - GTR / Emmanuelle Peuch

18

Chapitre 4 : Logique squentielle

Les compteurs binaires / diviseurs de frquence


synchrones

III.

1 Gnralits et dfinitions
Un compteur binaire est appel compteur modulo N sil compte de 0 N - 1.
La Nime impulsion dhorloge le remet obligatoirement zro. Nous verrons
quun compteur modulo N = 2n comporte n bascules (on dit aussi compteur
n bits) et 2n tats.

Exemple

Exemple : compteur de 0 3
Pour compter de 0 3 en binaire il faut deux bits que nous appellerons
S0 (poids faible) et S1 (poids fort).
Notre compteur est donc un systme qui va nous fournir la squence
suivante :
00  01  10  11  00  01  10  ..
Comme notre compteur est un systme synchrone, il passera de 00 01
lorsquun front actif dhorloge se prsentera et ainsi de suite..
Comme tout systme synchrone, il doit comporter une entre
dinitialisation asynchrone (ou prioritaire). Ici, nous choisirons de
linitialiser zro et cette entre (RAZ) sera active ltat haut.
Nous pouvons donc maintenant tracer le schma de la vue externe de
notre systme ainsi que son diagramme dtat :

Sortie = S1S0
RAZ

Clk
Actif front montant

RAZ

2
compteur_0__3

Actif tat haut

S
S1 S0

Etat 0/
00

Etat 1/
01

Vue externe

Etat 3/
11

IUT Vlizy - GTR / Emmanuelle Peuch

Etat 2/
10

19

Chapitre 4 : Logique squentielle

Nous allons galement tracer les chronogrammes correspondant notre


systme :
CLK

RAZ
Initialisation zro du
compteur

S0

S1

t
0

Remarque :
Soit Fclk la frquence du signal dhorloge :
La sortie S0 a une frquence Fclk/2 : on a ralis un diviseur de frquence
par deux.
La sortie S1 a une frquence Fclk/4 : on a ralis un diviseur de frquence
par quatre.
Gnralit : pour un compteur de 0 2n -1 (n sorties de S0 Sn-1), sur la
sortie poids faible S0 la frquence de lhorloge est divise par 2. Sur la
sortie S1 la frquence est divise par 22 = 4. Sur la sortie S2 la frquence
est divise par 23 = 8, . Sur la sortie Sn-1 la frquence est divise par 2n.
On peut donc utiliser ces compteurs comme diviseur de frquence.
Ex : Si on souhaite faire un diviseur de frquence par 8 = 23 , il faudra donc
raliser un compteur de 0 7 (n = 3 sorties) et on nutilisera alors que
la sortie de poids fort S2.

2 Ralisation VHDL dun compteur synchrone

IUT Vlizy - GTR / Emmanuelle Peuch

20

Chapitre 4 : Logique squentielle

Loprateur arithmtique + est tendu des objets de types bit_vector et


std_logic_vector. On dit quil y a surcharge de loprateur +. Pour raliser
nos compteurs, on va donc utiliser cet oprateur.

Exemple

Reprenons notre compteur de 0 3.

Sortie = S1S0
RAZ

Clk
Actif front montant

2
compteur_0__3

RAZ
Actif tat haut

S
S1 S0

Etat 0/
00

Etat 1/
01

Vue externe

Etat 3/
11

Etat 2/
10

A chaque front actif dhorloge il faut donc incrmenter la sortie S de 1 soit


linstruction
S <= S + 1 ;
Or le signal S est dclar comme un port de sortie dans lentit (out) et
ne peut donc pas tre utilis comme une entre ! Pour contourner cette
difficult on va donc utiliser un signal interne qui, lui, peut tre la fois une
entre et une sortie (S_inter dans notre exemple).
Avec cette faon dcrire, les signaux de sortie ne sont jamais utiliss comme
des entres. Cela permet une plus grande portabilit du code.
-- Compteur binaire de 0 3
entity compteur_0_3 is
Port ( clk : in std_logic;
RAZ : in std_logic;
S : out std_logic_vector(1 downto 0));
end compteur_0_3;

architecture version1 of compteur_0_3 is


signal S_inter: std_logic_vector(1 downto 0);
IUT Vlizy - GTR / Emmanuelle Peuch

21

Chapitre 4 : Logique squentielle

begin
process (clk, RAZ)
begin
if RAZ = '1' then
S_inter <= "00";
elsif (clk'event and clk = '1') then
s_inter <= s_inter + 1;
end if;
end process;

S <= S_inter;
end version1;

Exemple

On souhaite maintenant raliser un compteur de 0 9. Notre


compteur aura une remise zro : lentre sera active ltat
bas.
En binaire il faut 4 bits pour coder 9. Notre systme aura donc 4 sorties. Avec
4 sorties le compteur peut donc compter de 0 15 ! Il faut donc prvoir un
retour dans ltat 0000 aprs ltat 1001 !

 Vue externe
Clk
Actif front montant

Reset

4
compteur_0__9

Actif tat bas

S
S3 S2 S1 S0

Vue externe

 Diagramme dtat

IUT Vlizy - GTR / Emmanuelle Peuch

22

Chapitre 4 : Logique squentielle

Sortie = S3S2S1S0
Etat 1/
0001

RAZ
Etat 0/
0000

Etat 2/
0010

Etat 3/
0011
Etat 9/
1001

...

Etat 4/
0100

 Description VHDL
-- compteur de 0 9
entity compteur_0_9 is
Port ( CLK : in std_logic;
reset : in std_logic;
S : out std_logic_vector(3 downto 0));
end compteur_0_9;

architecture version1 of compteur_modulo10 is


signal S_inter: std_logic_vector(3 downto 0);
begin
process (CLK, Reset)
begin
If reset = '1' then
-- entre asynchrone
S_inter <= "0000";
elsif (CLK'EVENT and CLK = '1') then
if S_inter = "1001" then
S_inter <= "0000";
else
S_inter <= S_inter + 1;
end if;
end if;
end process;
S <= S_inter;

IUT Vlizy - GTR / Emmanuelle Peuch

23

Chapitre 4 : Logique squentielle

end version1;

3 Ralisation matrielle dun compteur synchrone


Pour synthtiser un compteur synchrone, on utilise les tables de transition
des bascules. La table de transition permet de connatre, pour chaque type
de bascule, les valeurs afficher sur les entres pour obtenir une transition
particulire Qn -> Qn+1.
 Table de transition dune bascule D

Transition
dsire
Qn -> Qn+1
0 -> 0
0 -> 1
1 -> 0
1 -> 1

Commande
appliquer
D
0
1
0
1

Ce qui correspond au diagramme


dtat de la bascule D :
D=1

D=0

Etat 0/
Q=0

Etat 1/
Q=1

D=1

D=0

 Table de transition dune bascule JK

Transition
dsire
Qn -> Qn+1
0 -> 0
0 -> 1
1 -> 0
1 -> 1

Commande
appliquer
J K
0 X
1 X
X 1
X 0

Ce qui correspond au diagramme


dtat de la bascule JK :
1X

JK

0X

Etat 0/
Q=0

X0

Etat 1/
Q=1

X1

IUT Vlizy - GTR / Emmanuelle Peuch

24

Chapitre 4 : Logique squentielle

 Ces tables vont nous tre utiles pour la dtermination des circuits
combinatoires de commande des bascules afin de raliser un
compteur synchrone:

Les blocs F0, Fn-1, reprsentent les fonctions combinatoires


synthtiser afin de commander les bascules.

 Compteur synchrone 2 bits (compteur modulo 4) :


On doit obtenir la squence suivante : 00 - 01 - 10 - 11.
Il y a quatre tats : on utilise donc deux bascules JK comme lment de
mmorisation.

Ecrivons la table de transition de notre compteur :


Etat du
compteur

0
1
2
3

Q1

Q0

(tat
prsent)

0
0
1
1

0
1
0
1

Q1+
Q0+

J1

K1

J0

K0

0
1
X
X

X
X
0
1

1
X
1
X

X
1
X
1

(tat futur)

0
1
1
0

1
0
1
0

On utilise maintenant les mthodes classiques de synthse des systmes


combinatoires (table de Karnaugh) afin de dterminer les commandes Ji
et Ki de chaque bascule. Pour cela on va synthtiser les entres JK
partir de ltat prsent des bascules. On va utiliser les valeurs logiques
indiffrentes X (si cela est possible) afin de simplifier les quations
logiques.
En fixant les tats X on trouve par exemple : J1 = Q0
Si on nutilise pas ses tats indiffrents, on obtient : J1 = Q1.Q0
De mme, K1 = Q0 ou alors K1 = Q1.Q0
On choisit J0 = K0 = 1
IUT Vlizy - GTR / Emmanuelle Peuch

25

Chapitre 4 : Logique squentielle

Traons les chronogrammes (on suppose que le compteur est initialis


zro de faon asynchrone) :

IV. Les registres et registres dcalage


Cest comme lment de mmorisation de donnes que les bascules sont les
plus utilises. Le stockage des donnes a lieu gnralement dans des groupes
de bascules appels registres.
Rappel : Une bascule est capable de mmoriser (ou stocker) un bit. Si on a
besoin de stocker n bits (mot de
n bits), il faudra donc raliser un
registre compos de n bascules.

1 Dfinition dun registre (entres parallles et sorties


parallles)
Un registre n bits comprend :
 un assemblage de n bascules (qui peuvent tre du type D, JK). Il peut
donc stocker un mot de n bits : n est sa capacit.
IUT Vlizy - GTR / Emmanuelle Peuch

26

Chapitre 4 : Logique squentielle

 Une entre de signal dhorloge pour la synchronisation (commune


toutes les bascules).
Et ventuellement :
 Une commande pour le chargement, ou lcriture, du mot
mmoriser.
 Une commande pour lactivation des sorties, ou la lecture.

2 Les registres dcalage


Un registre dcalage est un ensemble de bascules cbles de manire
ce que les nombres mmoriss dans les bascules soient dports dune
bascule la suivante chaque impulsion dhorloge.
Ci-dessous, les bascules JK sont connectes de faon raliser un registre
dcalage de 4 bits :

Avant le premier front actif dhorloge, les bascules sont mises zro.
Les bascules JK sont telles que J = K . Daprs la table de vrit de ces
bascules, on est dans la configuration o la sortie recopie lentre J.

IUT Vlizy - GTR / Emmanuelle Peuch

27

Chapitre 4 : Logique squentielle

A larrive du premier front descendant, en T1, X3 va recopier la donne J =


1, donne prsente sur lentre juste avant le front actif dhorloge. Les
autres bascules vont recopier J = 0, tat prsent sur lentre juste avant le
front actif.
On a donc X2 = X1 = X0 = 0.
En t = T2, X3 = J = 0 (la donne dentre est zro avant Le front actif). La
deuxime bascule va recopier X3 qui tait la donne entre en T1. Cette
donne a donc t transfre dans la deuxime bascule. Les sorties X1 et X0
restent zro.
Ainsi, chaque front actif de lhorloge, les sorties des bascules prennent la
valeur de sortie quavait la bascule immdiatement gauche avant le front
actif.
En continuant ce raisonnement, on voit que le premier bit de donnes se
retrouve en sortie du registre (sur X0) au bout de quatre priodes dhorloge
(registre 4 bits).
 Remarque : temps de maintien respecter
Dans le montage dun registre dcalage, il est ncessaire que les
bascules aient un temps de maintien excessivement faible, du fait que les
entres J et K changent presque en mme temps que le front actif. En
ralit, le retard de propagation introduit par X3 par exemple fait en sorte
que les entres J et K resteront inchangs pendant une courte priode
aprs le front descendant. Il faut donc choisir des bascules dont le temps
de maintien est plus petit que le temps de propagation dune seule
bascule.
Heureusement, la majorit des bascules respectent cette exigence et,
pour la plupart, ont un temps de maintien nul.

Dcalage logique dun nombre


Si on dcale logiquement gauche ou droite de n pas, on multiplie ou
on divise le nombre de 2n.

On crit dans le registre dcalage de 4


bits le nombre N = 3, soit N = % 0011 en
binaire.

Dcalage gauche

On effectue un dcalage gauche. Tous


les bits vont tre dcals de la mme
faon et il apparat des zros droite du
registre.

Aprs dcalage

On lit dans le registre la valeur binaire N

IUT Vlizy - GTR / Emmanuelle Peuch

28

Chapitre 4 : Logique squentielle

gauche :
0

= % 0110 soit N = 6.
1

On a multipli par 2 le nombre binaire


initial.

2.1 Applications des registres dcalage :

 Ralisation de compteurs particuliers :


Compteur en anneau
Il est constitu dun registre dcalage bascules D ; la sortie de la
dernire bascule est relie lentre de la premire.

Le registre est initialis la valeur 1000. A chaque impulsion dhorloge,


le contenu du registre est dcal dune position vers la droite. On
obtient un code cyclique dont les tats successifs sont les suivants :
1000, 0100, 0010, 0001 puis retour au premier tat. On obtient n
combinaisons avec un registre dcalage de n bits.
Info

Un code continu est un code dans lequel deux mots de code conscutifs sont
adjacents (changement dtat dun seul bit la fois). Si de plus le premier mot est
adjacent au dernier, le code est dit code cyclique.

Compteur de Johnson
Il est constitu dun registre dcalage bascules D ; la sortie Q de la
dernire bascule est relie lentre de la premire. Le registre est
initialis 0000.
On obtient un code cyclique dont les tats successifs sont :
0000, 1000, 1100, 1110, 1111, 0111, 0011, 0001 (et retour au
dbut !).
On obtient 2.n combinaisons avec un registre dcalage de n bits.

IUT Vlizy - GTR / Emmanuelle Peuch

29

Chapitre 4 : Logique squentielle

 Gnrateur pseudo-alatoire
Il est constitu dun registre dcalage (bascules D) initialis une valeur
diffrente de zro et reboucl sur lui-mme laide dun ou de plusieurs
OU exclusif.
Sur une sortie quelconque du registre, on obtient une squence binaire
pseudo alatoire de priodicit maximale de 2n - 1 (qui correspond au
nombre dtats que lon peut avoir au maximum).
Cette structure sera tudie en TD.
En traitement du signal, on utilise cette structure comme brouilleurs de
donnes ou encore comme gnrateur dit de bruit blanc.

2.2 Description VHDL


Il y a diffrentes faons de dcrire un registre dcalage en VHDL. On
peut utiliser :

 Loprateur concatnation
sreg <= sreg (6 downto 0) & SI ; -- SI = Serial Input

 Une boucle for loop :


for i in 0 to 6 loop
sreg(i+1) <= sreg(i) ;
end loop ;
sreg(0) <= SI ;
Prenons lexemple dun registre dcalage droite Srie / srie :

IUT Vlizy - GTR / Emmanuelle Peuch

30

Chapitre 4 : Logique squentielle

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
-- Registre dcalage srie srie,
dcalage
--droite : Oprateur concatnation
entity registre is
Port ( s_input : in std_logic;
s_output : out std_logic;
horloge : in std_logic);
end registre;
architecture version1 of registre is
signal inter: std_logic_vector(3 downto
0);
begin
process (horloge)
begin
if horloge'event and horloge ='1'
then
inter <= s_input & inter(3
downto 1);
end if;
end process;
s_output <= inter(0);
end version1;
-- boucle FOR...LOOP
architecture version2 of registre is
signal inter: std_logic_vector(3
downto 0);
begin
process (horloge)
begin
if horloge'event and horloge ='1'
then
IUT Vlizy - GTR / Emmanuelle Peuch

for i in <lower_limit> to
<upper_limit> loop
instructions squentielles ;
end loop;

31

Chapitre 4 : Logique squentielle

for I in 0 to 2 loop
inter(i) <= inter(i+1);
end loop;
inter(3) <= s_input;
end if;
end process;
s_output <= inter(0);
end version2;

IUT Vlizy - GTR / Emmanuelle Peuch

32

Annexes

Outils de description des systmes squentiels


Si loutil danalyse et de synthse des fonctions combinatoires est la table de
vrit, le diagramme de transition constitue loutil privilgi pour lanalyse et la
synthse des fonctions squentielles.

Le diagramme de transition ou dtat

Pour tout systme squentiel :


- A un instant donn, le systme se trouve dans une situation particulire qui
va dpendre des valeurs qui se sont succdes sur les entres depuis
linstant initial. Cette situation particulire est appele tat du systme : le
systme comprend autant dtats quil y a de situations particulires
diffrentes possibles.
- Il comporte toujours un nombre fini dtats. Le premier travail consiste donc
dnombrer les diffrents tats du systme partir du cahier des charges.
On utilise ensuite loutil graphique diagramme dtat ou transition pour
reprsenter le fonctionnement du systme (recenser tous les tats possibles du
systme tudi).

 On associe un cercle chaque tat.


 Lvolution du systme est reprsente par des flches
entre chaque cercle qui traduisent les changements dtat
possibles, les transitions possibles.
De chaque tat doivent partir autant de flches quil y a de
combinaisons binaires associes aux entres.

E0=1
E1=0

Etat 0/
S0=1
S1=1

Etat 1/
S0=0
S1=1

IUT Vlizy - GTR / Emmanuelle Peuch

E0=1
E1=1

Chaque flche comporte la valeur de


lentre E (mot de n bits si n entres) qui
provoque la transition correspondante.
Les
valeurs
des
sorties
sont
reprsentes dans les cercles du
diagramme.

33

Annexes

Synthse dun systme squentiel synchrone :


machine dtats

 Dans un systme squentiel : une mme combinaison des entres deux


instants diffrents peut conduire deux rsultats diffrents (contrairement
aux systmes combinatoires). En effet, cela dpend aussi de ltat
prcdent. Ce qui implique la prsence dun bloc de mmorisation
(ensemble de bascules, soit un registre).
Dfinition :
Pour tout systme squentiel, un instant donn, le systme se trouve dans
une situation particulire qui va dpendre des valeurs qui se sont succdes
sur les entres depuis linstant initial. Cette situation particulire est appele
tat du systme et le systme comprend autant dtats quil y a de situations
particulires diffrentes possibles.
 Le premier travail consistera donc dnombrer les diffrents tats du
systme partir du cahier des charges : on utilisera alors loutil diagramme
dtats .

 Tout systme squentiel synchrone peut tre ralis grce une structure
appele machine de Moore (machine tats de type Moore).
Soient

Ei = entre du systme linstant prsent (ti)


Si = sortie du systme linstant prsent
Yi = ltat du systme linstant prsent

Dans une machine de Moore, la sortie S dpend uniquement de


ltat prsent Yi. Les quations du systme sont donc :
Equation de la sortie : Si = f(Yi)
Equation dvolution du systme : Yi+1 = g(Ei,
Yi)
Cette dernire quation permet de dterminer ltat
suivant Yi+1 quand on connat ltat prsent Yi et les
entres prsentes Ei.

IUT Vlizy - GTR / Emmanuelle Peuch

34

Annexes

CLK
p

Entres
n

G( )
Fonction
combinatoire:
calcul de ltat
futur

Etat futur
Yi+1

Registre
dtat

Etat prsent
Yi
n

F( )
Systme
combinatoire de
sortie

Etat prsent Yi

MACHINE DE MOORE

Le registre dtat est constitu de n bascules synchrones. Le contenu du


registre dtat reprsente ltat de la machine (nombre cod en binaire sur
n bits dans un code choisi par le concepteur).
Lentre du registre dtat constitue ltat futur : celui qui sera charg lors
du prochain front actif dhorloge.
Il constitue la mmoire de la machine, llment qui matrialise lhistoire de
son volution.
La description VHDL de la machine de Moore est donc effectue en
deux temps. Au cours du premier temps est dcrit le cycle produit par la
machine dtat : cest la partie squentielle (process) ; dans un deuxime
temps la spcification du niveau des sorties en fonction de ltat courant est
dfinie : cest la partie combinatoire.

IUT Vlizy - GTR / Emmanuelle Peuch

35

Annexes

BIBLIOGRAPHIE
Electronique numrique et squentielle - pratique des langages de
description de haut niveau
Nol Richard
DUNOD

Circuits numriques et synthse logique - un outil : VHDL


J. Weber et M. Meaudre
MASSON

Initiation au langage VHDL


Michel Aumiaux
MASSON

Logique combinatoire et squentielle : mthodes, outils et ralisations


Claude Brie
ELLIPSES

Sur le Web : http://perso.wanadoo.fr/xcotton/index.htm

IUT Vlizy - GTR / Emmanuelle Peuch

36