Aucun titre de diapositive

publicité
LES PROCESSEURS DU SIGNAL (DSP)
DANS LE CONTRÔLE NUMERIQUE
Étude d’un DSP dédié au contrôle moteur
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 mProcesseur et DSP
 Etude du processeur TMS 320LF2407
Application à la carte d’évaluation eZdsp LF2407
- Architecture
- Gestion des interruptions
- Programmation
 Exemples de programmes
 Codage des nombres
 Applications
Introduction
Définition
Un DSP : mProcesseur 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
Motorola 8%
Analogue Device 11%
Autres
7%
Texas
Instruments
45%
AT&T 29%
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;
Différences entre un mProcesseur et un DSP
Soit:
A  ( B. C)  D
Le 68000 (par ex.) a besoin de:
10 cycles d’horloges pour effectuer une addition
70 cycles d’horloges pour effectuer une multiplication
soit au total 80 cycles d’horloges
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
Cette opération s’appelle MAC et prend 1 cycle d’horloge
Performances des DSP
Vitesse de calcul: Nombre d ’instructions par seconde
ACRONYM
E
ANGLAIS
DEFINITION
Million Floating-Point Operations Per Second
MFLOPS
Mesure le nombre d’opérations à virgule flottante(multiplication,
additions, soustraction…etc) que le DSP à virgule flottante peut
réaliser en une seconde
Million Operations Per Second
MOPS
Mesure le nombre total d’opérations que le DSP peut réaliser en
une seconde. Les opérations concernent également les accès
DMA, les transferts de données, les opérations d’E/S…etc.
Million Instructions Per Second
MIPS
Mesure le nombre de codes machines (instructions) que le DSP
peut effectuer en une seconde.
Mega-Bytes Per Second
MBPS
Mesure la largeur de bande d’un bus particulier ou d’un dispositif
D’E/S, c-à-d son taux de transfert
Différences entre un mProcesseur et un DSP
Structure Von Neuman
Adresse
Mémoire
Programme
et Données
Donnée
Entrées
Sorties
Unité arithmétique
et logique
Différences entre un mProcesseur et un DSP
Structure Harvard
Adresse
Mémoire
Programme
Donnée
Adresse
Entrées
Sorties
Unité arithmétique
et logique
Donnée
Mémoire
Données
Différences entre un mProcesseur et un DSP
Structure Harvard Modifiée
Mémoire
Programme
Adresse
MUX
Donnée
Mémoire
Données
MUX
Entrées
Sorties
Unité arithmétique
et logique
Différences entre un mProcesseur et un DSP
 Structure Von Newman
 Structure Harvard
mProcesseurs
mProcesseurs spécialisés : DSP
 Structure Harvard modifiée Coût plus faible
Performances des 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.
Choix d ’un 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
Étude du processeur TMS 320 LF 2407
Architecture du TMS 320 LF2407
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
C2xx CPU+JTAG
+544x16 DARAM
Logic
I/F
Flash / ROOM
(Up to 32Kx16)
SARAM
(up to 2Kx16)
Mem I/F
P bus I/F
P bus
Event
Managers
(EVA and EVB)
SPI
SCI
CAN
WD
ADC
control
ADC
Interrupts
reset,etc
I/O
registers
Unité centrale de calcul
Bus Programme
UA des pointeurs
Registre
instruction
Registres
pointeurs:
AR0…AR7
Bus Données
Prédécaleur
Multiplieur
UAL Générale
Registre TREG
Accumulateur
Registre PREG
Postdécaleur
Postdécaleur
Bus de Données en écriture
DWEB
Bus de Données en lecture DRDB
Bus de Programme en lecture PRDB
TREG
Multiplieur
16x16
MUX
PREG
Décalage 0-16bits (Prescaler)
Décalage -6,0,1,4 bits (Pscaler)
MUX
ALU
C
Accumulateur
Décalage 1-7 bits (Postscaler)
MUX
Générateur d ’adresses
Bus de Données en lecture
ARB
AR7
AR6
AR5
AR4
AR3
AR2
AR1
AR0
ARP
MUX
Registre Instruction
MUX
ARAU
Bus adresses données
Bus Données
Flash
EEPROM
DARAM
B1 / B2
DARAM
B0
Test
Emulation
Interface
Mémoire
Externe
Bus Programme
Contrôleur
Programme
Registre
Instruction
ARAU
Pré-décaleur
Multiplieur
Registre d’état
ALU
TREG
Registres Aux.
Accumulateur
PREG
Géné.
Temps
d’attente
Gestionnaire
d’événement
Timers
Registres
mappés en
mémoire
Post-décaleur
Post-décaleur
Unités
comparaison
Captue /QEP
Module Horloge
Module Interface système
Bus Périphérique
Convertisseur A/D
Interface Série
Watchdog
Architecture du TMS 320LF2407
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 320 F240
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 mcontrôleur
• MP/MC = 1 :  le DSP est en mode mprocesseur
Bloc B0: 256 mots de 16 bits FE00h à FFFFh
Bloc B1: 256 mots de 16 bits 0300h à 03FFh
Bloc 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
Organisation de la mémoire
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
Modes d ’adressage
 On dispose de 3 modes d ’adressage:
t direct paginé
t indirect et indirect indexé
t 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
Modes d ’adressage
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
DP
0000 0000 0
0000 0000 0
0000 0000 1
0000 0000 1
.
.
.
1111 1111 1
1111 1111 1
ldp
add
add
#1
00F0h
#0ED83h
Offset
000 0000
111 1111
000 0000
111 1111
000 0000
111 1111
Mémoire données
Page 0 : 0000h - 007Fh
Page 1 : 0080h - 00FFh
Page 511 : FF80h - FFFFh
; selection page 1
; le contenu de l’adresse 00F0h est ajouté au contenu de l’Accu
; ajout de ED83 au contenu de l’Accu.
Modes d ’adressage
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
*
*+
**0+
*0*BR0+
*BR0-
AR(ARP) utilisé comme adresse, ARP reste inchangé
AR(ARP)  AR(ARP)+1
AR(ARP)  AR(ARP)-1
AR(ARP)  AR(ARP)+AR0
AR(ARP)  AR(ARP)-AR0
AR(ARP)  AR(ARP)+AR0 et propagation de la retenue de
gauche à droite après l’adressage
AR(ARP)  AR(ARP)-AR0 et propagation de la retenue de
droite à gauche après l’adressage
Registres d’état
Le processeur dispose de 2 registres d’état ST0 et ST1
Registre ST0
15 14 13 12
11
ARP
OV OVM
8 7 6 5 4 3 2 1 0
10
9
1 INTM
DP
ARP: pointeur d’adresse ( registre auxiliaire courant)
OV : indique la présence d’un dépassement
OVM: le résultat est saturé lors d’un dépassement si 1
INTM: masquage global des interruptions si 1
DP: permet l’adressage par page
Registres d’état
Registre ST1
15 14 13 12
11
ARB
CNF TC
10
9
SXM C
8
1
7
1
6 5 4 3 2 1 0
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
PM
00: Aucun décalage
01: Décalage d’un bit à gauche
10: Décalage de 4 bits à gauche
11: Décalage de 6 bits à droite avec extension du signe
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)
Reset
PIE
EV Control Registers / Logic
GP Timer 1 Compare
/
2
TCLKINA / TDIRA
ADC Start
Output Logic
T1CMP/T1PWM
GP Timer 1
Data Bus
•
Compare Unit 1
Compare Unit 2
PWM Circuits Output Logic
PWM Circuits Output Logic
Compare Unit 3
PWM Circuits Output Logic
GP Timer 2 Compare
Output Logic
PWM1
PWM2
PWM3
PWM4
PWM5
PWM6
T2CMP/T2PWM
GP Timer 2
MUX
CLK
DIR
QEP
Circuit
•
Capture Units
•
•
CAP1/QEP1
CAP2/QEP2
CAP3/QEPI1
Récapitulatif
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
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)
Fonctionnement des Timers
T1PR ou T3PR
Registre période
T2PR ou T4PR
Registre période
(Dédoublé)
(Dédoublé)
GPTCON
Registre ctrl Timer
MUX
TxCMPR
Registre comparaison
(Dédoublé)
Logique de
comparaison
TxCNT
Compteur
Horloge CPU
interne
Logique de
contrôle
TxCON
Registre de contrôle
Géné. dents scie
Sym. / Asym.
Logique
sorties
Drapeaux
Interruption (Flags)
Démarrage Conversion
ADC
TCLKINA/B
TDIRA/B
TxPWM
Registres de Contrôle 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
Configuration des Timers
Registre de contrôle des Timers TxCON
15
Free
14
Soft
7
TSWT1
6
TENABLE
13
Réservé
12-11
TMODE2-TMODE0
5-4
TCLKS1-TCLKS0
3-2
TCLD1-TCLD0
10-8
TPS2-TPS0
1
TECMPR
0
SELT1PR
Bits 15,14: conditions d’arrêt du Timer
Bits 13 : Réservé
Bits 12-11: mode de comptage
Bit 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 Timer
Bits 5-4 : source de l’horloge des Timers
Bits 3-2 : condition de chargement des registres de comparaison
Bit 1
: validation de l’opération comparaison
Bit 0
: choix de la période (concerne Timer 2 et 4)
Configuration des Timers
Registres de Contrôle des Timers
 GPTCONA/B:
 spécifie les actions à prendre en compte par le Timer;
 indique le sens du comptage.
Configuration des Timers
Registre de contrôle des Timers GPTCONA/B
15
T3STAT
6
TCOMPOE
Bits 15
Bit 14
Bit 13
Bit 12-11
Bit 10-9
Bit 8-7
Bit 6
Bits 5-4
Bits 3-2
Bits 1-0
14
T2STAT
13
T13STAT
5-4
T3PIN
12-11
T3TOADC
3-2
T2PIN
10-9
T2OADC
8-7
T1OADC
1-0
T1PIN
: Réservé
: Sens de comptage (concerne Timer 2 ou Timer 4)
: Sens de comptage (concerne Timer 1 ou Timer 3)
: Réservés
: démarrage du convertisseur ADC par un événement du Timer2 ou Timer 4
: démarrage du convertisseur ADC par un événement du Timer1 ou Timer 3
: permet de valider la sortie: comparaison des Timers
: Réservés
: polarité de la sortie du Timer 2 ou du Timer 4
: polarité de la sortie du Timer 1 ou du Timer 3
Interruptions Timer
 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));
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
TxCMPR
TxPWM
Mode asymétrique
Mode symétrique
TxCMPR
TDIRA/B
Mode 3: « Directional up /down »
Programmation des Timers
Valeur du registre TxPR
ou
Valeur du registre TxCMPR
Mode 1
Mode 2
(Valeur réelle/THCPU) -1
Valeur réelle /(2.THCPU)
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
Timer1 en mode asymétrique: Période 8*25 ns Niveau comparaison:4*25 ns
T1PR = 8-1=7
T1CMPR = 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
Configuration des Timers
Code assembleur: Timer1 en mode asymétrique
GPTCONA
T1CNT
T1CMPR
T1PR
T1CON
.set
.set
.set
.set
.set
7400h
7401h
7402h
7403h
7404h
LDP
SPLK
SPLK
SPLK
SPLK
SPLK
#0E8h
#0042h,GPTCONA
#0007h,T1PR
#0003h,T1CMPR
#0000h,T1CNT
#9042h,T1CON
Configuration des Timers
Timer1 en mode symétrique: Période 4*2*25 ns Niveau comparaison: 2*2*25 ns
T1PR = 4
T1CMPR = 2
T1CNT = 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
Code assembleur: Timer1 en mode symétrique
GPTCONA
T1CNT
T1CMPR
T1PR
T1CON
.set
.set
.set
.set
.set
7400h
7401h
7402h
7403h
7404h
LDP
SPLK
SPLK
SPLK
SPLK
SPLK
#0E8h
#0042h,GPTCONA
#0004h,T1PR
#0002h,T1CMPR
#0000h,T1CNT
#8842h ,T1CON
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
«Compare Action Control Register»
ACTRA
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) vectorielle
Bits 14-12 : définissent la position des vecteurs tension en MLI vectorielle
Bits 11-0 : définissent les polarités des sorties PWM
Programmation du circuit PWM avec un temps mort
Registre de contrôle du mode comparaison
COMCONA
15
CENABLE
14
CLD1
13
CLD0
12
SVENABLE
7
6
5
4
11
ACTRLD1
3
Réservés
10
ACTRLD0
9
FCOMPOE
8
SCOMPOE
2
1
0
Bit 15
: permet de valider l’opération comparaison
Bits 14-13 : définissent les conditions de chargement du registre CMPRx
Bit 12
: validation du SVPWM (PWM vectorielle)
Bits 11-10 :définissent les conditions de chargement du registre ACTR
Bit 9
: valident les sorties PWM
Bit 8
: Etat de la broche PDPINTA
Bit 7-0
: Réservés
Programmation du circuit PWM avec un temps mort
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
15-12
Réservés
7
EDBT3
6
EDBT2
5
EDBT1
4
DBTPS2
11
DBT3
10
DBT2
3
DBTPS1
2
DBTPS0
9
DBT1
1-0
Réservés
Bits 15-12: Réservés
Bits 11 -8 : permet de définir la valeur du temps mort
Bit 7
: Validation du temps mort pour PWM5 et PWM6
Bit 6
: Validation du temps mort pour PWM3 et PWM4
Bit 5
: Validation du temps mort pour PWM1 et PWM2
Bits 4-2
: Diviseur de fréquence
000 = x /1
001 = x /2
010 = x /4
011 = x /8
Bits 1-0 : Réservés
100 = x /16
101 = x /32
110 = x /32
111 = x /32
x: Fréquence du CPU
8
DBT0
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
0
110
(p =32)
0
100
(p=16)
0
011
p=(8)
0
010
(p = 4)
0
001
(p =2)
0
000
(p = 1)
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
temps mort en ms  mx. p .106
x  40MHz
Circuits PWM associés aux Unités de comparaison
COMCONA [11-13]
COMCONA [9]
Géné Scie
Sym / Asym
Comparaison
MUX
Unité
Temps mort
Logique de
sorties
DBTCONA
ACTRA
dead-band timer
control register
Compare action
registre
SVPWM
ACTRA [12-15]
COMCONA [12]
PWM1
à
PWM6
Programmation des sorties PWM avec un temps mort: Module EVA
Procédure de programmation:
- charger le registre
- charger le registre
- charger le registre
- initialiser les registres
- charger le registre
- charger le registre
- charger les registres
T1PR
ACTRA
DBTCONA
CMPR1,2,3
COMCONA
T1CON
CMPR1,2,3
pour démarrer l’opération
avec les bonnes valeurs
Programmation des sorties PWM avec un temps mort: Module EVA
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 = 5h
T1CNT = 0h
T1CON = 8842h
Programmation des sorties PWM avec un temps mort: Module EVA
Code assembleur: Timer1 en mode symétrique
GPTCONA
T1CNT
T1PR
T1CON
COMCONA
ACTRA
DBTCONA
T1CON
CMPR1
CMPR2
CMPR3
.set
.set
.set
.set
.set
.set
.set
.set
.set
.set
.set
7400h
7404h
7403h
7404h
7411h
7413h
7415h
7404h
7417h
7418h
7419h
LDP
SPLK
SPLK
SPLK
SPLK
SPLK
SPLK
SPLK
SPLK
SPLK
#00E8h
#0666h,ACTRA
#01E0h,DBTCONA
#3h,CMPR1
#2h,CMPR2
#4h,CMPR3
#8200h,COMCONA
#5h,T1PR
#0h,T1CNT
#8842h ,T1CON
Valeurs des
registres
comparaison.
Valeur du Timer
Temps mort
PWM1
Active high
PWM2
Active low
PWM3
Active high
PWM4
Active low
PWM5
Active high
PWM6
Active low
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 »
CLKIN
CLKOUT
Prescaler
Timer2
T2CON[4,5]
TDIRA
T2CON[8,9,10]
CLK
DIR
QEP
Decoder
logic
CLKOUT CAPCONA[13,14]
2
2
2
Capture
Units1,2
CAP1/ QEP1
CAP2/ QEP2
Circuit QEP « quadrature Encoder Pulse »
CLK
QEP1
QEP2
Décodeur
logique
Compteur
T2CNT
Direction
La programmation du circuit nécessite les registres:
• T2PR
ou T4PR
• T2CON
ou T4CON
• CAPCONA ou CAPCONB
K

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
Les interruptions de EVA
Groupe
A
B
C
Source
d’interruption
Description
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
T2PINT
T2CINT
T2UNINT
T2OFINT
Timer 2 period
Timer 2 compare
Timer 2 underflow
Timer 2 overflow
CAP1INT
CAP2INT
CAP3INT
Capture unit 1
Capture unit 2
Capture unit 3
Interruption
INTx
Les interruptions de EVB
Groupe
A
INT2
INT3
INT4
B
C
Source
d’interruption
Description
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
T4PINT
T4CINT
T4UNINT
T4OFINT
Timer 4 period
Timer 4 compare
Timer 4 underflow
Timer 4 overflow
CAP4INT
CAP5INT
CAP6INT
Capture unit 4
Capture unit 5
Capture unit 6
Interruption
INTx
INT2
INT3
INT4
Gestion des interruptions
Registre Drapeau
Registre Masque
EVAIFRA
EVAIMRA
EVAIFRB
EVAIMRB
EVAIFRC
EVAIMRC
EVBIFRA
EVBIMRA
EVBIFRB
EVBIMRB
EVBIFRC
EVBIMRC
Gestionnaire
d’évènement
EVA
EVB
Les masques d’interruption de EVA
EVAIMRA
15-11
10
9
8
7
6-4
3
2
1
0
Réserves
T1OFINT
T1UFINT
T1CINT
T1PINT
Réservés
CMP3INT
CMP2INT
CMP1INT
PDPINT
A
EVAIMRB
15-4
3
2
1
0
Réserves
T2OFINT
T2UFINT
T2CINT
T2PINT
EVAIMRC
15-3
2
1
0
Réserves
CAP3INT
CAP2INT
CAP1INT
IMR
15-6
5
4
3
2
1
0
Réservés
INT6
INT5
INT4
INT3
INT2
INT1
Gestion des interruptions
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
ADC Module Block Diagram (dual sequencer mode)
Analog MUX
Result MUX
ADCINA0
ADCINA7
12-bit A/D
Converter
S/H
MUX
ADCINB0
ADCINB1
RESULT0
RESULT1
S/H
A
...
MUX
B
S/H
B
Result
Select
Sequencer
Arbiter
SOC1/
EOC1
ADCINB7
MAX_CONV2
CHSEL00 (state 0)
CHSEL01 (state 1)
CHSEL02 (state 2)
CHSEL08 (state 8)
CHSEL09 (state 9)
CHSEL10 (state 10)
CHSEL07 (state 7)
Start Sequence
Trigger
...
(ADCSOC)
MAX_CONV1
...
Software
EVA
Ext Pin
SEQ2
Autosequencer
CHSEL15 (state 15)
Start Sequence
Trigger
RESULT7
RESULT8
RESULT9
SOC2/
EOC2
SEQ1
Autosequencer
...
MUX
A
Result
Select
...
...
ADCINA1
RESULT15
Software
EVB
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
Exemple de mesure d’un courant via l’ADC
+ DC_BUS
-0.15 V < Vin < +0.15 V
PWM1
0 V < VADCin < +3.3 V
A
R
PWM2
Vin
R
+
Shunt
resistor
GND
TMS320F2407
2R
ADCINx
VCCA
Int resultADC;
3.3 v
VSSA
resultADC = ADCRESx ^ 0x8000;
Vin
ADCRESx
Data Mem
Signed Q15
0.15
0
-0.15
1111|1111|1100|0000
0111|1111|1100|0000
0000|0000|0000|0000
0111|1111|1100|0000
1111|1111|1100|0000
1000|0000|0000|0000
+0.999023
-0.000977
-1.000000
Convertisseur Analogique Digital ADC
Les tensions d' entrée V
 3,3 V
ADCIN
Le convertisseur étant sur 10 bits, le résultat de la conversion est:
V
ADCIN
Valeur numérique  1023
3,3
Gestion des convertisseurs A/N (ADC)
Les registres résultats
RESULTx
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
Bit 15-6 : résultat de la conversion sur 10 bits
Lecture du résultat d’une conversion
En assembleur
LACC
SACH
RESULTx,10
variable
; décalage de 10 bits à gauche pour récupérer le résultat
; récupérer la partie haute de l’accu.
En langage C
unsigned int tmp;
Float
entree=0.0;
tmp = RESULTx > 6
entree=((float)tmp/1023.0)*3.3
/* Programmation d’une interruption avec le Timer2 */
IMR
15-6
Réservé
5
4
3
INT6 INT5 INT4
2
1
0
INT3 INT2 INT1
IFR
Réservé
INT6 INT5 INT4
INT3 INT2 INT1
EVAIMRB
15-4
Réservé
3
2
1
0
T2OFINT
T2UFINT
T2CINT
T2PINT
Codage des nombres
• Représentation en complément à 2:
Soit X un nombre codé sur N bits en complémént à 2
X
bN-1
bN-2
.............
i=N-2
X=
-2N-1.bN-1
avec:
+  bi.2i
i=0
bN-1= 0 si X > 0
bN-1= 1 si X < 0
Xmax = 2N-1 -1
Xmin = - 2N-1
b1
b0
Codage des nombres
• Addition de 2 nombres de N bits

• Produit de 2 nombres de N bits
 Résultat nécessite 2N-1 bits
Résultat sur N+1 bits au moins
• 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
Partie entière
bN-2-K
.....
b1
b0
b-1
Partie fractionnaire
b-2
.......
b-K
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)
Codage des nombres
• Représentation en virgule fixe:
Valeurs extrêmes
Exemples :
Xmax = 2N-1-K - 2-K
Xmin = - 2N-1-K
| Xmin | = 2-K
110 10001 en format Q5 sur 8 bits
soit: -22+21+2-1+2-5 = -4+2+0.5+0.0312 5= -1.46875
Représentation sur 8 bits en format Q5
Nombre réel
1/3
sqrt(2)


Format Q5
000 01011
001 01101
011 00101
100 00000
Equivalence
0,34375
1,40625
3,15625
4
Erreur
0,0104166
0,0079635
0,0146573
0,02
Erreur en %
3,125
0,563
0,466
0,5
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 )
Codage des nombres
Exemple: soit la multiplication suivante: I.cos
Avec:
I =0.816
cos =0.5
Format Q12
Format Q12
I = 0.816 x 212=3342 d  D0E h
cos = 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
Calcul en virgule fixe
Adresses
Valeurs
Multiplication de 2 nombres en format Q15
ad_début
Val1
Val2
Val3
Val4
...
...
ad_donnée
ad_résultat
Val
xxxx
LAR
MAR
LT
MPY
PAC
SACH
AR1, #ad_début ; AR1= adresse de Val1
*, AR1
; Choix de AR1 comme pointeur
ad_donnée ; Treg =Val = valeur pointée par ad_donnée
*
; Preg = Treg x Val1: Q30 sur 32 bits
; Transfert de Preg dans l’accu.
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]
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
Adresses
début
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
Valeurs
en Q13
Val1
Val2
Val3
Val4
...
...
...
Codage des nombres
31 30 29 28
27-24
23-20
19-16
15-12
11-8
7-4
3-0
Preg
16 bits de poids forts
31 30 29 28
27-24
23-20
16 bits de poids faibles
19-16
15-12
11-8
7-4
3-0
Preg
16 bits de poids forts
LAR
MAR
LT
MPY
PAC
SACH
AR1, # ad_début
*, AR1
ad_donnée
*
ad_résultat ,3
16 bits de poids faibles
; AR1= adresse de Val1
; Choix de AR1 comme pointeur
; Treg = valeur pointée par ad_donnée
; Preg = Treg x Val1: Q30 sur 32 bits
; Transfert de Preg dans l’accu.
; 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]
Téléchargement