SlideShare une entreprise Scribd logo
Processeurs de traitement des
signaux (DSP)
Université Paul Sabatier
Shahram.Hosseini@ast.obs-mip.fr février 2007
2
DSP
* Un DSP (Digital Signal Processor) est un type particulier de
microprocesseur, destiné au traitement numérique du signal.
3
Avantages par rapport à un système analogique
• Stabilité: les composants analogiques varient en fonction des
variables d’environnement (température, vieillissement, …).
• Reproductibilité: les valeurs des composants analogiques sont
définies avec une marge de précision ==> aucun montage
analogique n’est strictement reproductible à l’identique.
• Souplesse de la programmation: après le montage, il est difficile
de changer les caractéristiques d’un système analogique.
• Possibilités propres au système numérique: certaines fonctions
de traitement du signal sont difficiles à implanter en analogique,
voire irréalisables.
4
Un exemple: filtre RIF
∑
−
=
−=
1
0
)()(
N
i
iaikxky
- Pour réaliser le filtrage en temps réel, la durée du traitement doit
être inférieure à la période d’échantillonnage.
* Chaque étape nécessite une multiplication puis une addition, et enfin
l’écriture en mémoire du résultat. Ce type d’opération est nommé MAC
(Multiply and Accumulate) => la nécessité de l’exécution rapide de
l’opération MAC.
* L’exécution d’une opération MAC nécessite 3 lectures ( instruction,
échantillon de donnée, et coefficient du filtre) et une écriture (résultat)
dans la mémoire => la nécessité de l’accès parallèle à la mémoire.
5
Principales distinctions entre un DSP
et un microprocesseur classique
1) Contrairement aux µp classiques, un DSP réalise le MAC en un
cycle d’horloge grâce à un circuit multiplieur.
2) Un DSP réalise plusieurs accès mémoire en un seul cycle, grâce à
l’architecture Harvard (à comparer avec l’architecture VonNeuman
des µp classiques).
6
Principales distinctions entre un DSP
et un microprocesseur classique
3) Contrairement aux µp classiques, la plupart des DSP n’ont pas
besoin de consommer des cycles d’horloge pour tester la valeur du
compteur de boucle. Ceci est effectué par un circuit on-chip.
4) Les DSP bénéficient des modes d’adressage adaptés aux
algorithmes de traitement du signal (circulaire, inversion de bits, …).
5) Dans les µp classiques, l’utilisation de la mémoire Cache et la
prédiction des branchements sont effectuées par des circuits logiques,
et peuvent changer d’un programme à l’autre. Ceci rend impossible
la prédiction du temps d’exécution d’un programme, ce qui est
primordial pour une application en temps réel.
6) La plupart des DSP sont équipés des interfaces entrée/sortie
numériques.
7
Critères de sélection des DSP
* Type: virgule fixe ou virgule flottante (voir pages suivantes)
* Vitesse: MIPS, MFLOPS, …. (voir pages suivantes)
* Quantité de mémoire interne (DRAM, ROM, CACHE, ...)
* Entrées/ Sorties et leurs vitesses respectives.
* Architecture interne, avec la présence ou non de canaux DMA.
* Consommation d’énergie, en fonction de l’application.
* Coût, Rapport performance/prix en fonction du volume de production.
* Possibilité d’utiliser un langage de haut-niveau (C en général)
* Qualité de documentation, Présence de librairies.
* Qualité du système de développement utilisé.
8
Virgule fixe, Virgule flottante
* DSP à virgule fixe: Les données sont représentées comme étant des
nombres fractionnaires à virgule fixe (exemple -1.0 à 1.0), ou comme
des entiers classiques.
* DSP à virgule flottante: Les données sont représentées en utilisant
une mantisse et un exposant: n=mantisse*2exposant.
- Sur les DSP à virgule fixe, le programmeur doit rester vigilant à chaque
étape d’un calcul . Ces DSP sont plus difficiles à programmer.
- Les DSP à virgule flottante fournissent une très grande dynamique.
- Les DSP à virgule flottante sont plus chers et consomment plus d’énergie.
♠Les virgules flottantes sont utilisées quand les coefficients varient dans le
temps (filtre adaptatif) ou quand le signal a besoin d’une grande dynamique.
9
Critères de performance
1) MIPS (Million Instructions Per Second). Problème: une
instruction ne signifie pas la même chose d’une famille à l’autre.
2) MFLOPS (Million Floating-Point Operations Per Second):
Uniquement pour les DSP à virgule flottante.
3) MACPS (MAC Par Second): nombre d’opérations MAC par
seconde.
4) Benchmark (mesure du temps d’exécution d’un ou plusieurs
programmes): Outre le temps d’exécution d’une instruction, il y a
d’autres facteurs déterminant la vitesse d’un processeur: le temps
d’accès à la mémoire, les modes d’adressage utilisés, etc. Il est
donc préférable de mesurer le temps d’exécution des programmes
standard de traitement du signal.
10
Principales applications
Téléphonie filaire: modems, codeurs de parole, annuleurs d’écho,…
Radiotéléphonie: codeurs de parole GSM, modems radio, …
Interfaces vocales: messagerie électronique, répondeurs
numériques, reconnaissance de parole, synthèse vocale,
identification du locuteur pour le contrôle d’accès, …
Militaire: guidage de missiles, navigation, communications cryptées,
traitement radar et sonar, …
Multimédias: compression de signaux audio, image et vidéo, cartes
multimédias pour PC, synthèse musicale, jeux, ...
11
Principales applications
Médical: compression d’images médicales pour l’archivage,
traitement de signaux ECG et EEG, …
Electronique automobile: équipements de contrôle moteur, aide
à la navigation, commandes vocales, …
Automatisation: surveillance et commande de machines, contrôle
des moteurs, robots, servomécanismes, …
Instrumentation: analyseurs de spectre, analyseurs de transitoires,
générateurs de fonctions, interprétation des signaux sismiques, …
12
Panorama des DSP actuels
• DSP traditionnels: bon marché, basse-performance, faible
consommation. un MAC par cycle d’horloge.
cadence 20-60 MHz. Exemples: Analog Devices ADSP-21xx, Texas Instruments
TMS320C3x, Motorola DSP560xx (répondeurs numériques, …).
cadence 70-150 MHz. Exemples: Texas TMS320C54x, Motorola DSP563xx
(télécommunication sans-fil, modems haut-débit).
. DSP améliorés: un second multiplieur et UAL. 2 MAC par cycle
d’horloge. Exemple: Lucent DSP16210 (télécommunication).
. DSP multi-issus: Plusieurs unités de calcul. Exécution de
plusieurs instructions en un cycle d’horloge. Exemple: TMS320C6455,
8 milliards MACPS! (traitement d’image). Consommation d’énergie élevée.
13
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 intégrés
• 2 ports série haut débit, 10 canaux DMA, 2 Timer.
• 3.3 v
• $10 - pour 100,000 pièces!
• Boîtier 208 broches
14
Les unités de calcul
* 3 unités: UAL, multiplieur, registre de décalage (shifter).
* Chaque unité effectue une opération par cycle.
15
Le bloc de registres (register file)
* Le bloc de registres est composé de 16 registres indépendants
de 40 bits (registres universels). Ces registres jouent l’interface
entre les bus de données et les unités de calcul et servent à
transférer les données et le résultat de calcul.
* Si on travaille sur 32 bits, les bits b0-b7 sont ignorés.
* Ces registres peuvent être utilisés en virgule fixe ou flottante.
En assembleur, ils sont notés par Fx (x=0,1,…,15) pour une
opération en flottante, et par Rx pour une opération en fixe.
Exemple: F15=12.245; F4=F2*F15;
R7=13; R0=R7+R1;
16
Unité arithmétique et logique (UAL)
* Opération sur des nombres à virgule fixe et flottante.
* Addition/soustraction/moyennage, opérations logiques,
conversion, fonctions diverses.
- Exemple d’instructions portants sur des flottants:
F2=F3+F4; F2=F3-F4; F2=ABS F3;
COMP(F1,F3); F3=(F1+F2)/2; F2=MAX(F1,F3);
F2=MIN(F1,F3); F2=FLOAT R3; R3=FIX F2;
* Chaque instruction modifie des drapeaux dans les registres
d’état (ASTAT et STKY). Ces drapeaux peuvent ensuite être
utilisés pour tester les branchements conditionnels.
17
Le multiplieur
* En virgule fixe: capable d’effectuer des MAC. Utilise
deux registres d’accumulation 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 résultat, certains drapeaux des registres d’état sont
mis à zéro ou un, et peuvent être ensuite utilisés pour tester
les branchements conditionnels.
18
Unité de décalage (Shifter)
* Travaille sur 32 bits sur des nombres à virgule fixe
* Décalages et rotations
* Mise à 1 ou 0 des bits, tests, ….
- Exemple d’instructions:
R3=LSHIFT R2 BY R1; /* R3= décalage 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 après mise à zéro du bit indiqué par R3) /*
R3=BSET R2 BY R1; /* R3= (R2 après mise à 1 du bit indiqué par R1) /*
* Selon le résultat, certains drapeaux du registre ASTAT changent.
19
Séquenceur de programme et cycle d’instruction
* Le séquenceur contrôle le déroulement du programme: linéaire,
structure de boucle, sous-programme, sauts, interruptions.
* Il faut 3 cycles d’horloge pour gérer une instruction: lecture,
décodage, exécution.
* Structure « pseudo-parallèle » ou Pipeline:
20
Sauts
1) Branchement:
JUMP addr24;
PC <= addr24 (étiquette)
2) Saut à un sous-programme
CALL addr24;
PC+1 => PC Pile
PC <= addr24
Appel:
Retour: RTS;
PC <= PC Pile
21
Branchements et sauts conditionnels
* JUMP et CALL peuvent être conditionnels:
IF condition JUMP addr24;
IF condition CALL addr24;
* Liste des conditions:
Attention: tout ne
s’applique pas à IF!
22
Structure de boucles
* Boucle avec condition de fin:
DO addr24 UNTIL condition;
* Boucle avec compteur
(registre LCNTR):
LCNTR=data16,
DO addr24 UNTIL LCE;
23
Adressage de mémoire
* La mémoire données (DM) est séparée de la mémoire programme (PM).
1) Adressage direct
Ex: R1=PM(0x009400); /* R1 est chargé par le contenu de la
mémoire programme à l’adresse 0x009400 */
DM(0x0000C002)=R4; /* R4 est copié dans un emplacement
de la mémoire données à l’adresse 0x0000C002 */
2) Adressage indirect
L’adresse est générée par une série de registres, appelés registres DAG
(Data Address Generator):
DAG1 (I0-I7, M0-M7, B0-B7, L0-L7) : adressage de mémoire données.
DAG2 ( I8-I15, M8-M15, B8-B15, L8-L15): adressage de mémoire prog.
24
Adressage de mémoire (suite)
* Détail des registres:
I: registre d’Index M: registre d’incrément (Modifieur)
B: registre d’adresse de Base L: registre de Longueur
- Les registres B et L sont utilisés pour gérer les buffers circulaires.
- Les registres I et M sont utilisés pour l’adressage indirect. Les
registres I fonctionnent comme des pointeurs aux mémoires, et les
registres M contiennent la valeur d’incrément des pointeurs.
* Opérations de DAGs:
- Adressage avec pré-modification ou post-modification
- Adressage circulaire
- Adressage par inversion de bits (utilisé dans le calcul de TFR)
25
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 mémoire données à
l’adresse indiquée par M0+I1. Registre I1 n’est pas modifié.
- Syntaxe: le registre M précède le registre I.
- Le registre M peut être remplacé par une valeur immédiate:
Ex: R2=PM(4, I9); /* adresse= I9+4 */
26
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 mémoire données à l’adresse
indiquée par I1. Ensuite, I1 est modifié à I1+M0.
- Syntaxe: le registre I précède le registre M.
- Le registre M peut être remplacé par une valeur immédiate.
- Le registre L correspondant au registre I utilisé (L1 dans
l’exemple ci-dessus) doit avoir une valeur nulle.
27
Buffer circulaire
• Table de valeurs avec historique fini
• Adressage post-modifié + utilisation des registres B et L.
28
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 l’adresse du début du
buffer.
3) Charger un registre M (dans le même DAG) avec le pas
d’incrément.
- Le registre I correspondant au registre L et B est automatiquement
initialisé avec le contenu du registre B.
4) Utiliser le mode d’adressage avec post-modification.
-Le registre I détermine l’adresse effective. Après la modification, si
l’adresse est en dehors du buffer, Le DAG corrige la valeur de I pour
retourner dans le buffer.
29
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 négatif:
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 générée en cas de dépassement du buffer circulaire.
30
Assembleur de ADSP-21065L
- Le langage d’assemblage ou l’assembleur 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 précédées par une étiquette (suite de
caractères terminée par :). Deux instructions exécutées en parallèle sont séparées
par une (,).
2) Directives d’assemblage: des ordres donnés au programme. Les directives
sont précédées par un point (.) et se terminent avec un point-virgule (;).
3) Préprocesseurs: commandes exécutées avant la traduction. Précédées par (#).
4) Commentaires: ignorés par le traducteur. Précédés par /* et terminés par */.
- L’assembleur ne fait pas la distinction entre minuscule et majuscule.
31
Instructions
1) Calcul et transfert: une opération de calcul, éventuellement
en parallèle avec une ou deux opérations de transfert.
- La plupart des instructions de ce groupe peuvent être précédées
par IF cond où cond est l’un des mnémoniques du tableau de la
page 21.
Exemple: IF eq F1=F5*F12, F11=PM(I10, 40);
- Dans les opérations de calcul, les opérandes sont des registres
(ou les valeurs immédiates pour certaines opérations de
décalage), mais jamais le contenu de la mémoire.
- Pour effectuer une opération de calcul sur le contenu de la
mémoire, il faut d’abord le transférer dans un registre.
32
Instructions (suite)
2) Instructions de contrôle: servent à contrôler l’exécution du
programme : JUMP, CALL, RTS, RTI, DO UNTIL.
- La plupart des instructions de ce groupe peuvent être
précédées par IF cond. La structure IF cond, ELSE peut être
aussi utilsée pour certaines instructions.
Ex: IF lt JUMP suite;
IF eq RTS, ELSE R0=LSHIFT R1 BY R15
- Certaines instructions de ce groupe peuvent être exécutées en
parallèle avec les instructions de calcul.
Ex: JUMP(M8,I12), R6=R6-1;
33
Instructions (suite)
3) Transfert des valeurs immédiates: ces instructions sont
utilisées pour effectuer un transfert entre un registre et la
mémoire, ou pour copier une valeur immédiate dans un registre
ou dans la mémoire.
Ex: ASTAT=DM(0x489060);
DM(I4, M0)=19304;
4) Divers: manipulations des bits dans un registre de système,
manipulation de pile (PUSH, POP), NOP (instruction qui ne fait
rien), ….
34
Directives d’assembleur
- Contrairement aux instructions, les directives ne génèrent pas de code binaire.
1) Directives .segment et .endseg : sont utilisées pour marquer le début et la fin
d’un segment, c-à-d une section des emplacements contigus dans la mémoire
programme ou la mémoire données. La syntaxe générale est:
.SEGMENT/type nom_de_segment;
[contenu du segment]
.ENDSEG;
où type est PM pour la mémoire programme et DM pour la mémoire données.
Le nom de segment doit contenir au plus 8 caractères.
2) Directive .var : Déclaration d’une variable ou un tableau. On peut aussi
initialiser la variable déclarée.
.VAR nom1=init1, nom2, nom3=init3;
.VAR nom_de_tableau1[longueur]=init1, init2, …, initn;
35
Directives d’assembleur (suite)
3) Directive .global : utilisée pour exporter un symbole. Le symbole exporté sera
reconnu par les autres programmes au moment de l’édition de liens. La syntaxe
générale est
.GLOBAL symbole;
Ex: .VAR coeffs[10];
.GLOBAL coeffs;
4) Directive .extern : utilisée pour importer un symbole, défini comme un
GLOBAL dans un autre programme. La syntaxe général est
.EXTERN symbole;
Ex: .EXTERN coeffs;
5) Divers: .precision, .round, .port, .newpage
36
Préprocesseurs
Les services rendus par le préprocesseur sont: l’inclusion de
fichier source, le traitement de macros et l’assemblage
conditionnel. On ne présente ici que les deux les plus importants:
1) Inclusion du contenu d’un fichier:
#include ''nom_de_fichier''
2) Définition d’un macro sans paramètres
#define nom reste_de_la ligne
Dans toute la suite du programme, toute nouvelle occurrence de
nom est remplacée par reste_de_la ligne.
Ex: #define ORDRE 5
37
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;
38
Schéma bloc général du DSP
39
Kit de développement EZ-LAB
• Carte EZ-LAB
- DSP ADSP21065L
- Codec AD1819A
- Interface RS232
(vers PC)
- EPROM 1M*8bits
- SDRAM 1M*32bits
40
Conversion analogique-numérique
* Utilise le CODEC AD1819A
- Conversion sur 16bits stéréo
- Plusieurs entrées et sorties analogiques (multiplexage)
- Fréquence d’échantillonnage de 7kHz à 48kHz
- Bande passante en sortie de 20Hz à 20kHz
- Amplificateurs et atténuateurs internes programmables
* Communication série haut débit avec le DSP (SPORT1)
- Initialisation du DMA et SPORT
- Initialisation du CODEC
- Gestion des échantillons: routine d’interruption
41
Environnement de développement
Saisie des programmes
Compilation
Transfert vers la cible
Mise au point
Exécution Code DSP
Hôte:
station PC
Cible:
Kit EZ-LAB
42
Gestion du projet
• Edition des
programmes source
en assembleur
• Compilation
• Edition de liens
(logiciel Visual
DSP)
43
Debugger
• Permet la mise au
point du programme
• Simulation ou
contrôle de la platine
EZ-Lab
44
Références
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 User’s Manual, même adresse.
6) VisualDSP++ 3.5 User's Guide for 32 bits processors, même adresse.
7) ADSP-21065L EZ-LAB Development System Manual, Analog Devices.

Contenu connexe

Tendances

DSP
DSPDSP
Cours en maintenance pc
Cours  en maintenance pcCours  en maintenance pc
Cours en maintenance pc
mohamednacim
 
Programmation de systèmes embarqués : Introduction aux systèmes embarqués
Programmation de systèmes embarqués : Introduction aux systèmes embarquésProgrammation de systèmes embarqués : Introduction aux systèmes embarqués
Programmation de systèmes embarqués : Introduction aux systèmes embarqués
ECAM Brussels Engineering School
 
Embedded Systems
Embedded SystemsEmbedded Systems
Embedded Systems
Sara Morgan
 
Conception d'un objet électronique : boitier pour QCM
Conception d'un objet électronique : boitier pour QCMConception d'un objet électronique : boitier pour QCM
Conception d'un objet électronique : boitier pour QCM
Peronnin Eric
 
Réseaux mobiles
Réseaux mobiles Réseaux mobiles
Réseaux mobiles
Hibatallah Aouadni
 
Pic 16f877 ..
Pic 16f877 ..Pic 16f877 ..
Pic 16f877 ..
sunprass
 
Chapitre 3 - Protocole Bus CAN (2020/2021
Chapitre 3 - Protocole Bus CAN (2020/2021Chapitre 3 - Protocole Bus CAN (2020/2021
Chapitre 3 - Protocole Bus CAN (2020/2021
Tarik Zakaria Benmerar
 
Embarqués temps réel
Embarqués temps réelEmbarqués temps réel
Embarqués temps réel
mikhailether
 
Systeme embarque td1
Systeme embarque td1Systeme embarque td1
Systeme embarque td1
SinGuy
 
Présentation pfe finale
Présentation pfe finalePrésentation pfe finale
Présentation pfe finale
Ahmed Abdeljelil
 
Présentation Cdma, Multiplexage CDMA, principes de Code et cas d'exemple
Présentation Cdma, Multiplexage CDMA, principes de Code et cas d'exemplePrésentation Cdma, Multiplexage CDMA, principes de Code et cas d'exemple
Présentation Cdma, Multiplexage CDMA, principes de Code et cas d'exemple
Max Benana
 
Processeur FPGA
Processeur FPGAProcesseur FPGA
Processeur FPGA
Hassan KIBOU
 
Les systèmes embarqués arduino
Les systèmes embarqués arduinoLes systèmes embarqués arduino
Les systèmes embarqués arduino
CHERIET Mohammed El Amine
 
chap3 numerisation_des_signaux
chap3 numerisation_des_signauxchap3 numerisation_des_signaux
chap3 numerisation_des_signaux
BAKKOURY Jamila
 
Formation stm32
Formation stm32Formation stm32
Formation stm32
Hamza RAJHI
 
Arm système embarqué
Arm système embarquéArm système embarqué
Arm système embarqué
Houssem Rouini
 
présentation STM32
présentation STM32présentation STM32
présentation STM32
hatem ben tayeb
 

Tendances (20)

DSP
DSPDSP
DSP
 
Cours en maintenance pc
Cours  en maintenance pcCours  en maintenance pc
Cours en maintenance pc
 
Programmation de systèmes embarqués : Introduction aux systèmes embarqués
Programmation de systèmes embarqués : Introduction aux systèmes embarquésProgrammation de systèmes embarqués : Introduction aux systèmes embarqués
Programmation de systèmes embarqués : Introduction aux systèmes embarqués
 
Embedded Systems
Embedded SystemsEmbedded Systems
Embedded Systems
 
Conception d'un objet électronique : boitier pour QCM
Conception d'un objet électronique : boitier pour QCMConception d'un objet électronique : boitier pour QCM
Conception d'un objet électronique : boitier pour QCM
 
Réseaux mobiles
Réseaux mobiles Réseaux mobiles
Réseaux mobiles
 
Pic 16f877 ..
Pic 16f877 ..Pic 16f877 ..
Pic 16f877 ..
 
Chapitre 3 - Protocole Bus CAN (2020/2021
Chapitre 3 - Protocole Bus CAN (2020/2021Chapitre 3 - Protocole Bus CAN (2020/2021
Chapitre 3 - Protocole Bus CAN (2020/2021
 
Embarqués temps réel
Embarqués temps réelEmbarqués temps réel
Embarqués temps réel
 
Systeme embarque td1
Systeme embarque td1Systeme embarque td1
Systeme embarque td1
 
Présentation pfe finale
Présentation pfe finalePrésentation pfe finale
Présentation pfe finale
 
Présentation Cdma, Multiplexage CDMA, principes de Code et cas d'exemple
Présentation Cdma, Multiplexage CDMA, principes de Code et cas d'exemplePrésentation Cdma, Multiplexage CDMA, principes de Code et cas d'exemple
Présentation Cdma, Multiplexage CDMA, principes de Code et cas d'exemple
 
Traitement de signal
Traitement de signalTraitement de signal
Traitement de signal
 
Processeur FPGA
Processeur FPGAProcesseur FPGA
Processeur FPGA
 
Les systèmes embarqués arduino
Les systèmes embarqués arduinoLes systèmes embarqués arduino
Les systèmes embarqués arduino
 
Cours fondement du multimedia
Cours fondement du multimediaCours fondement du multimedia
Cours fondement du multimedia
 
chap3 numerisation_des_signaux
chap3 numerisation_des_signauxchap3 numerisation_des_signaux
chap3 numerisation_des_signaux
 
Formation stm32
Formation stm32Formation stm32
Formation stm32
 
Arm système embarqué
Arm système embarquéArm système embarqué
Arm système embarqué
 
présentation STM32
présentation STM32présentation STM32
présentation STM32
 

Similaire à Coursdsp tdi

Cours Benhabiles TMS320.pdf
Cours Benhabiles TMS320.pdfCours Benhabiles TMS320.pdf
Cours Benhabiles TMS320.pdf
HouBou3
 
9 - CPU_uhghfhffdttgfffgfdfffghhggfC.ppt
9 - CPU_uhghfhffdttgfffgfdfffghhggfC.ppt9 - CPU_uhghfhffdttgfffgfdfffghhggfC.ppt
9 - CPU_uhghfhffdttgfffgfdfffghhggfC.ppt
josue25052001
 
Microcontrôleur PIC Microchip part1/2
Microcontrôleur PIC Microchip part1/2Microcontrôleur PIC Microchip part1/2
Microcontrôleur PIC Microchip part1/2
Mohammed Lamghari
 
COURS VHDL PROGRAMMATION ET _ETAPES pour comprendre
COURS VHDL   PROGRAMMATION ET _ETAPES pour comprendreCOURS VHDL   PROGRAMMATION ET _ETAPES pour comprendre
COURS VHDL PROGRAMMATION ET _ETAPES pour comprendre
MariamHafsa
 
Cours_SAM(M14).ppt
Cours_SAM(M14).pptCours_SAM(M14).ppt
Cours_SAM(M14).ppt
Abdo Brahmi
 
Cours_SAM(M14).ppt
Cours_SAM(M14).pptCours_SAM(M14).ppt
Cours_SAM(M14).ppt
Abdo Brahmi
 
Exigences du system d’acquisition de données
Exigences du system d’acquisition de donnéesExigences du system d’acquisition de données
Exigences du system d’acquisition de données
itaniabed
 
Cours de PIC Généralités.pdf
Cours de PIC Généralités.pdfCours de PIC Généralités.pdf
Cours de PIC Généralités.pdf
AliRami3
 
Micocontroleur16 fxxx (1)
Micocontroleur16 fxxx (1)Micocontroleur16 fxxx (1)
Micocontroleur16 fxxx (1)
Karim Touati
 
Généralités sur les microcontrôleurs et PicBasic
Généralités sur les microcontrôleurs et PicBasicGénéralités sur les microcontrôleurs et PicBasic
Généralités sur les microcontrôleurs et PicBasic
morin moli
 
8. introduction a larchitecture arm
8. introduction a larchitecture arm8. introduction a larchitecture arm
8. introduction a larchitecture arm
Abdelwahab Wahib
 
notions de routage IP
notions de routage IPnotions de routage IP
notions de routage IP
mohamednacim
 
Cours Systemes embarques.pptx
Cours Systemes embarques.pptxCours Systemes embarques.pptx
Cours Systemes embarques.pptx
SihemNasri3
 
cours_carte_d_acquitition.pdf
cours_carte_d_acquitition.pdfcours_carte_d_acquitition.pdf
cours_carte_d_acquitition.pdf
tarek784863
 
cours2 ARM.pptx
cours2 ARM.pptxcours2 ARM.pptx
cours2 ARM.pptx
BesmaOthmaniKrifa
 
Microcontrôleur
MicrocontrôleurMicrocontrôleur
Microcontrôleur
Peronnin Eric
 
Exposé Le Microprocesseur
Exposé   Le MicroprocesseurExposé   Le Microprocesseur
Exposé Le Microprocesseur
TheCrazyMan
 
Pic 16 f84
Pic 16 f84Pic 16 f84
Pic 16 f84
babaoui mohamed
 

Similaire à Coursdsp tdi (20)

Cours Benhabiles TMS320.pdf
Cours Benhabiles TMS320.pdfCours Benhabiles TMS320.pdf
Cours Benhabiles TMS320.pdf
 
dsp.ppt
dsp.pptdsp.ppt
dsp.ppt
 
9 - CPU_uhghfhffdttgfffgfdfffghhggfC.ppt
9 - CPU_uhghfhffdttgfffgfdfffghhggfC.ppt9 - CPU_uhghfhffdttgfffgfdfffghhggfC.ppt
9 - CPU_uhghfhffdttgfffgfdfffghhggfC.ppt
 
Microcontrôleur PIC Microchip part1/2
Microcontrôleur PIC Microchip part1/2Microcontrôleur PIC Microchip part1/2
Microcontrôleur PIC Microchip part1/2
 
COURS VHDL PROGRAMMATION ET _ETAPES pour comprendre
COURS VHDL   PROGRAMMATION ET _ETAPES pour comprendreCOURS VHDL   PROGRAMMATION ET _ETAPES pour comprendre
COURS VHDL PROGRAMMATION ET _ETAPES pour comprendre
 
Cours_SAM(M14).ppt
Cours_SAM(M14).pptCours_SAM(M14).ppt
Cours_SAM(M14).ppt
 
Cours_SAM(M14).ppt
Cours_SAM(M14).pptCours_SAM(M14).ppt
Cours_SAM(M14).ppt
 
Exigences du system d’acquisition de données
Exigences du system d’acquisition de donnéesExigences du system d’acquisition de données
Exigences du system d’acquisition de données
 
Cours de PIC Généralités.pdf
Cours de PIC Généralités.pdfCours de PIC Généralités.pdf
Cours de PIC Généralités.pdf
 
Micocontroleur16 fxxx (1)
Micocontroleur16 fxxx (1)Micocontroleur16 fxxx (1)
Micocontroleur16 fxxx (1)
 
Généralités sur les microcontrôleurs et PicBasic
Généralités sur les microcontrôleurs et PicBasicGénéralités sur les microcontrôleurs et PicBasic
Généralités sur les microcontrôleurs et PicBasic
 
8. introduction a larchitecture arm
8. introduction a larchitecture arm8. introduction a larchitecture arm
8. introduction a larchitecture arm
 
Chap1 intro 1pp
Chap1 intro 1ppChap1 intro 1pp
Chap1 intro 1pp
 
notions de routage IP
notions de routage IPnotions de routage IP
notions de routage IP
 
Cours Systemes embarques.pptx
Cours Systemes embarques.pptxCours Systemes embarques.pptx
Cours Systemes embarques.pptx
 
cours_carte_d_acquitition.pdf
cours_carte_d_acquitition.pdfcours_carte_d_acquitition.pdf
cours_carte_d_acquitition.pdf
 
cours2 ARM.pptx
cours2 ARM.pptxcours2 ARM.pptx
cours2 ARM.pptx
 
Microcontrôleur
MicrocontrôleurMicrocontrôleur
Microcontrôleur
 
Exposé Le Microprocesseur
Exposé   Le MicroprocesseurExposé   Le Microprocesseur
Exposé Le Microprocesseur
 
Pic 16 f84
Pic 16 f84Pic 16 f84
Pic 16 f84
 

Coursdsp tdi

  • 1. Processeurs de traitement des signaux (DSP) Université Paul Sabatier Shahram.Hosseini@ast.obs-mip.fr février 2007
  • 2. 2 DSP * Un DSP (Digital Signal Processor) est un type particulier de microprocesseur, destiné au traitement numérique du signal.
  • 3. 3 Avantages par rapport à un système analogique • Stabilité: les composants analogiques varient en fonction des variables d’environnement (température, vieillissement, …). • Reproductibilité: les valeurs des composants analogiques sont définies avec une marge de précision ==> aucun montage analogique n’est strictement reproductible à l’identique. • Souplesse de la programmation: après le montage, il est difficile de changer les caractéristiques d’un système analogique. • Possibilités propres au système numérique: certaines fonctions de traitement du signal sont difficiles à implanter en analogique, voire irréalisables.
  • 4. 4 Un exemple: filtre RIF ∑ − = −= 1 0 )()( N i iaikxky - Pour réaliser le filtrage en temps réel, la durée du traitement doit être inférieure à la période d’échantillonnage. * Chaque étape nécessite une multiplication puis une addition, et enfin l’écriture en mémoire du résultat. Ce type d’opération est nommé MAC (Multiply and Accumulate) => la nécessité de l’exécution rapide de l’opération MAC. * L’exécution d’une opération MAC nécessite 3 lectures ( instruction, échantillon de donnée, et coefficient du filtre) et une écriture (résultat) dans la mémoire => la nécessité de l’accès parallèle à la mémoire.
  • 5. 5 Principales distinctions entre un DSP et un microprocesseur classique 1) Contrairement aux µp classiques, un DSP réalise le MAC en un cycle d’horloge grâce à un circuit multiplieur. 2) Un DSP réalise plusieurs accès mémoire en un seul cycle, grâce à l’architecture Harvard (à comparer avec l’architecture VonNeuman des µp classiques).
  • 6. 6 Principales distinctions entre un DSP et un microprocesseur classique 3) Contrairement aux µp classiques, la plupart des DSP n’ont pas besoin de consommer des cycles d’horloge pour tester la valeur du compteur de boucle. Ceci est effectué par un circuit on-chip. 4) Les DSP bénéficient des modes d’adressage adaptés aux algorithmes de traitement du signal (circulaire, inversion de bits, …). 5) Dans les µp classiques, l’utilisation de la mémoire Cache et la prédiction des branchements sont effectuées par des circuits logiques, et peuvent changer d’un programme à l’autre. Ceci rend impossible la prédiction du temps d’exécution d’un programme, ce qui est primordial pour une application en temps réel. 6) La plupart des DSP sont équipés des interfaces entrée/sortie numériques.
  • 7. 7 Critères de sélection des DSP * Type: virgule fixe ou virgule flottante (voir pages suivantes) * Vitesse: MIPS, MFLOPS, …. (voir pages suivantes) * Quantité de mémoire interne (DRAM, ROM, CACHE, ...) * Entrées/ Sorties et leurs vitesses respectives. * Architecture interne, avec la présence ou non de canaux DMA. * Consommation d’énergie, en fonction de l’application. * Coût, Rapport performance/prix en fonction du volume de production. * Possibilité d’utiliser un langage de haut-niveau (C en général) * Qualité de documentation, Présence de librairies. * Qualité du système de développement utilisé.
  • 8. 8 Virgule fixe, Virgule flottante * DSP à virgule fixe: Les données sont représentées comme étant des nombres fractionnaires à virgule fixe (exemple -1.0 à 1.0), ou comme des entiers classiques. * DSP à virgule flottante: Les données sont représentées en utilisant une mantisse et un exposant: n=mantisse*2exposant. - Sur les DSP à virgule fixe, le programmeur doit rester vigilant à chaque étape d’un calcul . Ces DSP sont plus difficiles à programmer. - Les DSP à virgule flottante fournissent une très grande dynamique. - Les DSP à virgule flottante sont plus chers et consomment plus d’énergie. ♠Les virgules flottantes sont utilisées quand les coefficients varient dans le temps (filtre adaptatif) ou quand le signal a besoin d’une grande dynamique.
  • 9. 9 Critères de performance 1) MIPS (Million Instructions Per Second). Problème: une instruction ne signifie pas la même chose d’une famille à l’autre. 2) MFLOPS (Million Floating-Point Operations Per Second): Uniquement pour les DSP à virgule flottante. 3) MACPS (MAC Par Second): nombre d’opérations MAC par seconde. 4) Benchmark (mesure du temps d’exécution d’un ou plusieurs programmes): Outre le temps d’exécution d’une instruction, il y a d’autres facteurs déterminant la vitesse d’un processeur: le temps d’accès à la mémoire, les modes d’adressage utilisés, etc. Il est donc préférable de mesurer le temps d’exécution des programmes standard de traitement du signal.
  • 10. 10 Principales applications Téléphonie filaire: modems, codeurs de parole, annuleurs d’écho,… Radiotéléphonie: codeurs de parole GSM, modems radio, … Interfaces vocales: messagerie électronique, répondeurs numériques, reconnaissance de parole, synthèse vocale, identification du locuteur pour le contrôle d’accès, … Militaire: guidage de missiles, navigation, communications cryptées, traitement radar et sonar, … Multimédias: compression de signaux audio, image et vidéo, cartes multimédias pour PC, synthèse musicale, jeux, ...
  • 11. 11 Principales applications Médical: compression d’images médicales pour l’archivage, traitement de signaux ECG et EEG, … Electronique automobile: équipements de contrôle moteur, aide à la navigation, commandes vocales, … Automatisation: surveillance et commande de machines, contrôle des moteurs, robots, servomécanismes, … Instrumentation: analyseurs de spectre, analyseurs de transitoires, générateurs de fonctions, interprétation des signaux sismiques, …
  • 12. 12 Panorama des DSP actuels • DSP traditionnels: bon marché, basse-performance, faible consommation. un MAC par cycle d’horloge. cadence 20-60 MHz. Exemples: Analog Devices ADSP-21xx, Texas Instruments TMS320C3x, Motorola DSP560xx (répondeurs numériques, …). cadence 70-150 MHz. Exemples: Texas TMS320C54x, Motorola DSP563xx (télécommunication sans-fil, modems haut-débit). . DSP améliorés: un second multiplieur et UAL. 2 MAC par cycle d’horloge. Exemple: Lucent DSP16210 (télécommunication). . DSP multi-issus: Plusieurs unités de calcul. Exécution de plusieurs instructions en un cycle d’horloge. Exemple: TMS320C6455, 8 milliards MACPS! (traitement d’image). Consommation d’énergie élevée.
  • 13. 13 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 intégrés • 2 ports série haut débit, 10 canaux DMA, 2 Timer. • 3.3 v • $10 - pour 100,000 pièces! • Boîtier 208 broches
  • 14. 14 Les unités de calcul * 3 unités: UAL, multiplieur, registre de décalage (shifter). * Chaque unité effectue une opération par cycle.
  • 15. 15 Le bloc de registres (register file) * Le bloc de registres est composé de 16 registres indépendants de 40 bits (registres universels). Ces registres jouent l’interface entre les bus de données et les unités de calcul et servent à transférer les données et le résultat de calcul. * Si on travaille sur 32 bits, les bits b0-b7 sont ignorés. * Ces registres peuvent être utilisés en virgule fixe ou flottante. En assembleur, ils sont notés par Fx (x=0,1,…,15) pour une opération en flottante, et par Rx pour une opération en fixe. Exemple: F15=12.245; F4=F2*F15; R7=13; R0=R7+R1;
  • 16. 16 Unité arithmétique et logique (UAL) * Opération sur des nombres à virgule fixe et flottante. * Addition/soustraction/moyennage, opérations logiques, conversion, fonctions diverses. - Exemple d’instructions portants sur des flottants: F2=F3+F4; F2=F3-F4; F2=ABS F3; COMP(F1,F3); F3=(F1+F2)/2; F2=MAX(F1,F3); F2=MIN(F1,F3); F2=FLOAT R3; R3=FIX F2; * Chaque instruction modifie des drapeaux dans les registres d’état (ASTAT et STKY). Ces drapeaux peuvent ensuite être utilisés pour tester les branchements conditionnels.
  • 17. 17 Le multiplieur * En virgule fixe: capable d’effectuer des MAC. Utilise deux registres d’accumulation 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 résultat, certains drapeaux des registres d’état sont mis à zéro ou un, et peuvent être ensuite utilisés pour tester les branchements conditionnels.
  • 18. 18 Unité de décalage (Shifter) * Travaille sur 32 bits sur des nombres à virgule fixe * Décalages et rotations * Mise à 1 ou 0 des bits, tests, …. - Exemple d’instructions: R3=LSHIFT R2 BY R1; /* R3= décalage 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 après mise à zéro du bit indiqué par R3) /* R3=BSET R2 BY R1; /* R3= (R2 après mise à 1 du bit indiqué par R1) /* * Selon le résultat, certains drapeaux du registre ASTAT changent.
  • 19. 19 Séquenceur de programme et cycle d’instruction * Le séquenceur contrôle le déroulement du programme: linéaire, structure de boucle, sous-programme, sauts, interruptions. * Il faut 3 cycles d’horloge pour gérer une instruction: lecture, décodage, exécution. * Structure « pseudo-parallèle » ou Pipeline:
  • 20. 20 Sauts 1) Branchement: JUMP addr24; PC <= addr24 (étiquette) 2) Saut à un sous-programme CALL addr24; PC+1 => PC Pile PC <= addr24 Appel: Retour: RTS; PC <= PC Pile
  • 21. 21 Branchements et sauts conditionnels * JUMP et CALL peuvent être conditionnels: IF condition JUMP addr24; IF condition CALL addr24; * Liste des conditions: Attention: tout ne s’applique pas à IF!
  • 22. 22 Structure de boucles * Boucle avec condition de fin: DO addr24 UNTIL condition; * Boucle avec compteur (registre LCNTR): LCNTR=data16, DO addr24 UNTIL LCE;
  • 23. 23 Adressage de mémoire * La mémoire données (DM) est séparée de la mémoire programme (PM). 1) Adressage direct Ex: R1=PM(0x009400); /* R1 est chargé par le contenu de la mémoire programme à l’adresse 0x009400 */ DM(0x0000C002)=R4; /* R4 est copié dans un emplacement de la mémoire données à l’adresse 0x0000C002 */ 2) Adressage indirect L’adresse est générée par une série de registres, appelés registres DAG (Data Address Generator): DAG1 (I0-I7, M0-M7, B0-B7, L0-L7) : adressage de mémoire données. DAG2 ( I8-I15, M8-M15, B8-B15, L8-L15): adressage de mémoire prog.
  • 24. 24 Adressage de mémoire (suite) * Détail des registres: I: registre d’Index M: registre d’incrément (Modifieur) B: registre d’adresse de Base L: registre de Longueur - Les registres B et L sont utilisés pour gérer les buffers circulaires. - Les registres I et M sont utilisés pour l’adressage indirect. Les registres I fonctionnent comme des pointeurs aux mémoires, et les registres M contiennent la valeur d’incrément des pointeurs. * Opérations de DAGs: - Adressage avec pré-modification ou post-modification - Adressage circulaire - Adressage par inversion de bits (utilisé dans le calcul de TFR)
  • 25. 25 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 mémoire données à l’adresse indiquée par M0+I1. Registre I1 n’est pas modifié. - Syntaxe: le registre M précède le registre I. - Le registre M peut être remplacé par une valeur immédiate: Ex: R2=PM(4, I9); /* adresse= I9+4 */
  • 26. 26 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 mémoire données à l’adresse indiquée par I1. Ensuite, I1 est modifié à I1+M0. - Syntaxe: le registre I précède le registre M. - Le registre M peut être remplacé par une valeur immédiate. - Le registre L correspondant au registre I utilisé (L1 dans l’exemple ci-dessus) doit avoir une valeur nulle.
  • 27. 27 Buffer circulaire • Table de valeurs avec historique fini • Adressage post-modifié + utilisation des registres B et L.
  • 28. 28 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 l’adresse du début du buffer. 3) Charger un registre M (dans le même DAG) avec le pas d’incrément. - Le registre I correspondant au registre L et B est automatiquement initialisé avec le contenu du registre B. 4) Utiliser le mode d’adressage avec post-modification. -Le registre I détermine l’adresse effective. Après la modification, si l’adresse est en dehors du buffer, Le DAG corrige la valeur de I pour retourner dans le buffer.
  • 29. 29 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 négatif: 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 générée en cas de dépassement du buffer circulaire.
  • 30. 30 Assembleur de ADSP-21065L - Le langage d’assemblage ou l’assembleur 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 précédées par une étiquette (suite de caractères terminée par :). Deux instructions exécutées en parallèle sont séparées par une (,). 2) Directives d’assemblage: des ordres donnés au programme. Les directives sont précédées par un point (.) et se terminent avec un point-virgule (;). 3) Préprocesseurs: commandes exécutées avant la traduction. Précédées par (#). 4) Commentaires: ignorés par le traducteur. Précédés par /* et terminés par */. - L’assembleur ne fait pas la distinction entre minuscule et majuscule.
  • 31. 31 Instructions 1) Calcul et transfert: une opération de calcul, éventuellement en parallèle avec une ou deux opérations de transfert. - La plupart des instructions de ce groupe peuvent être précédées par IF cond où cond est l’un des mnémoniques du tableau de la page 21. Exemple: IF eq F1=F5*F12, F11=PM(I10, 40); - Dans les opérations de calcul, les opérandes sont des registres (ou les valeurs immédiates pour certaines opérations de décalage), mais jamais le contenu de la mémoire. - Pour effectuer une opération de calcul sur le contenu de la mémoire, il faut d’abord le transférer dans un registre.
  • 32. 32 Instructions (suite) 2) Instructions de contrôle: servent à contrôler l’exécution du programme : JUMP, CALL, RTS, RTI, DO UNTIL. - La plupart des instructions de ce groupe peuvent être précédées par IF cond. La structure IF cond, ELSE peut être aussi utilsée pour certaines instructions. Ex: IF lt JUMP suite; IF eq RTS, ELSE R0=LSHIFT R1 BY R15 - Certaines instructions de ce groupe peuvent être exécutées en parallèle avec les instructions de calcul. Ex: JUMP(M8,I12), R6=R6-1;
  • 33. 33 Instructions (suite) 3) Transfert des valeurs immédiates: ces instructions sont utilisées pour effectuer un transfert entre un registre et la mémoire, ou pour copier une valeur immédiate dans un registre ou dans la mémoire. Ex: ASTAT=DM(0x489060); DM(I4, M0)=19304; 4) Divers: manipulations des bits dans un registre de système, manipulation de pile (PUSH, POP), NOP (instruction qui ne fait rien), ….
  • 34. 34 Directives d’assembleur - Contrairement aux instructions, les directives ne génèrent pas de code binaire. 1) Directives .segment et .endseg : sont utilisées pour marquer le début et la fin d’un segment, c-à-d une section des emplacements contigus dans la mémoire programme ou la mémoire données. La syntaxe générale est: .SEGMENT/type nom_de_segment; [contenu du segment] .ENDSEG; où type est PM pour la mémoire programme et DM pour la mémoire données. Le nom de segment doit contenir au plus 8 caractères. 2) Directive .var : Déclaration d’une variable ou un tableau. On peut aussi initialiser la variable déclarée. .VAR nom1=init1, nom2, nom3=init3; .VAR nom_de_tableau1[longueur]=init1, init2, …, initn;
  • 35. 35 Directives d’assembleur (suite) 3) Directive .global : utilisée pour exporter un symbole. Le symbole exporté sera reconnu par les autres programmes au moment de l’édition de liens. La syntaxe générale est .GLOBAL symbole; Ex: .VAR coeffs[10]; .GLOBAL coeffs; 4) Directive .extern : utilisée pour importer un symbole, défini comme un GLOBAL dans un autre programme. La syntaxe général est .EXTERN symbole; Ex: .EXTERN coeffs; 5) Divers: .precision, .round, .port, .newpage
  • 36. 36 Préprocesseurs Les services rendus par le préprocesseur sont: l’inclusion de fichier source, le traitement de macros et l’assemblage conditionnel. On ne présente ici que les deux les plus importants: 1) Inclusion du contenu d’un fichier: #include ''nom_de_fichier'' 2) Définition d’un macro sans paramètres #define nom reste_de_la ligne Dans toute la suite du programme, toute nouvelle occurrence de nom est remplacée par reste_de_la ligne. Ex: #define ORDRE 5
  • 37. 37 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;
  • 39. 39 Kit de développement EZ-LAB • Carte EZ-LAB - DSP ADSP21065L - Codec AD1819A - Interface RS232 (vers PC) - EPROM 1M*8bits - SDRAM 1M*32bits
  • 40. 40 Conversion analogique-numérique * Utilise le CODEC AD1819A - Conversion sur 16bits stéréo - Plusieurs entrées et sorties analogiques (multiplexage) - Fréquence d’échantillonnage de 7kHz à 48kHz - Bande passante en sortie de 20Hz à 20kHz - Amplificateurs et atténuateurs internes programmables * Communication série haut débit avec le DSP (SPORT1) - Initialisation du DMA et SPORT - Initialisation du CODEC - Gestion des échantillons: routine d’interruption
  • 41. 41 Environnement de développement Saisie des programmes Compilation Transfert vers la cible Mise au point Exécution Code DSP Hôte: station PC Cible: Kit EZ-LAB
  • 42. 42 Gestion du projet • Edition des programmes source en assembleur • Compilation • Edition de liens (logiciel Visual DSP)
  • 43. 43 Debugger • Permet la mise au point du programme • Simulation ou contrôle de la platine EZ-Lab
  • 44. 44 Références 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 User’s Manual, même adresse. 6) VisualDSP++ 3.5 User's Guide for 32 bits processors, même adresse. 7) ADSP-21065L EZ-LAB Development System Manual, Analog Devices.