Académique Documents
Professionnel Documents
Culture Documents
faire un ET logique entre le signal du décodeur et W ; le signal résultant est lui-même utilisé pour
TD 2 - C IRCUITS SÉQUENTIELS inhiber l’horloge entrant dans le registre à l’aide d’un autre ET logique.
Le banc de registres 1-bit est donné sur la figure 7. Voir le fichier reg.lgf.
"BANK_1b"
pétitifs et reg_mask.lgf propose un masque du banc de registres (avec les circuits
séquentiels de base).
AND_1x8b
BANK_1b
3->8
Exercice 2.1 - Banc de registres
W
CLOCK
On souhaite réaliser un banc de registres en DigLog.
Le banc de registres vu en cours comporte :
MUX8x1_1b
8 registres 1-bit
1. un circuit séquentiel de mémorisation, généralement une bascule D, pour chaque
bit de chaque registre du banc ;
2. un port d’écriture comportant un décodeur pour sélectionner le numéro de re-
MUX8x1_1b
gistre qui doit être modifié (e.g., le résultat d’une addition) ;
3. deux ports de lecture constitués de multiplexeurs pour sélectionner les deux re-
gistres que l’on souhaite lire (e.g., les opérandes d’une addition).
D’autre-part, on rappelle qu’une bascule D est constituée de deux latches en sé-
quence avec une horloge inversée ; ce circuit joue le rôle d’un « sas » dont les « portes »
s’activent lors des phases descendantes et ascendantes de l’horloge.
Question 2.1.1
Construire un banc de 8 registres 16-bits, avec un port d’écriture et deux ports de
lecture (pour la lisibilité du circuit, on construira en fait un banc de 8 registres 1-bit F IG . 7 – Banc de registres 1-bit
que l’on utilisera 16 fois).Penser à utiliser efficacement la composition hiérarchique
des éléments (bascules D, décodeur, multiplexeurs) en DigLog.
Réponse Exercice 2.2 - Registre à décalage
Il faut dupliquer la sortie de chaque registre car un même registre peut être lu deux fois au
même cycle (par exemple pour l’instruction ADD R0, R0 rightarrow R1). Outre les registres classiques, un processeur contient souvent des registres à déca-
Pour chaque port de lecture, on doit disposer d’un multiplexeur 8 × 1 ; ce multiplexeur est lage utilisés pour des manipulations de bits, des calculs d’adresses et des opérations
directement commandé par le numéro du registre à lire.
logiques. On veut maintenant construire un tel registre à décalage.
Pour l’écriture, on doit disposer d’un décodeur 3 → 8 ; chaque signal correspond à la com-
mande d’écriture d’un des registres. Comme l’écriture peut être inhibée par le signal W , il faut Question 2.2.1
En utilisant le registre 1-bit défini dans le fichier reg_mask.lgf, réaliser un re-
TD 2 21 22 TD 2
0
"SHIFT"
gistre 4-bits capable d’effectuer un décalage de 1 bit vers la gauche ou vers la droite SHIN_0 SHIFT DFLIPFLOP_1b SHOUT_0
NEW
en un cycle (à partir de la valeur enregistrée). On effectuera un décalage « logique »,
c’est-à-dire que l’on introduira des 0 à droite ou à gauche, respectivement. Le registre SHIN_1 SHIFT DFLIPFLOP_1b SHOUT_1 DIR
doit pouvoir se comporter soit comme un registre classique, soit comme un registre à
décalage ; on dispose pour cela d’un signal NEW (1 = registre classique, 0 = registre SHIFT
OUT
à décalage). On dispose également d’un signal DIR indiquant la direction du décalage SHIN_2 SHIFT DFLIPFLOP_1b SHOUT_2
LEFT
(1 = décalage à droite, 0 = décalage à gauche). IN
immédiatement à gauche dans les sorties des bascules — NEW = 0 et DIR = 1 — soit le bit SHIN_5 SHIFT DFLIPFLOP_1b SHOUT_5
immédiatement à droite dans les sorties des bascules — NEW = 0 et DIR = 0 ; l’entrée de gauche DLATCH_1b
DLATCH_1b
(resp. droite) du multiplexeur de poids le plus fort (resp. faible) étant relié au signal nul. "DFLIPFLOP_1b"
SHIN_6 SHIFT DFLIPFLOP_1b SHOUT_6
Voir le circuit de la figure 8 — réalisé pour un registre 16-bits — et le fichier shift.lgf.
k ∈ {1, 2, . . . , n/2, n} pour sélectionner une entrée décalée ou non. Le schéma de décalage à
gauche pour n = 8 est donné sur la figure 9.
Voir le circuit de la figure 10 — réalisé pour un registre 16-bits — et le fichier barrel.lgf, SHIN_11 SHIFT DFLIPFLOP_1b SHOUT_11
en ignorant les multiplexeurs 2 × 1 qui font partie de la correction de l’exercice suivant. 0
SHIN_12 SHIFT DFLIPFLOP_1b SHOUT_12
DIR
SHIN_14 SHIFT DFLIPFLOP_1b SHOUT_14
NEW
F IG . 8 – Registre à décalage
TD 2
24
0 1 0 1 0 1
D0 0 0 0 Q0
23
0 1 0 1 1
D1 0 0 0 Q1
F IG . 9 – Schéma d’un barrel shifter 8-bits (décalage à gauche)
0 1 1 1
D2 0 0 0 Q2
0 1 1 1
D3 0 0 0 Q3
1 1 1
D4 0 0 0 Q4
1 1 1
D5 0 0 0 Q5
1 1 1
D6 0 0 0 Q6
TD 2
1 1 1
D7 0 0 0 Q7
S2 S1 S0
TD 2 25 26 TD 2
0
SHIN_0 SHOUT_0
SHIFT_1b SHIFT_1b SHIFT_1b SHIFT_1b
MUX2x1_1b MUX2x1_1b MUX2x1_1b MUX2x1_1b
SHIN_1 SHOUT_1
SHIFT_1b SHIFT_1b SHIFT_1b SHIFT_1b
0
1
MUX2x1_1b
1 MUX2x1_1b MUX2x1_1b MUX2x1_1b
SHIN_2 SHOUT_2
SHIFT_1b SHIFT_1b SHIFT_1b SHIFT_1b
"MUX2x1_1b" MUX2x1_1b MUX2x1_1b
SHIN_3 SHOUT_3
SHIFT_1b SHIFT_1b SHIFT_1b SHIFT_1b
MUX2x1_1b MUX2x1_1b
SHIN_4 SHOUT_4
SHIFT_1b SHIFT_1b SHIFT_1b SHIFT_1b
MUX2x1_1b
DIR SHIN_5 SHOUT_5
SHIFT SHIFT_1b SHIFT_1b SHIFT_1b SHIFT_1b
0
MUX2x1_1b
SHIFT_1b
SHIN_6 SHOUT_6
SHIFT_1b SHIFT_1b SHIFT_1b SHIFT_1b
RIGHT
MUX2x1_1b
SHIN_7 SHOUT_7
SHIFT_1b SHIFT_1b SHIFT_1b SHIFT_1b
LEFT
MUX2x1_1b
ARITH
ROTATE
DIR
SH_8
SH_4
SH_2
SH_1
SH_1
SH_2 SHIN_12
SHIN_13 SHIN_8
SHIN_9 SHIN_4
SHIN_5 SHIN_0
SHIN_1
SH_4
SH_8 SHIN_14
SHIN_15 SHIN_10
SHIN_11 SHIN_6
SHIN_7 SHIN_2
SHIN_3
DIR
ARITH
ROTATE SHOUT_12
SHOUT_13 SHOUT_8
SHOUT_9 SHOUT_4
SHOUT_5 SHOUT_0
SHOUT_1
SHOUT_14
SHOUT_15 SHOUT_10
SHOUT_11 SHOUT_6
SHOUT_7 SHOUT_2
SHOUT_3