Beruflich Dokumente
Kultur Dokumente
I.U.T. de VELIZY
RESEAUX
ET
TELECOMUNICATIONS
Logique squentielle
Emmanuelle Peuch
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.
I.
1 Introduction _______________________________________________ 1
2 Latch D ou verrou __________________________________________ 1
3 Synchronisation des systmes squentiels _____________________ 2
II.
III.
IV.
ANNEXES _________________________________________ 31
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
D
X
0
1
Qn
Qn-1
0
1
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;
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
CLK
CLK
1 Les bascules D
Symbole
Cette bascule possde une
commande D (Data) synchrone.
entre
de
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
Doc.
technique
Symbole logique :
Diagramme dtat :
begin
if CLK'event and CLK='1' then
Q <= D;
end if;
end process;
end version_1;
end version_2;
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.
2 Bascule JK
Symbole
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
Doc.
technique
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.
10
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
Exercice
11
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.
12
13
Vcc
J1
Vcc
K1 CLR Q 1
Q1
J2
SET
Q2
Sortie
K2CLR Q 2
J
0
0
1
1
K
0
1
0
1
Qn+1
Qn Mmorisation
0
Reset
1
Set
Qn Commutation
14
Formes dondes :
15
FCK <
1
tsu + max(tpHL, tpLH)
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) :
16
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.
17
18
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
S
S1 S0
Etat 0/
00
Etat 1/
01
Vue externe
Etat 3/
11
Etat 2/
10
19
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.
20
Exemple
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
21
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
Vue externe
Clk
Actif front montant
Reset
4
compteur_0__9
S
S3 S2 S1 S0
Vue externe
Diagramme dtat
22
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;
23
end version1;
Transition
dsire
Qn -> Qn+1
0 -> 0
0 -> 1
1 -> 0
1 -> 1
Commande
appliquer
D
0
1
0
1
D=0
Etat 0/
Q=0
Etat 1/
Q=1
D=1
D=0
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
JK
0X
Etat 0/
Q=0
X0
Etat 1/
Q=1
X1
24
Ces tables vont nous tre utiles pour la dtermination des circuits
combinatoires de commande des bascules afin de raliser un
compteur synchrone:
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
25
26
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.
27
Dcalage gauche
Aprs dcalage
28
gauche :
0
= % 0110 soit N = 6.
1
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.
29
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.
Loprateur concatnation
sreg <= sreg (6 downto 0) & SI ; -- SI = Serial Input
30
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
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;
32
Annexes
E0=1
E1=0
Etat 0/
S0=1
S1=1
Etat 1/
S0=0
S1=1
E0=1
E1=1
33
Annexes
Tout systme squentiel synchrone peut tre ralis grce une structure
appele machine de Moore (machine tats de type Moore).
Soient
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
35
Annexes
BIBLIOGRAPHIE
Electronique numrique et squentielle - pratique des langages de
description de haut niveau
Nol Richard
DUNOD
36