Logique séquentielle

Post on 31-Dec-2016

229 views 3 download

Transcript of Logique séquentielle

ELECINF 102 : Processeurset Architectures NumériquesLogique séquentielle

Tarik Grabatarik.graba@telecom-paristech.fr

Plan

Introduction

La bascule D

Logique séquentielle synchrone

Applications

En SystemVerilog

2/39 ELECINF102 Tarik Graba

La logique combinatoireRappel

Rappel

La sortie d’une fonction ne dépend que de ses entrées• Pour les mêmes entrées on obtient toujours les mêmes

sorties.Permet de construire des opérateurs :

• Logiques• Arithmétiques

3/39 ELECINF102 Tarik Graba

La logique séquentielleLe temps de propagation tp est non nul. Durant ce temps :

• La sortie n’est pas valide !• On ne peut pas modifier les entrées !

Comment enchaîner plusieurs calculs?

E0

E1

E2

SF

tp

4/39 ELECINF102 Tarik Graba

La logique séquentielle

On maintient les entrées stables au moins pendant tp

En échantillonnant les entrées.

E0

E1

E2

SF

tp

4/39 ELECINF102 Tarik Graba

La logique séquentielle

On maintient les entrées stables au moins pendant tpEn échantillonnant les entrées.

Ei0E0

Ei1E1

Ei2E2

SF

tp

4/39 ELECINF102 Tarik Graba

La logique séquentielle

Dès que le résultat est prêt :• La sortie est échantillonnée• On peut au même instant modifier les entrées

Ei0E0

Ei1E1

Ei2E2

S SoF

tp

4/39 ELECINF102 Tarik Graba

La logique séquentielle

On utilise donc le même signal de synchronisation.• La même horloge

Ei0E0

Ei1E1

Ei2E2

S SoF

tp

clk

4/39 ELECINF102 Tarik Graba

La logique séquentiellet0 t1 t2

clkEi0 E0(0) E0(1)

Ei1 E1(0) E1(1)

Ei1 E2(0) E2(1)

E0E0(0) E0(1)

E1E1(0) E1(1)

E2E2(0) E2(1)

S S(0) S(1)

So S(0) S(1)

tp tp

5/39 ELECINF102 Tarik Graba

La logique séquentielle

Il manque quelque chose !Nous avons besoin d’un composant mémorisant sur le frontd’un signal

Ce composant s’appelle une bascule D (D flip-flop)

6/39 ELECINF102 Tarik Graba

La logique séquentielle

Il manque quelque chose !Nous avons besoin d’un composant mémorisant sur le frontd’un signal

Ce composant s’appelle une bascule D (D flip-flop)

C’est ce que nous verrons dans ce qui suit…

6/39 ELECINF102 Tarik Graba

Plan

Introduction

La bascule D

Logique séquentielle synchrone

Applications

En SystemVerilog

7/39 ELECINF102 Tarik Graba

La bascule DÉlément de base de la logique séquentielle

clk

D Q

8/39 ELECINF102 Tarik Graba

La bascule DÉlément de base de la logique séquentielle

bascule D, flipflop, dff, registre …Une entrée particulière ! l’horloge clkL’horloge est symbolisée par un triangle

clk

D Q

Fonctionnement :

A chaque front montant de l’horloge clk (passage de0 → 1) l’entrée D est copiée (échantillonnée, mémorisée)sur la sortie Q.Entre deux fronts d’horloge, la sortie Q ne change pas.

9/39 ELECINF102 Tarik Graba

La bascule DTable de vérité de la bascule D

D clk Q0 ↑ 0 copie de D sur Q1 ↑ 1 copie de D sur Q× 0 Q Q conserve sa valeur× 1 Q Q conserve sa valeur× ↓ Q Q conserve sa valeur

10/39 ELECINF102 Tarik Graba

La bascule DLe registre

Un registre est un ensemble de bascules fonctionnant enparallèle.

• Exemple un registre 4bits

H

D1

D2

D3

D4

Q1

Q2

Q3

Q4

⇐⇒H

D4 4

Q

11/39 ELECINF102 Tarik Graba

La bascule DExemple

clkD1

Q1

D2

Q2

12/39 ELECINF102 Tarik Graba

La bascule DExemple

clkD1

Q1

D2

Q2

12/39 ELECINF102 Tarik Graba

La bascule DExemple

clkD1

Q1

D2

Q2

12/39 ELECINF102 Tarik Graba

La bascule DExemple

clkD1

Q1

D2

Q2

12/39 ELECINF102 Tarik Graba

La bascule DExemple

clkD1

Q1

D2

Q2

12/39 ELECINF102 Tarik Graba

La bascule DExemple

clkD1

Q1

D2

Q2

12/39 ELECINF102 Tarik Graba

La bascule DExemple

clkD1

Q1

D2

Q2

12/39 ELECINF102 Tarik Graba

La bascule DExemple

clkD1

Q1

D2

Q2

12/39 ELECINF102 Tarik Graba

La bascule DExemple

clkD1

Q1

D2

Q2

12/39 ELECINF102 Tarik Graba

La bascule DExemple

clkD1

Q1

D2

Q2

12/39 ELECINF102 Tarik Graba

La bascule DExemple

clkD1

Q1

D2

Q2

12/39 ELECINF102 Tarik Graba

La bascule DExemple

clkD1

Q1

D2

Q2

12/39 ELECINF102 Tarik Graba

La bascule DExemple

clkD1

Q1

D2

Q2

12/39 ELECINF102 Tarik Graba

La bascule DExemple

clkD1

Q1

D2

Q2

12/39 ELECINF102 Tarik Graba

La bascule DExemple

clkD1

Q1

D2

Q2

12/39 ELECINF102 Tarik Graba

La bascule DExemple

clkD1

Q1

D2

Q2

12/39 ELECINF102 Tarik Graba

La bascule DExemple

clkD1

Q1

D2

Q2

Q1 recopie D1 avec un cycle de retard.

Q2 recopie D2 en filtrant les impulsions de durée inférieure à lapériode de l’horloge.

12/39 ELECINF102 Tarik Graba

La bascule DContraintes temporelles

th

tco

tsu

Q

clk

D

La donnée doit être stable au front d’horloge :• avoir atteint sa valeur tsu avant le front d’horloge (setup).• cette valeur doit être maintenue th après le front d’horloge (hold).

La copie de l’entrée sur la sortie se fait avec un retard de tco (clock to output).

13/39 ELECINF102 Tarik Graba

La bascule DContraintes temporelles

th

tco

tsu

Q

clk

D

tsu : temps de pré–positionnementth : temps de maintien

tco : temps de propagation

13/39 ELECINF102 Tarik Graba

Exemples d’applicationsRegistre à décalage

ED1 D2 D3

S

H

HE

D1

D2

D3

S

14/39 ELECINF102 Tarik Graba

Plan

Introduction

La bascule D

Logique séquentielle synchrone

Applications

En SystemVerilog

15/39 ELECINF102 Tarik Graba

La logique séquentielleRègles

La logique séquentielle “synchrone”

Tout bloc combinatoire est entouré par des registres(bascules D).Les registres sont synchrones

• Ils utilisent le même signal d’horloge• L’horloge doit arriver en même temps• pas de combinatoire sur l’horloge

La période de l’horloge dont être compatible avec le tempsde propagation de la logique combinatoire

16/39 ELECINF102 Tarik Graba

La logique séquentielleFréquence de fonctionnement

registre

sorties

tco tsutcrit

combinatoire

horloge

entrées

Tclk > tco + tcrit + tsu

tcrit est le temps du chemin critique càd le temps depropagation du chemin combinatoire le plus long

17/39 ELECINF102 Tarik Graba

La logique séquentielleFréquence de fonctionnement

registre

sorties

tco tsutcrit

combinatoire

horloge

entrées

Fmax =1

tco + tcrit + tsu

tcrit est le temps du chemin critique càd le temps depropagation du chemin combinatoire le plus long

17/39 ELECINF102 Tarik Graba

Séquencer les traitements

Répéter plusieurs fois le même calcul

F F F

Comment effectuer plusieurs fois le même calcul sansdupliquer les opérateurs?

18/39 ELECINF102 Tarik Graba

Séquencer les traitements

Mémoriser et réutiliser le même bloc combinatoire

F

Mémoriser les résultats intermédiaires.Reboucler sur la partie combinatoire.

19/39 ELECINF102 Tarik Graba

Séquencer les traitementsLa valeur initiale?

Un signal extérieur est utilisé pour forcer l’état desbascules.On parle de “reset” (remise à zéro).Il peut s’agir d’une mise à “1”, on parle alors de “preset”.

20/39 ELECINF102 Tarik Graba

Séquencer les traitementsLe reset asynchrone

Un signal connectédirectement aux bascules.Son action estindépendante de l’horloge.En général global pour toutle circuit.Peut être positif ou négatif.

clk

D Q

reset

clk

D Q

n_reset

clkn_reset

DQ

21/39 ELECINF102 Tarik Graba

Séquencer les traitementsLe reset synchrone

clkn_reset

DQ

Vient de la logique quiprécède les bascules.Son action n’est effectivequ’au front de l’horloge.C’est une remise à zérofonctionnelle.

22/39 ELECINF102 Tarik Graba

Séquencer les traitementsLe reset synchrone

Comment construire un reset synchrone en utilisant lesportes logiques de base?

23/39 ELECINF102 Tarik Graba

Séquencer les traitementsLe reset synchrone

Comment construire un reset synchrone en utilisant lesportes logiques de base?

clk

D Q

n_reset

D

23/39 ELECINF102 Tarik Graba

Logique séquentielle synchroneRésumons

sortiescombinatoire

entrées

horloge

Utilisation de bascules D synchrones pour mémoriser les variables internes etles sortiesLa sortie d’une fonction séquentielle dépend de ses entrées et de son étatprécédent.L’état initial doit être forcé par un signal extérieur.

24/39 ELECINF102 Tarik Graba

Plan

Introduction

La bascule D

Logique séquentielle synchrone

Applications

En SystemVerilog

25/39 ELECINF102 Tarik Graba

Exemples d’applicationsL’enable

Construire une bascule D avec une entrée d’activation(enable).

• enable vaut 1 la bascule fonctionne normalement.• enable vaut 0 la bascule ne change pas d’état.

26/39 ELECINF102 Tarik Graba

Exemples d’applicationsL’enable

Construire une bascule D avec une entrée d’activation(enable).

• enable vaut 1 la bascule fonctionne normalement.• enable vaut 0 la bascule ne change pas d’état.

clk

D Q0

1D

enable

26/39 ELECINF102 Tarik Graba

Exemples d’applicationsUn compteur

Construisez un compteur (+1 à chaque coup d’horloge) de0 à 255.Ajoutez la possibilité de le remettre à zéro

• de façon asynchrone• de façon synchrone

Ajoutez la possibilité d’interrompre/reprendre le comptage.Ajoutez la possibilité qu’il compte ou décompte.

27/39 ELECINF102 Tarik Graba

Exemples d’applicationsLe Pipeline

Une fonctioncombinatoire F detemps de propagation tpLes entrées sortiespeuvent êtresynchrones tant quetp < TCLK

• Où TCLK est la période d’horloge

A

B

COUTF

tp

CLKA A0 A1 A2

B B0 B1 B2

C C0 C1 C2

OUT C0 C1

tp

28/39 ELECINF102 Tarik Graba

Exemples d’applicationsLe Pipeline

On décompose F endeux fonctionscombinatoires F1 et F2

de temps depropagation respectifstp1 et tp2

• On s’arrange pouravoir tp1 < tp ettp2 < tp

• Dans cet exemple tp1 + tp2 = tp

Les entrées sortiespeuvent êtresynchrones tant quetp1 + tp2 < TCLK

A

B

COUTF1

Ci F2

tp1 tp2

CLKA A0 A1 A2

B B0 B1 B2

Ci Ci0 Ci1 Ci2

C C0 C1 C2

OUT C0 C1

tp1 tp2tp

29/39 ELECINF102 Tarik Graba

Exemples d’applicationsLe Pipeline

On peut échantillonnerla sortie de la fonctionF1

Les entrées sortiespeuvent êtresynchrones tant quetp1 < TCLK et tp2 < TCLK

• On peut donc réduirela période del’horloge• Ou augmenter la fréquence

A

B

COUTF1

Ci Cr F2

tp1 tp2

CLKA A0 A1 A2

B B0 B1 B2

Ci Ci0 Ci1 Ci2

Creg Ci0 Ci1 Ci2

C C0 C1 C2

OUT C0 C1 C2

tp1 tp2

30/39 ELECINF102 Tarik Graba

Exemples d’applicationsLe Pipeline

Le pipeline permet d’augmenter la fréquence defonctionnement.On a augmenté la taille du circuit (Ajout des bascules,modification de la partie combinatoire).On a augmenté la latence initiale.

31/39 ELECINF102 Tarik Graba

Plan

Introduction

La bascule D

Logique séquentielle synchrone

Applications

En SystemVerilog

32/39 ELECINF102 Tarik Graba

La bascule D

Toujours, à chaque front d’horloge, copier l’entrée sur la sortie.Sinon, la sortie ne change pas.

En SystemVerilog

always @(posedge clk)q <= d;

33/39 ELECINF102 Tarik Graba

La bascule D

Toujours, à chaque front d’horloge, copier l’entrée sur la sortie.Sinon, la sortie ne change pas.(implicite)

En SystemVerilog

always @(posedge clk)q <= d;

33/39 ELECINF102 Tarik Graba

La bascule DLa remise à zéro asynchrone

…sur niveau haut

always @(posedge clk or posedge reset)if(reset)

q <= 1'b0;else

q <= d;

34/39 ELECINF102 Tarik Graba

La bascule DLa remise à zéro asynchrone

…sur niveau bas

always @(posedge clk or negedge nreset)if(!nreset)

q <= 1'b0;else

q <= d;

34/39 ELECINF102 Tarik Graba

La bascule DLa remise à zéro synchrone

…sur niveau haut

always @(posedge clk)if(reset)

q <= 1'b0;else

q <= d;

35/39 ELECINF102 Tarik Graba

La bascule DLa remise à zéro synchrone

…sur niveau bas

always @(posedge clk)if(!nreset)

q <= 1'b0;else

q <= d;

35/39 ELECINF102 Tarik Graba

La bascule Dl’enable

sans reset

always @(posedge clk)if (en)

q <= d;

36/39 ELECINF102 Tarik Graba

La bascule Dl’enable

avec reset asynchrone

always @(posedge clk or negedge nreset)if(!nreset)

q <= 1'b0;else if (en)

q <= d;

36/39 ELECINF102 Tarik Graba

La bascule Dl’enable

avec reset synchrone

always @(posedge clk)if(!nreset)

q <= 1'b0;else if (en)

q <= d;

36/39 ELECINF102 Tarik Graba

Un registre

Un registre de 4 bits

logic[3:0] d;...logic[3:0] q;

always @(posedge clk)q <= d;

37/39 ELECINF102 Tarik Graba

Un compteur

Un compteur modulo 16

logic[3:0] q;

always @(posedge clk)q <= q + 1;

Dont on ne connait pas l’état initial !

38/39 ELECINF102 Tarik Graba

Un registre à décalage

Affectations simultanées

logic a, b, c, d;

always @(posedge clk)begin

b <= a;c <= b;d <= c;

end

logic a, b, c, d;

always @(posedge clk)begin

d <= c;c <= b;b <= a;

end

Dans un bloc, entre begin et end, les affectations sont faites simultanément.L’ordre n’a donc pas d’importance et les deux codes sont équivalents.

À droite d’une affectation <=, l’état avant le front.À gauche d’une affectation <=, l’état après le front.

39/39 ELECINF102 Tarik Graba