Vous êtes sur la page 1sur 32

ISEN

2006

COURS DE DSP
(Digital Signal Processor)

Alain Fruleux
Plan
 Première Partie
– 0 Introduction
– 1 Comment se former au DSP?
– 2 Notions Générales
– 3 Le TP1
0-1Introduction: Code Composer Studio TI
utilisé en TP
0-2 Vision Globale DSK/TMS320c5510 de TI

? 
? 
?


? 
?
0.3 Utilisation des DSP T. I.

 C1x Hard Disk Controllers


 C2x Fax/Machines Embedded Control
 C3x Videophones
 C5x Voice Processing
 C54x Digital Cellular Phones
 C6x Wireless Base/Modems
 C8x Video Conferencing
0.4 Position du Cours

Télécommunication

Electro -
technique
Electronique
Informatique
électronique
de puissance
Micro -
électricité
processeurs et
traitement DSP Réseaux

semi- de signal
conducteurs
Automatisation
Signaux et Processus
Physique
Systèmes Manufacturier
Mesure
Numériques
1.1 Comment se former au DSP?
 -

 10 Cours/Expérimentation

 sur une maquette DSK/TMS320C5510


 Prise en main
 Le jeu d ’instruction et registres
 Écriture et compilation d ’un programme (Assembleur)
 Repeat Block/ Adressage Circulaire
 Temps d ’exécution
 Instruction Parallèle
 Synthèse réaliser un filtre FIR
1.2 Cycle de Développement


2
 1-Réalisation ( ou utilisation) de la
carte électronique (existante) :
cible/target
 2-Écriture d ’un programme en c et
assembleur (fichier source)

4

3
 3-Assemblage ou Compilation (fichier 
1
objet)
 4-Chargement du programme sur la
cible (fichier exécutable)
 5-« Debugage »/Test du
fonctionnement 
5
1.2.1 Le Langage Assembleur

 Pour gagner de la place (concision du code)


 Pour gagner du temps (d ’exécution pas de développement)
 Couche indispensable entre le hard et les
couches logiciels supérieurs.
 Souvent lié à une programmation en C.
 Forme définitive d ’un programme après
compilation.
1.2.1 Le Langage Assembleur
 Formalisme : 4 champs (TMS320C5402)

 Etiquette Instr. Opérand Commentaires


 (ou label)

 DébutLD #0x7FFF,0,A charger A avec la valeur hexa 7FFF


 Fin B Début saut à Début

 pour lisibilité registre


 correspond à adresse mémoire
 adresse après étiquette
 compilation variable immédiate
1.2.2-Code Composer Studio TI utilisé en TP
2- NOTIONS PREALABLES

 2.1 Représentation des Nombres Entiers


 2.2 Autres Représentations
 2.3 Opérations sur Entiers
 2.4 Représentation des Nombres Réels
2.1 Représentation des nombres entiers

 2.1.1 Nombres entiers en Base 10



101001 +1*100000

1001 +1*1000

1 =1*10°
7 6 5 4 3 2 1 0
10
7 10
7
10
10 6 10
6
10
10 5 10
5
10
10 4 10
4
10
10 3 10
3
10
10 2 10
2
10
10 1 10
1
10
10
0
10
0
10
0 0 1 0 1 0
0 0 1
0 1
1
2.1.2 Nombres entiers en Base 2


101001 +1*32

1001 +1*8

1 =1*2°

= 41 (décimal)
7
7 6 6
5 4
5 3 2 1 0 4 3 2 1 0
2
2
7 2
2
6 2
2
522
4 2
2
3 2
2
2 2
2
1 2
2
0
2 2 2 2 2 2 2
1 0 0 1
2
0 0 1 0 1 0 01
1

MSB LSB
2.1.3 Nombre entier Hexadécimal (base 16)

Décimal Hexadécimal Binaire


0 0 0 0 0 0
1 1 0 0 0 1
2 2 0 0 1 0
3 3 0 0 1 1
4 4 0 1 0 0
5 5 0 1 0 1
6 6 0 1 1 0
7 7 0 1 1 1
8 8 1 0 0 0
9 9 1 0 0 1
10 A 1 0 1 0
11 B 1 0 1 1
12 C 1 1 0 0
13 D 1 1 0 1
14 E 1 1 1 0
15 F 1 1 1 1
2.1.4 Dynamique des Nombres Entiers

 8 bits 1 octet (byte) 0 à 255 Dec 00h à FFh en Héxa


 16 bits 2 octets (word) 0 à 65535 ou 0000h à FFFFh
 32 bits 4 octets (long w) 0 à 4.294.967.295 ou FFFFFFFFh
2.1.5 Nombres entiers Unités

Kilo  210  1024


Méga  2  1.048.576
20

Giga  230  1.073.741.824


2.2 Autres Représentations
 2.2.1 Nombres BCD (Binary Coded Decimal)

Décimal Hexadécimal Binaire


0 0 0 0 0 0
1 1 0 0 0 1
2 2 0 0 1 0
3 3 0 0 1 1

C ’est une astuce pour 4 4 0 1 0 0
5 5 0 1 0 1
utiliser la notation 6 6 0 1 1 0
hexadécimal pour le 7 7 0 1 1 1
8 8 1 0 0 0
décimal.On s ’arrête à 9 9 9 1 0 0 1
et cela complique un peu 
XXXXXXXXXXXXXX
10 A 1 0 1 0
11 B 1 0 1 1
les algorithmes de calcul XXXXXXXXXXXXXX
12 C 1 1 0 0
13 D 1 1 0 1
XXXXXXXXXXXXXX
14 E 1 1 1 0
XXXXXXXXXXXXXX
15 F 1 1 1 1
2.2 Autres Représentations

 2.2.2 Représentation de Texte (ASCII)


0 1 2 3 4 5 6 7
0 NUL DLE SP 0 @ P  p
1 SOH DC1 ! 1 A Q a q
2 STX DC2 " 2 B R b r
3 ETX DC3 # 3 C S c s
4 EOT DC4 $ 4 D T d t
5 ENQ NAK % 5 E U e u
6 ACK SYN & 6 F V f v
7 BEL ETB ' 7 G W g w
8 BS CAN ( 8 H X h x
9 HT EM ) 9 I Y i y
A LF SUB * : J Z j z
B VT ESC + ; K [ k {
C FF FS , < L \ l |
D CR GS - = M ] m }
E S0 RS . > N ^ n 
F S1 US / ? O _ o DEL
2.2 Autres Représentations

 2.2.3 État extérieur (port d ’entrée/sortie)

Informations direction Port entrée/sortie ext


Entrée interrupteur 1 1
Entrée interrupteur 2 1
Entrée interrupteur 3 0
Entrée interrupteur 4 0
Sortie voyant 1 1
Sortie voyant 2 1
Sortie voyant 3 0
Sortie voyant 4 0
2.2 Autres Représentations
 2.2.4 Registre de commande

Contenu du registre de commande Signification


7 6 5 4 3 2 1 0
x x x x 0 0 0 1 Baud Rate 28800
x x x x 0 0 1 0 Baud Rate 57600
x x x x 1 1 1 1 Baud Rate 115200

1.3.3 Registre de status (d’état)
Contenu du registre d'état Signification
7 6 5 4 3 2 1 0
x x x x x x x 1 Time out
x x x x x X 1 x Liaison interrompue
x x x x 1 x x Détection de porteuse
…………
2.2 Autres Représentations

 2.2.5 Codage d ’une instruction (TMS320C5402)


 l ’instruction (équivalente à A=32767):
 LD #0x7FFF,0,A
 (charger A avec la valeur hexa 7FFF)
 est codée (en hexa) dans la mémoire:
 F0 20 LD#??,0,A
 7F FF 7FFF variable immédiate
2.3- OPERATIONS SUR ENTIERS

 2.3.1 Addition en Base 2, 16 et 10


ret 1001111- 1- 11-

01001011 = 4Bh = 75

+ 11100101 = E5h =229

= 1 00110000 = 1 30h=304
2.3.2 Nombres entiers signés
(complément à 2)


Soustraction et nombres négatifs


00101001 = + 41 = 29h
 + + ????????? = -=41- 41
11010111 = = ??h D7h

= (1) 00000000 = 00 =
(1)00h
 X  X 1
2.3.3 Opérations Logiques

 ET (AND)

01001011 = 4Bh = 75

et 11100101 = E5h =229

= 01000001 = 41h= 65

Masque (forcer un bit à 0)

xxxxxxxx

et 10111101

= x0xxxx0x
2.3.3 Opérations Logiques
 OU (OR)


01001011 = 4Bh = 75

ou 11100101 = E5h = 229

= 11101111 = EFh= 239

Masque (forcer un bit à 1)

xxxxxxxx

ou 01000010

= x1xxxx1x
2.4 Représentation des nombres Réels
 Dans un filtre FIR la somme des coefficients est égale à 1

 Nous avons besoin de variables non entières

1
5 1
4 1
3 1
2 1
1 1
0 9 8 7 6 5 4 3 2 1 0
s2

1 
2
2 
23 
4
2 
5
2 
6
2 
7
2 
8
2 
9
2 
10
2 11 
2 212
13
2 14
2 15
2

14
X  ( fi * 2 i 15
)
i 0


S est le signe 0 positif 1 négatif

la somme fractionnaire est toujours <1
2.4.1 Virgule Fixe (Q15)
1
5 1
4 1
3 1
2 1
1 1
0 9 8 7 6 5 4 3 2 1 0
s2

1 
2
2 
23 
4
2 
5
2 
6
2 
7
2 
8
2 
9
2 
10
2 11 
2 212
13
2 14
2 15
2
0111100000000000
7 8 0 0

 Exemple d ’un Nombre positif

X  2 1  2 2  2 3  2 4
X  0.5  0.25  0.125  0.0625
X  0.9375
2.4.1 Virgule Fixe (Q15)
 L ’utilisation de la virgule fixe est délicate:

 Les variables doivent être comprises entre -1 et +1


 Multiplication : pas de débordement possible
 Addition et soustraction risque de débordement qu ’il faut traiter (test des variables avant l ’opération)
 Faire attention à l ’ordre des calculs
 Faire attention au format de variable supporté par les instructions en Assembleur et en C

 Ces problèmes sont résolus avec la virgule flottante


 Malheureusement notre TMS320C55 ne possède pas de virgule flottante (sauf en C) pour des économies de surface de silicium et de consommation…..
2.4.2 Virgule Flottante
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
e e e e e e e e s f f f f f f f f f f f f f f f f f f f f f f f
8 bits = exposants +/- 23 bits =Fraction de la mantisse

 e exposant codé en complément à 2 (-128 à 127)


 si e=-128 alors variable =0
 s signe de la mantisse 0=positif 1=négatif
 f fraction de la mantisse en 2^-n
 on ajoute 1 systématiquement à f si s=0, -2 si s=1

23
X  2 * (1( ou  2)   fi * 2
e i  23
)
i 0
2.4.2 Virgule Flottante
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
e e e e e e e e s f f f f f f f f f f f f f f f f f f f f f f f
8 bits = exposants +/- 23 bits =Fraction de la mantisse
0 0 0 0 0 0 1 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 3 7 8 0 0 0 0

 Exemple d ’un Nombre positif

1 2 3 4
X  2 * (1  2  2  2  2 )
3

X  8 * (1  0.5  0.25  0.125  0.0625)


X  8 * (1.9375)  15.5
2.4.2 Virgule Flottante
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
e e e e e e e e s f f f f f f f f f f f f f f f f f f f f f f f
8 bits = exposants +/- 23 bits =Fraction de la mantisse
1 1 1 1 1 1 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
F D=(=-3) F 8 0 0 0 0

 Exemple d ’un Nombre négatif

3 1 2 3 4
X  2 * (2  2  2  2  2 )
X  0.125 * (2  0.5  0.25  0.125  0.0625)
X  0.125 * (2  1.9375)  0.0078125
X  7.8125 *10 3

Vous aimerez peut-être aussi