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
Un DSP : mProcesseur particulier; 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é»;
Souplesse de la programmation; Stabilité; Reproductibilité; Introduction Avantages Souplesse de la programmation; Stabilité; Reproductibilité;
Le marché en 1996 selon Forward Concepts Principaux constructeurs Introduction Le marché en 1996 selon Forward Concepts Principaux constructeurs Autres 7% Motorola 8% Texas Instruments Analogue Device 11% 45% AT&T 29%
Domaines d’application Télécommunications Son Vidéo Instrumentation: 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;
10 cycles d’horloges pour effectuer une addition Différences entre un mProcesseur et un DSP Soit: Le 68000 (par ex.) a besoin de: 10 cycles d’horloges pour effectuer une addition 70 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
Performances des DSP Vitesse de calcul: Nombre d ’instructions par seconde
Structure Von Neuman Adresse Donnée Mémoire Entrées Unité arithmétique Différences entre un mProcesseur et un DSP Structure Von Neuman Adresse Entrées Sorties Unité arithmétique et logique Mémoire Programme et Données Donnée
Structure Harvard Adresse Adresse Donnée Donnée Mémoire Entrées Différences entre un mProcesseur et un DSP Structure Harvard Adresse Adresse Entrées Sorties Unité arithmétique et logique Mémoire Programme Mémoire Données Donnée Donnée
Structure Harvard Modifiée Différences entre un mProcesseur et un DSP Structure Harvard Modifiée Mémoire Programme Adresse MUX Entrées Sorties Unité arithmétique et logique Donnée Mémoire Données MUX
Structure Von Newman ð mProcesseurs Différences entre un mProcesseur et un DSP Structure Von Newman ð mProcesseurs Structure Harvard ð mProcesseurs spécialisés : DSP Structure Harvard modifiée ð Coût plus faible
Temps d ’accès à la mémoire: 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.
Modes d’adressages des données: Performances des DSP Modes d’adressages des données: - Unité logique de génération d’adresse - travaille en parallèle avec UAL.
- de la puissance de traitement nécessaire - du type de DSP à utiliser 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
- les bus programme et données sont séparés É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
P bus I/F P bus Event Managers (EVA and EVB) SPI SCI CAN WD ADC control Interrupts reset,etc I / O registers ADC
Unité centrale de calcul Bus Programme Prédécaleur Multiplieur UA des pointeurs UAL Générale Registre TREG Registre instruction Registres pointeurs: AR0…AR7 Accumulateur Registre PREG Postdécaleur Postdécaleur Bus Données
Bus de Données en écriture DWEB Bus de Données en lecture DRDB Bus de Programme en lecture PRDB TREG MUX 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)
Générateur d ’adresses Bus de Données en lecture ARB AR7 AR6 AR5 ARP AR4 AR3 AR2 MUX AR1 AR0 Registre Instruction MUX ARAU Bus adresses données
Bus Données Flash EEPROM DARAM B0 DARAM B1 / B2 Bus Programme Test Emulation Interface Mémoire Externe Bus Programme Contrôleur Programme Registre Instruction Géné. Temps d’attente 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 Gestionnaire d’événement Timers Unités comparaison Captue /QEP Module Horloge Module Interface système Bus Périphérique Convertisseur A/D Interface Série Watchdog
Le LF2407 est organisé autour de 3 types de mémoire 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
- Le bloc B0 peut être en mémoire programme (CNF): 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
Mémoire Données internes: Comprend 3 Blocs de mémoire double accès 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
2 registres accessibles sans délai d’attente 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
t indirect et indirect indexé t immédiat 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
Mode direct, adressage par blocs de 128 mots appelés pages de données 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 ldp #1 ; selection page 1 add 00F0h ; le contenu de l’adresse 00F0h est ajouté au contenu de l’Accu add #0ED83h ; ajout de ED83 au contenu de l’Accu.
Mode indirect, adressage par l’un des 8 registres auxiliaires ARn 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
Lorsqu’un registre-pointeur est utilisé, AR(ARP) représente toujours Modes d ’adressage Lorsqu’un registre-pointeur est utilisé, AR(ARP) représente toujours l’adresse d ’un des opérandes
Le processeur dispose de 2 registres d’état ST0 et ST1 Registre ST0 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
ARB: stocke le précédent ARP Registres d’état Registre ST1 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écalage PM 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 2 / TCLKINA / TDIRA EV Control Registers / Logic ADC Start Output Logic GP Timer 1 Compare GP Timer 1 T1CMP/T1PWM • PWM1 Compare Unit 1 Compare Unit 2 Compare Unit 3 PWM Circuits Output Logic PWM2 PWM3 Data Bus PWM4 PWM5 PWM6 Output Logic GP Timer 2 Compare GP Timer 2 T2CMP/T2PWM [General overview of the Event Manager] Each Event Manager has two independent 16bit general purpose timers. Both of them have one PWM output pin (TxPWM). The first timer provides its timebase to three independent compare units generating the actual PWM signals. Each unit has one pair (signal and inverted signal) to address e.g. one phase of a motor. The capture unit gets its timebase from timer 1 or timer 2, it captures the timestamp at level transitions on pins. The capture pins are multiplexed with quadrature encoder inputs (get speed and direction of a rotating device). Each Event Manager can generate interrupts on varying events through the PIE system as well as start the onchip ADC or an external one. CLK QEP Circuit MUX DIR • Capture Units CAP1/QEP1 • CAP2/QEP2 • CAP3/QEPI1
Caractéristiques du LF2407: 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
4 Bases de temps indépendantes: 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)
T1PR ou T3PR T2PR ou T4PR GPTCON MUX TxCMPR TxPWM TxCNT TxCON Fonctionnement des Timers T1PR ou T3PR Registre période (Dédoublé) T2PR ou T4PR Registre période (Dédoublé) GPTCON Registre ctrl Timer MUX TxCMPR Registre comparaison (Dédoublé) Géné. dents scie Sym. / Asym. Logique sorties Logique de comparaison TxPWM TxCNT Compteur Drapeaux Interruption (Flags) Démarrage Conversion ADC Horloge CPU interne Logique de contrôle TCLKINA/B TDIRA/B TxCON Registre de contrôle
quel mode de comptage est utilisé; 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 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 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és Bit 10-9 : démarrage du convertisseur ADC par un événement du Timer2 ou Timer 4 Bit 8-7 : démarrage du convertisseur ADC par un événement du Timer1 ou Timer 3 Bit 6 : permet de valider la sortie: comparaison des Timers Bits 5-4 : Réservés Bits 3-2 : polarité de la sortie du Timer 2 ou du Timer 4 Bits 1-0 : polarité de la sortie du Timer 1 ou du Timer 3
4 Interruptions par Timer: 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
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 .set 7400h T1CNT .set 7401h T1CMPR .set 7402h T1PR .set 7403h T1CON .set 7404h LDP #0E8h SPLK #0042h,GPTCONA SPLK #0007h,T1PR SPLK #0003h,T1CMPR SPLK #0000h,T1CNT SPLK #9042h,T1CON
polarité de la sortie: active high 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
Code assembleur: Timer1 en mode symétrique Configuration des Timers Code assembleur: Timer1 en mode symétrique GPTCONA .set 7400h T1CNT .set 7401h T1CMPR .set 7402h T1PR .set 7403h T1CON .set 7404h LDP #0E8h SPLK #0042h,GPTCONA SPLK #0004h,T1PR SPLK #0002h,T1CMPR SPLK #0000h,T1CNT SPLK #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
«Compare Action Control Register» ACTRA 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 : définissent la position des vecteurs tension en MLI vectorielle Bits 11-0 : définissent les polarités des sorties PWM
Registre de contrôle du mode comparaison Programmation du circuit PWM avec un temps mort Registre de contrôle du mode comparaison COMCONA 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
Registre de contrôle du temps mort DBTCONA 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 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 100 = x /16 x: Fréquence du CPU 001 = x /2 101 = x /32 010 = x /4 110 = x /32 011 = x /8 111 = x /32 Bits 1-0 : Réservés
Si DBTCONx [11-8] = m DBTCONx [4-2] correspond à x /p Programmation du circuit PWM avec un temps mort Si DBTCONx [11-8] = m DBTCONx [4-2] correspond à x /p
Compare action registre Circuits PWM associés aux Unités de comparaison COMCONA [11-13] COMCONA [9] Géné Scie Sym / Asym PWM1 à PWM6 Comparaison Unité Temps mort Logique de sorties MUX SVPWM DBTCONA dead-band timer control register ACTRA Compare action registre ACTRA [12-15] COMCONA [12]
Procédure de programmation: - charger le registre T1PR 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
2 signaux PWM par unité de comparaison Base de temps utilisé: Timer1 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
Validation sorties PWM 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
Code assembleur: Timer1 en mode symétrique Programmation des sorties PWM avec un temps mort: Module EVA Code assembleur: Timer1 en mode symétrique GPTCONA .set 7400h T1CNT .set 7404h T1PR .set 7403h T1CON .set 7404h COMCONA .set 7411h ACTRA .set 7413h DBTCONA .set 7415h CMPR1 .set 7417h CMPR2 .set 7418h CMPR3 .set 7419h LDP #00E8h SPLK #0666h,ACTRA SPLK #01E0h,DBTCONA SPLK #3h,CMPR1 SPLK #2h,CMPR2 SPLK #4h,CMPR3 SPLK #8200h,COMCONA SPLK #5h,T1PR SPLK #0h,T1CNT SPLK #8842h ,T1CON
Valeur du Timer PWM1 Active high PWM2 Active low PWM3 Active high PWM4 Valeurs des registres comparaison. Temps mort PWM1 Active high PWM2 Active low PWM3 Active high PWM4 Active low PWM5 Active high PWM6 Active low
Utilisé pour décoder et compter les impulsions aux entrées 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 QEP Decoder logic Capture Units1,2 CLKOUT CAP1/ QEP1 CAP2/ QEP2 T2CON[4,5] CLKOUT CAPCONA[13,14] T2CON[8,9,10] CLKIN CLK DIR TDIRA 2
T2CON ou T4CON CAPCONA ou CAPCONB Circuit QEP « quadrature Encoder Pulse » CLK Direction QEP1 QEP2 Décodeur logique Compteur T2CNT K La programmation du circuit nécessite les registres: T2PR ou T4PR T2CON ou T4CON CAPCONA ou CAPCONB
2 signaux externes non masquables: RS et NMI 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 Les interruptions de EVB 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
Gestionnaire d’évènement Gestion des interruptions Registre Drapeau Registre Masque Gestionnaire d’évènement EVAIFRA EVAIMRA EVA EVAIFRB EVAIMRB EVAIFRC EVAIMRC EVBIFRA EVBIMRA EVB EVBIFRB EVBIMRB EVBIFRC EVBIMRC
Les masques d’interruption de EVA EVAIMRA 15-11 10 9 8 7 6-4 3 2 1 Réserves T1OFINT T1UFINT T1CINT T1PINT Réservés CMP3INT CMP2INT CMP1INT PDPINTA EVAIMRB 15-4 3 2 1 Réserves T2OFINT T2UFINT T2CINT T2PINT EVAIMRC 15-3 2 1 Réserves CAP3INT CAP2INT CAP1INT IMR 15-6 5 4 3 2 1 Réservés INT6 INT5 INT4 INT3 INT2 INT1
Pour autoriser les interruptions de manière globale: 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 ADCINA0 Result MUX RESULT0 ADCINA1 MUX A ... S/H A RESULT1 12-bit A/D Converter ADCINA7 . . . Result Select S/H MUX ADCINB0 RESULT7 Sequencer Arbiter ADCINB1 MUX B S/H B ... RESULT8 SOC1/ EOC1 SOC2/ EOC2 RESULT9 ADCINB7 SEQ1 . . . SEQ2 Result Select Autosequencer Autosequencer RESULT15 MAX_CONV1 MAX_CONV2 CHSEL00 (state 0) CHSEL01 (state 1) CHSEL02 (state 2) CHSEL07 (state 7) CHSEL08 (state 8) CHSEL09 (state 9) CHSEL10 (state 10) CHSEL15 (state 15) The onchip ADC of the F281x is a 12bit ADC with 16 input channels and two sample-and-hold modules for sampling two analog signals at the same time. These will be multiplexed and converted sequentially, and the corresponding result registers will be updated. This slide shows two autosequencer modules (8 states each) that are controlling the sequencing and arbitration of the input channels independently. Sequencer 1 can be triggered via software, the Event Manager A or an external pin, sequencer 2 only by Event Manager B. It is also possible to have one autosequencer with 16 states (cascaded mode). A single conversion takes 200ns conversion time, in sequential sampling mode it takes only 80ns to get a result, in simultaneous sampling mode even 60ns. In this sampling mode two channels are sampled at the same time. Software EVA Ext Pin (ADCSOC) ... ... Software EVB Start Sequence Trigger Start Sequence Trigger
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 CHSELSEQ1 x 12 7 6 CHSELSEQ2 CHSELSEQ3 CHSELSEQ4
Exemple de mesure d’un courant via l’ADC + DC_BUS 0 V < VADCin < +3.3 V -0.15 V < Vin < +0.15 V PWM1 A R TMS320F2407 PWM2 Vin R - ADCINx + Shunt resistor 2R VCCA Int resultADC; resultADC = ADCRESx ^ 0x8000; 3.3 v GND VSSA The ADC input must be between 0 and 3.0 Volts. However the phase current can be negative, for this reason we need some additional hardware to shift down the measured voltage. Now that we measure a voltage between -1.66 Volts and 1.66 Volts we need to take care of formatting the result. In our case we decide to use Q15 format (you may need to make a short reminder on Q format) to do so you we just need to XOR with 0x8000 the ADC result which is stored on the 10 higher bits of ADCFIOFO1. 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
Le convertisseur étant sur 10 bits, le résultat de la conversion est: Convertisseur Analogique Digital ADC Le convertisseur étant sur 10 bits, le résultat de la conversion est:
Gestion des convertisseurs A/N (ADC) Les registres résultats RESULTx 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ésultat SACH variable ; 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 */
Soit X un nombre codé sur N bits en complémént à 2 Codage des nombres Représentation en complément à 2: Soit X un nombre codé sur N bits en complémént à 2 i=N-2 X= -2N-1.bN-1 + bi.2i avec: bN-1= 0 si X > 0 bN-1= 1 si X < 0 Xmax = 2N-1 -1 Xmin = - 2N-1 i=0
Produit de 2 nombres de N bits ð Résultat nécessite 2N-1 bits 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)
On utilise le terme «Format Qk» : K bits après la virgule 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)
Représentation sur 8 bits en format Q5 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 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 )
Codage des nombres 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 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
Multiplication de 2 nombres en format Q15 Codage des nombres Calcul en virgule fixe Multiplication de 2 nombres en format Q15 LAR AR1, #ad_début ; AR1= adresse de Val1 MAR *, AR1 ; Choix de AR1 comme pointeur LT ad_donnée ; Treg =Val = valeur pointée par ad_donnée MPY * ; Preg = Treg x Val1: Q30 sur 32 bits PAC ; 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]
Pour ramener le résultat en Q15 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
Codage des nombres LAR AR1, # ad_début ; AR1= adresse de Val1 MAR *, AR1 ; Choix de AR1 comme pointeur LT ad_donnée ; Treg = valeur pointée par ad_donnée MPY * ; Preg = Treg x Val1: Q30 sur 32 bits PAC ; 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]