Professional Documents
Culture Documents
MI41 FINAL
1. Circuit de Dcalage
1.1. Dcaleur simple
On souhaite raliser un circuit dit dcaleur 8 bits. Le principe consiste dcaler la valeur dun mot de 8 bits de N rangs vers la
gauche ou vers la droite.
N est compris entre 0 et 7. On se limitera au dcalage gauche (poids faible vers poids fort). Dans ce type de circuit, lors des
dcalages gauche, les bits de poids faibles prennent pour nouvelle valeur 0.
Exemple :
E5 E6 E5 E4 E3 E2 E1 E0
D2
<< N D1
D0
S7 S6 S5 S4 S3 S2 S1 S0
Dcaleur N bits
Les entres E sont les entres de donnes, les entres D correspondent au nombre de rangs de dcalage (N). S correspond aux
sorties dcales.
Ainsi si D = 011 (N = 3) S est gal E dcal de 3 rangs vers la gauche :
S7 = E4 ; S6 = E3 ; S5 = E2 ; S4 = E1 ; S3 = E0 ; S2 = 0 ; S1 = 0 ; S0 = 0
1.1.1. Description VHDL
1. Donnez la description comportementale (pas dquations logiques) VHDL de ce circuit dcaleur N bits (entity/architecture)
E E E
S S S
Dcaleurs 1, 2 et 4 bits
D[2..0]
H Registre load
DataOut
Avec :
DataOut correspond la valeur (un octet) mmorise dans le registre
Lorsque load est actif (i.e. lorsque load = 1) la donne, sur un octet, prsente sur lentre DataIn est charge dans le
registre sur un front montant de lhorloge H.
Lorsque la valeur prsente sur lentre D[2..0] est diffrente de "000" et que load est inactif la donne dans le registre
est dcale sur un front montant de lhorloge H de N rang vers la gauche, o N correspond au nombre binaire D[2..0].
Dcaleur 8 bits
Multiplexeur 2 voies vers 1, les bus Registre chargement parallle synchrone :
sont sur 8 bits LoadA lorsquil est actif autorise le
chargement du registre sur front montant
dhorloge H. Dans le cas contraire les
donnes contenues dans le registre A sont
inchanges
1. Donnez, en utilisant les composants ci dessus et en commentant votre rponse, la structure du registre dcaleur sous forme de
schma.
2. Quel est lintrt dune telle structure par rapport un simple registre dcalage ?
3. Si votre registre tait implant en dur dans un microprocesseur. Quelle frquence dhorloge maximale autoriserait-il ?
(En considrant toujours des portes logiques 2 entres ayant un temps de traverse gal 1 ns).
2. Squenceur de commande
Un processus de lecture criture d'une interface priphrique (change de donnes) est donn par le graphe ci-dessous :
repos
w1
R1 r1 W1
1 3
w3
r3
w2
r2
R2 W2
2 4
On souhaite que le passage de l'tat "repos" l'tat "1" s'effectue avec la condition suivante :
nStrobe = 0
nRead = 0
et que le passage de l'tat "repos" l'tat "3" s'effectue avec la condition suivante :
nStrobe = 0
nRead = 1
Par ailleurs, lors de la transition entre l'tat repos et l'tat 1 la valeur prsente sur un bus de donne doit tre mmorise dans un
registre chargement parallle synchrone :
load
load : commande synchrone
bus de donnes de chargement
Q D
H : horloge du squenceur
Les documents sont autoriss except livres et photocopies de livres. Le prt de documents entre tudiants n'est pas autoris.
D7 D6 D5 D4 D3 D2 D1 D0
load#
TIMER BCD
CLK
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0 Borrow
Ce timer BCD est un dcompteur BCD qui ne dcompte qu'une seule fois et qui gnre un signal en fin de dcomptage :
la commande load# est une commande synchrone active niveau bas
lorsque load# est actif la valeur prsente sur les entres D est charge
lorsque load# est inactif, la valeur courante est dcrmente d'une unit BCD
lorsque le dcompteur atteind la valeur Zro la sortie borrow est active. Cette sortie reste active tant qu'une
nouvelle valeur n'est pas charge.
0
Fetch
=1
Decode t 1
br op
ls
2 3 4
Execute
t =1 =1
5 6 7
Store
=1 =1 =1
L'excution des instructions est dcompose en 4 tapes qui sont pour une opration entire : la recherche en mmoire de
l'instruction, le dcodage de l'instruction, l'xcution et le rangement des rsultats.
Les instructions sont de 3 types :
op : opration entire (registre registre),
ls : opration load/store,
br : branchement conditionnel.
Description des diffrentes tapes
N place description de l'opration Opration ralise en sortie de place (franchissement transition)
0 recherche instruction mmorisation dans registre d'instruction
1 dcodage instruction mmorisation dans registre de micro-commandes
2 calcul des conditions de branchement rsultat test (registre d'tat) t = vrai ou faux
3 calcul adresse load/store mmorisation dans registre d'adresse
4 excution du calcul (opration UAL) mmorisation dans registre de rsultat
5 calcul adresse du saut mmorisation dans compteur de programme
6 donne place sur le bus (store) attente lecture ou criture effective
donne prsente (load)
7 dplacement rsultat dans registre de rsultat opration sauvegard dans registre destination
destination
LDR SA
D
U
MUXA
DA
A
L 32 bits Banc
de 16
MUXD
DR 16x32 bits SB U
DC C
A
registres
C
LDA
L
R0 R15
DB
MUXB
B
LDD LDC
LDB
3.1. Description
Les donnes traites sont toutes de longueur 32 bits
A,B,C et R0 R15 sont des registres commande de chargement synchrone
Les multiplexeurs et l'UAL sont purement combinatoires (uniquement des portes logiques, pas de bascules).
Fonctionnement des registres
Tous les registres ont un fonctionnement synchrone. Pour que la valeur prsente en entre d'un registre soit charg, il faut
que la commande de chargement (LDA, LDB, LDC, LDR) du registre concern soit active (gale '1') et qu'il y ait un
front montant d'horloge.
Le banc de registres comporte 16 registres indpendants. D est une commande de slection de registre sur 4 bits (D3 D2
D1 D0) permettant de dsigner le registre qui va tre charg. Ainsi pour sauvegarder une valeur dans un des registres il
faut qu'au moment du front, LDR soit actif et que le numro du registre soit spcifi sur D. Exemple si D = "0110" et que
LDR est actif, au moment du front, le registre 6 est charg avec la valeur prsente sur DR.
Fonctionnement des multiplexeurs :
Le multiplexeur MUXD est un multiplexeur 2 voies de 32 bits vers 1. Il permet d'aiguiller une donne provenant du bus de
donnes (L) ou de la sortie du registre C selon la valeur de LDD vers les entres des 16 registres du banc de
LDD = 0 aiguillage de L (i.e. DR = L)
LDD = 1 aiguillage de C (i.e. DR = C)
Les multiplexeurs MUXA et MUXB sont des multiplexeurs 16 voies de 32 bits vers 1. Ils permettent respectivement
d'aiguiller la sortie d'un des 16 registres du banc de registres vers les entres des registres A et B.
SA (resp. SB) est une commande 4 bits SA3 SA2 SA1 SA0 (resp SB3 SB2 SB1 SB0) permettant d'aiguiller la sortie du
registre correspondant au numro de slection. Ainsi si SA = "0010" (donc 2) c'est la valeur de R2 qui se trouve prsente
en sortie du multiplexeur.
Fonctionnement du systme
Le systme est command par un squenceur cbl fournissant aprs chaque front d'horloge une commande constitue de 21
bits.
LDD | LDR LDA LDB LDC | D3 D2 D1 D0 | SA3 SA2 SA1 SA0 | SB3 SB2 SB1 SB0 | U3 U2 U1 U0
Exemple de commande :
0 9 5 A 7 B h ( 0 1001 0101 1010 0111 1011 b) :
en sortie du MUXD DR = L
commande de chargement du registre R5 active
commande de chargement du registre C active
en sortie du MUXA on a DA = R10
en sortie du MUXB on a DB = R7
opration non (A + B) slectionne au niveau de l'UAL
Au prochain front d'horloge on aura :
la valeur prsente sur L qui sera charge dans R5
la valeur en sortie de l'UAL (soit l'opration logique non(A + B)) qui sera charge dans le registre C
la prsence d'une nouvelle commande envoye par le squenceur pour raliser une autre opration
3.2. Questions
1. On souhaite transfrer la valeur d'un registre vers un autre registre. Avec l'architecture propose, la valeur transfre doit
ncessairement transiter par l'UAL.
1.1. Expliquez les oprations ncessaires pour faire transiter une valeur du registre R3 au registre R7 (copie de R3 dans R7).
1.2. Combien de priodes d'horloge sont ncessaires pour raliser cette opration ?
2. Donnez la squence des commandes (en hxadcimal) que doit envoyer le squenceur pour raliser l'opration donne ci-
aprs. Vous dtaillerez chaque opration.
ADD R2, R1, R0 : addition du contenu des registres R0 et R1 et sauvegarde du rsultat dans R2 (R2 R0 plus R1).
3. On considre le programme suivant :
ADD R4, R1, R0
ADD R6, R2, R3
ADD R9, R7, R8
ADD R5, R4, R2
Donnez la squence minimale des commandes pour raliser ce programme. On utilisera au maximum les possibilits de
recouvrement des oprations ("pipelining").
4. Si les oprations sont excutes en recouvrement on parle de "pipeline". De combien d'tages est constitu ce pipeline ?
5. On considre le programme suivant :
1 load R0, L chargement d'une donne fournie par le bus de donnes (L) dans le registre R0
2 load R1, L chargement d'une donne fournie par le bus de donnes (L) dans le registre R1
3 ADD R4, R1, R0
4 OR R5, R4, R2 OU logique bit bit de R2 et R4, le rsultat est sauvegard dans R5 (R5 R4 OU R2)
5 ADD R6, R2, R3
6 ADD R7, R4, R2
7 OR R11, R3, R1
5.1. Donnez, en justifiant votre rponse, le nombre de cycles ncessaires pour excuter ce programme sachant qu'il utilise
au maximum les possibilits de recouvrement (pipeline).
5.2. Proposez une solution (logicielle) pour rduire la dure de traitement de ce programme.
UTBM Automne 2000 3/3 Nicolas Lacaille
Examen final MI 41 Automne 1999
Description :
Lorsquune adresse est fournie en entre de la mmoire, le contenu de la cellule mmoire (8 bits) associe est disponible
en sortie.
Ladresse de loctet mmoire est fournie par la sortie du compteur.
La sortie du multiplexeur MUX est relie au load du compteur.
Compteur prchargeable synchrone :
- la valeur courante du compteur est constamment disponible en sortie
- lorsque load est mis 0 le mot plac en entre est charg sur un front actif d'horloge et le compteur prend alors la
nouvelle valeur aprs le front
- lorsque load est 1, la valeur courante du compteur sincrmente dune unit chaque front dhorloge
- Lorsque clear est 0, la valeur du compteur est force 0000 sur le front actif d'horloge.
X et Y sont les sorties de commande du systme.
t
A
c
g
R
V
p
M
L
r0
r1
Signification des variables binaires :
Ajouter votre fonction une gestion d'erreur : si le rsultat est trop grand, le nombre retourn sera constitu que de '1'.
3.2. Permutation dans un tableau
Donner le code assembleur d'une routine ralisant une permutation entre 2 donnes d'un tableau. C'est dire la valeur
contenue dans une case i d'un tableau est mise dans une case j et la valeur de la case j est mise dans la case i.
Prototype C :
void EchangeDonnes(char * val1, char * val2)
Quelle modification faudrait-il apporter votre code si les donnes pointes taient du type "short int" (entiers sur 16 bits);
Rappel sur les pointeurs : un pointeur correspond une adresse o se trouve la variable ainsi *pointeur = valeur signifie que
pointeur est une adresse et que le contenu de la ou des case(s) mmoire correspondante(s) est valeur.
H CLK Clear 1
0 Compteur
load EN 1
X
ROM 16x8 A3 A2 A1 A0
1
c Adresses Contenu (binaire)
c MUX 0
Y 1
a 00 2
2 X 3 =1 3
b 01 4
b 5
c 10 6
Y 7
ab 11
4 8
9
Slection A
a B
C
5 D
E
F
XY
C1 C0 X Y A3 A2 A1 A0
NOM : PRENOM :
Mdian MI41
Dure : 2h. Documents autoriss : polycopis de cours et TD uniquement. Le barme est donn titre indicatif uniquement.
1. Conversions (2pts)
On adopte une reprsentation signe sur 12 bits. La convention de reprsentation est la reprsentation en complment 2.
Donnez les reprsentations binaires et hexadcimales des nombres dcimaux suivants :
1. +132
2. - 507
3. + 2048
4. -3020
Soustracteur
S = A B C0
CN+1
SNS0
2.1. N = 1 (4pts)
En expliquant clairement votre dmarche, dterminez les quations logiques vrifies par S0 et C1 dun soustracteur complet 1
bit (N = 1).
Tracez (proprement la main) le logigramme
2.2. N = 4 (1pt)
Donnez la structure sous forme de bloc du soustracteur complet pour N = 4.
2.3. Additionneur/soustracteur
2.3.1. Additionneur/Soustracteur sans retenue 8 bits (5 pts)
On souhaite raliser un soustracteur 8 bits (sans retenue entrante ni retenue sortante) laide dun additionneur complet 8 bits,.
Additionneur
SP = A + B + CP0
CP8
SP7SP0
1. Rappelezr comment faire la soustraction de deux mots de 8 bits A B laide de loprateur daddition
2. Donnez le schma de principe du soustracteur sans retenue utilisant le circuit additionneur donn ci-dessus.
3. Expliquez comment faire un additionneur/soustracteur command sans retenue laide du circuit additionneur :
A7A0 B7B0
A/S# commande du circuit :
- Si A/S# = 1 alors S = A + B
- Si A/S# = 0 alors S = A - B
Additionneur/
Soustracteur
A/S#
S7S0
C0 A7A0 B7B0
A/S# commande du circuit :
- Si A/S# = 1 alors S = A + B + C0
- Si A/S# = 0 alors S = A B C0
Additionneur/
A/S# Soustracteur
C8
S7S0
On reprend le circuit dadditionneur complet pour raliser ce circuit
1. Expliquer comment tenir compte de la retenue entrante C0
2. Expliquer comment gnrer la retenue sortante C8
3. Donnez le schma de principe de ladditionneur/soustracteur complet.
MI41 - Mdian
Dure : 2h.
Documents autoriss excepts livres et photocopies de livres.
Lisez bien l'nonc avant de commencer.
1. Mots de 2 bits :
A (A1, A0) est le mot cod en binaire rflchi et B le mot cod en binaire naturel. Donnez l'quation la plus simple possible de
B0 en fonction de A1 et A0
A1 A0 B1 B0
0 0 0 0
0 1 0 1
1 1 1 0
1 0 1 1
2. Mots de 3 bits :
Dterminez les quations de B2, B1 et B0 en fonction de A2, A1, A0
A2 A1 A0 B2 B1 B0
0 0 0 0 0 0
0 0 1 0 0 1
0 1 1 0 1 0
0 1 0 0 1 1
1 1 0 1 0 0
1 1 1 1 0 1
1 0 1 1 1 0
1 0 0 1 1 1
3. Mots de N bits :
Etablissez une relation permettant de dterminer un bit Bi du mot B (binaire naturel) en fonction des bits Aj du mot A (binaire
rflchi)
3. Chronogrammes
Soit le schma suivant :
J0 Q0 J1 Q1
H H
K0 Q0 K1 Q1
Le systme est initialement dans l'tat Q1 Q0 = 0 0. Tracez, en les justifiant, les chronogrammes d'volution de Q1 et Q0 en
fonction de l'horloge H.
4. Compteur asynchrone
On dispose de bascules D actives sur front montant avec Preset et Clear asynchrone ainsi que de portes logiques lmentaires..
1. Ralisez un compteur asynchrone par 5 (5 tats complets) ralisant le cycle suivant : 0, 1, 2, 3, 4, 0
PR
D Q
H
CLR
2. On souhaite modifier le cycle un fois sur 2. Une fois sur 2 l'tat correspondant la valeur 4 est saut ce qui donne pour le
cycle : 0, 1, 2, 3, 4, 0, 1, 2, 3, 0
Donnez le schma du systme ralisant le nouveau cycle.
Mdian MI41 2h
1. Conversions (4 pts.)
On considre des nombres reprsents sur 6 bits. Complter le tableau suivant lorsque cela est possible (mettre une croix
sinon).
An A0
Load
H Compteur
Qn Q0
1. Raliser ce compteur synchrone l'aide de bascules D actives sur front montant et de portes logiques lmentaires.
2. Ajouter une broche d'inhibition EN votre schma. Lorsque EN vaut '1' le dispositif fonctionne comme dcrit
prcdemment, lorsque EN vaut '0' la valeur courante du compteur est conserve.