Vous êtes sur la page 1sur 44

Processeurs de traitement des

signaux (DSP)
Universit Paul Sabatier

Shahram.Hosseini@ast.obs-mip.fr

fvrier 2007

DSP
* Un DSP (Digital Signal Processor) est un type particulier de
microprocesseur, destin au traitement numrique du signal.

Avantages par rapport un systme analogique


Stabilit: les composants analogiques varient en fonction des
variables denvironnement (temprature, vieillissement, ).
Reproductibilit: les valeurs des composants analogiques sont
dfinies avec une marge de prcision ==> aucun montage
analogique nest strictement reproductible lidentique.
Souplesse de la programmation: aprs le montage, il est difficile
de changer les caractristiques dun systme analogique.
Possibilits propres au systme numrique: certaines fonctions
de traitement du signal sont difficiles implanter en analogique,
voire irralisables.
3

Un exemple: filtre RIF


N 1

y (k ) =

x(k i )a

i =0

- Pour raliser le filtrage en temps rel, la dure du traitement doit


tre infrieure la priode dchantillonnage.
* Chaque tape ncessite une multiplication puis une addition, et enfin
lcriture en mmoire du rsultat. Ce type dopration est nomm MAC
(Multiply and Accumulate) => la ncessit de lexcution rapide de
lopration MAC.

* Lexcution dune opration MAC ncessite 3 lectures ( instruction,


chantillon de donne, et coefficient du filtre) et une criture (rsultat)
dans la mmoire => la ncessit de laccs parallle la mmoire.
4

Principales distinctions entre un DSP


et un microprocesseur classique
1) Contrairement aux p classiques, un DSP ralise le MAC en un
cycle dhorloge grce un circuit multiplieur.
2) Un DSP ralise plusieurs accs mmoire en un seul cycle, grce
larchitecture Harvard ( comparer avec larchitecture VonNeuman
des p classiques).

Principales distinctions entre un DSP


et un microprocesseur classique
3) Contrairement aux p classiques, la plupart des DSP nont pas
besoin de consommer des cycles dhorloge pour tester la valeur du
compteur de boucle. Ceci est effectu par un circuit on-chip.
4) Les DSP bnficient des modes dadressage adapts aux
algorithmes de traitement du signal (circulaire, inversion de bits, ).
5) Dans les p classiques, lutilisation de la mmoire Cache et la
prdiction des branchements sont effectues par des circuits logiques,
et peuvent changer dun programme lautre. Ceci rend impossible
la prdiction du temps dexcution dun programme, ce qui est
primordial pour une application en temps rel.
6) La plupart des DSP sont quips des interfaces entre/sortie
numriques.

Critres de slection des DSP


* Type: virgule fixe ou virgule flottante (voir pages suivantes)
* Vitesse: MIPS, MFLOPS, . (voir pages suivantes)
* Quantit de mmoire interne (DRAM, ROM, CACHE, ...)
* Entres/ Sorties et leurs vitesses respectives.
* Architecture interne, avec la prsence ou non de canaux DMA.
* Consommation dnergie, en fonction de lapplication.
* Cot, Rapport performance/prix en fonction du volume de production.
* Possibilit dutiliser un langage de haut-niveau (C en gnral)
* Qualit de documentation, Prsence de librairies.
* Qualit du systme de dveloppement utilis.
7

Virgule fixe, Virgule flottante


* DSP virgule fixe: Les donnes sont reprsentes comme tant des
nombres fractionnaires virgule fixe (exemple -1.0 1.0), ou comme
des entiers classiques.
* DSP virgule flottante: Les donnes sont reprsentes en utilisant
une mantisse et un exposant: n=mantisse*2exposant.
- Sur les DSP virgule fixe, le programmeur doit rester vigilant chaque
tape dun calcul . Ces DSP sont plus difficiles programmer.
- Les DSP virgule flottante fournissent une trs grande dynamique.
- Les DSP virgule flottante sont plus chers et consomment plus dnergie.
Les virgules flottantes sont utilises quand les coefficients varient dans le
temps (filtre adaptatif) ou quand le signal a besoin dune grande dynamique.
8

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

Panorama des DSP actuels


DSP traditionnels: bon march, basse-performance, faible
consommation. un MAC par cycle dhorloge.
cadence 20-60 MHz. Exemples: Analog Devices ADSP-21xx, Texas Instruments
TMS320C3x, Motorola DSP560xx (rpondeurs numriques, ).
cadence 70-150 MHz. Exemples: Texas TMS320C54x, Motorola DSP563xx
(tlcommunication sans-fil, modems haut-dbit).

. DSP amliors: un second multiplieur et UAL. 2 MAC par cycle


dhorloge. Exemple: Lucent DSP16210 (tlcommunication).
. DSP multi-issus: Plusieurs units de calcul. Excution de
plusieurs instructions en un cycle dhorloge. Exemple: TMS320C6455,
8 milliards MACPS! (traitement dimage). Consommation dnergie leve.

12

Le DSP ADSP-21065L SHARC


DSP 32 bits de chez Analog Devices
virgule flottante/fixe
Horloge interne 60 MHz - une instruction par cycle
180 MFLOPS
544 kbits de SRAM intgrs
2 ports srie haut dbit, 10 canaux DMA, 2 Timer.
3.3 v
$10 - pour 100,000 pices!
Botier 208 broches
13

Les units de calcul


* 3 units: UAL, multiplieur, registre de dcalage (shifter).
* Chaque unit effectue une opration par cycle.

14

Le bloc de registres (register file)


* Le bloc de registres est compos de 16 registres indpendants
de 40 bits (registres universels). Ces registres jouent linterface
entre les bus de donnes et les units de calcul et servent
transfrer les donnes et le rsultat de calcul.
* Si on travaille sur 32 bits, les bits b0-b7 sont ignors.
* Ces registres peuvent tre utiliss en virgule fixe ou flottante.
En assembleur, ils sont nots par Fx (x=0,1,,15) pour une
opration en flottante, et par Rx pour une opration en fixe.
Exemple: F15=12.245; F4=F2*F15;
R7=13;

R0=R7+R1;
15

Unit arithmtique et logique (UAL)


* Opration sur des nombres virgule fixe et flottante.
* Addition/soustraction/moyennage, oprations logiques,
conversion, fonctions diverses.
- Exemple dinstructions portants sur des flottants:
F2=F3+F4;
COMP(F1,F3);
F2=MIN(F1,F3);

F2=F3-F4;
F3=(F1+F2)/2;
F2=FLOAT R3;

F2=ABS F3;
F2=MAX(F1,F3);
R3=FIX F2;

* Chaque instruction modifie des drapeaux dans les registres


dtat (ASTAT et STKY). Ces drapeaux peuvent ensuite tre
utiliss pour tester les branchements conditionnels.
16

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

Unit de dcalage (Shifter)


* Travaille sur 32 bits sur des nombres virgule fixe
* Dcalages et rotations
* Mise 1 ou 0 des bits, tests, .
- Exemple dinstructions:
R3=LSHIFT R2 BY R1; /* R3= dcalage de R2 par la valeur de R1*/
R2=ROT R1 BY R3; /* R2=rotation de R1 par la valeur de R3 */
R2=BCLR R1 BY R3; /* R2= (R1 aprs mise zro du bit indiqu par R3) /*
R3=BSET R2 BY R1; /* R3= (R2 aprs mise 1 du bit indiqu par R1) /*

* Selon le rsultat, certains drapeaux du registre ASTAT changent.


18

Squenceur de programme et cycle dinstruction


* Le squenceur contrle le droulement du programme: linaire,
structure de boucle, sous-programme, sauts, interruptions.
* Il faut 3 cycles dhorloge pour grer une instruction: lecture,
dcodage, excution.
* Structure pseudo-parallle ou Pipeline:

19

Sauts
1) Branchement:
JUMP addr24;
PC <= addr24 (tiquette)
2) Saut un sous-programme
Appel:

CALL addr24;

PC+1 => PC Pile


PC <= addr24
Retour:

RTS;

PC <= PC Pile

20

Branchements et sauts conditionnels


* JUMP et CALL peuvent tre conditionnels:
IF condition JUMP addr24;
IF condition CALL addr24;

* Liste des conditions:


Attention: tout ne
sapplique pas IF!

21

Structure de boucles
* Boucle avec condition de fin:
DO addr24 UNTIL condition;

* Boucle avec compteur


(registre LCNTR):
LCNTR=data16,
DO addr24 UNTIL LCE;
22

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

Adressage de mmoire (suite)


* Dtail des registres:
I: registre dIndex
M: registre dincrment (Modifieur)
B: registre dadresse de Base L: registre de Longueur
- Les registres B et L sont utiliss pour grer les buffers circulaires.
- Les registres I et M sont utiliss pour ladressage indirect. Les
registres I fonctionnent comme des pointeurs aux mmoires, et les
registres M contiennent la valeur dincrment des pointeurs.
* Oprations de DAGs:
- Adressage avec pr-modification ou post-modification
- Adressage circulaire
- Adressage par inversion de bits (utilis dans le calcul de TFR)

24

Adressage avec pr-modification


DM(Mx, Iy)

0 x,y 7

PM(Mx, Iy)

8 x,y 15

Ex: R2=DM(M0, I1)


R2 est charg par le contenu de la mmoire donnes
ladresse indique par M0+I1. Registre I1 nest pas modifi.
- Syntaxe: le registre M prcde le registre I.
- Le registre M peut tre remplac par une valeur immdiate:
Ex: R2=PM(4, I9); /* adresse= I9+4 */
25

Adressage avec post-modification


DM(Ix, My)

0 x,y 7

PM(Ix, My)

8 x,y 15

Ex: R2=DM(I1, M0)


R2 est charg par le contenu de la mmoire donnes ladresse
indique par I1. Ensuite, I1 est modifi I1+M0.
- Syntaxe: le registre I prcde le registre M.
- Le registre M peut tre remplac par une valeur immdiate.
- Le registre L correspondant au registre I utilis (L1 dans
lexemple ci-dessus) doit avoir une valeur nulle.

26

Buffer circulaire
Table de valeurs avec historique fini
Adressage post-modifi + utilisation des registres B et L.

27

Buffer circulaire (suite)


Pour crire un buffer circulaire en assembleur:
1) Charger le registre L avec la longueur du buffer.
2) Charger le registre B correspondant avec ladresse du dbut du
buffer.
3) Charger un registre M (dans le mme DAG) avec le pas
dincrment.
- Le registre I correspondant au registre L et B est automatiquement
initialis avec le contenu du registre B.
4) Utiliser le mode dadressage avec post-modification.
-Le registre I dtermine ladresse effective. Aprs la modification, si
ladresse est en dehors du buffer, Le DAG corrige la valeur de I pour
28
retourner dans le buffer.

Buffer circulaire (suite)


* Si M est positif:
Inew=Iold+M

si Iold+M < B+L

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

- Si on utilise le registre I7 de DAG1 ou I15 de DAG2, une


Interruption est gnre en cas de dpassement du buffer circulaire.

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:

IF eq F1=F5*F12, F11=PM(I10, 40);

- Dans les oprations de calcul, les oprandes sont des registres


(ou les valeurs immdiates pour certaines oprations de
dcalage), mais jamais le contenu de la mmoire.
- Pour effectuer une opration de calcul sur le contenu de la
mmoire, il faut dabord le transfrer dans un registre.
31

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

- Certaines instructions de ce groupe peuvent tre excutes en


parallle avec les instructions de calcul.
Ex:

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;

4) Divers: manipulations des bits dans un registre de systme,


manipulation de pile (PUSH, POP), NOP (instruction qui ne fait
rien), .

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

Directives dassembleur (suite)


3) Directive .global : utilise pour exporter un symbole. Le symbole export sera
reconnu par les autres programmes au moment de ldition de liens. La syntaxe
gnrale est
.GLOBAL symbole;
Ex:

.VAR coeffs[10];
.GLOBAL coeffs;

4) Directive .extern : utilise pour importer un symbole, dfini comme un


GLOBAL dans un autre programme. La syntaxe gnral est
.EXTERN symbole;
Ex:

.EXTERN coeffs;

5) Divers: .precision, .round, .port, .newpage

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

Exemple de source assembleur


/* commentaire */
#include "def21065l.h"
#define N 10
.SEGMENT/DM zonetab;
/* table de donnees a traiter */
.VAR table[N] = 3,7,2,14,1,16,18,12,28,22;
.ENDSEG;
.SEGMENT/PM mon_code;
debut: M1=0x01; /* increment */
Do fin until sz ;
r0 = bclr r0 by 0x01; /* r0 flag = 0*/
I1 = table; /* initialise a case 1 */
LCNTR=N-1, Do suite until LCE;
r1=DM(I1,M1);
r2=DM(0x00,I1);
COMP(R2,R1); /* compare la case I et I+1 */
If GE jump suite; /* si <= on saute le swap */
DM(0xFFFFFFFF,I1)=r2;
DM(0x00,I1)=r1; /* on permutte */
r0 = bset r0 by 0x01; /* flag = 1 */
suite: nop;
fin: Btst r0 by 0x01; /* test de flag */
nop;
.ENDSEG;
37

Schma bloc gnral du DSP

38

Kit de dveloppement EZ-LAB


Carte EZ-LAB
- DSP ADSP21065L
- Codec AD1819A
- Interface RS232
(vers PC)
- EPROM 1M*8bits
- SDRAM 1M*32bits

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

* Communication srie haut dbit avec le DSP (SPORT1)


- Initialisation du DMA et SPORT
- Initialisation du CODEC
- Gestion des chantillons: routine dinterruption
40

Environnement de dveloppement

Hte:
station PC

Saisie des programmes


Compilation
Transfert vers la cible
Mise au point

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