0% ont trouvé ce document utile (1 vote)
253 vues44 pages

Codage et traitement des données DSP

Transféré par

Youssef Mahdi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (1 vote)
253 vues44 pages

Codage et traitement des données DSP

Transféré par

Youssef Mahdi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

1

Support du cours de : D.S.P: Digital


Signal Processing
- Programmation -
LF3 STIC
à l’ISIM de Monastir
Enseignant : Farès Tounsi, PhD, HDR
A.U.: 2020/2021
(v1)
Chapitre 1 :

Codage numérique et traitement


des données dans le DSP

3
Le codage des nombres réels
La représentation des nombres doit répondre à deux
exigences contradictoires :
Précision: intervalle entre deux rationnels codés :
>>> Doit être le plus petit possible

Dynamique: Rapport entre le plus grand rationnel et le plus


petit rationnel codés :
>>> Doit être la plus étendue possible

Les unités de calcul des DSP travaillent soit en :

format fixe format flottant


(notation décimale) (notation scientifique) 4
Représentation format fixe (entiers)
Signées Rappel: Complément à 2
Implantation efficace : Inversion des bits
Dynamique

puis ajout de 1 C2(x) = C1(x) + 1

En pratique:

Représentation circulaire
Ex: sur 3 bits
En ajoutant 1 à la
plus grande valeur
positive on obtient
la valeur négative
extrême.
5
Représentation format fixe (réels)
Le format d’une donnée ne varie pas au cours du temps
Représentation : partie entière - partie fractionnaire
Q3,2
Qm,n
-2m

La représentation de nombres binaires signés à virgule fixe suit la représentation de


nombres entiers signés à complément à deux.
6
Exemple: 23,4710= 2 . 101 + 3 . 100 + 4 . 10-1 + 7 . 10-2
Format (b, m, n) en virgule fixe
• m : distance (en nombre de bits) entre la position du bit le plus significatif
pMSB et la position de la virgule pV
• n : distance entre la position de la virgule pV et la position du bit le moins
significatif pLSB

Q3,2

Exercice:
Donner la représentation en virgule fixe 7
des formats (b , m, n) suivants: (5,7,-3); (6,-2,7); (9,0,8); (7,3,3)
Format Qk en virgule fixe
(Si un seul nombre est précisé, c’est la partie fractionnaire)

Q0 désigne le
cas particulier
des entiers
signés

Exemple: Représentez le nombre 0.875 en format Q15 signé


Réponse: y= 0.875 x 215 = 28672 =214 +213 +212;
Ainsi 0.875= 0111000000000000;
la représentation en format Q15= 0111000000000000
8
Format Qk en virgule fixe
Ex: Q5 sur 8 bits
- Partie entière codé sur 3 bits
(dont 1 de signe)
- Partie fractionnaire codée sur 5 bits
- Valeurs comprises entre -4 et +3.96875

Pour changer le signe, on inverse tous les bits et on ajoute 1 à la position la


moins significative (ou -1 puis inverser).

Q1 sur 4 bits Q4 sur 8 bits Q3 sur 5 bits


Si on ne précise pas le format Qk, un nombre binaire peut représenter plusieurs
valeurs.
9
Représentation Qk sur 16 bits
Signé

Quel format faut-il pour représenter tous les réels -1 ≤ Nombre < 1 ?
Généralement, pour obtenir une bonne dynamique sur l’intervalle [-1, 1[, utiliser le
format QN-1 sur N bits.
C-à-d le format Q15: sur 16 bits, le format Q15 permet de représenter tous les réels
entre -1 et 1 avec une précision q=2-15 10
Représentation en virgule fixe
On définit:
– Nc le nombre de valeurs représentables du codage = 2N - 1
– La dynamique d’un codage D représente la différence entre la valeur minimale et
maximale :D = Xmax – Xmin

En décibel:

11
Interprétation binaire

12
Choix du format Qk

(partie entière)

Exemple: {-0.1, -0.066, 0.08}  kmax sur 8 bits ? Donner la précision ?


13
/ à savoir log2(0,1)= -3,32
Codage en virgule fixe: Objectifs

14
Cas particuliers de codage
Deux représentations particulières liées à la position de la
virgule sont couramment utilisées:
• Cadrage à Droite: Lorsque la virgule est cadrée à droite la
valeur codée est entière
• Cadrage à Gauche: Lorsque celle-ci est cadrée à gauche la
donnée est fractionnaire.

Les caractéristiques de ces deux représentations sont


présentées dans le tableau suivant:

15
Les opérations: l’addition
• Addition : r = a + b
• Règle : le format des opérandes a et b doit être identique.
• Étapes :
- Choix d’un format commun (bc,mc,nc);
- Alignement de la virgule,
- Extension des bits des opérandes a et b

16
Le débordement (Overflow)
Si deux nombres avec le même signe sont ajoutés et le nombre
résultant a un signe différent  un débordement s’est produit,
Autrement dit le résultat dépasse l’intervalle des valeurs sur les n bits utilisés

• Si sign(a) != sign(b) alors il n’y a pas de débordement possible.


• Si sign(a) = sign(b) alors il y a un débordement possible.
 Le nombre maximum de bits du résultat est donc : nr = (na , nb) + 1
 Si a est en Qk et b en Qk’ alors le résultat est en Q(max(k ; k’))

Possibilité d’ajout de bits de garde pour stocker


17
les bits supplémentaires issus d'accumulations successives
Les opérations: la multiplication
• Multiplication : r = a × b
• Règle : le format des opérandes a et b doit être identique.
• Étapes :
- Extension des bits de signe des opérandes a et b;
- Doublement du bit de signe du résultat,
 Le bit redondant peut être intégré à la partie entière du résultat

18
Les opérations: la multiplication
• Multiplication : r = a × b

Extension du
signe des
opérandes,
19
Multiplication d'entiers signés
Premier méthode:
• Convertissez le multiplicateur et le multiplicande en nombres
positifs (Si négatif, obtenez le Cà2 et gardez le signe);
• Effectuer une multiplication non signée;
• Calculer le signe du produit (Si le signe du produit <0 alors
trouver son Cà2);

Une meilleure version:


 Utiliser la même méthode que la multiplication non signé;
 Pour chaque multiplication élémentaire dans l’opération, il
faut étendre le signe du produit sur les bR bits;
 Si le multiplicateur est négatif, la dernière étape doit être une
soustraction;
20
Multiplication signée
1er cas : Le multiplicateur est positif

2ème cas : Le multiplicateur est négatif

21
Codage en virgule flottante
Représentation : exposant - mantisse
La mantisse et l’exposant sont représentés
eux même en Cà2.
Ils peuvent donc prendre des valeurs négatives.

En binaire:

IEEE 754,

22
Simple précision, IEEE 754

Exposant – calage = décalage  Exposant = décalage + 2k-1-1


Pour prendre en compte les exposants négatifs, on rajoute 2k-1 – 1 (=127)
23
soit (01111111)2 à l'exposant;
IEEE 754, Exemple (1)
Représentation en simple précision

Exemple 1: Traduire en binaire format flottant simple précision 32 bits


le nombre : - 1039,0
1) Signe : 1
2) Traduire en binaire (1039)10 = 1024 + 15 = (100 0000 1111)2
3) Constituez la mantisse : 1, mantisse × 2n

0000 0100 0000 1111 = 1,00 0000 1111 × 210


(décalage de dix chiffres vers la droite après la virgule )

1 00 0 00 0 11 1 1

24
IEEE 754, Exemple (2)
Représentation en simple précision
4) Constituez le calage IEEE en simple précision 8 bits : 28 - 1 - 1 = 127
5) Constituez l'exposant : 0000 0100 0000 1111 = 1,00 0000 1111 × 210
exposant = 10 + calage = 10 + 127= 137
4) Exprimer l'exposant en binaire (137)10 = (1000 1001)2
5) Etendre la partie fractionnaire à 23 bits
mantisse sur 23 bits = 000 0001 1110 0000 0000 0000

11 0 0 01 0 01 00 0 00 0 11 1 1 00 0 00 0 00 0 00 0 0

(- 1039,0)10 = (1100 0100 1000 0001 1110 0000 0000 0000)2


En hexadecimal C4 81 E0 00

25
Exemple 1
Soit à coder en simple précision la valeur 525,5.

 525,5 est positif (-1)0 donc le 1er bit sera s = 0.


 Sa représentation en base 2 est la suivante : 1000001101,1
 En normalisant, on trouve : 1,0000011011 × 29
 On ajoute 127 à l'exposant 9 ce qui donne 136, soit en base 2 :
 = 10001000
 La mantisse est composée de la partie décimale de 525,5 en
base 2 normalisée, c'est-à-dire 0000011011.
 Comme la mantisse doit occuper 23 bits, il est nécessaire
d'ajouter des zéros pour la compléter :
00000110110000000000000

La représentation du nombre 525,5 en binaire avec la norme IEEE


754 est donc :
0 1000 1000 00000110110000000000000
0100 0100 0000 0011 0110 0000 0000 0000
(4403600 en hexadécimal) 26
IEEE 754, Règles
Certaines conditions sont toutefois à respecter pour les exposants :
 l'exposant 00000000  forme dé-normalisée
 l'exposant 11111111 est interdit. On s'en sert toutefois pour signaler des erreurs,
on appelle alors cette configuration du nombre NaN, ce qui signifie Not a Number
 Il faut rajouter 127 (01111111) à l'exposant pour une conversion de décimal vers
un nombre réel binaire. Les exposants peuvent ainsi aller de -126 à +127 en
simple précision.

le plus petit nombre est ± 2−126-23 ≈ ± 1,40129 × 10−45,


27
le plus grand nombre est ± 1,11111111111111111111111 × 2 ≈ ± 3,4 × 10 .
127 38
Nombres dé-normalisé
Un nombre est dit dé-normalisé lorsque: exposant = 0, et mantisse ≠ 0

Si l'on suivait la même représentation que pour les nombres à exposant non nul, on
aurait
valeur = signe × (1 + mantisse) × 2-décalage; mais la valeur retenue est
valeur = signe × mantisse × 2-décalage + 1
c'est-à-dire que pour un exposant codé sur 8 bits (représentation dite à simple
précision), on a

valeur = signe × mantisse × 2-126

28
Précisions en virgule flottante

Pour les très petits nombres Écart de 1.40129846432481707092372958329.10-45

1.40129846432481707092372958329E-45

2.80259692864963414184745916658E-45

Pour les petits nombres Écart de 1,1920928955078125.10-7

1.00000011920928955078125
29
Précisions en virgule flottante
Pour les très petits nombres Écart de 1.40129846432481707092372958329.10-45
Pour les petits nombres Écart de 1,1920928955078125.10-7
Pour les grands nombres Écart de 0.000000256. 109 = 256 !

3.0E9

3.000000256E9

Pour les très grands nombres Écart de 2.2824096…. 1031 !!!

1.70141183460469231731687303716E38

1.70141203742878835383357727663E38

Les nombres ne sont pas également espacés dans l’ensemble F des nombres flottants
représentables.

30
Représentation des nombres entiers en Cà2

31
Calcul en virgule flottante: Addition

32
Calcul en virgule flottante: Addition
1- Nombres doivent être alignés : avoir les mêmes exposants (le plus élevé
pour protéger la précision);
2- Additionner mantisses. Si overflow, ajuster l’exposant
Exemple:
1. Extraire les bits de l’exposant et de la mantisse
1 bit 8 bits 23 bits
0 01111111 100 0000 0000 0000 0000 0000
Sign Exponent Fraction
1 bit 8 bits 23 bits
0 10000000 101 0000 0000 0000 0000 0000
Sign Exponent Fraction

Pour le premier nombre (N1): S = 0, E = 127, M = .1  1,5


Pour le second nombre (N2): S = 0, E = 128, M = .101  3,25

2. Faire précéder la mantisse par 1


N1: 1.1
N2: 1.101 Le premier bit de la mantisse d'un
33
nombre normalisé étant toujours 1
Calcul en virgule flottante: Addition
3. Comparez les exposants
128 – 127 = 1, donc décale N1 vers la gauche de 1 bit

4. Décalez la plus petite mantisse si nécessaire


Décale la mantisse de N1: 1.1 >> 1 = 0.11 (× 2128)

5. Ajouter des mantisses


0.11
+ 1.101
10.011

6. Normaliser la mantisse et ajuster l'exposant si nécessaire


10.011 = 1.0011 × 21 34
Calcul en virgule flottante: Addition
7. Arrondir le résultat
Ce n'est pas nécessaire (tient dans 23 bits)

8. Assemblez l'exposant et la mantisse (fraction) au


format à virgule flottante,
S = 0, E = 1 + 128 = 129 = 100000012, M = 001100..

1 bit 8 bits 23 bits


0 10000001 001 1000 0000 0000 0000 0000
Sign Exponent Fraction

4.75(10) = 0x40980000 sous forme hexadécimale

35
Opération en virgule flottante

Règle: multiplier les mantisses; additionner les exposants


Inconvénients: lorsqu’on ajoute deux exposants, il faut
soustraire le calage 36
Calcul en virgule flottante: Multiplication
Règle: multiplier les mantisses; additionner les exposants
Inconvénients: lorsqu’on ajoute deux exposants, il faut soustraire le calage

3. Ajouter les exposants


E = 128 + 127 = 255
Si nous ajoutons des exposants biaisés, le biais sera ajouté deux fois. Par
conséquent, nous devons le soustraire une fois pour compenser:
E = 255 – 127 = 128
1101
11010
4. Multipliez les mantisses ---------
1.1 × 1.101 = 10.0111 (× 2128) 10.0111

5. Normaliser la mantisse et ajuster l'exposant si nécessaire


10.0111 = 1.00111 × 2129 37
Calcul en virgule flottante: Multiplication
7. Arrondir le résultat
Ce n'est pas nécessaire (tient dans 23 bits)

8. Assemblez l'exposant et la mantisse (fraction) au


format à virgule flottante,
S = 0, E = 129 = 100000012, M = 001110000..

1 bit 8 bits 23 bits


0 10000001 001 1100 0000 0000 0000 0000
Sign Exponent Fraction

4.875(10) = 0x409C0000 sous forme hexadécimale

38
Comparaison virgule fixe / flottante
Dynamique D : il est donnée par
l’ensemble des valeurs possibles qui
peuvent être représentées  Plus la
dynamique est importante, plus le
débordement est faible.
Dynamique en dB: Rapport
entre le plus grand nombre et le
plus petit nombre (positif)

virgule fixe
Note: Dynamic Range depends only on N
General N-bit fixed-point number (Qm.n)

=> Max/Min = 2N-1 – 1

virgule flottante Pour un format en simple précision où l’exposant est


représenté par 8 bits, la dynamique devient : 39

Ne représente le nombre de bits accordés à l’exposant


Comparaison virgule fixe / flottante
Rapport du Signal à Bruit de Quantification (RSBQ): pour mesurer la
précision des calculs elle doit être le plus petit possible

Le RSBQ est défini parle rapport entre la puissance du signal (Px) et la puissance
de l’erreur (Pe) due au bruit de quantification

virgule fixe

En virgule fixe, avec un signal utilisant la totalité de la


dynamique disponible, chaque bit additionnel conduit à
l’augmentation du RSB de 6 dB, approximativement.
Conclusion: Pour le même nombre
de bits, la virgule fixe donne un
RSBQ plus large que celui de virgule flottante
l’arithmétique virgule flottante si le
nombre est correctement mis à
dépend du nombre de bits m utilisé pour la mantisse.
l’échelle.
40
Virgule flottante  Grande dynamique + Haute précision
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 Cà2.
• Conséquences: Š- Gamme dynamique plus réduite
–ŠEffort de codage plus grand
Traitement en virgule flottante
• ŠLes nombres sont codés en notation scientifique en 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

41
Arithmétique & systèmes embarqués

Audio professionnel, vidéo,


médical, etc…

 Moins complexe

42
Arithmétique & systèmes embarqués

43
Chapitre 2 :

Jeu d’instructions et
programmation du TMS320C6416

44

Vous aimerez peut-être aussi