cours de dsp (digital signal processor) alain fruleux
DESCRIPTION
COURS DE DSP (Digital Signal Processor) Alain Fruleux. I S E N 2006. Plan. Première Partie 0 Introduction 1 Comment se former au DSP? 2 Notions Générales 3 Le TP1. 0-1 Introduction: Code Composer Studio TI utilisé en TP. 0-2 Vision Globale DSK/TMS320c5510 de TI. ?. ?. ?. ?. ?. - PowerPoint PPT PresentationTRANSCRIPT
COURS DE DSP (Digital Signal Processor)
Alain Fruleux
I S E N
2006
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
Physique
semi- conducteurs
Electro -technique
électronique de puissance
Informatique
Signaux et Systèmes
Numériques
électricité
Automatisation Processus
ManufacturierMesure
Micro -processeurs et
DSPtraitementde signal
Electronique
Réseaux
Télécommunication
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
1-Réalisation ( ou utilisation) de la carte électronique (existante) : cible/target
2-Écriture d ’un programme en c et assembleur (fichier source)
3-Assemblage ou Compilation (fichier objet)
4-Chargement du programme sur la cible (fichier exécutable)
5-« Debugage »/Test du fonctionnement
1
2
34
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ébut LD #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
7106105104103102101100101 0 0 1
7106105104103102101100100 0 1 0 1 0 0 1
1 =1*10°
1001 +1*1000
101001 +1*100000
7106105104103102101100101
2.1.2 Nombres entiers en Base 2
72 62 5242 32 22 12 021001
72 6252 42 32 2212 0200101001
1 =1*2°
1001 +1*8
101001 +1*32
72625242322212021
= 41 (décimal)
MSB LSB
2.1.3 Nombre entier Hexadécimal (base 16)
Décimal Hexadécimal Binaire0 0 0 0 0 01 1 0 0 0 12 2 0 0 1 03 3 0 0 1 14 4 0 1 0 05 5 0 1 0 16 6 0 1 1 07 7 0 1 1 18 8 1 0 0 09 9 1 0 0 1
10 A 1 0 1 011 B 1 0 1 112 C 1 1 0 013 D 1 1 0 114 E 1 1 1 015 F 1 1 1 1
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.4 Dynamique des Nombres Entiers
2.1.5 Nombres entiers Unités
824.741.073.12
576.048.12
10242
30
20
10
Giga
Méga
Kilo
2.2 Autres Représentations 2.2.1 Nombres BCD (Binary Coded Decimal)
Décimal Hexadécimal Binaire0 0 0 0 0 01 1 0 0 0 12 2 0 0 1 03 3 0 0 1 14 4 0 1 0 05 5 0 1 0 16 6 0 1 1 07 7 0 1 1 18 8 1 0 0 09 9 1 0 0 1
10 A 1 0 1 011 B 1 0 1 112 C 1 1 0 013 D 1 1 0 114 E 1 1 1 015 F 1 1 1 1
C ’est une astuce pour utiliser la notation hexadécimal pour le décimal.On s ’arrête à 9 et cela complique un peu les algorithmes de calcul
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
2.2 Autres Représentations
2.2.2 Représentation de Texte (ASCII)
0 1 2 3 4 5 6 70 NUL DLE SP 0 @ P p1 SOH DC1 ! 1 A Q a q2 STX DC2 " 2 B R b r3 ETX DC3 # 3 C S c s4 EOT DC4 $ 4 D T d t5 ENQ NAK % 5 E U e u6 ACK SYN & 6 F V f v7 BEL ETB ' 7 G W g w8 BS CAN ( 8 H X h x9 HT EM ) 9 I Y i yA LF SUB * : J Z j zB 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 extEntrée interrupteur 1 1Entrée interrupteur 2 1Entrée interrupteur 3 0Entrée interrupteur 4 0
Sortie voyant 1 1Sortie voyant 2 1Sortie voyant 3 0Sortie voyant 4 0
2.2 Autres Représentations
2.2.4 Registre de commande
1.3.3 Registre de status (d’état)Contenu du registre d'état Signification7 6 5 4 3 2 1 0
x x x x x x x 1 Time outx x x x x X 1 x Liaison interrompuex x x x 1 x x Détection de porteuse
…………
Contenu du registre de commande Signification7 6 5 4 3 2 1 0
x x x x 0 0 0 1 Baud Rate 28800x x x x 0 0 1 0 Baud Rate 57600x x x x 1 1 1 1 Baud Rate 115200
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
01001011 = 4Bh = 75
+ 11100101 = E5h =229
= 1 00110000 = 1 30h=304
ret 1001111- 1- 11-
+ ????????? = - 41 = ??h
Soustraction et nombres négatifs
00101001 = + 41 = 29h
= (1) 00000000 = 00 = (1)00h
+ 11010111 = - 41 = D7h
1 XX
2.3.2 Nombres entiers signés (complément à 2)
ET (AND) 01001011 = 4Bh = 75
et 11100101 = E5h =229
= 01000001 = 41h= 65
xxxxxxxx et 10111101 = x0xxxx0x
Masque (forcer un bit à 0)
2.3.3 Opérations Logiques
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
14
0
15 )2*(i
ifiX
S est le signe 0 positif 1 négatif la somme fractionnaire est toujours <1
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
s 12 22 32 42 52 62 72 82 92 102 112 122 132 142 152
2.4.1 Virgule Fixe (Q15)
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
s 12 22 32 42 52 62 72 82 92 102 112 122 132 142 152
01111000000000007 8 0 0
9375.0
0625.0125.025.05.0
2222 4321
X
X
X
Exemple d ’un Nombre positif
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
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
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 f8 bits = exposants +/- 23 bits =Fraction de la mantisse
23
0
23)2( )2*1(*2
i
iou
e fiX
2.4.2 Virgule Flottante
Exemple d ’un Nombre positif
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 f8 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 00 3 7 8 0 0 0 0
5.15)9375.1(*8
)0625.0125.025.05.01(*8
)22221(*2 43213
X
X
X
2.4.2 Virgule Flottante
3
43213
10*8125.7
0078125.0)9375.12(*125.0
)0625.0125.025.05.02(*125.0
)22222(*2
X
X
X
X
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 f8 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 0F D=(=-3) F 8 0 0 0 0
Exemple d ’un Nombre négatif