Vous êtes sur la page 1sur 16

Laboratoire de Systmes Logiques

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

Ce format se divise en trois champs.

Laboratoire de Systmes Logiques

Matriel informatique

La mantisse (m), ou fraction, dune largeur de 10 bits, est normalise, ce qui


signifie que le bit de poids fort est le premier chiffre binaire significatif du
nombre cod.

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.

Le signe (s), dune largeur de 1 bit, vaut 1 si la mantisse est ngative.

Soit par exemple reprsenter le nombre - 9.625 dans ce format. En binaire, ce


nombre scrit, (1)
- 1001.101

(1)

Si on introduit une puissance de 2, on obtient, (2)


- 1001.101 * 20

(2)

Et si lon limine la partie entire, (3)


- 0.1001101 * 24

(3)

Le codage du nombre - 9.625 est donn dans la figure 2.

15 14
1

10

0
0

Fig. 2 Codage de - 9.625

Par convention le zro est cod par une mantisse nulle, un exposant nul et un signe
positif (fig. 3).

Laboratoire de Systmes Logiques

Matriel informatique

15 14
0

10

0
0

Fig. 3 Codage de zro

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)

Le produit P est alors donn par (6), (7) et (8).


P=A*B

= ( ( - 1 ) sA * mA * 2 eA ) * ( ( - 1 ) sB * mB * 2 eB
P = ( - 1 ) ( sA + sB ) * ( mA * mB ) * 2 ( eA + eB )

(6)
(7)
(8)

Si lon dcompose son tour le produit P en mantisse, exposant et signe, alors la


mantisse mP est donne par (9), lexposant eP par (10) et le signe sP par (11).
mP = mA * mB
eP = eA + eB
sP = sA + sB

(9)
(10)
(11)

La multiplication de deux nombres virgule flottante peut donc se diviser en trois


oprations.

Laboratoire de Systmes Logiques

Multiplication des mantisses.

Addition des exposants.

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.2 Dpassement de capacit


La multiplication des mantisses ne peut pas gnrer de dpassement de capacit
car elle est calcule en double prcision dans une mantisse intermdiaire dune largeur
de 20 bits (paragraphe 3.4).
Il nen nest pas de mme de laddition des exposants. Il se peut trs bien que deux
nombres soient tels que lexposant rsultant ne puisse pas tre reprsent correctement
sur 5 bits. Deux cas sont distinguer.

Lexposant rsultant est suprieur +15 (non-biais), il y a alors overflow et le


rsultat ne peut pas tre rcupr.

Lexposant rsultant est infrieur -16 (non-biais), il y a alors underflow mais


il est possible de rcuprer le rsultat en larrondissant zro.

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.

Laboratoire de Systmes Logiques

Matriel informatique

15 14
1

10

0
0

Fig. 4 Nombre dnormalis

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

Fig. 5 Nombre normalis

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.

Laboratoire de Systmes Logiques

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

Laboratoire de Systmes Logiques

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

Laboratoire de Systmes Logiques

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

Laboratoire de Systmes Logiques

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.

Le processeur crit les oprandes en mmoire.

Le processeur ordonne lunit de multiplication de multiplier.

Lunit devient matre du bus, lit les oprandes en mmoire, et relche le bus.

Lunit effectue la multiplication.

Le processeur boucle en attente de la fin de la multiplication.

Lunit devient matre du bus, crit le rsultat en mmoire et relche le bus.

Le processeur lit le rsultat en mmoire.

Le processeur rcupre les informations de dpassement de capacit.

La figure 8 dtaille lensemble des signaux qui relient le processeur, lunit de


multiplication et la mmoire.

Laboratoire de Systmes Logiques

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

4.1 Oprandes et rsultat


En temps normal, cest le processeur qui contrle le bus. Il accde la mmoire en
permanence pour y chercher en particulier la prochaine instruction excuter. Pour
pouvoir accder la mmoire dans laquelle elle va lire les oprandes et crire le rsultat,
lunit de multiplication doit tre capable de prendre le bus au processeur.
La prise du bus se fait par le jeu de trois signaux.

10

Laboratoire de Systmes Logiques

Matriel informatique

BR (Bus Request)

BG (Bus Grant)

BGACK (Bus Grant ACKnowledge)

Elle se droule de la faon suivante (fig. 9, fig. 10).

Lunit veut prendre le bus: elle active BR.

Le processeur voit BR actif: il termine le cycle en cours, place le bus en tat de


haute-impdance et active BG.

Lunit voit BG actif: elle dsactive BR et active BGACK.

Le processeur voit BGACK actif: il dsactive BG.

Lunit est matre du bus: elle maintient BGACK activ tant quelle occupe le
bus et peut accder la mmoire.

Lunit veut rendre le bus: elle place le bus en tat de haute-impdance et


dsactive BGACK.

Le processeur voit BGACK inactif: il reprend le contrle du bus.

CLOCK

BUS

BR

BG

BGACK
Fig. 9 Prise du bus

11

Laboratoire de Systmes Logiques

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

Laboratoire de Systmes Logiques

Matriel informatique

Les figures 12 et 13 donnent respectivement les chronogrammes daccs cette


mmoire en lecture et en criture.

ADDRESS[17:1]

SELECTHIGH
100 ns min

SELECTLOW

WRITE

DATA[15:0]

Fig. 12 Accs en lecture

ADDRESS[17:1]

SELECTHIGH
100 ns min

SELECTLOW

WRITE

DATA[15:0]
Fig. 13 Accs en criture

Pendant lactivation de SELECTHIGH et SELECTLOW, vous devez vous assurer


que toutes les autres lignes qui entrent dans la mmoire sont stables.
Les adresses des oprandes et du rsultat sont donnes par (12), (13) et (14).
13

Laboratoire de Systmes Logiques

Matriel informatique

Multiplicande lu en ADDRESS[17:1] = 1 0000 0000 0000 0000 (0x10000)


Multiplicateur lu en ADDRESS[17:1] = 1 0000 0000 0000 0001 (0x10001)
Rsultat crit en ADDRESS[17:1] = 1 0000 0000 0000 0000 (0x10000)

(12)
(13)
(14)

Remarquez que le rsultat vient craser le multiplicande en mmoire.

4.2 Contrle et tat


Le processeur, lorsquil est matre du bus, peut crire un mot de contrle dans
lunit et lire un mot dtat depuis lunit. Les chronogrammes des figures 14 et 15
illustrent ces oprations.

SELECT

WRITE

DATA[15:0]

mot de contrle
Fig. 14 Ecriture du mot de contrle

SELECT

WRITE

mot dtat

DATA[15:0]

Fig. 15 Lecture du mot dtat

14

Laboratoire de Systmes Logiques

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

Fig. 16 Mot de contrle

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

Fig. 17 Mot dtat

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

;
;
;
;
;
;
;
;
;
;

Laboratoire de Systmes Logiques

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

Fig. 18 Nom de signal

16