les processeurs du signal (dsp) dans le contrÔle numerique Étude d’un dsp dédié au contrôle...
TRANSCRIPT
LES PROCESSEURS DU SIGNAL (DSP)DANS LE CONTRÔLE NUMERIQUEÉtude d’un DSP dédié au contrôle moteur
Généralités sur les DSP- Caractéristiques- Structures- Comparaison entre Processeur et DSP
Etude du processeur TMS 320LF2407Application à la carte d’évaluation eZdsp LF2407
- Architecture- Gestion des interruptions- Programmation
Exemples de programmes Codage des nombres Applications
LES PROCESSEURS DU SIGNAL (DSP)DANS LE CONTRÔLE NUMERIQUEÉtude d’un DSP dédié au contrôle moteur
Définition
Un DSP : Processeur particulier; - Intègre un ensemble de fonctions spéciales; - Bonnes performances; - Généralement conçu pour être utilisé sous la forme d’un monocircuit; Intègre:
- mémoire RAM et ROM- ports série rapides- ports d ’entrées / sorties
Il est destiné à être «embarqué»;
Introduction
Avantages
Souplesse de la programmation;
Stabilité;
Reproductibilité;
Introduction
Le marché en 1996 selon Forward Concepts Principaux constructeurs
Texas Instruments
45%
AT&T 29%
Analogue Device 11%
Motorola 8%
Autres7%
Introduction
Domaines d’application
Télécommunications Son Vidéo
Instrumentation:
analyseurs de spectres; générateurs de fonctions; analyse des signaux et des images biologiques; radar et sonar
Systèmes de commande:
commande de moteurs électriques; synthèse des correcteurs de servomécanisme équipement automobile;
Introduction
Soit:
Le 68000 (par ex.) a besoin de:
10 cycles d’horloges pour effectuer une addition70 cycles d’horloges pour effectuer une multiplication
Les DSP disposent de fonctions optimisées: Il peuvent effectuer simultanément les 3 opérations suivantes:
lecture d’une donnée en mémoire effectuer une multiplication puis une addition écrire en mémoire le résultat
soit au total 80 cycles d’horloges
Cette opération s’appelle MAC et prend 1 cycle d’horloge
A B C D ( . )
Différences entre un Processeur et un DSP
ACRONYME
ANGLAISDEFINITION
MFLOPS
Million Floating-Point Operations Per Second
Mesure le nombre d’opérations à virgule flottante(multiplication,additions, soustraction…etc) que le DSP à virgule flottante peut
réaliser en une seconde
MOPS
Million Operations Per Second
Mesure le nombre total d’opérations que le DSP peut réaliser enune seconde. Les opérations concernent également les accèsDMA, les transferts de données, les opérations d’E/S…etc.
MIPS
Million Instructions Per Second
Mesure le nombre de codes machines (instructions) que le DSPpeut effectuer en une seconde.
MBPS
Mega-Bytes Per Second
Mesure la largeur de bande d’un bus particulier ou d’un dispositifD’E/S, c-à-d son taux de transfert
Vitesse de calcul: Nombre d ’instructions par seconde
Performances des DSP
Structure Von Neuman
Différences entre un Processeur et un DSP
Mémoire Programme et Données
EntréesSorties
Unité arithmétique et logique
Adresse
Donnée
Structure Harvard
Différences entre un Processeur et un DSP
Mémoire Programme
EntréesSorties
Unité arithmétique et logique
Adresse
DonnéeMémoire Données
Adresse
Donnée
Structure Harvard Modifiée
Différences entre un Processeur et un DSP
Mémoire Données
EntréesSorties
Unité arithmétique et logique
Adresse
Donnée
MUX
Mémoire Programme
MUX
Structure Von Newman Processeurs
Structure Harvard Processeurs spécialisés : DSP
Structure Harvard modifiée Coût plus faible
Différences entre un Processeur et un DSP
Temps d ’accès à la mémoire:
Un DSP peut simultanément:
- chercher en mémoire une instruction et ses données- réaliser une opération MAC- ranger en mémoire le résultant du MAC précédent.
gain de temps évident.
Performances des DSP
Modes d’adressages des données:
- Unité logique de génération d’adresse- travaille en parallèle avec UAL.
Performances des DSP
Le choix dépend :
- de la puissance de traitement nécessaire- du type de DSP à utiliser- des ressources mémoire utilisées-des besoins d’un ou de plusieurs Timers internes, de ports série - du coût par rapport au rapport « performance/prix »- de la qualité de la documentation- de la qualité du système de développement utilisé-de la possibilité d ’utiliser un langage de haut niveau….etc
Choix d ’un DSP
Basée sur la structure de Harvard modifiée:
- les bus programme et données sont séparés
- Accès simultané aux instructions programme et aux données
Architecture du TMS 320 LF2407
Étude du processeur TMS 320 LF 2407
P bus I/F
Event Managers
(EVA and EVB)SPI SCI CAN WD ADC
control
Interruptsreset,etc
I / Oregisters
ADC
C2xx CPU+JTAG +544x16 DARAM
SARAM
(up to 2Kx16) Mem I/F
Logic I / F
Flash / ROOM (Up to 32Kx16)
P bus
Bus Programme
Bus Données
Registreinstruction
UA des pointeurs
Registrespointeurs:
AR0…AR7
Prédécaleur
UAL Générale
Accumulateur
Postdécaleur
Multiplieur
Registre TREG
Registre PREG
Postdécaleur
Unité centrale de calcul
MUX
MUX
MUX
TREG
Multiplieur16x16
PREG
Décalage -6,0,1,4 bits (Pscaler)Décalage 0-16bits (Prescaler)
ALU
Accumulateur
Décalage 1-7 bits (Postscaler)
C
Bus de Données en écriture DWEB
Bus de Données en lecture DRDB
Bus de Programme en lecture PRDB
ARB
ARP
MUX
Registre Instruction
MUX
ARAU
AR7AR6AR5AR4AR3AR2AR1AR0
Bus adresses données
Bus de Données en lecture
Générateur d ’adresses
FlashEEPROM
DARAMB0
DARAMB1 / B2
TestEmulation
InterfaceMémoireExterne
Géné.Temps
d’attente
Gestionnaired’événement
Timers
Unités comparaison
Captue /QEP
WatchdogInterface SérieConvertisseur A/D
Module Horloge Module Interface système
ARAU
Registre d’état
Registres Aux.
Registres mappés en mémoire
Pré-décaleur
ALU
Accumulateur
Post-décaleur
Multiplieur
TREG
PREG
Post-décaleur
Registre Instruction
ContrôleurProgramme
Bus Données
Bus Programme
Bus Périphérique
Le LF2407 est organisé autour de 3 types de mémoire
Mémoire programme: 64 Kmots de 16 bits
Mémoire données internes: 64 Kmots de 16 bits, parmi lesquels: 3 blocs de mémoire double accès (DARAM) B0, B1, B2 (544 mots de 16 bits)
Espace des entrées / sorties: 64 Kmots de 16 bits, pour l’interfaçage avec les périphériques extérieurs
Au total un espace mémoire de 192 Kmots
Architecture du TMS 320LF2407
Mémoire Programme:
- Programme à exécuter
- Le bloc B0 peut être en mémoire programme (CNF): • CNF=0: Les 544 mots (B0+B1+B2) mémoire données • CNF=1: - Les 256 mots du bloc B0 mémoire programme - Les 288 mots de B1 et B2 mémoire données
- Mémoire Flash (MP/MC): • Se comporte comme une ROM • Formée de 32 Kmots de 16 bits • MP/MC = 0 : le DSP est en mode contrôleur • MP/MC = 1 : le DSP est en mode processeur
Bloc B0: 256 mots de 16 bits FE00h à FFFFhBloc B1: 256 mots de 16 bits 0300h à 03FFhBloc B2: 32 mots de 16 bits 0060h à 007Fh
Architecture du TMS 320 F240
Mémoire Données internes: Comprend 3 Blocs de mémoire double accès
- Le bloc B0 configurable en mémoire programme ou données selon la valeur du bit CNF
- Les blocs B1 et B2 sont réservés à la mémoire données seulement
le mode d’adressage peut être direct ou indirect en mode direct: adressage par blocs de 128 mots appelé page de
données
• Il existe 512 pages de 0 à 511• Accès à une page: pointeur de page DP du registre d’état ST0
en mode indirect, adressage par l’un des 8 registres auxiliaires ARn
Architecture du TMS 320 F240
Contenu de la page 0:
2 registres accessibles sans délai d’attente - registre de masques d’interruptions (IMR) - registre de drapeaux d’interruptions (IFR)
zone mémoire de travail: Bloc B2 (RAM: 32 mots de 16 bits)
une zone réservée pour le test et l’émulation
Organisation de la mémoire
Modes d ’adressage
On dispose de 3 modes d ’adressage:
direct paginé indirect et indirect indexé immédiat
L ’adressage direct utilise le registre de page DP (9 bits de poids fort de l ’adresse)
L ’adressage indirect utilise les registres - pointeurs ARn
L ’adressage immédiat utilise le compteur ordinal pour repérer une donnée en mémoire de programme
Mode direct, adressage par blocs de 128 mots appelés pages de données
• Il existe 512 pages de 0 à 511• Accès à une page: pointeur de page DP du registre d’état ST0
Modes d ’adressage
DP Offset Mémoire données0000 0000 00000 0000 0
000 0000111 1111
Page 0 : 0000h - 007Fh
0000 0000 10000 0000 1
000 0000111 1111
Page 1 : 0080h - 00FFh
.
.
.1111 1111 11111 1111 1
000 0000111 1111
Page 511 : FF80h - FFFFh
ldp #1 ; selection page 1add 00F0h ; le contenu de l’adresse 00F0h est ajouté au contenu de l’Accuadd #0ED83h ; ajout de ED83 au contenu de l’Accu.
Mode indirect, adressage par l’un des 8 registres auxiliaires ARn
LAR AR1, # 00F0h ; AR1 pointe sur le contenu de la mémoire 00FH
MAR *, AR1 ; choix de AR1, ARP=1
ADD * ; le contenu de la mémoire pointée par AR1 est ; ajouté à celui de l’Accumulateur
Modes d ’adressage
Lorsqu’un registre-pointeur est utilisé, AR(ARP) représente toujours l’adresse d ’un des opérandes
* AR(ARP) utilisé comme adresse, ARP reste inchangé *+ AR(ARP) AR(ARP)+1 *- AR(ARP) AR(ARP)-1 *0+ AR(ARP) AR(ARP)+AR0 *0- AR(ARP) AR(ARP)-AR0 *BR0+ AR(ARP) AR(ARP)+AR0 et propagation de la retenue de
gauche à droite après l’adressage *BR0- AR(ARP) AR(ARP)-AR0 et propagation de la retenue de
droite à gauche après l’adressage
Modes d ’adressage
Registres d’état
Le processeur dispose de 2 registres d’état ST0 et ST1
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
ARP OV OVM 1 INTM DP
ARP: pointeur d’adresse ( registre auxiliaire courant)OV : indique la présence d’un dépassementOVM: le résultat est saturé lors d’un dépassement si 1INTM: masquage global des interruptions si 1DP: permet l’adressage par page
Registre ST0
Registres d’état
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
ARB CNF TC SXM C 1 1 1 1 XF 1 1 PM
ARB: stocke le précédent ARP
CNF: indique si la mémoire à double accès (B0) est en mode prog.ou données
TC: bit indiquant le résultat d’un test logique SXM: (Sign eXtension Mode) extension du bit de signe lors des décalages à droite
C: stocke le résultat de la retenue lors d’une opération arithmétique
XF: (eXternal Flag) état de la broche XF du processeur
PM: mode de décalage des produits
00: Aucun décalagePM 01: Décalage d’un bit à gauche
10: Décalage de 4 bits à gauche11: Décalage de 6 bits à droite avec extension du signe
Registre ST1
Gestionnaire d’évènement
2 Gestionnaires d’évènements: EVA et EVB fonctionnent de manière identique
Chacun comprend:
• 2 Timers;• 3 Unités de comparaison;• 1 Module de génération de signaux PWM avec temps mort et possibilité de SVPWM;• 3 Unités de capture;• 1 Circuit « Quadature Encoder Pulse : QEP » adapté aux codeurs incrémentaux pour la mesure de position • Une logique de gestion des interruptions
Event Manager Block Diagram (EVA)
PWM Circuits
PWM Circuits
PWM Circuits
Output Logic
Output Logic
Output Logic
GP Timer 1 Compare
GP Timer 1
GP Timer 2 Compare
GP Timer 2
Compare Unit 1
Compare Unit 2
Compare Unit 3
Capture Units
MUXQEP
Circuit
Output Logic
Output Logic
EV Control Registers / Logic
Reset PIE
TCLKINA / TDIRA/2
ADC Start
Dat
a B
us
•
CLK
DIR
••
T1CMP/T1PWM
T2CMP/T2PWM
PWM1PWM2PWM3PWM4PWM5PWM6
CAP1/QEP1CAP2/QEP2CAP3/QEPI1•
Caractéristiques du LF2407:
• Fréquence 40 MHz : 40x106 instructions par seconde (40 MIPS)
• 2x2 Timers
• 2x3 unités de comparaison: 2x 6 signaux PWM (MLI)
• Circuits gérant les signaux PWM: Fonctionnement en MLI vectorielle (SVPWM)Gestion des temps morts
• 2x3 Compteurs d ’impulsions « Capture units »
• 2 modules avec des entrées « QEP » compatible avec des codeurs incrémentaux• Faible niveau de tension : 3,3 V
Récapitulatif
Les Timers
2 Timers par module
4 Bases de temps indépendantes:
• Génération d’une période d’échantillonnage dans un système de contrôle• Bases de temps pour les compteurs d ’impulsions• Bases de temps pour les circuits QEP (seulement les timers 2 et 4)• Bases de temps pour la génération des signaux MLI
Chaque timer comprend:
• un registre compteur TxCNT accessible en lecture et écriture• un registre de contrôle GPTCON • un registre de comparaison TxCMPR accessible en lecture et écriture• un registre période TxPR• un registre de contrôle TxCON• un diviseur de fréquence applicable aux horloges interne et externe• une logique gérant les interruptions et leur contrôle• une sortie (TxPWM / TxCMP) correspondant au résultat de la comparaison (TxCMPR)
MUX
T2PR ou T4PRRegistre période
(Dédoublé)
T1PR ou T3PRRegistre période
(Dédoublé)
Logique decomparaison
TxCMPRRegistre comparaison
(Dédoublé)
Géné. dents scieSym. / Asym.
GPTCONRegistre ctrl Timer
Logiquesorties
TxPWM
TxCNTCompteur
Logique decontrôle
TxCONRegistre de contrôle
Horloge CPUinterne
Démarrage ConversionADC
DrapeauxInterruption (Flags)
TCLKINA/BTDIRA/B
Fonctionnement des Timers
TxCON qui détermine:
quel mode de comptage est utilisé; si le Timer utilise une horloge interne ou externe; quelle valeur du diviseur de fréquence utiliser; dans quelle condition le registre de comparaison est rechargé; si le Timer est valide ou pas; si l’opération comparaison est valide ou pas; si les Timers 2 et 4 utilisent leur propre période ou celle du Timer1 et Timer3
Registres de Contrôle des Timers
Registre de contrôle des Timers TxCON
Bits 15,14: conditions d’arrêt du TimerBits 13 : RéservéBits 12-11: mode de comptageBit 10-8 : valeur du diviseur de fréquence Bit 7 : Permet de démarrer le Timer 2 (ou le Timer4) en même temps
que le Timer1 (ou le Timer3)Bit 6 : Démarrage du TimerBits 5-4 : source de l’horloge des TimersBits 3-2 : condition de chargement des registres de comparaisonBit 1 : validation de l’opération comparaisonBit 0 : choix de la période (concerne Timer 2 et 4)
Configuration des Timers
15 14 13 12-11 10-8 Free Soft Réservé TMODE2-TMODE0 TPS2-TPS0
7 6 5-4 3-2 1 0
TSWT1 TENABLE TCLKS1-TCLKS0 TCLD1-TCLD0 TECMPR SELT1PR
GPTCONA/B:
spécifie les actions à prendre en compte par le Timer;
indique le sens du comptage.
Registres de Contrôle des Timers
Configuration des Timers
15 14 13 12-11 10-9 8-7 T3STAT T2STAT T13STAT T3TOADC T2OADC T1OADC
6 5-4 3-2 1-0
TCOMPOE T3PIN T2PIN T1PIN
Registre de contrôle des Timers GPTCONA/B
Bits 15 : RéservéBit 14 : Sens de comptage (concerne Timer 2 ou Timer 4) Bit 13 : Sens de comptage (concerne Timer 1 ou Timer 3)Bit 12-11 : RéservésBit 10-9 : démarrage du convertisseur ADC par un événement du Timer2 ou Timer 4Bit 8-7 : démarrage du convertisseur ADC par un événement du Timer1 ou Timer 3Bit 6 : permet de valider la sortie: comparaison des TimersBits 5-4 : RéservésBits 3-2 : polarité de la sortie du Timer 2 ou du Timer 4Bits 1-0 : polarité de la sortie du Timer 1 ou du Timer 3
Configuration des Timers
4 Interruptions par Timer:
Overflow: TxOFINT ( Compteur = FFFFh);
Underflow: TxUFINT ( Compteur = 0000h);
Compare match: TxCINT ( Compteur = Val TxCMPR));
Période match: TxPINT ( Compteur = Val (TxPR));
Interruptions Timer
Programmation des Timers
3 modes de fonctionnement sont possibles: Mode 1: « Continuous up » Signaux asymétriques Mode 2: « Continuous up / down » Signaux symétriques Mode 3: « Directional up /down » Signaux asymétriques
Mode asymétrique Mode symétrique
TxCMPR
TxPWM
TxCMPR
TDIRA/B
Mode 3: « Directional up /down »
Mode 1 Mode 2 Valeur du registre TxPR
ou Valeur du registre TxCMPR
(Valeur réelle/THCPU) -1
Valeur réelle /(2.THCPU)
Programmation des Timers
Programmation des Timers
Exemple: Timer1 en mode asymétrique
Période = 200 ns, soit 8*25 ns et Niveau comparaison: 100 ns, soit 4*25 ns
Configuration des Timers
T1PR = 8-1=7T1CMPR = 4-1=3
GPTCONA = 0000 0000 0100 0010 b polarité de la sortie: Active High sorties des 2 Timers valides
T1CON = 1001 0000 0100 0010 b Validation du mode comparaison Recharge registre T1CMPR si compt.=0 Horloge interne Timer1 valide: démarrage Timer1 Mode continuous-up opération non affectée par l’arrêt de l’émulation
Timer1 en mode asymétrique: Période 8*25 ns Niveau comparaison:4*25 ns
Code assembleur: Timer1 en mode asymétrique
GPTCONA .set 7400hT1CNT .set 7401hT1CMPR .set 7402hT1PR .set 7403hT1CON .set 7404h
LDP #0E8hSPLK #0042h,GPTCONASPLK #0007h,T1PRSPLK #0003h,T1CMPRSPLK #0000h,T1CNTSPLK #9042h,T1CON
Configuration des Timers
T1PR = 4T1CMPR = 2T1CNT = 0
GPTCONA = 0000 0000 0100 0010 b polarité de la sortie: active high sorties des 2 Timers valides
T1CON=1000 1000 0100 0010 b Validation du mode comparaison Recharge registre T1CMPR si compt.=0 Démarre Timer1 Horloge interne
Mode continuous-Up/Down opération non affectée par l’arrêt de l’émulation
Configuration des Timers
Timer1 en mode symétrique: Période 4*2*25 ns Niveau comparaison: 2*2*25 ns
Configuration des Timers
GPTCONA .set 7400hT1CNT .set 7401hT1CMPR .set 7402hT1PR .set 7403hT1CON .set 7404h
LDP #0E8hSPLK #0042h,GPTCONASPLK #0004h,T1PRSPLK #0002h,T1CMPRSPLK #0000h,T1CNTSPLK #8842h ,T1CON
Code assembleur: Timer1 en mode symétrique
Gestion des sorties PWM
3 Unités de comparaison par module:
• compare units 1,2 et 3 dans EVA : Base de temps Timer1• compare units 4,5 et 6 dans EVB : Base de temps Timer3
Chaque unité est associée à 2 sorties PWM : 2x 6 sorties PWM
Les registres de contrôle des sorties PWM
EVA CMPR1 CMPR2 CMPR3 COMCONA ACTRA
EVB CMPR4 CMPR5 CMPR6 COMCONB ACTRB
Programmation des sorties PWM avec un temps mort
15 14 13 12 11 10 9 8 SVRDIR D2 D1 D0 CMP6ACT1 CMP6ACT0 CMP5ACT1 CMP5ACT0
7 6 5 4 3 2 1 0 CMP4ACT1 CMP4ACT0 CMP3ACT1 CMP3ACT0 CMP2ACT1 CMP2ACT0 CMP1ACT1 CMP1ACT0
Bit 15 : sens de rotation de la MLI (PWM) vectorielleBits 14-12 : définissent la position des vecteurs tension en MLI vectorielleBits 11-0 : définissent les polarités des sorties PWM
«Compare Action Control Register» ACTRA
Programmation du circuit PWM avec un temps mort
15 14 13 12 11 10 9 8
CENABLE CLD1 CLD0 SVENABLE ACTRLD1 ACTRLD0 FCOMPOE SCOMPOE
7 6 5 4 3 2 1 0 Réservés
Bit 15 : permet de valider l’opération comparaisonBits 14-13 : définissent les conditions de chargement du registre CMPRxBit 12 : validation du SVPWM (PWM vectorielle)Bits 11-10 :définissent les conditions de chargement du registre ACTRBit 9 : valident les sorties PWMBit 8 : Etat de la broche PDPINTABit 7-0 : Réservés
Registre de contrôle du mode comparaison
COMCONA
Programmation du circuit PWM avec un temps mort
15-12 11 10 9 8 Réservés DBT3 DBT2 DBT1 DBT0
7 6 5 4 3 2 1-0
EDBT3 EDBT2 EDBT1 DBTPS2 DBTPS1 DBTPS0 Réservés
Le temps mort est nécessaire pour éviter les court-circuits dans les structures en pont des onduleurs:
Registre de contrôle du temps mort DBTCONA
Bits 15-12: RéservésBits 11 -8 : permet de définir la valeur du temps mortBit 7 : Validation du temps mort pour PWM5 et PWM6Bit 6 : Validation du temps mort pour PWM3 et PWM4Bit 5 : Validation du temps mort pour PWM1 et PWM2Bits 4-2 : Diviseur de fréquence
000 = x /1 100 = x /16 x: Fréquence du CPU001 = x /2 101 = x /32010 = x /4 110 = x /32011 = x /8 111 = x /32
Bits 1-0 : Réservés
Programmation du circuit PWM avec un temps mort
Si DBTCONx [11-8] = m DBTCONx [4-2] correspond à x /p
DBTCON[4-2] p
DBTCON[11-8] m
110 (p =32)
100 (p=16)
011 p=(8)
010 (p = 4)
001 (p =2)
000 (p = 1)
0 0 0 0 0 0 0
1 0,8 0,4 0,2 0,1 0,05 0,025
2 1,6 0,8 0,4 0,2 0,1 0,05
3 2,4 1,2 0,6 0,3 0,15 0,075
4 3,2 1,6 0,8 0,4 0,20 0,1
5 4 2 1 0,5 0,25 0,125
6 4,8 2,4 1,2 0,6 0,3 0,15
7 5,6 2,8 1,4 0,7 0,35 0,175
8 6,4 3,2 1,6 0,8 0,40 0,2
9 7,2 3,6 1,8 0,9 0,45 0,225
A 8 4 2 1 0,5 0,25
B 8,8 4,4 2,2 1,1 0,55 0,275
C 9,6 4,8 2,4 1,2 0,6 0,3
D 10,4 5,2 2,6 1,3 0,65 0,325
E 11,2 5,6 2,8 1,4 0,7 3,35
F 12 6 3 1,5 0,75 0,375
MHzxxpmsenmorttemps 40610..
Circuits PWM associés aux Unités de comparaison
Géné ScieSym / Asym
SVPWM
MUXUnité
Temps mortLogique de
sorties
ACTRA Compare action
registre
DBTCONAdead-band timercontrol register
ACTRA [12-15]
COMCONA [11-13]
COMCONA [12]
COMCONA [9]
PWM1à
PWM6
Comparaison
Programmation des sorties PWM avec un temps mort: Module EVA
Procédure de programmation:
- charger le registre T1PR - charger le registre ACTRA - charger le registre DBTCONA - initialiser les registres CMPR1,2,3
- charger le registre COMCONA - charger le registre T1CON pour démarrer l’opération - charger les registres CMPR1,2,3 avec les bonnes valeurs
PWM en mode symétrique
2 signaux PWM par unité de comparaison Base de temps utilisé: Timer1 Exemple: Période 250ns = 5*2*25 ns, Temps mort = 25 ns
ACTRA = 0000 0110 0110 0110 b sortie 1: active high sortie 2: active low
DBTCONA = 0000 0001 1110 0000b Prescaler = x/1 Validation temps mort pour les 3 phases Temps mort = 25 ns
Programmation des sorties PWM avec un temps mort: Module EVA
CMPR1 = 3h CMPR2 = 2h CMPR3 = 4h COMCONA = 1000 0010 0000 0000 b
Validation sorties PWM
Chargement registres ACTR quand T1CNT=0 Chargement registres CMPRx quand T1CNT=0 Validation de l’opération comparaison
T1PR = 5hT1CNT = 0hT1CON = 8842h
Programmation des sorties PWM avec un temps mort: Module EVA
GPTCONA .set 7400hT1CNT .set 7404hT1PR .set 7403hT1CON .set 7404hCOMCONA .set 7411hACTRA .set 7413hDBTCONA .set 7415hT1CON .set 7404hCMPR1 .set 7417hCMPR2 .set 7418hCMPR3 .set 7419h
LDP #00E8hSPLK #0666h,ACTRASPLK #01E0h,DBTCONASPLK #3h,CMPR1SPLK #2h,CMPR2SPLK #4h,CMPR3SPLK #8200h,COMCONASPLK #5h,T1PRSPLK #0h,T1CNTSPLK #8842h ,T1CON
Code assembleur: Timer1 en mode symétrique
Programmation des sorties PWM avec un temps mort: Module EVA
Valeur du Timer Valeurs des registres
comparaison.
PWM1Active high
PWM2Active low
PWM3Active high
PWM4Active low
PWM5Active high
PWM6Active low
Temps mort
Circuit QEP « quadrature Encoder Pulse » pour EVA
• Utilisé pour décoder et compter les impulsions aux entrées
QEP1 et QEP2 (EVA) ou QEP3 et QEP4 (EVB) Position & vitesse
• Prévu pour être interfacé avec un codeur incrémental ( mesure de position)
• Base de temps: Timer2 pour EVA et Timer4 pour EVB
• Les Timers doivent être programmés en mode « Directional up /down »
Timer2 Prescaler
QEPDecoder
logic
CaptureUnits1,2
CLKOUT
CAP1/ QEP1CAP2/ QEP2
T2CON[4,5]
CLKOUT CAPCONA[13,14]T2CON[8,9,10]
CLKIN
CLK
DIR
TDIRA 2
2
2
Circuit QEP « quadrature Encoder Pulse »
La programmation du circuit nécessite les registres:
• T2PR ou T4PR• T2CON ou T4CON• CAPCONA ou CAPCONB
Décodeurlogique
CompteurT2CNT K QEP1
QEP2
CLK
Direction
Gestion des interruptions
Le LF2407 dispose de: -2 signaux externes non masquables: RS et NMI
-6 interruptions masquables INT1, INT2,...., INT6
-3 instructions pour le déclenchement logiciel des interruptions: INTR, NMI et TRAP
- Les interruptions INTx sont activées par des sources issues des EVA et EVB
- Ces sources sont organisées en 3 groupes A,B et C
Groupe Source d’interruption
Description Interruption
INTx
A
CMP1INT
CMP2INT
CMP3INT
T1PINT
T1CINT
T1UNINT
T1OFINT
Compare unit 1
Compare unit2
Compare unit 3
Timer 1 period
Timer 1 compare
Timer 1 underflow
Timer 1 overflow
INT2
B
T2PINT
T2CINT
T2UNINT
T2OFINT
Timer 2 period
Timer 2 compare
Timer 2 underflow
Timer 2 overflow
INT3
C
CAP1INT
CAP2INT
CAP3INT
Capture unit 1
Capture unit 2
Capture unit 3
INT4
Groupe Source d’interruption
Description Interruption
INTx
A
CMP4INT
CMP5INT
CMP6INT
T3PINT
T3CINT
T3UNINT
T3OFINT
Compare unit 4
Compare unit5
Compare unit 6
Timer 3 period
Timer 3 compare
Timer 3 underflow
Timer 3 overflow
INT2
B
T4PINT
T4CINT
T4UNINT
T4OFINT
Timer 4 period
Timer 4 compare
Timer 4 underflow
Timer 4 overflow
INT3
C
CAP4INT
CAP5INT
CAP6INT
Capture unit 4
Capture unit 5
Capture unit 6
INT4
Les interruptions de EVA Les interruptions de EVB
Registre Drapeau Registre Masque Gestionnaire d’évènement
EVAIFRA EVAIMRA
EVAEVAIFRB EVAIMRB
EVAIFRC EVAIMRC
EVBIFRA EVBIMRA
EVBEVBIFRB EVBIMRB
EVBIFRC EVBIMRC
Gestion des interruptions
15-11 10 9 8 7 6-4 3 2 1 0
Réserves T1OFINT T1UFINT T1CINT T1PINT Réservés CMP3INT CMP2INT CMP1INT PDPINTA
15-4 3 2 1 0
Réserves T2OFINT T2UFINT T2CINT T2PINT
EVAIMRA
EVAIMRB
15-3 2 1 0
Réserves CAP3INT CAP2INT CAP1INT
EVAIMRC
15-6 5 4 3 2 1 0
Réservés INT6 INT5 INT4 INT3 INT2 INT1
IMR
Les masques d’interruption de EVA
Pour autoriser les interruptions de manière globale:
CLRC INTM ; armement du mécanisme des ITs pour toutes; les sources masquables
Pour les inhiber:
SETC INTM ; désarmement du mécanisme des ITs
Gestion des interruptions
ADC Module Block Diagram (dual sequencer mode)
12-bit A/DConverter
SoftwareEVA
Ext Pin (ADCSOC)
ResultSelect
Result MUX
RESULT0
. . .
RESULT1
RESULT7
ResultSelect
RESULT8
. . .
RESULT9
RESULT15
CHSEL00 (state 0)CHSEL01 (state 1)CHSEL02 (state 2)
CHSEL07 (state 7)...
MAX_CONV1
Autosequencer
Start SequenceTrigger
SOC1/EOC1
SEQ1
CHSEL08 (state 8)CHSEL09 (state 9)CHSEL10 (state 10)
CHSEL15 (state 15)
...
MAX_CONV2
Autosequencer
Start SequenceTrigger
SEQ2
SequencerArbiter
SOC2/EOC2
SoftwareEVB
Analog MUX
MUXA
ADCINA0
ADCINA1
ADCINA7
...
MUXB
ADCINB0
ADCINB1
ADCINB7
...
S/HA
S/HMUX
S/HB
Convertisseur Analogique Digital ADC
Les registres nécessaires à la programmation:
• ADCTRL1• ADCTRL2• MAXCONV• CHSELSEQ1• CHSELSEQ2• CHSELSEQ3• CHSELSEQ4• RESULT0 ……RESULT15
Bits15-12 Bits11-8 Bits7-4 Bits3-0
3 2 3 2 CHSELSEQ1
x 12 7 6 CHSELSEQ2
x x x x CHSELSEQ3
x x x x CHSELSEQ4
Vin ADCRESx Data Mem Signed Q15
0.15 1111|1111|1100|0000 0111|1111|1100|0000 +0.999023 0 0111|1111|1100|0000 1111|1111|1100|0000 -0.000977-0.15 0000|0000|0000|0000 1000|0000|0000|0000 -1.000000
Int resultADC;
resultADC = ADCRESx ^ 0x8000;
Exemple de mesure d’un courant via l’ADC
ADCINx
VCCA
VSSA
TMS320F2407Vin
3.3 v
-+
R
R
2R
-0.15 V < Vin < +0.15 VPWM1
PWM2
+ DC_BUS
GND
Shuntresistor
A
0 V < VADCin < +3.3 V
Convertisseur Analogique Digital ADC
V3,3ADCIN
Ventréed'tensionsLes
Le convertisseur étant sur 10 bits, le résultat de la conversion est:
3,3
ADCINV
1023numériqueValeur
Bit 15-6 : résultat de la conversion sur 10 bits
Lecture du résultat d’une conversion
En assembleur
LACC RESULTx,10 ; décalage de 10 bits à gauche pour récupérer le résultatSACH variable ; récupérer la partie haute de l’accu.
En langage C
unsigned int tmp; Float entree=0.0;
tmp = RESULTx > 6entree=((float)tmp/1023.0)*3.3
Les registres résultats RESULTx
Gestion des convertisseurs A/N (ADC)
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 0 0 0 0 0 0
15-6 5 4 3 2 1 0 IMR Réservé INT6 INT5 INT4 INT3 INT2 INT1
IFR Réservé INT6 INT5 INT4 INT3 INT2 INT1
15-4 3 2 1 0
EVAIMRB Réservé T2OFINT T2UFINT T2CINT T2PINT
/* Programmation d’une interruption avec le Timer2 */
Codage des nombres
• Représentation en complément à 2:
Soit X un nombre codé sur N bits en complémént à 2
X= -2N-1.bN-1 + bi.2i
avec: bN-1= 0 si X > 0 bN-1= 1 si X < 0
Xmax = 2N-1 -1Xmin = - 2N-1
X bN-1 bN-2 ............. b1 b0
i=0
i=N-2
Codage des nombres
• Addition de 2 nombres de N bits Résultat sur N+1 bits au moins
• Produit de 2 nombres de N bits Résultat nécessite 2N-1 bits
• Le registre produit est sur 2N bits: Les 2 bits de poids fort sont identiques
Le MSB est inutile: Décaler le résultat d’un bit à gauche (PM)
Codage des nombres
• Représentation en virgule fixe:
On utilise le terme «Format Qk» : K bits après la virgule
Si X est codé sur N bits en format Qk.
X = - bN-1-K.2N-1-K + bN-2-K.2N-2-K +......... + b0 + b-1.2
-1 +......+ b-K.2-K
Erreur < 2-K
Pour éviter de traiter les puissances négatives, on multiplie X par 2K.
Cela correspond à la représentation de l’entier Y tq
Y= round ( X.2K)
Partie entière Partie fractionnaire X bN-1-K bN-2-K ..... b1 b0 b-1 b-2 ....... b-K
Codage des nombres
• Représentation en virgule fixe:
Valeurs extrêmes Xmax = 2N-1-K - 2-K
Xmin = - 2N-1-K | Xmin | = 2-K
Exemples : 110 10001 en format Q5 sur 8 bits soit: -22+21+2-1+2-5 = -4+2+0.5+0.0312 5= -1.46875
Nombre réel Format Q5 Equivalence Erreur Erreur en % 1/3
sqrt(2)
000 01011 001 01101 011 00101 100 00000
0,34375 1,40625 3,15625
4
0,0104166 0,0079635 0,0146573
0,02
3,125 0,563 0,466
0,5
Représentation sur 8 bits en format Q5
Codage des nombres
• Addition: Aligner les parties entières et les parties décimales
• Multiplication: Le produit de 2 nombres sur N bits donne un résultat sur 2N bits Les 2 bits de poids forts sont identiques ( bits de signe) Seuls 2N-1 bits
sont nécessaires pour le résultat
• Produit de 2 nombres en formats différents: QK1 x QK2 : Résultat en QK1+K2
Si on souhaite un résultat en format QK3 , on doit effectuer:
- un décalage vers la droite de K1+K2-K3- ou un décalage vers la gauche de 16 - (K1+K2-K3 )
Exemple: soit la multiplication suivante: I.cos
Avec: I =0.816 Format Q12 cos =0.5 Format Q12
I = 0.816 x 212=3342 d D0E hcos = 0.5 x 212=2048 d 800 h
D0E h x 800 h = 687 000 h au format Q24
Résultat en Q12:
• Décalage à droite de 24-12=12 et prendre la partie basse
• ou décalage à gauche de 16-( 24-12)=4 et prendre la partie haute
687 000 h après décalage : 0000 0110 1000 0111 b 0.4079589844
alors que I.cos = 0.816 x 0.5 = 0.408
Codage des nombres
Codage des nombres
Calcul en virgule fixe
Multiplication de 2 nombres en format Q15
LAR AR1, #ad_début ; AR1= adresse de Val1MAR *, AR1 ; Choix de AR1 comme pointeurLT ad_donnée ; Treg =Val = valeur pointée par ad_donnéeMPY * ; Preg = Treg x Val1: Q30 sur 32 bitsPAC ; Transfert de Preg dans l’accu.SACH ad_résultat,1 ; Décalge du résultat de 1 bit à gauche
; et stockage de la partie haute de l’accu ; dans ad_résultat. Résultat en Q15[31...16]
Adresses Valeurs
ad_début Val1Val2Val3Val4
...
...
ad_donnée Valad_résultat xxxx
Codage des nombres
Calcul en virgule fixe: Multiplication de 2 nombres en format Q15 et Q13
Valeurs du tableau en format Q13
Contenu de l’adresse ad_donnée en format Q15
Le résultat sera en Q28 sur 32 bits.
Pour ramener le résultat en Q15
il faut diviser par 213 et ne conserver que les bits de poids faibles ou multiplier par 23 et ne conserver que les bits de poids forts
c-à-d effectuer un décalage de 3 bits à gauche
Adresses Valeursen Q13
début Val1Val2Val3Val4
...
...
...
LAR AR1, # ad_début ; AR1= adresse de Val1MAR *, AR1 ; Choix de AR1 comme pointeurLT ad_donnée ; Treg = valeur pointée par ad_donnéeMPY * ; Preg = Treg x Val1: Q30 sur 32 bitsPAC ; Transfert de Preg dans l’accu.SACH ad_résultat ,3 ; Décalge du résultat de 3 bit à gauche
; et stockage de la partie haute de l’accu ; dans ad_résultat. Résultat en Q15[31...16]
Codage des nombres
31 30 29 28 27-24 23-20 19-16 15-12 11-8 7-4 3-0Preg
16 bits de poids forts 16 bits de poids faibles
31 30 29 28 27-24 23-20 19-16 15-12 11-8 7-4 3-0Preg
16 bits de poids forts 16 bits de poids faibles