Cours DSP
Cours DSP
Cours DSP
signaux (DSP)
Universit Paul Sabatier
fvrier 2007
DSP
* Un DSP (Digital Signal Processor) est un type particulier de
microprocesseur, destin au traitement numrique du signal.
y (k ) =
x(k i )a
i =0
Critres de performance
1) MIPS (Million Instructions Per Second). Problme: une
instruction ne signifie pas la mme chose dune famille lautre.
2) MFLOPS (Million Floating-Point Operations Per Second):
Uniquement pour les DSP virgule flottante.
3) MACPS (MAC Par Second): nombre doprations MAC par
seconde.
4) Benchmark (mesure du temps dexcution dun ou plusieurs
programmes): Outre le temps dexcution dune instruction, il y a
dautres facteurs dterminant la vitesse dun processeur: le temps
daccs la mmoire, les modes dadressage utiliss, etc. Il est
donc prfrable de mesurer le temps dexcution des programmes
standard de traitement du signal.
9
Principales applications
Tlphonie filaire: modems, codeurs de parole, annuleurs dcho,
Radiotlphonie: codeurs de parole GSM, modems radio,
Interfaces vocales: messagerie lectronique, rpondeurs
numriques, reconnaissance de parole, synthse vocale,
identification du locuteur pour le contrle daccs,
Militaire: guidage de missiles, navigation, communications cryptes,
traitement radar et sonar,
Multimdias: compression de signaux audio, image et vido, cartes
multimdias pour PC, synthse musicale, jeux, ...
10
Principales applications
Mdical: compression dimages mdicales pour larchivage,
traitement de signaux ECG et EEG,
Electronique automobile: quipements de contrle moteur, aide
la navigation, commandes vocales,
Automatisation: surveillance et commande de machines, contrle
des moteurs, robots, servomcanismes,
Instrumentation: analyseurs de spectre, analyseurs de transitoires,
gnrateurs de fonctions, interprtation des signaux sismiques,
11
12
14
R0=R7+R1;
15
F2=F3-F4;
F3=(F1+F2)/2;
F2=FLOAT R3;
F2=ABS F3;
F2=MAX(F1,F3);
R3=FIX F2;
Le multiplieur
* En virgule fixe: capable deffectuer des MAC. Utilise
deux registres daccumulation sur 80 bits (MRF et MRB).
Exemple: MRF=MRF+R5*R0;
MRB=MRB-R2*R1;
R2=R3*R1;
* En virgule flottante: seulement la multiplication.
Exemple: F3=F4*F2;
* Selon le rsultat, certains drapeaux des registres dtat sont
mis zro ou un, et peuvent tre ensuite utiliss pour tester
les branchements conditionnels.
17
19
Sauts
1) Branchement:
JUMP addr24;
PC <= addr24 (tiquette)
2) Saut un sous-programme
Appel:
CALL addr24;
RTS;
PC <= PC Pile
20
21
Structure de boucles
* Boucle avec condition de fin:
DO addr24 UNTIL condition;
Adressage de mmoire
* La mmoire donnes (DM) est spare de la mmoire programme (PM).
1) Adressage direct
Ex: R1=PM(0x009400); /* R1 est charg par le contenu de la
mmoire programme ladresse 0x009400 */
DM(0x0000C002)=R4; /* R4 est copi dans un emplacement
de la mmoire donnes ladresse 0x0000C002 */
2) Adressage indirect
Ladresse est gnre par une srie de registres, appels registres DAG
(Data Address Generator):
DAG1 (I0-I7, M0-M7, B0-B7, L0-L7) : adressage de mmoire donnes.
DAG2 ( I8-I15, M8-M15, B8-B15, L8-L15): adressage de mmoire prog.
23
24
0 x,y 7
PM(Mx, Iy)
8 x,y 15
0 x,y 7
PM(Ix, My)
8 x,y 15
26
Buffer circulaire
Table de valeurs avec historique fini
Adressage post-modifi + utilisation des registres B et L.
27
Inew=Iold+M-L
si Iold+M B+L
* Si M est ngatif:
Inew=Iold+M
si Iold+M B
Inew=Iold+M+L
si Iold+M < B
29
Assembleur de ADSP-21065L
- Le langage dassemblage ou lassembleur est un langage bas-niveau, pouvant
tre traduit par un traducteur (appel aussi assembleur) en codes binaires,
reconnus par le processeur. Un programme assembleur est compos de:
1) Instructions: traduites en codes binaires par le programme. Les instructions se
terminent avec un (;). Elles peuvent tre prcdes par une tiquette (suite de
caractres termine par :). Deux instructions excutes en parallle sont spares
par une (,).
2) Directives dassemblage: des ordres donns au programme. Les directives
sont prcdes par un point (.) et se terminent avec un point-virgule (;).
3) Prprocesseurs: commandes excutes avant la traduction. Prcdes par (#).
4) Commentaires: ignors par le traducteur. Prcds par /* et termins par */.
- Lassembleur ne fait pas la distinction entre minuscule et majuscule.
30
Instructions
1) Calcul et transfert: une opration de calcul, ventuellement
en parallle avec une ou deux oprations de transfert.
- La plupart des instructions de ce groupe peuvent tre prcdes
par IF cond o cond est lun des mnmoniques du tableau de la
page 21.
Exemple:
Instructions (suite)
2) Instructions de contrle: servent contrler lexcution du
programme : JUMP, CALL, RTS, RTI, DO UNTIL.
- La plupart des instructions de ce groupe peuvent tre
prcdes par IF cond. La structure IF cond, ELSE peut tre
aussi utilse pour certaines instructions.
Ex:
IF lt JUMP suite;
IF eq RTS, ELSE R0=LSHIFT R1 BY R15
JUMP(M8,I12), R6=R6-1;
32
Instructions (suite)
3) Transfert des valeurs immdiates: ces instructions sont
utilises pour effectuer un transfert entre un registre et la
mmoire, ou pour copier une valeur immdiate dans un registre
ou dans la mmoire.
Ex:
ASTAT=DM(0x489060);
DM(I4, M0)=19304;
33
Directives dassembleur
- Contrairement aux instructions, les directives ne gnrent pas de code binaire.
1) Directives .segment et .endseg : sont utilises pour marquer le dbut et la fin
dun segment, c--d une section des emplacements contigus dans la mmoire
programme ou la mmoire donnes. La syntaxe gnrale est:
.SEGMENT/type nom_de_segment;
[contenu du segment]
.ENDSEG;
o type est PM pour la mmoire programme et DM pour la mmoire donnes.
Le nom de segment doit contenir au plus 8 caractres.
2) Directive .var : Dclaration dune variable ou un tableau. On peut aussi
initialiser la variable dclare.
.VAR nom1=init1, nom2, nom3=init3;
.VAR nom_de_tableau1[longueur]=init1, init2, , initn;
34
.VAR coeffs[10];
.GLOBAL coeffs;
.EXTERN coeffs;
35
Prprocesseurs
Les services rendus par le prprocesseur sont: linclusion de
fichier source, le traitement de macros et lassemblage
conditionnel. On ne prsente ici que les deux les plus importants:
1) Inclusion du contenu dun fichier:
#include ''nom_de_fichier''
2) Dfinition dun macro sans paramtres
#define nom reste_de_la ligne
Dans toute la suite du programme, toute nouvelle occurrence de
nom est remplace par reste_de_la ligne.
Ex:
#define ORDRE 5
36
38
39
Conversion analogique-numrique
* Utilise le CODEC AD1819A
- Conversion sur 16bits stro
- Plusieurs entres et sorties analogiques (multiplexage)
- Frquence dchantillonnage de 7kHz 48kHz
- Bande passante en sortie de 20Hz 20kHz
- Amplificateurs et attnuateurs internes programmables
Environnement de dveloppement
Hte:
station PC
Cible:
Kit EZ-LAB Excution Code DSP
41
Gestion du projet
Edition des
programmes source
en assembleur
Compilation
Edition de liens
(logiciel Visual
DSP)
42
Debugger
Permet la mise au
point du programme
Simulation ou
contrle de la platine
EZ-Lab
43
Rfrences
1) The evolution of DSP processors, J. Eyre & J. Bier, IEEE Signal Processing
Magazine, vol. 17, no. 2, March 2000, pp. 43-51.
2) DSP Processors hit the mainstream, J. Eyre & J. Bier, IEEE Computer, August
1998.
3) How to estimate DSP processor performance, P. Lapsley & G. Blalock, IEEE
Spectrum, July 1996.
4) ADSP-21065L Technical Reference,
http://www.analog.com/processors/sharc/technicalLibrary/manuals/index.html
5) ADSP-21065L Users Manual, mme adresse.
6) VisualDSP++ 3.5 User's Guide for 32 bits processors, mme adresse.
7) ADSP-21065L EZ-LAB Development System Manual, Analog Devices.
44