Processeurs de traitement dessignaux (DSP)Université Paul SabatierShahram.Hosseini@ast.obs-mip.fr février 2007
2DSP* Un DSP (Digital Signal Processor) est un type particulier demicroprocesseur, destiné au traitement numérique du sign...
3Avantages par rapport à un système analogique• Stabilité: les composants analogiques varient en fonction desvariables d’e...
4Un exemple: filtre RIF∑−=−=10)()(Niiaikxky- Pour réaliser le filtrage en temps réel, la durée du traitement doitêtre infé...
5Principales distinctions entre un DSPet un microprocesseur classique1) Contrairement aux µp classiques, un DSP réalise le...
6Principales distinctions entre un DSPet un microprocesseur classique3) Contrairement aux µp classiques, la plupart des DS...
7Critères de sélection des DSP* Type: virgule fixe ou virgule flottante (voir pages suivantes)* Vitesse: MIPS, MFLOPS, …. ...
8Virgule fixe, Virgule flottante* DSP à virgule fixe: Les données sont représentées comme étant desnombres fractionnaires ...
9Critères de performance1) MIPS (Million Instructions Per Second). Problème: uneinstruction ne signifie pas la même chose ...
10Principales applicationsTéléphonie filaire: modems, codeurs de parole, annuleurs d’écho,…Radiotéléphonie: codeurs de par...
11Principales applicationsMédical: compression d’images médicales pour l’archivage,traitement de signaux ECG et EEG, …Elec...
12Panorama des DSP actuels• DSP traditionnels: bon marché, basse-performance, faibleconsommation. un MAC par cycle d’horlo...
13Le DSP ADSP-21065L SHARC• DSP 32 bits de chez « Analog Devices »• virgule flottante/fixe• Horloge interne 60 MHz - une i...
14Les unités de calcul* 3 unités: UAL, multiplieur, registre de décalage (shifter).* Chaque unité effectue une opération p...
15Le bloc de registres (register file)* Le bloc de registres est composé de 16 registres indépendantsde 40 bits (registres...
16Unité arithmétique et logique (UAL)* Opération sur des nombres à virgule fixe et flottante.* Addition/soustraction/moyen...
17Le multiplieur* En virgule fixe: capable d’effectuer des MAC. Utilisedeux registres d’accumulation sur 80 bits (MRF et M...
18Unité de décalage (Shifter)* Travaille sur 32 bits sur des nombres à virgule fixe* Décalages et rotations* Mise à 1 ou 0...
19Séquenceur de programme et cycle d’instruction* Le séquenceur contrôle le déroulement du programme: linéaire,structure d...
20Sauts1) Branchement:JUMP addr24;PC <= addr24 (étiquette)2) Saut à un sous-programmeCALL addr24;PC+1 => PC PilePC <= addr...
21Branchements et sauts conditionnels* JUMP et CALL peuvent être conditionnels:IF condition JUMP addr24;IF condition CALL ...
22Structure de boucles* Boucle avec condition de fin:DO addr24 UNTIL condition;* Boucle avec compteur(registre LCNTR):LCNT...
23Adressage de mémoire* La mémoire données (DM) est séparée de la mémoire programme (PM).1) Adressage directEx: R1=PM(0x00...
24Adressage de mémoire (suite)* Détail des registres:I: registre d’Index M: registre d’incrément (Modifieur)B: registre d’...
25Adressage avec pré-modificationDM(Mx, Iy) 0 ≤ x,y ≤ 7PM(Mx, Iy) 8 ≤ x,y ≤ 15Ex: R2=DM(M0, I1)R2 est chargé par le conten...
26Adressage avec post-modificationDM(Ix, My) 0 ≤ x,y ≤ 7PM(Ix, My) 8 ≤ x,y ≤ 15Ex: R2=DM(I1, M0)R2 est chargé par le conte...
27Buffer circulaire• Table de valeurs avec historique fini• Adressage post-modifié + utilisation des registres B et L.
28Buffer circulaire (suite)Pour écrire un buffer circulaire en assembleur:1) Charger le registre L avec la longueur du buf...
29Buffer circulaire (suite)* Si M est positif:Inew=Iold+M si Iold+M < B+LInew=Iold+M-L si Iold+M ≥ B+L* Si M est négatif:I...
30Assembleur de ADSP-21065L- Le langage d’assemblage ou l’assembleur est un langage bas-niveau, pouvantêtre traduit par un...
31Instructions1) Calcul et transfert: une opération de calcul, éventuellementen parallèle avec une ou deux opérations de t...
32Instructions (suite)2) Instructions de contrôle: servent à contrôler l’exécution duprogramme : JUMP, CALL, RTS, RTI, DO ...
33Instructions (suite)3) Transfert des valeurs immédiates: ces instructions sontutilisées pour effectuer un transfert entr...
34Directives d’assembleur- Contrairement aux instructions, les directives ne génèrent pas de code binaire.1) Directives .s...
35Directives d’assembleur (suite)3) Directive .global : utilisée pour exporter un symbole. Le symbole exporté serareconnu ...
36PréprocesseursLes services rendus par le préprocesseur sont: l’inclusion defichier source, le traitement de macros et l’...
37Exemple de source assembleur/* commentaire */#include "def21065l.h"#define N 10.SEGMENT/DM zonetab;/* table de donnees a...
38Schéma bloc général du DSP
39Kit de développement EZ-LAB• Carte EZ-LAB- DSP ADSP21065L- Codec AD1819A- Interface RS232(vers PC)- EPROM 1M*8bits- SDRA...
40Conversion analogique-numérique* Utilise le CODEC AD1819A- Conversion sur 16bits stéréo- Plusieurs entrées et sorties an...
41Environnement de développementSaisie des programmesCompilationTransfert vers la cibleMise au pointExécution Code DSPHôte...
42Gestion du projet• Edition desprogrammes sourceen assembleur• Compilation• Edition de liens(logiciel VisualDSP)
43Debugger• Permet la mise aupoint du programme• Simulation oucontrôle de la platineEZ-Lab
44Références1) The evolution of DSP processors, J. Eyre & J. Bier, IEEE Signal ProcessingMagazine, vol. 17, no. 2, March 2...
Prochain SlideShare
Chargement dans…5
×

Coursdsp tdi

1 030 vues

Publié le

0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
1 030
Sur SlideShare
0
Issues des intégrations
0
Intégrations
2
Actions
Partages
0
Téléchargements
52
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Coursdsp tdi

  1. 1. Processeurs de traitement dessignaux (DSP)Université Paul SabatierShahram.Hosseini@ast.obs-mip.fr février 2007
  2. 2. 2DSP* Un DSP (Digital Signal Processor) est un type particulier demicroprocesseur, destiné au traitement numérique du signal.
  3. 3. 3Avantages par rapport à un système analogique• Stabilité: les composants analogiques varient en fonction desvariables d’environnement (température, vieillissement, …).• Reproductibilité: les valeurs des composants analogiques sontdéfinies avec une marge de précision ==> aucun montageanalogique n’est strictement reproductible à l’identique.• Souplesse de la programmation: après le montage, il est difficilede changer les caractéristiques d’un système analogique.• Possibilités propres au système numérique: certaines fonctionsde traitement du signal sont difficiles à implanter en analogique,voire irréalisables.
  4. 4. 4Un exemple: filtre RIF∑−=−=10)()(Niiaikxky- 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 enfinl’é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 del’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. 5Principales distinctions entre un DSPet un microprocesseur classique1) Contrairement aux µp classiques, un DSP réalise le MAC en uncycle 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 VonNeumandes µp classiques).
  6. 6. 6Principales distinctions entre un DSPet un microprocesseur classique3) Contrairement aux µp classiques, la plupart des DSP n’ont pasbesoin de consommer des cycles d’horloge pour tester la valeur ducompteur de boucle. Ceci est effectué par un circuit on-chip.4) Les DSP bénéficient des modes d’adressage adaptés auxalgorithmes de traitement du signal (circulaire, inversion de bits, …).5) Dans les µp classiques, l’utilisation de la mémoire Cache et laprédiction des branchements sont effectuées par des circuits logiques,et peuvent changer d’un programme à l’autre. Ceci rend impossiblela prédiction du temps d’exécution d’un programme, ce qui estprimordial pour une application en temps réel.6) La plupart des DSP sont équipés des interfaces entrée/sortienumériques.
  7. 7. 7Critè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. 8Virgule fixe, Virgule flottante* DSP à virgule fixe: Les données sont représentées comme étant desnombres fractionnaires à virgule fixe (exemple -1.0 à 1.0), ou commedes entiers classiques.* DSP à virgule flottante: Les données sont représentées en utilisantune 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 letemps (filtre adaptatif) ou quand le signal a besoin d’une grande dynamique.
  9. 9. 9Critères de performance1) MIPS (Million Instructions Per Second). Problème: uneinstruction 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 parseconde.4) Benchmark (mesure du temps d’exécution d’un ou plusieursprogrammes): Outre le temps d’exécution d’une instruction, il y ad’autres facteurs déterminant la vitesse d’un processeur: le tempsd’accès à la mémoire, les modes d’adressage utilisés, etc. Il estdonc préférable de mesurer le temps d’exécution des programmesstandard de traitement du signal.
  10. 10. 10Principales applicationsTéléphonie filaire: modems, codeurs de parole, annuleurs d’écho,…Radiotéléphonie: codeurs de parole GSM, modems radio, …Interfaces vocales: messagerie électronique, répondeursnumé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, cartesmultimédias pour PC, synthèse musicale, jeux, ...
  11. 11. 11Principales applicationsMé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ôledes moteurs, robots, servomécanismes, …Instrumentation: analyseurs de spectre, analyseurs de transitoires,générateurs de fonctions, interprétation des signaux sismiques, …
  12. 12. 12Panorama des DSP actuels• DSP traditionnels: bon marché, basse-performance, faibleconsommation. un MAC par cycle d’horloge.cadence 20-60 MHz. Exemples: Analog Devices ADSP-21xx, Texas InstrumentsTMS320C3x, 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 cycled’horloge. Exemple: Lucent DSP16210 (télécommunication).. DSP multi-issus: Plusieurs unités de calcul. Exécution deplusieurs instructions en un cycle d’horloge. Exemple: TMS320C6455,8 milliards MACPS! (traitement d’image). Consommation d’énergie élevée.
  13. 13. 13Le 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. 14Les unités de calcul* 3 unités: UAL, multiplieur, registre de décalage (shifter).* Chaque unité effectue une opération par cycle.
  15. 15. 15Le bloc de registres (register file)* Le bloc de registres est composé de 16 registres indépendantsde 40 bits (registres universels). Ces registres jouent l’interfaceentre 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 uneopé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. 16Unité 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 registresd’état (ASTAT et STKY). Ces drapeaux peuvent ensuite êtreutilisés pour tester les branchements conditionnels.
  17. 17. 17Le multiplieur* En virgule fixe: capable d’effectuer des MAC. Utilisedeux 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 sontmis à zéro ou un, et peuvent être ensuite utilisés pour testerles branchements conditionnels.
  18. 18. 18Unité 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. 19Sé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. 20Sauts1) Branchement:JUMP addr24;PC <= addr24 (étiquette)2) Saut à un sous-programmeCALL addr24;PC+1 => PC PilePC <= addr24Appel:Retour: RTS;PC <= PC Pile
  21. 21. 21Branchements et sauts conditionnels* JUMP et CALL peuvent être conditionnels:IF condition JUMP addr24;IF condition CALL addr24;* Liste des conditions:Attention: tout nes’applique pas à IF!
  22. 22. 22Structure de boucles* Boucle avec condition de fin:DO addr24 UNTIL condition;* Boucle avec compteur(registre LCNTR):LCNTR=data16,DO addr24 UNTIL LCE;
  23. 23. 23Adressage de mémoire* La mémoire données (DM) est séparée de la mémoire programme (PM).1) Adressage directEx: R1=PM(0x009400); /* R1 est chargé par le contenu de lamémoire programme à l’adresse 0x009400 */DM(0x0000C002)=R4; /* R4 est copié dans un emplacementde la mémoire données à l’adresse 0x0000C002 */2) Adressage indirectL’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. 24Adressage 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. Lesregistres I fonctionnent comme des pointeurs aux mémoires, et lesregistres 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. 25Adressage avec pré-modificationDM(Mx, Iy) 0 ≤ x,y ≤ 7PM(Mx, Iy) 8 ≤ x,y ≤ 15Ex: 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. 26Adressage avec post-modificationDM(Ix, My) 0 ≤ x,y ≤ 7PM(Ix, My) 8 ≤ x,y ≤ 15Ex: R2=DM(I1, M0)R2 est chargé par le contenu de la mémoire données à l’adresseindiqué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 dansl’exemple ci-dessus) doit avoir une valeur nulle.
  27. 27. 27Buffer circulaire• Table de valeurs avec historique fini• Adressage post-modifié + utilisation des registres B et L.
  28. 28. 28Buffer 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 dubuffer.3) Charger un registre M (dans le même DAG) avec le pasd’incrément.- Le registre I correspondant au registre L et B est automatiquementinitialisé 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, sil’adresse est en dehors du buffer, Le DAG corrige la valeur de I pourretourner dans le buffer.
  29. 29. 29Buffer circulaire (suite)* Si M est positif:Inew=Iold+M si Iold+M < B+LInew=Iold+M-L si Iold+M ≥ B+L* Si M est négatif:Inew=Iold+M si Iold+M ≥ BInew=Iold+M+L si Iold+M < B- Si on utilise le registre I7 de DAG1 ou I15 de DAG2, uneInterruption est générée en cas de dépassement du buffer circulaire.
  30. 30. 30Assembleur 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 seterminent avec un (;). Elles peuvent être précédées par une étiquette (suite decaractères terminée par :). Deux instructions exécutées en parallèle sont séparéespar une (,).2) Directives d’assemblage: des ordres donnés au programme. Les directivessont 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. 31Instructions1) Calcul et transfert: une opération de calcul, éventuellementen parallèle avec une ou deux opérations de transfert.- La plupart des instructions de ce groupe peuvent être précédéespar IF cond où cond est l’un des mnémoniques du tableau de lapage 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 dedécalage), mais jamais le contenu de la mémoire.- Pour effectuer une opération de calcul sur le contenu de lamémoire, il faut d’abord le transférer dans un registre.
  32. 32. 32Instructions (suite)2) Instructions de contrôle: servent à contrôler l’exécution duprogramme : JUMP, CALL, RTS, RTI, DO UNTIL.- La plupart des instructions de ce groupe peuvent êtreprécédées par IF cond. La structure IF cond, ELSE peut êtreaussi 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 enparallèle avec les instructions de calcul.Ex: JUMP(M8,I12), R6=R6-1;
  33. 33. 33Instructions (suite)3) Transfert des valeurs immédiates: ces instructions sontutilisées pour effectuer un transfert entre un registre et lamémoire, ou pour copier une valeur immédiate dans un registreou 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 faitrien), ….
  34. 34. 34Directives 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 find’un segment, c-à-d une section des emplacements contigus dans la mémoireprogramme 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 aussiinitialiser la variable déclarée..VAR nom1=init1, nom2, nom3=init3;.VAR nom_de_tableau1[longueur]=init1, init2, …, initn;
  35. 35. 35Directives d’assembleur (suite)3) Directive .global : utilisée pour exporter un symbole. Le symbole exporté serareconnu par les autres programmes au moment de l’édition de liens. La syntaxegénérale est.GLOBAL symbole;Ex: .VAR coeffs[10];.GLOBAL coeffs;4) Directive .extern : utilisée pour importer un symbole, défini comme unGLOBAL dans un autre programme. La syntaxe général est.EXTERN symbole;Ex: .EXTERN coeffs;5) Divers: .precision, .round, .port, .newpage
  36. 36. 36PréprocesseursLes services rendus par le préprocesseur sont: l’inclusion defichier source, le traitement de macros et l’assemblageconditionnel. On ne présente ici que les deux les plus importants:1) Inclusion du contenu d’un fichier:#include nom_de_fichier2) Définition d’un macro sans paramètres#define nom reste_de_la ligneDans toute la suite du programme, toute nouvelle occurrence denom est remplacée par reste_de_la ligne.Ex: #define ORDRE 5
  37. 37. 37Exemple 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. 38. 38Schéma bloc général du DSP
  39. 39. 39Kit de développement EZ-LAB• Carte EZ-LAB- DSP ADSP21065L- Codec AD1819A- Interface RS232(vers PC)- EPROM 1M*8bits- SDRAM 1M*32bits
  40. 40. 40Conversion 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. 41Environnement de développementSaisie des programmesCompilationTransfert vers la cibleMise au pointExécution Code DSPHôte:station PCCible:Kit EZ-LAB
  42. 42. 42Gestion du projet• Edition desprogrammes sourceen assembleur• Compilation• Edition de liens(logiciel VisualDSP)
  43. 43. 43Debugger• Permet la mise aupoint du programme• Simulation oucontrôle de la platineEZ-Lab
  44. 44. 44Références1) The evolution of DSP processors, J. Eyre & J. Bier, IEEE Signal ProcessingMagazine, vol. 17, no. 2, March 2000, pp. 43-51.2) DSP Processors hit the mainstream, J. Eyre & J. Bier, IEEE Computer, August1998.3) How to estimate DSP processor performance, P. Lapsley & G. Blalock, IEEESpectrum, July 1996.4) ADSP-21065L Technical Reference,http://www.analog.com/processors/sharc/technicalLibrary/manuals/index.html5) ADSP-21065L User’s Manual, même adresse.6) VisualDSP++ 3.5 Users Guide for 32 bits processors, même adresse.7) ADSP-21065L EZ-LAB Development System Manual, Analog Devices.

×