Upload
vuongnhi
View
227
Download
3
Embed Size (px)
Citation preview
ELECINF 102 : Processeurset Architectures NumériquesLogique séquentielle
Tarik [email protected]
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