Академический Документы
Профессиональный Документы
Культура Документы
Matriel informatique
Unit de multiplication
en virgule flottante
1 Introduction
Ce document constitue le cahier des charges de ce qui vous est demand dans ce
laboratoire de matriel informatique: concevoir et raliser une unit de multiplication en
virgule flottante.
La section 2 dcrit le format des nombres que vous allez manipuler. La section 3
expose lalgorithme utiliser pour la multiplication. Finalement la section 4 dcrit les
protocoles dentre/sortie.
2 Format
Les diffrentes faons dont les nombres rels peuvent tre reprsents dans un
ordinateur sont traites en dtail dans le livre Informatique Industrielle I, aux pages 43
53.
Le format adopt dans le cadre de ce laboratoire est un format simplifi, cod sur
16 bits, dont le dtail est donn dans la figure 1.
15 14
s
10
m
Fig. 1 Format
Matriel informatique
Lexposant (e), dune largeur de 5 bits, est biais, ce qui signifie quun biais de
16 est systmatiquement ajout de manire ramener les valeurs de
lintervalle - 16 .. + 15 lintervalle 0 .. 31.
(1)
(2)
(3)
15 14
1
10
0
0
Par convention le zro est cod par une mantisse nulle, un exposant nul et un signe
positif (fig. 3).
Matriel informatique
15 14
0
10
0
0
3 Algorithme
3.1 Principe
Soient deux nombres rels, A et B, de mantisse mA, resp. mB, dexposant (nonbiais) eA, resp. eB, et de signe sA, resp. sB, (4), (5).
A = ( - 1 ) sA * mA * 2 eA
B = ( - 1 ) sB * mB * 2 eB
(4)
(5)
= ( ( - 1 ) sA * mA * 2 eA ) * ( ( - 1 ) sB * mB * 2 eB
P = ( - 1 ) ( sA + sB ) * ( mA * mB ) * 2 ( eA + eB )
(6)
(7)
(8)
(9)
(10)
(11)
Dtermination du signe.
Matriel informatique
On remarque que ces trois oprations sont indpendantes les unes des autres et
quelles se prtent donc une excution en parallle.
3.3 Normalisation
Lhypothse est faite que les deux nombres multiplier sont toujours correctement
normaliss. Or mme sous cette hypothse, il se peut que la mantisse du produit soit
dnormalise, ce qui signifie que son bit de poids le plus fort ne vaut pas 1, mais 0. Le
produit doit alors tre normalis.
Pour normaliser un nombre, on dcale sa mantisse vers la gauche jusqu ce quun
1 occupe le bit de poids le plus fort, et on retranche son exposant le nombre de bits
quil a fallu dcaler.
Soit par exemple normaliser le nombre de la figure 4.
Matriel informatique
15 14
1
10
0
0
Il faut oprer un dcalage de 3 bits vers la gauche pour obtenir une mantisse
normalise. Lexposant est donc diminu de 3 (figure 5).
15 14
1
10
0
0
On remarque que la normalisation, par son action sur lexposant, peut conduire
un underflow, mais peut aussi faire disparatre un overflow.
3.4 Organigramme
Lorganigramme donn dans la figure 6 reprsente une version squentielle de
lalgorithme de multiplication propos: lalgorithme add-shift. Comme il a t indiqu au
paragraphe 3.1, on peut imaginer une version parallle de cet algorithme, et vous tes
encourags essayer.
Lors du calcul de la mantisse du produit, cet algorithme concatne les registres mP
et mB afin de doubler la prcision du rsultat temporaire. En outre il fait appel un
registre de 1 bit, c, pour mmoriser une ventuelle retenue.
Loprateur . indique la concatnation des registres, loprateur <- indique le
chargement des registres.
Matriel informatique
begin
sA . eA . mA <- multiplicand
sB . eB . mB <- multiplicator
mA = 0
no
mB = 0
sP <- 0
eP <- 0
mP <- 0
no
end
sA = sB
sP <- 0
no
sP <- 1
Matriel informatique
eP <- eA + eB
eP <- eP - bias
mP <- 0
i <- 0
mB0 = 1
c . mP <- mP + mA
no
shift right c . mP . mB
i <- i + 1
no
i = 10
Matriel informatique
mP9 = 1
no
shift left mP . mB
eP <- eP - 1
underflow
sP <- 0
eP <- 0
mP <- 0
no
overflow
underflow
no
end
Fig. 6 Organigramme
overflow
Matriel informatique
4 Protocoles dentre/sortie
Lunit de multiplication va fonctionner comme co-processeur, ce qui implique
quelle va tre connecte un processeur matre (fig. 7), avec lequel elle va devoir
communiquer pour changer des donnes telles quoprandes, rsultat, mot de contrle
et mot dtat.
mmoire
processeur
@ 8 MHz
unit de
multiplication
Fig. 7 Schma-bloc
Pour effectuer une multiplication, les choses se droulent de la faon qui suit.
Lunit devient matre du bus, lit les oprandes en mmoire, et relche le bus.
Matriel informatique
mmoire
SELECTLOW
SELECTHIGH
ADDRESS[17:1]
DATA[15:0]
WRITE
processeur
@ 8 MHz
(MOTOROLA
MC68331)
SELECT
BR
unit de
multiplication
(FPGA
XILINX
XC5210)
BG
BGACK
RESET
CLOCK
(8 MHz)
Fig. 8 Signaux
10
Matriel informatique
BR (Bus Request)
BG (Bus Grant)
Lunit est matre du bus: elle maintient BGACK activ tant quelle occupe le
bus et peut accder la mmoire.
CLOCK
BUS
BR
BG
BGACK
Fig. 9 Prise du bus
11
Matriel informatique
CLOCK
BUS
BR
BG
BGACK
Fig. 10 Reddition du bus
La mmoire que lunit va accder est une mmoire de 128k x 16. La figure 11
dcrit son interface.
DATA[15:0]
ADDRESS[17:1]
SELECTHIGH
128k x 16
SELECTLOW
WRITE
Fig. 11 Mmoire
12
Matriel informatique
ADDRESS[17:1]
SELECTHIGH
100 ns min
SELECTLOW
WRITE
DATA[15:0]
ADDRESS[17:1]
SELECTHIGH
100 ns min
SELECTLOW
WRITE
DATA[15:0]
Fig. 13 Accs en criture
Matriel informatique
(12)
(13)
(14)
SELECT
WRITE
DATA[15:0]
mot de contrle
Fig. 14 Ecriture du mot de contrle
SELECT
WRITE
mot dtat
DATA[15:0]
14
Matriel informatique
Le mot de contrle ne comporte que 1 bit significatif (fig. 16). Ce bit (G, Go) permet
dordonner lunit de commencer la multiplication. Quand lunit est en train de
multiplier, elle doit ignorer tout nouveau mot de contrle jusqu ce quelle ait termin.
15
X
0
X
Le mot dtat comporte 3 bits significatifs (fig. 17). Le bit B, Busy, indique si lunit
est en train de multiplier. Ce bit doit passer 1 ds que lunit reoit lordre de
multiplier et doit repasser 0 ds quelle est prte pour une nouvelle multiplication.
Cest ce bit que le processeur vient lire priodiquement pour savoir sil peut aller
rcuprer le rsultat en mmoire. Les bits U, Underflow, et O, Overflow, ne sont
significatifs que lorsque le bit B vaut 0. Ils indiquent naturellement les ventuels
dpassements de capacit de la multiplication prcdente. Si par exemple elle sest
solde par un overflow, le bit O sera mis 1, sinon, il sera mis 0.
15
X
0
X
O U
4.3 Contraintes
Un fichier de contraintes est un fichier qui indique aux outils de placement et de
routage du fabricant du FPGA sur quelle patte doit venir quel signal. Le fichier de
contraintes pour votre unit de multiplication est le suivant.
place
place
place
place
place
place
place
place
place
place
instance
instance
instance
instance
instance
instance
instance
instance
instance
instance
PADDRESS1_pad
PADDRESS2_pad
PADDRESS3_pad
PADDRESS4_pad
PADDRESS5_pad
PADDRESS6_pad
PADDRESS7_pad
PADDRESS8_pad
PADDRESS9_pad
PADDRESS10_pad
15
:
:
:
:
:
:
:
:
:
:
P94
P93
P92
P91
P89
P88
P87
P86
P83
P82
;
;
;
;
;
;
;
;
;
;
place
place
place
place
place
place
place
place
place
place
place
place
place
place
place
place
place
place
place
place
place
place
place
place
place
place
place
place
place
place
place
place
Matriel informatique
instance
instance
instance
instance
instance
instance
instance
instance
instance
instance
instance
instance
instance
instance
instance
instance
instance
instance
instance
instance
instance
instance
instance
instance
instance
instance
instance
instance
instance
instance
instance
instance
PADDRESS11_pad
PADDRESS12_pad
PADDRESS13_pad
PADDRESS14_pad
PADDRESS15_pad
PADDRESS16_pad
PADDRESS17_pad
PBG_pad
PBGACK_pad
PBR_pad
PCLOCK_pad
PDATA0_pad
PDATA1_pad
PDATA2_pad
PDATA3_pad
PDATA4_pad
PDATA5_pad
PDATA6_pad
PDATA7_pad
PDATA8_pad
PDATA9_pad
PDATA10_pad
PDATA11_pad
PDATA12_pad
PDATA13_pad
PDATA14_pad
PDATA15_pad
PRESET_pad
PSELECT_pad
PSELECTHIGH_pad
PSELECTLOW_pad
PWRITE_pad
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
P81 ;
P80 ;
P71 ;
P70 ;
P69 ;
P68 ;
P66 ;
P164 ;
P163 ;
P167 ;
P4 ;
P178 ;
P179 ;
P186 ;
P187 ;
P188 ;
P189 ;
P192 ;
P193 ;
P151 ;
P147 ;
P138 ;
P132 ;
P128 ;
P122 ;
P113 ;
P109 ;
P21 ;
P146 ;
P169 ;
P170 ;
P11 ;
Ce fichier vous est fourni, et de ce fait, il vous impose les noms des signaux
utiliser. Vos schmas doivent donc faire apparatre ces noms, sans le suffixe _pad, sur
les fils ou les bus qui relient les symboles de type BUFFER (IBUF, OBUF, OBUFT ou
BUFGP) aux symboles de type PAD (IPAD, OPAD ou IOPAD), do la lettre P ajoute
systmatiquement au dbut de chaque nom. Ainsi par exemple, le signal de slection de
lunit porte le nom PSELECT et le nom SELECT reste disponible pour nommer ce signal
lintrieur de votre unit de multiplication (fig. 18).
IPAD
PSELECT
SELECT
IBUF
16