Vous êtes sur la page 1sur 13

Formats numériques et effets de

quantisation

Objectifs d’apprentissage
‹ Notation des nombres en virgule fixe vs. virgule
flottante
‹ Format de notation en virgule fixe
Š Binaire non signé
Š Binaire signé
Š Binaire en complément de 2
Š Format Q
‹ Représentation en virgule flottante
‹ Effets de longueur de mot dans les DSP
Š Effet de quantisation
Š Effet de longueur de mot

1
Virgule fixe vs virgule flottante
‹ Traitement en virgule fixe
Š Les nombres sont codés et manipulés en utilisant une
séquence de bits en complément de 2.
Š Conséquences
Š Gamme dynamique plus réduite
Š Effort de codage plus grand à cause des effets secondaires
‹ Traitement en virgule flottante
Š Les nombres sont codés en notation scientifique à
base 2 et consistent en une mantisse fractionnaire
suivie d’un exposant.
Š Conséquences
Š Demande un DSP qui possède le matériel nécessaire
Š DSP plus coûteux
Š Calculs plus lents qu’en virgule fixe

Notation binaire sans signe


B = bN −1bN − 2 • • • b2b1b0 , bi ∈ {0,1}

‹ Permet de représenter un intervalle de valeurs


absolues allant de 0 à 2N –1.
‹ La valeur décimale équivalente est :
D ( B ) = bN −1 2 N −1 + bN − 2 2 N − 2 + • • • + b2 2 2 + b1 21 + b0 2 0

‹ Exemples pour N=8 :


Š 0000 0111 -> 7 0001 0000 -> 16
Š 1000 0000 -> 128 1111 1111 -> 255
‹ Inconvénient majeur : ne permet pas de représenter
des nombres négatifs !

2
Notation binaire avec signe
B = bN −1bN − 2 • • • b2b1b0 , bi ∈ {0,1}
‹ Permet de représenter des nombres entiers compris entre
-2(N-1) +1 et +2(N-1)-1
‹ Le bit le plus significatif représente le signe : “1” signifie
un nombre négatif, “0” signifie un nombre positif
‹ La valeur décimale équivalente est :
(
D ( B ) = 1 ⋅ bN − 2 2 N − 2 + • • • + b2 2 2 + b1 21 + b0 2 0 )
Ou (
D ( B ) = −1 ⋅ bN − 2 2 N −2
+ • • • + b2 2 + b1 2 + b0 2 0
2 1
)
‹ Exemples pour N=8 :
Š 0000 0111 -> 7 0001 0000 -> 16
Š 1000 0000 -> 0 1111 1111 -> -127
‹ Inconvénient majeur : les additions et les soustractions
demandent des ressources matérielles différentes !

Notation en complément de 2
‹ Permet de représenter des nombres entiers compris
entre -2(N-1) et +2(N-1)-1
‹ Représente les nombre positifs comme précédemment
et les nombres négatifs par la valeur positive à ajouter à
-2(N-1) pour atteindre 0 :
D ( B ) = −2 N −1 bN −1 + bN − 2 2 N − 2 + • • • + b2 2 2 + b1 21 + b0 2 0

„ Exemples pour N=8 :


• 0000 0111 -> 7
• 0001 0000 -> 16
• 1000 0000 -> -128
• 1111 1111 -> -1

3
Avantages et inconvénients de la
notation en complément de 2
‹ La soustraction devient une addition de nombres en
complément de 2 (pas besoin d unité dédiée)
‹ La modification de la longueur d’un registre demande
seulement à mettre des 0 ou des 1 dans les bits ajoutés :
Š Exemples pour une modification de 8 bits à 16 bits :
Š N= 3 : 00000011 -> 0000 0000 0000 0011
Š N=-3 : 1111 1101 -> 1111 1111 1111 1101
Š N=-7 : 1111 1001 -> 1111 1111 1111 1001
‹ Une seule notation pour la valeur 0 (pas de +0 et -0)
‹ Inconvénient majeur : débordement arithmétiques
Š La multiplication de deux nombres de N bits peut donner un
résultat long de 2N bits
Š L’addition de deux nombres de N bits peut donner un résultat long
de N+1 bits

Solutions possibles aux problèmes


de débordement
‹ Concevoir des algorithmes de calcul qui les évitent
‹ Prévoir un mécanisme palliatif de saturation :
Š Exemple pour N=4 (gamme dynamique -8 à +7):
Š 5 x 2 = 1010 (=-6) : débordement ! - > 5 x 2 = 0111 : saturation
‹ Prévoir des registres de taille surdimensionnée pour éviter les
débordements lors de calculs intermédiaires :
Š Exemple pour N=4 avec un registre de taille N+1=5 :
Š 5 x 2 - 4 = 10 – 4 = 6
Š Le registre de 5 bits évite le débordement qu’aurait occasionné la valeur
intermédiaire 10 dans un registre de 4 bits !
‹ Utiliser une notation fractionnaire
Š La multiplication de deux nombres compris entre –1 et 1 donne
toujours un résultat compris entre 1 et –1; pas de débordement
possible !

4
Le format Q : tout est question de
virgule !
Fromat NQ n

b’N-1b’N-2…b’0 bn-1bn-2…b0
.
-2Nb’N-1+…+21b’1+20b’0+2-1bn-1 + 2-2bn-2…+2-nb0
ƒ Exemples :
ƒ1110 -> -23 + 22 + 21 = -2
ƒ11.10 -> -21 + 20 + 2-1 = -2 + 1 + 0.5 = -0.5
ƒ1.110 -> -20 + 2-1 + 2-2 = -1 + 0.5 + 0.25 = -0.25
ƒLa notation fractionnaire revient à diviser la valeur entière par 2n, où n est le
nombre de bits de fraction désiré !

Exemple pour N=16 bits


‹ La valeur codée représente des quantités différentes
dépendant du format Q choisi
s entier (15 bits) s fraction (15 bits)
16Q0
. . 1Q15 or Q15
Utilisé dans
les DSP
Position de la virgule

.
2Q14 2 bits de poids fort 14 bits restants

5
Exemple d’effet sur la multiplication

Le résultat est à l’interieur de


La gamme dynamique pour N=4 est excédée la gamme dynamique

Le format Qn

‹ Permet de représenter des nombres compris entre -1.0 et


1−2−(n-1), où n est le nombre de bits utilisé
‹ La multiplication de deux nombres en format Qn donne
toujours un résultat supérieur ou égal à -1 et inférieur à 1
‹ L’addition de deux nombres en format Qn peut déborder !
‹ Cas particulier : Q15
Š Standard dans les DSP à 16 bits
Š Utilisé aussi dans les DSP à 24 et 32 bits (en mode 16 bits)
Š Revient à diviser les codes entiers emmagasinée par 215 pour
déterminer la vraie valeur

6
Le Format Q15

‹ Revient à diviser les codes entiers emmagasinés par 215


‹ Gamme dynamique
Valeur max. Valeur min.
Fraction 0.999 -1
Format Q15 32767 -32768
‹ Exemple de coder 0.2625 en format Q15 :
Š Par troncation : 0.2625*(215-1)=8601 -> 0010 0001 0110 1001
Š Par arrondi : 0.2625*(215-1) =8602 -> 0010 0001 0110 1010
‹ Règles d’utilisation
Š Éviter les opérations avec des nombre plus grands que 1 !
Š 2.0x(0.5x0.45)=(0.5x0.45)+0.5x0.45)
Š Convertir les nombres en Q15 avant les calculs
Š 0.5 -> 0.5x32767=16384

Opérations arthmétique en format Q15


‹ Addition
Décimal Q15 Normalisation
(Q15/32767)
0.5+0.05=0.55 16384+1638=18022 0.55
0.5-0.05=0.45 16384-1638=14746 0.45
0.5+0.55=1.05 16384+18022=1638 ! 0.05 !
Š L’addition peut déborder !
‹ Multiplication
2x0.5x0.45=
Décimal Q15 Normalisation Normalisation
(x/32767) (Q15/32767)
0.5x0.45=0.225 16384x14745 7373 0.225
= 241584537
0.225+0.225=0.45 7373+7373 = 0.45
14746

7
La multiplication en format Q15
‹ Le produit de deux nombres en format Q15 est en format Q30.
‹ Le résultat de 32 bits contient deux bits de signe avant la virgule !
Š Idéalement, la multiplication de NxN en format Q devrait donner un
résultat de 2N-1 bits en format Q
Š Dans les faits, il y a extension du signe de bit

‹ En pratique, seuls les 15 bits les plus significatifs, plus le premier bit
de signe sont retenus dans le résultat, cela revient à décaler le résultat
de 15 positions à droite.
Q15 Q15 16-bit memory

Bit de signe
X
bit de signe étendu

15 bits 15 bits

‹ Dans un système à 32 bits, il faudrait décaler le résultat de 1 bit à gauche

Format en virgule flottante

‹ Deux représentations sont possibles


Š Précision simple
Š Précision double
‹ Le standard IEEE 754 précise les format
et gère les cas particuliers

8
Format en précision simple

31 30 23 22 0
s exp frac

− 1s × 2 (exp −127 ) × 1 . frac


Š s : signe (bit 31)
Š exp : exposant (bits 23 à 30)
Š frac : mantisse (bits 0 à 22)
‹ Maximum : 3.4 ×1038 Minimum : 1.175 ×10 −38
‹ Équivalent décimal
s=0 X=1.f x 2exp
s=1 X=(-2+0.f) x 2exp

Format en précision double

31 30 20 19 0 31 0
s exp frac frac

− 1s × 2 (exp −1023 ) × 1 . frac

Š exp : exposant (bits 20 à 30)


Š frac : mantisse (bits 0 à 31 du premier mot, plus 0 à 19 du second)
‹ Maximum : 1.7 ×10308 Minimum : 2.2 ×10 −308

9
Exemples de nombres en virgule flottante

‹ Précision simple :
31 30 23 22 0
Š 1=1x20 -> 0 -127 0
31 30 23 22 0
Š 15=1.875x23 -> 0 -124 0.875

Š -3=-1.5x21=(-2+0.5)x21
31 30 23 22 0
1 -126 0.5
‹ Précision double
Š 4=1x22 -> 31 30 23 22 0 31 0
0 -1021 0 0

Le Format IEEE 754

‹ Définit la valeur d’un nombre exprimé en virgule


flottante selon 5 cas :
Š Si exp = 255 et frac ≠ 0, alors x = NaN
Š Si exp = 255 et frac = 0, alors x = (-1)sx∞
Š Si 0 < exp < 255, alors x = (-1)sx2exp-127(1.frac)
Š Si exp = 0 et frac ≠ 0, alors x = (-1)sx2-126(0.frac)
Š Si exp = 0 et frac = 0, alors x = (-1)sx0
‹ Les max et min en précision simple sont définis par
3.4 × 1038 = (−1) 0 × 2 ( 254−127 ) (1.999...)

1.175 × 10 −38 = (−1) 0 × 2 −126 (0.999...)

10
Virgule fixe vs flottante
Charactéristique Virgule fixe Virgule flottante

Gamme dynamique Plus petite Plus grande

Résolution Comparable Comparable

Rapidité de calcul Plus rapide Moins rapide

Facilité de Plus difficile Plus facile


programmation
Efficacité de Moins efficace Plus efficace
compilation
Consommation de Moins demandant Plus demandant
puissance
Coût du DSP Moins cher Plus cher

Coût du système Moins cher Plus cher

Coût du design Moins cher Plus cher

Délai de mise en Plus grand Moins grand


marché

Effet de quantisation

‹ Résolution de quantisation Q

Š Dépend du nombre de bits

Vref Vref : Tension de référence


Q= n −1
2 n : longueur de mot en bits

‹ Bruit de quantisation

Š Dépend de Q

(a) Conversion de tension continu à discret


(b) Bruit de quantisation correspondant

11
Bruit de quantisation

‹ On peut modeler le bruit de quantisation par un


signal aléatoire q(t) uniformément réparti entre
Q Q Output
− et qe (t )

2 2
Š La puissance du bruit est alors Q
2
Q V2 q (t )

σ q2 = E[q 2 (t )] = = ref2 n Input


12 3 ⋅ 2
Š Et le rapport signal-sur-bruit pour
un signal x(t) donné est :
σ 2x
SNR = 10log10 2
, où σ 2x : variance du signal
σq

Bruit de quantisation

‹ Pour un signal sinusoïdal d’amplitude 1, et Vref


normalisé à 1, la puissance est ½ et le rapport
signal-sur bruit est
SNR(dB) ≅ 6n + 1.8
‹ Si on suppose un signal gaussien avec µ=0 et Vref = Kσ x
on a SNR A/D (dB) ≅ 6n + 16.8 − 20log10 K
‹ Dans les deux cas, l’ajout d’un bit de résolution
augmente le rapport de 6dB
‹ Multiplier le signal par α modifie sa variance à α 2σ x2
Š Le rapport signal-sur-bruit devient :
SNR A/D ≅ 6b + 16.8 − 20log10 K + 20log10α

12
Effet de longueur de mots

‹ Considérer un signal continu converti par un CAN


de n bits :
Š Si les valeurs discrètes obtenues sont emmagasinées
dans une mémoire de M bits, M<b, une erreur de
représentation est introduite.
Š Les b-M bits de poids faible de chaque mot sont perdus.
Š La gamme d’amplitudes couverte par l’erreur de
troncation, ξ , est donnée par
t

0 ≤| ξ t |≤ 2 M − 2b
Š L’erreur se répercute sur les calculs subséquents

13

Vous aimerez peut-être aussi