x(t)

publicité
Progression
- Quelques rappels
- Etude du DSP 320F28335 (Texas Instrument)
- Prise en main des outils de développement (Code Composer Studio)
- Utilisation des GPIO, de l’ADC et de l’UART
- Application à la détection et l’identification de signaux.
-Détecteur de tonalité par TFD
-Détection DTMF
-Démodulation FSK
-Utilisation de la FFT
Cliquez sur le chapitre auquel vous voulez accéder
•
•
•
•
•
•
•
•
•
•
Généralités
Présentation du DSP 320F28355
Architecture DSP
Registres
Modes d’adressage
Interruptions
ADC
DMA
Calcul d’une somme de produits (virgule fixe)
Virgule flottante
D.S.P.
(Digital Signal Processor)
- Processeur destiné au traitement du signal
- Les grandeurs physiques sont échantillonnées et transformées en nombres
- Architecture des DSP optimisée pour le traitement numérique
du signal
A.D.C.
D.S.P.
x(k)
x(t)
Acquisition
Traitement y(k)
numérique
D.A.C.
Restitution
y(t)
ACQUISITION TRAITEMENT RESTITUTION
DSP + ADC
Traitement
Acquisition
Entrée
x(t)
Passe
Bas
Fc<Fe/2
Restitution
ADC
X(n)
Programme
DSP
Y(n)
DAC
Passe
Bas
Sortie
y(t)
Fe
Sortie numérique, PWM, etc..
PRINCIPAUX TRAITEMENTS
- Générer des signaux
- Filtrer
- Détecter, identifier des signaux (1750, DTMF, parole, image…)
- Moduler démoduler (modem, ADSL, Ethernet, AX25….)
- Analyser un signal ( FFT)
- Crypter, décrypter
DOMAINES D ’APPLICATION
- Télécommunications
- Sons, Images, Vidéo
- Instrumentation
- Biomédical
- Commande de process
- Equipement automobile, avionique, radars...
COMPARAISON AUX AUTRES DISPOSITIFS
DE TRAITEMENTS NUMERIQUES
Traitements microprogrammés
- microordinateurs (Traitements complexes mais rarement en temps réel)
- microprocesseurs classiques (~100 Kéch./s)
- DSP ( ~1Méch/s.. 10Méch/s)
Traitements câblés (architectures parallèles)
- FPGA,...
~100 Méch/s...
- ASIC (réservé aux grosses productions)
CHOISIR UN D.S.P.
Caractéristiques communes
- Architecture optimisée pour le traitement du signal
(nombreux bus,Harvard, pipe-line…)
- Instruction multiplication accumulation en un cycle
(MAC…)
- Modes d ’adressages particuliers (modulo, bit reverse)
Les différentes familles de DSP
- DSP avec unité de calculs en virgule fixe
- DSP avec unité de calculs en virgule flottante (FPU)
- DSP avec des périphériques intégrés (contrôle moteur..)
Les langages de programmation: L.machine, C, G. de C(ViSim..)
Constructeurs : AT&T, Texas Inst., Motorola, Analoge Devices...
PRESENTATION du DSP 320LF28335
- Architecture
- Registres
- Mémoire
- Instructions et Modes d ’adressages
- Les principales fonctionnalités
- Les Timers
- Le convertisseur AD
- Gestion des interruptions
Documentation
http://www.ti.com/product/tms320f28335
- 320f28335.pdf
- SPRU430.pdf
- SPRUEO2a.pdf
- SPRU566.pdf
- SPRUFB0.pdf
Datasheet général (sprs439f.pdf)
CPU + instructions
FPU + instructions (spraan9.pdf)
Périphériques (liens)
Interruptions…
- SPRU509.pdf
- SPRU513.pdf
- SPRU514.pdf
- SPRA958
Code Composer Studio
Assembleur, linkeur…
Compilateur C
Programme en FLASH
- SPRAAM0,
- SPRC530.zip
- SPRAA85a.pdf
Pour démarrer rapidement..
Headers, structures, programme exemple
- 28335_ezdsp_usb_tech_ref.pdf Carte de développement
Développer une application
Ecriture des fichiers Sources
- langage machine (.asm)
- langage C/C++
- utilisation d’un éditeur de texte
Assemblage, compilation
- Transforme les fichiers sources en fichiers objets (.obj)
- fichier binaire avec des adresses non résolues
- assembleur (asm2000.exe)
- compilateur (cl2000.exe)
Edition des liens (lnk2000.exe)
- Transforme le fichier objet en fichier exécutable
- Utilise les fichiers « .cmd » pour déterminer les adresses
Transfert dans la cible (ou dans la mémoire externe)
- en mémoire FLASH (via JTAG)
- en mémoire RAM (via JTAG)
- par SPI ou SCI (avec un programme boot loader en ROM)
-…….
Débuggage
- dans la cible (via JTAG)
- simulation (sur le PC)
- avec un émulateur
Librairies (mk2000.exe)
- pour regrouper des fichiers objets (.obj) dans un fichier (.lib)
- rts2800_fpu32.lib
Développement (3 méthodes)
Sans environnement
- Ecrire les sources
- Appeler successivement le compilateur, l’éditeur de liens, etc..
Avec un fichier « MakeFile » et l’utilitaire « make »
- Ecrire les sources
- Ecrire le fichier « Makefile »
- Lancer le programme make
Avec un environnement graphique (méthode utilisée en TP)
- Code Composer Studio (v3.x)
- Eclipse configuré avec les bons outils (CSS V5.x )
CARACTERISTIQUES du 320F28335
- Fréquence cycle max. 150 MHz
- Alimentation : 3,3 V
- Processeur 32bits Harvard
- Calculs en virgule fixe ou en flottante câblée
- FLASH
256 k x 16
- SARAM
34 k x 16
- OPT ROM
1k x 16
- Nombreux périphériques
- Entrées/sorties binaires
- Entrées analogiques 12 bits 80ns
- Timers 32 bits, entrées de comparaison, PWM haute résolution...
- Entrées de capture, modules QEP pour des codeurs incrémentaux
- Liaisons série asynchrone SCI, série synchrone SPI, bus CAN…
Architecture avec six bus
Mémoire
externe
Un seul PLAN MEMOIRE
Programmes, données et périphériques
222 mots de 16 bits
Adresse 0
RAM interne 2k
PERIPHERIQUES
RAM/ROM externe
2M max
RAM interne 32k
FLASH 256k
OPT ROM 1k
3F FFFF
ROM 8k
Pipeline à huit niveaux
Registres d’états ST0
Registre ST0
OVC:
PM :
OVM:
SXM:
N,Z,C:
compte les dépassements
configure le multiplicateur (décalage auto)
1: Saturation / 0: overflow normal
autorise l ’extension du bit de signe lors des décalages à droite
indicateur de signe,zéro,retenue
Registre d’états ST1
Pagination de la mémoire DONNEES
- 216 pages de 64 mots de 16bits
- pointeur de page DP
- l ’offset est codé à la suite de l ’instruction
DP
Offset
0000.. 0000
00 0000
0000.. 0000
11 1111
0000.. 0001
00 0000
0000.. 0001
11 1111
Mémoire données
Page 0
: 0..000h – 0..03Fh
Page 1
: 0..040h – 0..07Fh
.
.
.
1111.. 1111
00 0000
1111.. 1111
11 1111
Page 65535 : F..FC0h - F..FFFh
MODES D ’ADRESSAGE
- Adressage IMMEDIAT:
La donnée se trouve dans la mémoire de programme à la suite de l ’instruction
Adressage DIRECT par page
La donnée se trouve dans la mémoire donnée
Le registre de page DP contient les 16 bits de poids fort de l ’adresse
Les 6 bits de poids faibles de l ’adresse sont codés dans l ’instruction.
- Adressage indirect
L’adresse de la donnée se trouve dans un registre auxiliaire xARn
Exemple
Buffers circulaires adressage modulo %
Buffers circulaires (exemple)
Buffers circulaires (suite)
Buffers circulaires (exemple 2)
Adressage « bit reverse »
Adressage « bit reverse » exemple
Les sources d ’interruptions
- 2 interruptions externes non masquables: RS et NMI
- interruptions masquables INT1, INT2,...., INT14 qui gérent l ’ensemble des
demandes des périphériques (Timers, ADC, SCI, SPI, CAN, etc… )
- instructions pour le déclenchement logiciel des interruptions: INTR et TRAP
Interruptions
Interruptions masquables
Interruptions masquables
Vecteurs d’interruptions
Vecteurs d’interruptions
Autorisations et indicateurs
Autorisation lors du « debug »
Timers CPU binaires)
GPIO (entrées/sorties
• 88 Entrées/sorties binaires (GPIO)
• multiplexées avec d’autres périphériques (4 fonctions max.)
• réparties en trois ports A,B et C:
•GPA GPIO de 0 à 31
•GPB GPIO de 32 à 63
•GPC GPIO de 64 à 87
Timers CPU
Multiplexeurs
GPxMUXn
Entrée binaire
Sortie binaire
Timers
SCI
(portCPU
série)
Timers«CPU
Timers
CPU »
Interruptions Timers CPU
Convertisseur analogique numérique
Résolution : 12bits (0 à 4095)
Vitesse maximale 12.5Mech/s (80ns)
16 entrées multiplexées
2 échantillonneurs bloqueurs, 1 convertisseur
Fonctionnement automatique paramétrable
Possibilité de transfert « DMA »
Résultat de la conversion
-Tension à convertir de 0 à 3V
-Résultat sur 12 bits de 0 à 4095
-Cadré à gauche dans 16bits de ADCRESULTx
-Cadré à droite dans 16bits de ADCMIRRORx
Calibration
-Routine de calibration en ROM
-Appelée automatiquement au démarrage en fonctionnement normal
-Doit être appelée par le logiciel utilisateur en phase de développement
-Voir exemples
Registres de l’ADC
Echantillonnage et conversion
Echantillonnage 2voies simultanées et conversion
Horloge du convertisseur AdCCLK
Oscillateur externe (30MHz)
PLL
SysClockOut (Horloge cycles)
150MHz ( PLL fois 5)
Diviseur
(HSPCP)
Ne doit pas dépasser 25MHZ
Référence interne ou externe…
Impédance d’entrée
Transfert direct en mémoire « DMA »
6 canaux « DMA »
Transferts déclenchés par événements ADC, Timer,
E/S…
« Burst » configurable de 1 à 32 mots de 16bits
Adresse source, adresse destination, taille en « burst »
Adressage circulaire possible
Demande d’interruption en début ou fin de transfert
Multiplication et accumulation câblée
• Filtrage RIF et RII
• Calcul de DFT et de FFT
• Produit de corrélation
•
•
Virgule fixe
Virgule flottante
yn = a0xn + a1x(n-1) … + aMx(n-M)
Entrée
x(n-M) ...x(n-1) xn
Calcul
Sortie
yn
yn = a0xn + a1x(n-1) … + aMx(n-M) - b1y(n-1) - b2y(n-2) … - bN y(n-N)
Entrée
x(n-M) ...x(n-1) xn
Calcul
Sortie
y(n-N) …y(n-1) y(n)
Programme de traitement
en Virgule fixe (320F2407)
– Initialisation
• Configuration des registres
– de contrôle: horloge, multiplexage des pattes, ADC, Timer, IRQ...
– Acquisition de l ’entrée x déclenchée par un Timer/PWM
• Stockage des coefficients dans la mémoire « programme »
• Autorisation de l ’ interruptions ADC
• Puis boucle infinie ou autre tâches….
– Traitement par interruption ADC
• Lire et stocker xn en mémoire « données »
• Calculer yn et décaler les valeurs de X :
X n -M -> perdu ; Xn-M+1 -> Xn-M ...
… Xn -> Xn-1
• Envoyer yn en sortie
• Fin d ’interruption
Stockage des données
Coefficients en « mémoire programme » :
Coeff
.text
.word 002Ah, 0ff20h, ….
.word 07895h, …...
...
Pour stocker les échantillons en « mémoire donnée » :
.bss Xn , 18, 1
; pour réserver 18 emplacements
; à partir de l ’adresse Xn
RPT #M et MACD #Coeff, *Zone Programme
PC
Zone Données
aM
xn
aM-1
x n-1
...
x n-2
..
..
a1
xn-M+1
a0
Contenu de PREG
xn-M
AR*
:
Contenu de l ’accumulateur:
aMxn-M
0
RPT #M et MACD #Coeff, *Zone Programme
PC
Zone Données
..premier MACD
..dernier MACD
aM
xn
xn
aM-1
x n-1
x n-1
xn
...
x n-2
x n-2
xn-1
..
..
..
..
a1
xn-M+1
xn-M+1
xn-M+2
xn-M
xn-M+1
x n-M
xn-M+1
x n-M
aMxn-M
aM-1xn-M+1
a0xn
a0
Contenu de PREG
AR*
:
Contenu de l ’accumulateur:
0
AR*
+
aMxn-M
AR*
xn
………………. + a1xn-1
APAC pour ajouter le dernier produit a0xn à l ’accumulateur
Virgule flottante
- Format IEE et architecture (spraan9.pdf)
- Instructions (SPRUO2a.pdf )
Virgule flottante
Description
Simple Précision - 32Bits
31
30
23
1bit
8 bits
Signe
Exposant
+ 127
0:+
Min: 0000 0000
1: -
Soit 2-127
22
0
23 bits
Mantisse
Mantisse normalisée:
1.xxxxxxxxxxxxxxxxxxxxxxx
Min:
1.00000000000000000000000
Max :1111 1111
Soit 2+128
Max:
1.11111111111111111111111
Virgule flottante
Exemples
0 0111 1111 11000000000000000000000 = + 2127-127 . 1,75 = 1.75
1 0111 1111 11000000000000000000000 = - 2127-127 . 1,75 = 1.75
0 1000 0001 11000000000000000000000
= + 2129-127 . 1,75 =
0 0111 1110 11000000000000000000000
= + 2126-127 . 1,75 = 0.875
7
Virgule flottante
Limites théoriques
Le plus grand nombre:
0 1111 1111 11111111111111111111111 = + 2255-127 .2-2-23 = 6,8...1038
Le plus petit nombre :
1 0111 1111 11111111111111111111111 = - 2255-127 .2-2-23 = - 6,8...1038
Le nombre le plus proche de zéro (mantisse normalisée)
0 0000 0000 00000000000000000000000 = + 20-127 . 1,0 =
1 0000 0000 00000000000000000000000 = - 20-127 . 1,0 =
5.87…10-39
-5.87…10-39
Virgule flottante
Particularités (IEE std 754-1985)
Le plus grand nombre:
0 1111 1110 11111111111111111111111
0 1111 1111 00000000000000000000000
Le plus petit nombre :
1 1111 1110 11111111111111111111111
0 1111 1111 00000000000000000000000
x 1111 1111 xxxxxxxxxxxxxxxxxxxxxxx
= + 2254-127 .(2-2-23) = 3,4...1038
= + Infini
= - 2254-127 .2-2-23 = - 3.4...1038
= - Infini
= NaN si mantisse non nulle
(« Infini » dans le DSP 28335)
Les nombre proches de zéro :
0 0000 0000 00000000000000000000000 = 0+
1 0000 0000 00000000000000000000000 = 0Nombres proches de zéro à mantisse non normalisée: (pas utilisé dans le 28335)
0 0000 0000 xxxxxxxxxxxxxxxxxxxxxxx = 0,xxxxxxxxxxxxxxxxxxxxxxx
de 2-126 à 2-149
Virgule flottante
Erreur et Précision
Erreur:
Arrondi de la mantisse:
+/- 1 lsb => Erreur: 2E-23
Précision :
C’est l’erreur en % du nombre = 2E-23 / 1,x…xx.2E
La mantisse étant comprise entre 1 et 2 la précision est
comprise entre 2-23 et 2-24
Avec une mantisse normalisée, la précision est toujours
meilleure que 2-23 soit environ 10-7
Virgule flottante
Double Précision
64 Bits
63
62
52
1bit
11 bits
Signe
Exposant
+ 1023
51
0
52 bits
Mantisse
Précision mieux que 2-1023 (mantisse normalisée)
Max/Min : +/- 1,8.10308
Pas d’implantation « hardware » de la double précision dans le 320F28335
Virgule flottante
Pour les transferts en mémoire
par adressage indirect
Les opérandes et les résultats
des opérations en virgule
flottantes
Exemple de programme utilisant le registre de status STF
Virgule flottante
Instructions
Conversions virgule fixe/virgule flottante
F32TOI16, I16TOF32…
Transferts avec la mémoire
MOV32 …
Opérations mathématiques
ADDF32, MPYF32, MACF32…
Etc..
Téléchargement