Vous êtes sur la page 1sur 5

Correction TD Caractéristiques des DSPs

Exercice 1

Représenter les nombres suivants 16 bits hexadécimal (avec le préfix 0x) sous le format
(1.15).

Nombre Format (1.15) =(N.M) tel que N+M =16 bits


hexadécimal Un DSP à virgule fixe par défaut, il est de format (1.15) et signé
Signé càd le bit de poids fort est négatif
0x7FFF (7FFF)16 = (0.111 1111 1111 1111)2
= 0*(-2)0+ 1*(2)-1+ 1*(2)-2+ 1*(2)-3+ 1*(2)-4+ 1*(2)-5+ 1*(2)-6+ 1*(2)-7+ 1*(2)-8+
1*(2)-9+ 1*(2)-10+ 1*(2)-11+ 1*(2)-12+ 1*(2)-13+ 1*(2)-14+ 1*(2)-15
= 0.999969482421875

0x8000 (8000)16 = (1.000 0000 0000 0000)2


= 1*(-2)0+ 0*(2)-1+ 0*(2)-2+ 0*(2)-3+ 0*(2)-4+ 0*(2)-5+ 0*(2)-6+ 0*(2)-7+ 0*(2)-8+
0*(2)-9+ 0*(2)-10+ 0*(2)-11+ 0*(2)-12+ 0*(2)-13+ 0*(2)-14+ 0*(2)-15
= -1
0x1234

0xABCD (ABCD)16 = (1.010 1011 1100 1101)2


1*(-2)0+ 0*(2)-1+ 1*(2)-2+ 0*(2)-3+ 1*(2)-4+ 0*(2)-5+ 1*(2)-6+ 1*(2)-7+ 1*(2)-8+
1*(2)-9+ 0*(2)-10+ 0*(2)-11+ 1*(2)-12+ 1*(2)-13+ 0*(2)-14+ 1*(2)-15
= -1+ ¼+1/16+1/64+1/128+1/256+1/512+1/4096+1/8192+1/32768
0x5566

Exercice 2

a) Additionner ces deux nombres flottants 0.5 × 22 et 0.6 × 21.


Etape1 : ajuster les exposants le plus petit avec le plus grand
Le nombre le plus petit est 0.6 × 2 1 et doit être ajuster 0.6 × 2 1 = 0.6 × 21*21*2-1 = 0.6*2-1
*21*21 = 0.3 * 22. Les deux nombres peut être ajustés
Etape 2 : additionner les mantisses : 0.5+0.3
Etape 3 : exposant commun est égal à 2
La valeur finale d’addition de deux nombres virgules flottantes est 0.8 × 22. La mentisse
est 0.8 et l’exposent est 2.

b) Multiplier ces deux nombres flottants 0.5 × 22 et 0.6 × 21.


Multiplier 0.5 × 22 par 0.6 × 21.
Etape1 : multiplier les mantisses
La mentisse 0.5 est multiplié par 0.6 pour obtenir 0.3. 0.5*0.6 = 0.3
Etape 2 : additionner les exposants 22+1 = 23
Les exposants sont additionnés (2 + 1=3).
Le résultat est 0.3 × 23.

c) Normaliser le nombre 16.25 = 10000.01 × 20


Mohamed Anouar Ben Messaoud 1
La normalisation revient à faire la mantisse sous forme (1.M) . Pour ceci on a besoin de
décaler à gauche ou à droite le point de base et donc ajouter ce décalage dans l’exposant.
16.25 = 10000.01 × 20 = 1.000001 × 20+4
J’ai décalé le point de base de 4 vers la gauche donc j’ajoute ce que j’ai décalé à l’exposant
Après normalisation : 1.000001 × 24 = 1*20*24+1*2-6*24 = 24+2-2 = 1 6+0.25 = 16.25

Exercice 3

LE CODEC audio AD1836 offre 24 bits, 96 kHz de capacité d'audio à canaux multiples
audio. Il a un intervalle dynamique de 105 dB. Un système audio numérique a 20 dB
d'amplitude et emploie 16 bits ou 32 bits dans le DSP Blackfin comme montré dans la figure.

Figure : Comparaison du Codec AD1836 avec différents longueurs

Pour un codeur/décodeur AD1836 de 24 bits, il faut sélectionner le DSP à virgule flottante


de 32 bits. Car l’intervalle dynamique du codec est 105 dB par contre le DSP à virgule fixe
n’offre pas cet intervalle. IL a plutôt un intervalle de 96 dB.
Par contre le DSP à virgule flottante, il a un intervalle dynamique de 192 dB donc il recouvre
l’intervalle d’amplitude du codec et il reste 92 dB de plus qui est équivalent à 14 bits (extra
bits). C’est-à-dire on a pour chaque bit 6 dB.

Exercice 4 : L’erreur de quantification

Soit le nombre π= 3.14159265358979. Sur 16 bits,

Exprimer le nombre π en mode fractionnaire avec la meilleure résolution possible en


appliquant la formule : N = round(log2(x)+0.5) +1.
Déterminer l’erreur absolue de quantification de π

N = round(log2(π)+0.5) +1 = round(1.644) +1=2+1 =3


M = 16-3 = 13
Meilleur format (3.13)
Soit le nombre π= 3.14159265358979. Sur 16 bits, le format optimal est donné par :
n==3
m = 16 − 3 = 13
− Partie entière :
3:2=1⇒1
Mohamed Anouar Ben Messaoud 2
1 : 2 = 0 (il reste 1) ⇒ 1
Avant le point de base : 011 = 3
− Partie fractionnaire :
0. 14159265358979 × 2 = 0.28318530717959 ⇒ 0
0.28318530717959 × 2 = 0.56637061435917 ⇒ 0
0.56637061435917 × 2 = 1.13274122871834 ⇒ 1
0.13274122871834 × 2 = 0.26548245743669 ⇒ 0
0.26548245743669 × 2 = 0.53096491487338 ⇒ 0
0.53096491487338 × 2 = 1.06192982974676 ⇒ 1
0.06192982974676 × 2 = 0.12385965949352 ⇒ 0
0.12385965949352 × 2 = 0.24771931898704 ⇒ 0
0.24771931898704 × 2 = 0.49543863797408 ⇒ 0
0.49543863797408 × 2 = 0.99087727594815 ⇒ 0
0.99087727594815 × 2 = 1.98175455189630 ⇒ 1
0. 98175455189630 × 2 = 1.96350910379260 ⇒ 1
0.96350910379260 × 2 = 1.92701820758520 ⇒ 1
Finalement :
π Base2→ π = 011.0010010000111 2
0010010000111= 0.14140762975863

Don la valeur obtenue avec le format (3.13) est


La valeur décimale reconstituée vaut
πreconstitué = (011.0010010000111)2 = 3.14147949218750
Erreur absolue de quantification = valeur donnée –valeur obtenu avec le format
La différence (erreur en valeur absolue) entre valeur décimale à convertir et valeur
décimale reconstituée est donnée par la relation
Δ = πdonnée -πreconstitué = 1.131614022931160 ⋅10-4
Exercice 5
Ecrire 0.5, -0.5, 0.7 et 0.8 en Hexadecimal avec le format (1.15)

R0.H = 0x4000; //0.5 in 1.15 format car 0.5=0.100000000000000


R2.L = 0xc000; //-0.5 in 1.15 format car -0.5 =1.100000000000000

Ecrire 0.7 en Hexadecimal avec le format (1.15)


Partie entière avant le point de base
0
Partie fractionnaire sur 15 bits
0.7*2 =1.41
0.4*2 =0.8 0
0.8*2=1.61
0.6*2=1.2 1
0.2*2=0.40
0.4*2 =0.8 0
0.8*2=1.6=>1
0.6*2=1.2 1

Mohamed Anouar Ben Messaoud 3


0.2*2=0.40
0.4*2 =0.8 0
0.8*2=1.6=>1
0.6*2=1.2 1
0.2*2=0.40
0.4*2 =0.8 0
0.8*2=1.6=>1
0.6*2=1.2 1

101100110011001
1011001100110011=1/2+1/8+1/16+1/128+1/256+1/2048+1/4096+1/32768+1/65536 =
0.6999969482421875
101 1 001 1 001 1 0011 = B333

0. 101100110011001
0101 1001 1001 1001
On doit faire l’arrondissement pour avoir le 0.7 au lieu de 0.6999969482421875

0101 1001 1001 1001 = 5999



0101 1001 1001 1010 =599A
D’où
R3.L = 0x599A; //0.7 in 1.15 format

Ecrire 0.8 en Hexadecimal avec le format (1.15)


Partie entière avant le point de base
0
Partie fractionnaire sur 15 bits :
0.8*2=1.61
0.6*2=1.2 1
0.2*2=0.4=0
0.4*2 =0.8 0
0.8*2=1.6=>1
0.6*2=1.2 1
0.2*2=0.40
0.4*2 =0.8 0
0.8*2=1.6=>1
0.6*2=1.2 1
0.2*2=0.40
0.4*2 =0.8 0
0.8*2=1.6=>1
0.6*2=1.2 1
0.2*2=0.4 1
Partie fractionnaire : 110011001100111
0.8=0. 110011001100111
0110 0110 0110 0111
On doit faire l’arrondissement pour avoir le 0.8
0110 0110 0110 0111 devient 0110 0110 0110 0110
Mohamed Anouar Ben Messaoud 4
D’où en Hexa on aura 6666
R3.H = 0x6666; //0.8 in 1.15 format

Mohamed Anouar Ben Messaoud 5

Vous aimerez peut-être aussi