Cours dispensé à l'IUT de l'Indre sur la base des systèmes à microprocesseur
Objectif principal : démystifier le travail du compilateur en analysant le résultat de compilation d'un programme à l'issue de quelques séances de programmation en assembleur IA32.
Cours dispensé à l'IUT de l'Indre sur la base des systèmes à microprocesseur
Objectif principal : démystifier le travail du compilateur en analysant le résultat de compilation d'un programme à l'issue de quelques séances de programmation en assembleur IA32.
Ce premier cours introduit la notion de système embarqué en commençant par en donner une définition. Il les caractérise ensuite sur base de plusieurs critères : type d'application, de fonction visé, taille, fiabilité, efficacité. Il présente ensuite plusieurs aspects hardware (unité de calcul, architecture matérielle, composants clés) et software (niveau de programmation, processus de développement). Enfin, il conclut en discutant sur ce qu'est un ingénieur en systèmes embarqués.
I. Introduction
Approche fréquentielle
Signaux monodimensionnels périodiques
Signaux quelconques
Signaux numériques, discrétisation, échantillonnage
Observation spectrale, TFD et TFD 2D
Systèmes numériques
Filtres numériques
Produits de convolution. Cas 2D
Sur et sous échantillonnage. Bancs de filtres
Traitement des Images.
Approches multi résolution
II. Signaux aléatoires
variables aléatoires
Processus aléatoires. Stationnarité
Processus MA, AR et ARMA
Estimation des paramètres d’un AR
III. Traitement de l’information Application à la compression
codage de source, entropie,
compression sans perte : codages entropiques
par dictionnaire, par prédiction…
Codages par transformée
La DCT et la compression JPEG
Quantifications scalaire et vectorielle
IV. Communications numériques
Modulations numériques
modulation par impulsions codées
transmission du signal numérique
Applications : RDS, NICAM…
Détection et correction d’erreurs
Présentation Cdma, Multiplexage CDMA, principes de Code et cas d'exempleMax Benana
Retrouvez une présentation du CDMA/WCDMA, toutes les explications sur le principe des codes. retrouver une démonstration sous forme d'exemple afin de mieux appréhender la chose. Une comparaison de la technologie avec le GSM est à retrouver dans les derniers slides.
Le système antiblocage des roues (ABS) Sarra Ougour
Le système anti-blocage des roues, plus connu sous l'abréviation « ABS » (de l'allemand « Antiblockiersystem »), est un système d'assistance au freinage utilisé sur les véhicules roulants, limitant le blocage des roues pendant les périodes de freinage intense
Ce premier cours introduit la notion de système embarqué en commençant par en donner une définition. Il les caractérise ensuite sur base de plusieurs critères : type d'application, de fonction visé, taille, fiabilité, efficacité. Il présente ensuite plusieurs aspects hardware (unité de calcul, architecture matérielle, composants clés) et software (niveau de programmation, processus de développement). Enfin, il conclut en discutant sur ce qu'est un ingénieur en systèmes embarqués.
I. Introduction
Approche fréquentielle
Signaux monodimensionnels périodiques
Signaux quelconques
Signaux numériques, discrétisation, échantillonnage
Observation spectrale, TFD et TFD 2D
Systèmes numériques
Filtres numériques
Produits de convolution. Cas 2D
Sur et sous échantillonnage. Bancs de filtres
Traitement des Images.
Approches multi résolution
II. Signaux aléatoires
variables aléatoires
Processus aléatoires. Stationnarité
Processus MA, AR et ARMA
Estimation des paramètres d’un AR
III. Traitement de l’information Application à la compression
codage de source, entropie,
compression sans perte : codages entropiques
par dictionnaire, par prédiction…
Codages par transformée
La DCT et la compression JPEG
Quantifications scalaire et vectorielle
IV. Communications numériques
Modulations numériques
modulation par impulsions codées
transmission du signal numérique
Applications : RDS, NICAM…
Détection et correction d’erreurs
Présentation Cdma, Multiplexage CDMA, principes de Code et cas d'exempleMax Benana
Retrouvez une présentation du CDMA/WCDMA, toutes les explications sur le principe des codes. retrouver une démonstration sous forme d'exemple afin de mieux appréhender la chose. Une comparaison de la technologie avec le GSM est à retrouver dans les derniers slides.
Le système antiblocage des roues (ABS) Sarra Ougour
Le système anti-blocage des roues, plus connu sous l'abréviation « ABS » (de l'allemand « Antiblockiersystem »), est un système d'assistance au freinage utilisé sur les véhicules roulants, limitant le blocage des roues pendant les périodes de freinage intense
Microcontrôleur PIC 16F Microchip part1/2
vous trouvez ci-joint quelques exemples "basique" avec le code (Mikroc) et le schematic/simulation (Isis Proteus)
https://drive.google.com/file/d/0B6cDeCQ2t8S6ZHB3UGdxUGE1bm8/view?usp=sharing
by : Lamghari Mohammed
Généralités sur les périphériques du STM32Hajer Dahech
Lien Téléchargement pptx https://hajereducation.tn/peripheriques-stm32-simple-resume-presentation-powerpoint/
Généralités sur les périphériques du STM32
Merci , Thanks For watching Video
=====Subscribe == S'abonner
Playlist :STM32 :vidéos+Files+Code
La famille STM32 est une série de microcontrôleurs 32-bits en circuits intégrés réalisés par la société Franco-Italienne STMicroelectronics. Les puces STM32 sont regroupées dans différentes séries proches, basées sur les processeurs d'architecture ARM 32-bits, tels que le Cortex-M7F, le Cortex-M4F, le Cortex-M3, Cortex-M0+, ou le Cortex-M0. Chaque microcontrôleur est constitué d'un cœur de calcul, de mémoire vive (RAM) statique, de mémoire flash (pour le stockage), d'une interface de débogage et de différents périphériques1.
Le STM32 F4 comporte un Cortex-M4F, un DSP et un FPU. Il est notamment complètement géré par le système libre temps-réel ChibiOS/RT.
L'ensemble des microcontrôleurs peuvent également être programmés à l'aide de l'IDE d'Arduino.
l existe différents types de cartes compatibles Arduino basées sur le STM32. La série Nucleo a été conçue par STMicroelectronics à cet effet. D'autres constructeurs ont également fait des cartes compatibles utilisant ce SoC sous divers noms. Cela permet de l'utiliser comme contrôleur de machine-outil à commande numérique (CNC en anglais). des logiciels tels que Grbl permettent de contrôler des machines de fraisage2, auxquelles notamment les imprimantes 3D ou imprimantes de découpe laser se rapprochent. Permettant ainsi de rendre accessible ce type de machines traditionnellement très onéreuse à des fab lab et amateurs éclairés.
Les cartes Stm32 Nucleo, supportent une compatibilité avec les cartes Arduino, bien que basées sur des microcontrôleurs ARM Cortex-M (32 bits) et non Atmel AVR (8 bits) comme utilisés dans les cartes Arduino standard. Il ajoute ainsi à Arduino de bonnes performances graphiques en y ajoutant l'accélérateur graphique Chrom-ART (fourni avec une bibliothèque open source), orienté affichage TFT (ou plus généralement, écran à cristaux liquides), et comportant pour cela une interface MIPI DSI
Les STM32 F4 et supérieurs possédants un DSP, ils sont adaptés à l'usage pour le son. La carte synthétiseur Axoloti est un exemple d'application dans le domaine du son.
Le logiciel de synthétiseur analogique libre, Mozzi pour Arduino peut être utilisé directement sur les STM32, en particulier sur la carte à bas prix, STM32F103C8T6 blue pill board (dans les 2€), sans besoin d'un véritable DAC Ce processeur est utilisé comme processeur principal et contrôleur de vol dans les drones quadrirotors de course et acrobatiques utilisés en pilotage en immersion (FPV, généralement DIY (artisanaux). Il offre plus de puissance de calcul que les autres contrôleurs utilisés dans ce type de drone, tel que les Atmel AVR et le Microchip PIC, tous deux des processeurs 8 bits5,6. Les séries F1 F3 F4 et F7 peuvent en être utilisés dans ce domaine7. Les STM32 de la série F4 en particulier, ont un certain succès dans ce domaine (où il est généralement appelé F48), il est notamment utilisé par les drones de Quantum Systems9, mais également sur les « cartes de vol » (cartes contrôleur) de différents constructeurs
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
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.