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 D X 0 1 Qn Qn-1 0 1

IUT Vlizy - GTR / Emmanuelle Peuch

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

CLK

Actif sur front montant

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 !) --actif sur front montant -- Q recopie alors D

begin if CLK'event and CLK='1' then Q <= D; end if; end process; 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; end version_2;

-- entre la plus prioritaire !

-- actif sur front montant

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 0 1 1

K 0 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 :
Vcc H Vcc

J1

SET

Q1

J2

SET

Q2

Sortie

K1 CLR Q 1

K2CLR Q 2

On rappelle la table de vrit de la bascule JK : Horloge J 0 0 1 1 K 0 1 0 1 Qn+1 Qn Mmorisation 0 Reset 1 Set Qn Commutation

IUT Vlizy - GTR / Emmanuelle Peuch

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

Exemple

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

III.

Les compteurs binaires / diviseurs de frquence synchrones

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
Clk
Actif front montant

RAZ
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

IUT Vlizy - GTR / Emmanuelle Peuch

19

Chapitre 4 : Logique squentielle

Nous allons galement tracer les chronogrammes correspondant notre systme :


CLK

RAZ Initialisation zro du compteur

t 0 1 0 1 0

S0

S1

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 Clk


Actif front montant

RAZ
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

4
compteur_0__9

Reset
Actif tat bas

S S3 S2 S1 S0

Vue externe

Diagramme dtat

IUT Vlizy - GTR / Emmanuelle Peuch

22

Chapitre 4 : Logique squentielle

Sortie = S3S2S1S0 RAZ


Etat 0/ 0000 Etat 1/ 0001 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


Ce qui correspond au diagramme dtat de la bascule JK :
JK 1X

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

0X

Etat 0/ Q=0

Etat 1/ Q=1

X0

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

Q1

Q0

(tat prsent)

Q1+ Q0+
(tat futur)

J1

K1

J0

K0

0 1 2 3

0 0 1 1

0 1 0 1

0 1 1 0

1 0 1 0

0 1 X X

X X 0 1

1 X 1 X

X 1 X 1

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. On effectue un dcalage gauche. Tous les bits vont tre dcals de la mme faon et il apparat des zros droite du registre. On lit dans le registre la valeur binaire N
28

Dcalage gauche

Aprs dcalage
IUT Vlizy - GTR / Emmanuelle Peuch

Chapitre 4 : Logique squentielle

gauche :
0 1 1 0

= % 0110 soit N = 6. 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 E0=1 E1=1

Etat 0/ S0=1 S1=1

Etat 1/ S0=0 S1=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.

IUT Vlizy - GTR / Emmanuelle Peuch

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 Entres
n p
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