Logique séquentielle

69
ELECINF 102 : Processeurs et Architectures Numériques Logique séquentielle Tarik Graba [email protected]

Transcript of Logique séquentielle

Page 1: Logique séquentielle

ELECINF 102 : Processeurset Architectures NumériquesLogique séquentielle

Tarik [email protected]

Page 2: Logique séquentielle

Plan

Introduction

La bascule D

Logique séquentielle synchrone

Applications

En SystemVerilog

2/39 ELECINF102 Tarik Graba

Page 3: Logique séquentielle

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

Page 4: Logique séquentielle

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

Page 5: Logique séquentielle

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

Page 6: Logique séquentielle

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

Page 7: Logique séquentielle

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

Page 8: Logique séquentielle

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

Page 9: Logique séquentielle

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

Page 10: Logique séquentielle

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

Page 11: Logique séquentielle

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

Page 12: Logique séquentielle

Plan

Introduction

La bascule D

Logique séquentielle synchrone

Applications

En SystemVerilog

7/39 ELECINF102 Tarik Graba

Page 13: Logique séquentielle

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

clk

D Q

8/39 ELECINF102 Tarik Graba

Page 14: Logique séquentielle

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

Page 15: Logique séquentielle

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

Page 16: Logique séquentielle

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

Page 17: Logique séquentielle

La bascule DExemple

clkD1

Q1

D2

Q2

12/39 ELECINF102 Tarik Graba

Page 18: Logique séquentielle

La bascule DExemple

clkD1

Q1

D2

Q2

12/39 ELECINF102 Tarik Graba

Page 19: Logique séquentielle

La bascule DExemple

clkD1

Q1

D2

Q2

12/39 ELECINF102 Tarik Graba

Page 20: Logique séquentielle

La bascule DExemple

clkD1

Q1

D2

Q2

12/39 ELECINF102 Tarik Graba

Page 21: Logique séquentielle

La bascule DExemple

clkD1

Q1

D2

Q2

12/39 ELECINF102 Tarik Graba

Page 22: Logique séquentielle

La bascule DExemple

clkD1

Q1

D2

Q2

12/39 ELECINF102 Tarik Graba

Page 23: Logique séquentielle

La bascule DExemple

clkD1

Q1

D2

Q2

12/39 ELECINF102 Tarik Graba

Page 24: Logique séquentielle

La bascule DExemple

clkD1

Q1

D2

Q2

12/39 ELECINF102 Tarik Graba

Page 25: Logique séquentielle

La bascule DExemple

clkD1

Q1

D2

Q2

12/39 ELECINF102 Tarik Graba

Page 26: Logique séquentielle

La bascule DExemple

clkD1

Q1

D2

Q2

12/39 ELECINF102 Tarik Graba

Page 27: Logique séquentielle

La bascule DExemple

clkD1

Q1

D2

Q2

12/39 ELECINF102 Tarik Graba

Page 28: Logique séquentielle

La bascule DExemple

clkD1

Q1

D2

Q2

12/39 ELECINF102 Tarik Graba

Page 29: Logique séquentielle

La bascule DExemple

clkD1

Q1

D2

Q2

12/39 ELECINF102 Tarik Graba

Page 30: Logique séquentielle

La bascule DExemple

clkD1

Q1

D2

Q2

12/39 ELECINF102 Tarik Graba

Page 31: Logique séquentielle

La bascule DExemple

clkD1

Q1

D2

Q2

12/39 ELECINF102 Tarik Graba

Page 32: Logique séquentielle

La bascule DExemple

clkD1

Q1

D2

Q2

12/39 ELECINF102 Tarik Graba

Page 33: Logique séquentielle

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

Page 34: Logique séquentielle

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

Page 35: Logique séquentielle

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

Page 36: Logique séquentielle

Exemples d’applicationsRegistre à décalage

ED1 D2 D3

S

H

HE

D1

D2

D3

S

14/39 ELECINF102 Tarik Graba

Page 37: Logique séquentielle

Plan

Introduction

La bascule D

Logique séquentielle synchrone

Applications

En SystemVerilog

15/39 ELECINF102 Tarik Graba

Page 38: Logique séquentielle

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

Page 39: Logique séquentielle

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

Page 40: Logique séquentielle

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

Page 41: Logique séquentielle

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

Page 42: Logique séquentielle

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

Page 43: Logique séquentielle

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

Page 44: Logique séquentielle

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

Page 45: Logique séquentielle

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

Page 46: Logique séquentielle

Séquencer les traitementsLe reset synchrone

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

23/39 ELECINF102 Tarik Graba

Page 47: Logique séquentielle

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

Page 48: Logique séquentielle

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

Page 49: Logique séquentielle

Plan

Introduction

La bascule D

Logique séquentielle synchrone

Applications

En SystemVerilog

25/39 ELECINF102 Tarik Graba

Page 50: Logique séquentielle

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

Page 51: Logique séquentielle

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

Page 52: Logique séquentielle

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

Page 53: Logique séquentielle

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

Page 54: Logique séquentielle

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

Page 55: Logique séquentielle

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

Page 56: Logique séquentielle

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

Page 57: Logique séquentielle

Plan

Introduction

La bascule D

Logique séquentielle synchrone

Applications

En SystemVerilog

32/39 ELECINF102 Tarik Graba

Page 58: Logique séquentielle

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

Page 59: Logique séquentielle

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

Page 60: Logique séquentielle

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

Page 61: Logique séquentielle

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

Page 62: Logique séquentielle

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

Page 63: Logique séquentielle

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

Page 64: Logique séquentielle

La bascule Dl’enable

sans reset

always @(posedge clk)if (en)

q <= d;

36/39 ELECINF102 Tarik Graba

Page 65: Logique séquentielle

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

Page 66: Logique séquentielle

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

Page 67: Logique séquentielle

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

Page 68: Logique séquentielle

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

Page 69: Logique séquentielle

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