Vous êtes sur la page 1sur 92

LES PROCESSEURS DU SIGNAL (DSP)

DANS LE CONTRLE NUMERIQUE


tude dun DSP ddi au contrle moteur

LES PROCESSEURS DU SIGNAL (DSP)


DANS LE CONTRLE NUMERIQUE
tude dun DSP ddi au contrle moteur
Gnralits sur les DSP
- Caractristiques
- Structures
- Comparaison entre Processeur et DSP
Etude du processeur TMS 320LF2407
Application la carte dvaluation eZdsp LF2407
- Architecture
- Gestion des interruptions
- Programmation
Exemples de programmes
Codage des nombres
Applications

Introduction

Dfinition
Un DSP : Processeur particulier;
- Intgre un ensemble de fonctions spciales;
- Bonnes performances;
- Gnralement conu pour tre utilis sous la forme dun
monocircuit;
Intgre:
- mmoire RAM et ROM
- ports srie rapides
- ports d entres / 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 dapplication
Tlcommunications
Son
Vido
Instrumentation:
analyseurs de spectres;
gnrateurs de fonctions;
analyse des signaux et des images biologiques;
radar et sonar
Systmes de commande:
commande de moteurs lectriques;
synthse des correcteurs de servomcanisme
quipement automobile;

Diffrences entre un Processeur et un DSP

Soit:

A ( B. C) D

Le 68000 (par ex.) a besoin de:


10 cycles dhorloges pour effectuer une addition
70 cycles dhorloges pour effectuer une multiplication
soit au total 80 cycles dhorloges
Les DSP disposent de fonctions optimises: Il peuvent
effectuer simultanment les 3 oprations suivantes:
lecture dune donne en mmoire
effectuer une multiplication puis une addition
crire en mmoire le rsultat
Cette opration sappelle MAC et prend 1 cycle dhorloge

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 doprations virgule flottante(multiplication,


additions, soustractionetc) que le DSP virgule flottante peut
raliser en une seconde
Million Operations Per Second

MOPS

Mesure le nombre total doprations que le DSP peut raliser en


une seconde. Les oprations concernent galement les accs
DMA, les transferts de donnes, les oprations dE/Setc.
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 dun bus particulier ou dun dispositif


DE/S, c--d son taux de transfert

Diffrences entre un Processeur et un DSP

Structure Von Neuman

Adresse
Mmoire
Programme
et Donnes

Donne

Entres
Sorties

Unit arithmtique
et logique

Diffrences entre un Processeur et un DSP

Structure Harvard

Adresse
Mmoire
Programme

Donne

Adresse
Entres
Sorties

Unit arithmtique
et logique

Donne

Mmoire
Donnes

Diffrences entre un Processeur et un DSP

Structure Harvard Modifie

Mmoire
Programme

Adresse
MUX

Donne
Mmoire
Donnes

MUX

Entres
Sorties

Unit arithmtique
et logique

Diffrences entre un Processeur et un DSP

Structure Von Newman


Structure

Harvard

Processeurs
Processeurs spcialiss : DSP

Structure Harvard modifie Cot plus faible

Performances des DSP

Temps d accs la mmoire:


Un DSP peut simultanment:
- chercher en mmoire une instruction et ses donnes
- raliser une opration MAC
- ranger en mmoire le rsultant du MAC prcdent.
gain de temps vident.

Performances des DSP

Modes dadressages des donnes:


- Unit logique de gnration dadresse
- travaille en parallle avec UAL.

Choix d un DSP

Le choix dpend :
- de la puissance de traitement ncessaire
- du type de DSP utiliser
- des ressources mmoire utilises
-des besoins dun ou de plusieurs Timers internes, de
ports srie
- du cot par rapport au rapport performance/prix
- de la qualit de la documentation
- de la qualit du systme de dveloppement utilis
-de la possibilit d utiliser un langage de haut
niveau
.etc

tude du processeur TMS 320 LF 2407

Architecture du TMS 320 LF2407

Base sur la structure de Harvard modifie:


- les bus programme et donnes sont
spars
- Accs simultan aux instructions
programme et aux donnes

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:
AR0AR7

Bus Donnes

Prdcaleur

Multiplieur

UAL Gnrale

Registre TREG

Accumulateur

Registre PREG

Postdcaleur

Postdcaleur

Bus de Donnes en criture DWEB


Bus de Donnes en lecture DRDB
Bus de Programme en lecture PRDB

TREG
Multiplieur
16x16

MUX

PREG

Dcalage 0-16bits (Prescaler)

Dcalage -6,0,1,4 bits (Pscaler)

MUX

ALU

Accumulateur

Dcalage 1-7 bits (Postscaler)

MUX

Gnrateur d adresses
Bus de Donnes en lecture

ARB

AR7
AR6
AR5
AR4
AR3
AR2
AR1
AR0

ARP
MUX

Registre Instruction

MUX
ARAU

Bus adresses donnes

Bus Donnes
Flash
EEPROM

DARAM
B1 / B2

DARAM
B0

Test
Emulation
Interface
Mmoire
Externe

Bus Programme
Contrleur
Programme

Registre
Instruction
ARAU

Pr-dcaleur

Multiplieur

Registre dtat

ALU

TREG

Registres Aux.

Accumulateur

PREG

Gn.
Temps
dattente
Gestionnaire
dvnement
Timers

Registres
mapps en
mmoire

Post-dcaleur

Post-dcaleur

Units
comparaison
Captue /QEP

Module Horloge

Module Interface systme

Bus Priphrique

Convertisseur A/D

Interface Srie

Watchdog

Architecture du TMS 320LF2407

Le LF2407 est organis autour de 3 types de mmoire


Mmoire programme: 64 Kmots de 16 bits
Mmoire donnes internes: 64 Kmots de 16 bits, parmi
lesquels: 3 blocs de mmoire double accs (DARAM) B0,
B1, B2 (544 mots de 16 bits)
Espace des entres / sorties: 64 Kmots de 16 bits, pour
linterfaage avec les priphriques extrieurs
Au total un espace mmoire de 192 Kmots

Architecture du TMS 320 F240

Mmoire Programme:
- Programme excuter
- Le bloc B0 peut tre en mmoire programme (CNF):
CNF=0: Les 544 mots (B0+B1+B2) mmoire donnes
CNF=1: - Les 256 mots du bloc B0 mmoire programme
- Les 288 mots de B1 et B2 mmoire donnes
- Mmoire Flash (MP/MC):
Se comporte comme une ROM
Forme de 32 Kmots de 16 bits
MP/MC = 0 : le DSP est en mode contrleur
MP/MC = 1 : le DSP est en mode processeur
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

Mmoire Donnes internes: Comprend 3 Blocs de mmoire double accs


- Le bloc B0 configurable en mmoire programme ou donnes selon
la valeur du bit CNF
- Les blocs B1 et B2 sont rservs la mmoire donnes seulement

le mode dadressage peut tre direct ou indirect


en mode direct: adressage par blocs de 128 mots appel page de
donnes

Il existe 512 pages de 0 511


Accs une page: pointeur de page DP du registre dtat ST0

en mode indirect, adressage par lun des 8 registres auxiliaires AR n

Organisation de la mmoire

Contenu de la page 0:
2 registres accessibles sans dlai dattente
- registre de masques dinterruptions (IMR)
- registre de drapeaux dinterruptions (IFR)
zone mmoire de travail: Bloc B2 (RAM: 32 mots de 16 bits)
une zone rserve pour le test et lmulation

Modes d adressage
On dispose de 3 modes d adressage:

direct pagin
indirect et indirect index
immdiat
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 immdiat utilise le compteur ordinal pour reprer une donne en
mmoire de programme

Modes d adressage

Mode direct, adressage par blocs de 128 mots appels pages de donnes
Il existe 512 pages de 0 511
Accs une page: pointeur de page DP du registre dtat 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

Mmoire donnes
Page 0 : 0000h - 007Fh
Page 1 : 0080h - 00FFh

Page 511 : FF80h - FFFFh

; selection page 1
; le contenu de ladresse 00F0h est ajout au contenu de lAccu
; ajout de ED83 au contenu de lAccu.

Modes d adressage

Mode indirect, adressage par lun des 8 registres auxiliaires ARn

LAR AR1, # 00F0h ; AR1 pointe sur le contenu de la mmoire 00FH


MAR *, AR1
; choix de AR1, ARP=1
ADD *
; le contenu de la mmoire pointe par AR1 est
; ajout celui de lAccumulateur

Modes d adressage

Lorsquun registre-pointeur est utilis, AR(ARP) reprsente toujours


ladresse d un des oprandes
*
*+
**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 aprs ladressage
AR(ARP) AR(ARP)-AR0 et propagation de la retenue de
droite gauche aprs ladressage

Registres dtat

Le processeur dispose de 2 registres dtat ST0 et ST1


Registre ST0

15 14 13 12
11
ARP
OV OVM

10
9
8 7 6 5 4 3 2 1 0
1 INTM
DP

ARP: pointeur dadresse ( registre auxiliaire courant)


OV : indique la prsence dun dpassement
OVM: le rsultat est satur lors dun dpassement si 1
INTM: masquage global des interruptions si 1
DP:
permet ladressage par page

Registres dtat
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 prcdent ARP


CNF: indique si la mmoire double accs (B0) est en mode prog.ou donnes
TC: bit indiquant le rsultat dun test logique
SXM: (Sign eXtension Mode) extension du bit de signe lors des dcalages droite
C:
stocke le rsultat de la retenue lors dune opration arithmtique
XF: (eXternal Flag) tat de la broche XF du processeur
PM: mode de dcalage des produits
PM

00: Aucun dcalage


01: Dcalage dun bit gauche
10: Dcalage de 4 bits gauche
11: Dcalage de 6 bits droite avec extension du signe

Gestionnaire dvnement

2 Gestionnaires dvnements: EVA et EVB fonctionnent de manire identique


Chacun comprend:
2 Timers;
3 Units de comparaison;
1 Module de gnration de signaux PWM avec temps mort et possibilit
de SVPWM;
3 Units de capture;
1 Circuit Quadature Encoder Pulse : QEP adapt aux codeurs
incrmentaux 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
GP Timer 1

TCLKINA / TDIRA
ADC Start

Output Logic

T1CMP/T1PWM

Data Bus

Compare Unit 1
Compare Unit 2
Compare Unit 3
GP Timer 2 Compare
GP Timer 2
MUX
Capture Units

PWM Circuits Output Logic


PWM Circuits Output Logic
PWM Circuits Output Logic
Output Logic
CLK
DIR

PWM1
PWM2
PWM3
PWM4
PWM5
PWM6
T2CMP/T2PWM

QEP
Circuit

CAP1/QEP1
CAP2/QEP2
CAP3/QEPI1

Rcapitulatif

Caractristiques du LF2407:
Frquence 40 MHz : 40x106 instructions par seconde (40 MIPS)
2x2 Timers
2x3 units de comparaison: 2x 6 signaux PWM (MLI)
Circuits grant les signaux PWM:
Fonctionnement en MLI vectorielle (SVPWM)
Gestion des temps morts
2x3 Compteurs d impulsions Capture units
2 modules avec des entres QEP compatible avec des codeurs
incrmentaux
Faible niveau de tension : 3,3 V

Les Timers

2 Timers par module


4 Bases de temps indpendantes:
Gnration dune priode dchantillonnage dans un systme de contrle
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 gnration des signaux MLI
Chaque timer comprend:
un registre compteur TxCNT accessible en lecture et criture
un registre de contrle GPTCON
un registre de comparaison TxCMPR accessible en lecture et criture
un registre priode TxPR
un registre de contrle TxCON
un diviseur de frquence applicable aux horloges interne et externe
une logique grant les interruptions et leur contrle
une sortie (TxPWM / TxCMP) correspondant au rsultat de
la comparaison (TxCMPR)

Fonctionnement des Timers


T1PR ou T3PR
Registre priode

T2PR ou T4PR
Registre priode

(Ddoubl)

(Ddoubl)

GPTCON
Registre ctrl Timer
MUX
TxCMPR
Registre comparaison
(Ddoubl)

Logique de
comparaison

TxCNT
Compteur
Horloge CPU
interne

Logique de
contrle

TxCON
Registre de contrle

Gn. dents scie


Sym. / Asym.

Logique
sorties

Drapeaux
Interruption (Flags)
Dmarrage Conversion
ADC
TCLKINA/B
TDIRA/B

TxPWM

Registres de Contrle des Timers

TxCON qui dtermine:


quel mode de comptage est utilis;
si le Timer utilise une horloge interne ou externe;
quelle valeur du diviseur de frquence utiliser;
dans quelle condition le registre de comparaison est recharg;
si le Timer est valide ou pas;
si lopration comparaison est valide ou pas;
si les Timers 2 et 4 utilisent leur propre priode ou celle du
Timer1 et Timer3

Configuration des Timers


Registre de contrle des Timers TxCON

Bits 15,14: conditions darrt du Timer


Bits 13 : Rserv
Bits 12-11: mode de comptage
Bit 10-8 : valeur du diviseur de frquence
Bit 7
: Permet de dmarrer le Timer 2 (ou le Timer4) en mme temps
que le Timer1 (ou le Timer3)
Bit 6
: Dmarrage du Timer
Bits 5-4 : source de lhorloge des Timers
Bits 3-2 : condition de chargement des registres de comparaison
Bit 1
: validation de lopration comparaison
Bit 0
: choix de la priode (concerne Timer 2 et 4)

Configuration des Timers

Registres de Contrle des Timers

GPTCONA/B:
spcifie les actions prendre en compte par le Timer;
indique le sens du comptage.

Configuration des Timers


Registre de contrle des Timers GPTCONA/B

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

: Rserv
: Sens de comptage (concerne Timer 2 ou Timer 4)
: Sens de comptage (concerne Timer 1 ou Timer 3)
: Rservs
: dmarrage du convertisseur ADC par un vnement du Timer2 ou Timer 4
: dmarrage du convertisseur ADC par un vnement du Timer1 ou Timer 3
: permet de valider la sortie: comparaison des Timers
: Rservs
: 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));
Priode match: TxPINT ( Compteur = Val (TxPR));

Programmation des Timers


3 modes de fonctionnement sont possibles:
Mode 1: Continuous up
Signaux asymtriques
Mode 2: Continuous up / down Signaux symtriques
Mode 3: Directional up /down Signaux asymtriques

TxCMPR

TxPWM
Mode asymtrique

Mode symtrique

TxCMPR

TDIRA/B
Mode 3: Directional up /down

Programmation des Timers

Programmation des Timers


Exemple: Timer1 en mode asymtrique
Priode = 200 ns, soit 8*25 ns et Niveau comparaison: 100 ns, soit 4*25 ns

Configuration des Timers


Timer1 en mode asymtrique: Priode 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: dmarrage Timer1
Mode continuous-up
opration non affecte par larrt de lmulation

Configuration des Timers


Code assembleur: Timer1 en mode asymtrique
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 symtrique: Priode 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
Dmarre Timer1 Horloge interne
Mode continuous-Up/Down
opration non affecte par larrt de lmulation

Configuration des Timers

Code assembleur: Timer1 en mode symtrique

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 Units 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 associe 2 sorties PWM : 2x 6 sorties PWM
Les registres de contrle 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

Bit 15
: sens de rotation de la MLI (PWM) vectorielle
Bits 14-12 : dfinissent la position des vecteurs tension en MLI vectorielle
Bits 11-0 : dfinissent les polarits des sorties PWM

Programmation du circuit PWM avec un temps mort

Registre de contrle du mode comparaison


COMCONA

Bit 15
: permet de valider lopration comparaison
Bits 14-13 : dfinissent les conditions de chargement du registre CMPRx
Bit 12
: validation du SVPWM (PWM vectorielle)
Bits 11-10 :dfinissent les conditions de chargement du registre ACTR
Bit 9
: valident les sorties PWM
Bit 8
: Etat de la broche PDPINTA
Bit 7-0
: Rservs

Programmation du circuit PWM avec un temps mort

Le temps mort est ncessaire pour viter les court-circuits dans les structures en pont des onduleurs:

Registre de contrle du temps mort DBTCONA

Bits 15-12: Rservs


Bits 11 -8 : permet de dfinir 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 frquence
000 = x /1
001 = x /2
010 = x /4
011 = x /8

Bits 1-0 : Rservs

100 = x /16
101 = x /32
110 = x /32
111 = x /32

x: Frquence du CPU

Programmation du circuit PWM avec un temps mort


Si DBTCONx [11-8] = m

DBTCONx [4-2] correspond x /p

temps mort en s mx. p .106

x 40MHz

Circuits PWM associs aux Units de comparaison


COMCONA [11-13]

COMCONA [9]
Gn Scie
Sym / Asym
Comparaison

MUX

Unit
Temps mort

Logique de
sorties

DBTCONA

ACTRA

SVPWM
dead-band timer
control register

ACTRA [12-15]
COMCONA [12]

Compare action
registre

PWM1

PWM6

Programmation des sorties PWM avec un temps mort: Module EVA

Procdure 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 dmarrer lopration


avec les bonnes valeurs

Programmation des sorties PWM avec un temps mort: Module EVA

PWM en mode symtrique


2 signaux PWM par unit de comparaison
Base de temps utilis: Timer1
Exemple: Priode 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 lopration comparaison

T1PR = 5h
T1CNT = 0h
T1CON = 8842h

Programmation des sorties PWM avec un temps mort: Module EVA

Code assembleur: Timer1 en mode symtrique


GPTCONA
T1CNT
T1PR
T1CON
COMCONA
ACTRA
DBTCONA
T1CON
CMPR1
CMPR2
CMPR3

.set
.set
.set
.set
.set
.set
.set
.set
.set
.set

7400h
7404h
7403h
7404h
.set
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

7411h

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 dcoder et compter les impulsions aux entres


QEP1 et QEP2 (EVA) ou QEP3 et QEP4 (EVB)

Position & vitesse

Prvu pour tre interfac avec un codeur incrmental ( mesure de position)


Base de temps: Timer2 pour EVA et Timer4 pour EVB
Les Timers doivent tre programms 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
Capture
Units1,2

CAP1/ QEP1
CAP2/ QEP2

Circuit QEP quadrature Encoder Pulse


CLK
QEP1
QEP2

Dcodeur
logique
Direction

Compteur
T2CNT

La programmation du circuit ncessite les registres:


T2PR

ou T4PR
T2CON
ou T4CON
CAPCONA ou CAPCONB

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 dclenchement logiciel des interruptions: INTR, NMI et TRAP
- Les interruptions INTx sont actives par des sources issues des EVA et EVB
- Ces sources sont organises en 3 groupes A,B et C

Les interruptions de EVA


Groupe

Source
dinterruption

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

Source
dinterruption

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
dvnement
EVA

EVB

Les masques dinterruption de EVA


EVAIMRA
15-11

10

6-4

Rserves

T1OFINT

T1UFINT

T1CINT

T1PINT

Rservs

CMP3INT

CMP2INT

CMP1INT

PDPINT
A

EVAIMRB
15-4

Rserves

T2OFINT

T2UFINT

T2CINT

T2PINT

EVAIMRC
15-3

Rserves

CAP3INT

CAP2INT

CAP1INT

IMR

15-6

Rservs

INT6

INT5

INT4

INT3

INT2

INT1

Gestion des interruptions

Pour autoriser les interruptions de manire globale:


CLRC

INTM

; armement du mcanisme des ITs pour toutes


; les sources masquables

Pour les inhiber:


SETC

INTM

; dsarmement du mcanisme des ITs

ADC Module Block Diagram (dual sequencer mode)


Analog MUX
MUX
A

ADCINA7

S/H
A

ADCINB1

...
ADCINB7

S/H
B

SOC1/
EOC1

SEQ1
Autosequencer

SEQ2
Autosequencer

MAX_CONV1

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

CHSEL15 (state 15)


Start Sequence
Trigger

RESULT7
RESULT8
RESULT9

SOC2/
EOC2

...

(ADCSOC)

MUX
B

Result
Select

Sequencer
Arbiter

...

Software
EVA
Ext Pin

12-bit A/D
Converter

S/H
MUX

ADCINB0

RESULT0
RESULT1

...

...

ADCINA1

Result MUX

Result
Select

...

ADCINA0

RESULT15

Software
EVB

Convertisseur Analogique Digital ADC


Les registres ncessaires la programmation:
ADCTRL1
ADCTRL2
MAXCONV
CHSELSEQ1
CHSELSEQ2
CHSELSEQ3
CHSELSEQ4
RESULT0 RESULT15

Bits15-12

Bits11-8

Bits7-4

Bits3-0

CHSELSEQ1

12

CHSELSEQ2

CHSELSEQ3

CHSELSEQ4

Exemple de mesure dun courant via lADC


+ DC_BUS

-0.15 V < Vin < +0.15 V

PWM1

0 V < VADCin < +3.3 V

A
R

PWM2
Vin

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' entre V


3,3 V
ADCIN

Le convertisseur tant sur 10 bits, le rsultat de la conversion est:


V
ADCIN
Valeur numrique 1023
3,3

Gestion des convertisseurs A/N (ADC)

Les registres rsultats

RESULTx

Bit 15-6 : rsultat de la conversion sur 10 bits


Lecture du rsultat dune conversion
En assembleur
LACC
SACH

RESULTx,10
variable

; dcalage de 10 bits gauche pour rcuprer le rsultat


; rcuprer la partie haute de laccu.

En langage C
unsigned int tmp;
Float
entree=0.0;
tmp = RESULTx > 6
entree=((float)tmp/1023.0)*3.3

/* Programmation dune interruption avec le Timer2 */

IMR

15-6
Rserv

5
INT6

3
INT4

2
1
0
INT3 INT2 INT1

IFR

Rserv

INT6 INT5 INT4

INT3 INT2 INT1

EVAIMRB

15-4
Rserv

4
INT5

T2OFINT

T2UFINT

T2CINT

T2PINT

Codage des nombres

Reprsentation en complment 2:

Soit X un nombre cod sur N bits en complmnt 2

i=N-2

X= -2N-1.bN-1 + bi.2i
i=0

avec:

bN-1= 0 si X > 0
bN-1= 1 si X < 0

Xmax = 2N-1 -1
Xmin = - 2N-1

Codage des nombres


Addition de 2 nombres de N bits

Rsultat sur N+1 bits au moins

Produit de 2 nombres de N bits

Rsultat ncessite 2N-1 bits

Le registre produit est sur 2N bits: Les 2 bits de poids fort sont identiques
Le MSB est inutile: Dcaler le rsultat dun bit gauche (PM)

Codage des nombres


Reprsentation en virgule fixe:

On utilise le terme Format Qk : K bits aprs 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 ngatives, on multiplie X par 2K.
Cela correspond la reprsentation de lentier Y tq
Y= round ( X.2K)

Codage des nombres


Reprsentation en virgule fixe:

Valeurs extrmes

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

Reprsentation sur 8 bits en format Q5

Codage des nombres


Addition: Aligner les parties entires et les parties dcimales
Multiplication: Le produit de 2 nombres sur N bits donne un rsultat sur 2N bits
Les 2 bits de poids forts sont identiques ( bits de signe) Seuls 2N-1 bits
sont ncessaires pour le rsultat
Produit de 2 nombres en formats diffrents: QK1 x QK2 : Rsultat en QK1+K2
Si on souhaite un rsultat en format QK3 , on doit effectuer:
- un dcalage vers la droite de
K1+K2-K3
- ou un dcalage 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
Rsultat en Q12:
Dcalage droite de 24-12=12 et prendre la partie basse
ou dcalage gauche de 16-( 24-12)=4 et prendre la partie haute
687 000 h aprs dcalage : 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_dbut

Val1
Val2
Val3
Val4
...
...

ad_donne
ad_rsultat

Val
xxxx

LAR
MAR
LT
MPY
PAC
SACH

AR1, #ad_dbut ; AR1= adresse de Val1


*, AR1
; Choix de AR1 comme pointeur
ad_donne ; Treg =Val = valeur pointe par ad_donne
*
; Preg = Treg x Val1: Q30 sur 32 bits
; Transfert de Preg dans laccu.
ad_rsultat,1 ; Dcalge du rsultat de 1 bit gauche
; et stockage de la partie haute de laccu
; dans ad_rsultat. Rsultat 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 ladresse ad_donne en format Q15
Le rsultat sera en Q28 sur 32 bits.

Pour ramener le rsultat 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 dcalage de 3 bits gauche

Adresses
dbut

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_dbut
*, AR1
ad_donne
*
ad_rsultat ,3

16 bits de poids faibles

; AR1= adresse de Val1


; Choix de AR1 comme pointeur
; Treg = valeur pointe par ad_donne
; Preg = Treg x Val1: Q30 sur 32 bits
; Transfert de Preg dans laccu.
; Dcalge du rsultat de 3 bit gauche
; et stockage de la partie haute de laccu
; dans ad_rsultat. Rsultat en Q15[31...16]