Académique Documents
Professionnel Documents
Culture Documents
Sommaire
Nombre signé
Multiplication
Virgule Fixe
Multiplication Fractionnelle
Etude de cas
1
Nombre signé
8 4 2 1
0 0 1 1 0 0 1 1
23 22 21 20
00112 = 10 00112 = 3 10
2
Nombre signé
23 22 21 20 1010
1 0 1 0 1 0 1 0 ou
-23 22 21 20 - 610
00112 = 3 10 00112 = 3 10
10102 = 10 10102 = ? 10
-8 + 0 + 2 + 0 = - 6
◆ Signé (Complément à 2)
MSB bit de signe
3
Nombre signé
23 22 21 20
15 +7
-23 22 21 20
8 0
◆ Signé (Complément à 2)
MSB est négatif
0 -8
◆ Signé % au non signé
Même precision (plage de valeurs) Unsigned Signed
Signé est centré % à zero
4
Exemple d’utilisation ...
Analog Digital
positive rail
+ 5V +7
0 A/D 0 0
- 5V -8
negative rail
A/D Inputs Signed
6
Multiplication
x 2
1 2
T TO
Technical Training
Organization 7
Multiplication Fractionnelle
.6
x .2
.1 2
?
.1
Combien de chiffre faut-il garder?
Résultat admet même precision
que les entrées
T TO
Technical Training
Organization 8
Virgule Fixe
La position de la
virgure peut
0 1 1 0
changer
-23 22 21 20
Si on la déplace?
9
Virgule Fixe
0 1 1 0
1
-230 22-12 22-21 22-30
de la puissance Fractions
10
Virgule Fixe
Analog Digital
positive rail
+ 5V 1 +7
0 A/D 0 0 0
- 5V -1 -8
negative rail
A/D Fractions Hex
11
Virgule Fixe : Examples
0 1 1 0
-20 2-1 2-2 2-3
01102 = 10
11102 = 10
12
Virgule Fixe : Examples
0 1 1 0 1 1 1 0
-20 2-1 2-2 2-3 -20 2-1 2-2 2-3
0 + 1/2 + 1/4 + 0 = 3/
4 - 1 + 1/2 + 1/4 + 0 = - 1/4
01102 = 3/4 10 01102 = 3/4 10
13
Valeur fractionnelle codée sur 16-bit (en Hexa)
~1 7FFFh
½ 4000h
0 0000
* 7FFFh
-½ C000h
–1 8000h
Fractions Hex
15
Multiplication Fractionnelle
3/4 0110
x -1/4 1110
0000
0110
0110
1010
- 3/16 1110100 Extention du bit de
signe
reg 11110100
16
Multiplication Fractionnelle
3/4 0110
x -1/4 1110
0000 Quelle est la valeur à
0110 charger dans le registre?
0110
1010
- 3/16 1110100
reg 11110100
data
memory
17
Multiplication Fractionnelle
3/4 0110
x -1/4 1110
0000
0110
La valeur chargée en mémoire:
0110
1010
0110 Pourquoi?
- 3/16 1010100 La position de la virgule est
importante!
reg 11010100
data
memory 1 0 1 0
18
Multiplication Fractinnelle (notation de Q)
3/4 0.110 Utilisant la notion du format
x -1/4 1.110 de Q-format pour choisir la
position de la virgule.
0000
Pour cet exemple Q égale à:
0110
◆ entrées: Q3
0110
◆ résultat: Q6 (Q3 + Q3)
1010
- 3/16 1110100 ◆ sortie: Q3
reg 11.110100
data
memory 1.1 1 0
19
Multiplication Fractinnelle
(Exemple 16 bits)
Q15 s. x x x x x x x x x x x x x x x CPU
x Q15 s. y y y y y y y y y y y y y y y
Q30 s s. z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z
20
Resultat: Q30 → Store: Q15
Q15 s. x x x x x x x x x x x x x x x CPU
x Q15 s. y y y y y y y y y y y y y y y
Q30 s s. z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z
Q15 s. z z z z z z z z z z z z z z z
Data Memory
21
Multiplication Fractinnelle
(Exemple 16 bits)
Q15 s. x x x x x x x x x x x x x x x CPU
MPY A3,A4,A6
x Q15 s. y y y y y y y y y y y y y y y NOP
Q30 s s. z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z
Q15 s. z z z z z z z z z z z z z z z Store to
Data Memory
A6, ,A6
A6,*A7
22
Multiplication Fractinnelle
(Exemple de code)
Q15 s. x x x x x x x x x x x x x x x CPU
MPY A3,A4,A6
x Q15 s. y y y y y y y y y y y y y y y NOP
Q30 s s. z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z
Q15 s. z z z z z z z z z z z z z z z Store to
Data Memory
SHR A6,15,A6
STH A6,*A7
23
Multiplication Fractinnelle
(Saturation)
-1 x -1 = ?
La solution: 1 7FFF
+1
-1 x -1 = ____
0 0
◆ +1 n’est pas dans l’échelle
◆… et il n’y a pas de
valeur héxa pour -1 8000
réprésenter +1 Fractions Hex
32-bit
zzzz zzzz zzzz zzzz zzzz zzzz zzzz zzzz product
z16 = x16 * y16; Q0
26
Multiplication Fractinnelle
(Exemple de code en C)
short x16, y16, z16;
int z32;
32-bit
sszz zzzz zzzz zzzz zzzz zzzz zzzz zzzz product
z16 = x16 * y16; Q0
27
Multiplication Fractinnelle
(Exemple de code en C)
short x16, y16, z16;
int z32;
sxxx xxxx xxxx xxxx x16
* syyy yyyy yyyy yyyy y16
28
Multiplication Fractinnelle
(Exemple de code en C)
short x16, y16, z16;
int z32;
32-bit
szzz zzzz zzzz zzzz zzzz zzzz zzzz zzz0 product
z16 = x16 * y16; Q0
29