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 320LF2407 Application à la carte d’évaluation eZdsp LF 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% Autres 7% 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 (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 Différences entre un Processeur et un DSP
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ées Sorties Unité arithmétique et logique Adresse Donnée
Structure Harvard Différences entre un Processeur et un DSP Mémoire Programme Entrées Sorties Unité arithmétique et logique Adresse Donnée Mémoire Données Adresse Donnée
Structure Harvard Modifiée Différences entre un Processeur et un DSP Mémoire Données Entrées Sorties 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 SCICANWD ADC control Interrupts reset,etc I / O registers ADC P bus
Bus Programme Bus Données Registre instruction UA des pointeurs Registres pointeurs: AR0…AR7 Prédécaleur UAL Générale Accumulateur Postdécaleur Multiplieur Registre TREG Registre PREG Postdécaleur Unité centrale de calcul
MUX TREG Multiplieur 16x16 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 AR7 AR6 AR5 AR4 AR3 AR2 AR1 AR0 Bus adresses données Bus de Données en lecture Générateur d ’adresses
Flash EEPROM DARAM B0 DARAM B1 / B2 Test Emulation Interface Mémoire Externe Géné. Temps d’attente Gestionnaire d’événement Timers Unités comparaison Captue /QEP Watchdog Interface 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ôleur Programme 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 à 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 AR n 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 ldp#1 ; selection page 1 add00F0h ; 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 AR n 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 Modes d ’adressage
Registres d’état Le processeur dispose de 2 registres d’état ST0 et ST1 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 Registre ST0
Registres d’état 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 PM01: Décalage d’un bit à gauche 10: Décalage de 4 bits à gauche 11: 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 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 MUX QEP Circuit Output Logic EV Control Registers / Logic Reset PIE TCLKINA / TDIRA / 2 ADC Start Data Bus CLK DIR T1CMP/T1PWM T2CMP/T2PWM PWM1 PWM2 PWM3 PWM4 PWM5 PWM6 CAP1/QEP1 CAP2/QEP2 CAP3/QEPI1
Caractéristiques du LF2407: Fréquence 40 MHz : 40x10 6 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 T4PR Registre période (Dédoublé) T1PR ou T3PR Registre période (Dédoublé) Logique de comparaison TxCMPR Registre comparaison (Dédoublé) Géné. dents scie Sym. / Asym. GPTCON Registre ctrl Timer Logique sorties TxPWM TxCNT Compteur Logique de contrôle TxCON Registre de contrôle Horloge CPU interne Démarrage Conversion ADC Drapeaux Interruption (Flags) TCLKINA/B TDIRA/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 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
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
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 : 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 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 »
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=7 T1CMPR = 4-1=3 GPTCONA = b polarité de la sortie: Active High sorties des 2 Timers valides T1CON = b Validation du mode comparaison Recharge registre T1CMPR si compt.=0 Horloge interne Timer1 valide: démarrage Timer1 Mode continuous-up o pé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.set7400h T1CNT.set7401h T1CMPR.set7402h T1PR.set7403h T1CON.set7404h LDP#0E8h SPLK#0042h,GPTCONA SPLK #0007h,T1PR SPLK #0003h,T1CMPR SPLK #0000h,T1CNT SPLK #9042h,T1CON Configuration des Timers
T1PR = 4 T1CMPR = 2 T1CNT = 0 GPTCONA = b polarité de la sortie: active high sorties des 2 Timers valides T1CON= 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.set7400h T1CNT.set7401h T1CMPR.set7402h T1PR.set7403h T1CON.set7404h LDP#0E8h SPLK#0042h,GPTCONA SPLK#0004h,T1PR SPLK#0002h,T1CMPR SPLK#0000h,T1CNT SPLK#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 EVACMPR1CMPR2CMPR3COMCONAACTRA EVB CMPR4CMPR5CMPR6COMCONBACTRB
Programmation des sorties PWM avec un temps mort Bit 15 : sens de rotation de la MLI (PWM) vectorielle Bits : définissent la position des vecteurs tension en MLI vectorielle Bits 11-0 : définissent les polarités des sorties PWM «Compare Action Control Register» ACTRA
Programmation du circuit PWM avec un temps mort Bit 15 : permet de valider l’opération comparaison Bits : définissent les conditions de chargement du registre CMPRx Bit 12 : validation du SVPWM (PWM vectorielle) Bits :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 mode comparaison COMCONA
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 : 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 /1100 = x /16 x: Fréquence du CPU 001 = x /2 101 = x / = x /4 110 = x / = 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
Circuits PWM associés aux Unités de comparaison Géné Scie Sym / Asym SVPWM MUX Unité Temps mort Logique de sorties ACTRA Compare action registre DBTCONA dead-band timer control 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 CMPR 1,2,3 - charger le registre COMCONA - charger le registre T1CON pour démarrer l’opération - charger les registres CMPR 1,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 = b sortie 1: active high sortie 2: active low DBTCONA = b 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 = 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
GPTCONA.set7400h T1CNT.set7404h T1PR.set7403h T1CON.set7404h COMCONA.set7411h ACTRA.set7413h DBTCONA.set7415h T1CON.set7404h CMPR1.set7417h CMPR2.set7418h CMPR3.set7419h 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 Code assembleur: Timer1 en mode symétrique Programmation des sorties PWM avec un temps mort: Module EVA
Valeur du Timer Valeurs des registres comparaison. PWM1 Active high PWM2 Active low PWM3 Active high PWM4 Active low PWM5 Active high PWM6 Active 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 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 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écodeur logique Compteur T2CNT 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
GroupeSource d’interruption DescriptionInterruption 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 GroupeSource d’interruption DescriptionInterruption 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 DrapeauRegistre MasqueGestionnaire d’évènement EVAIFRAEVAIMRA EVA EVAIFRBEVAIMRB EVAIFRCEVAIMRC EVBIFRAEVBIMRA EVB EVBIFRBEVBIMRB EVBIFRCEVBIMRC Gestion des interruptions
Réserves T1OFINTT1UFINTT1CINTT1PINTRéservésCMP3INTCMP2INTCMP1INTPDPINT A Réserves T2OFINTT2UFINTT2CINTT2PINT EVAIMRA EVAIMRB Réserves CAP3INTCAP2INTCAP1INT EVAIMRC RéservésINT6INT5INT4INT3INT2INT1 IMR Les masques d’interruption de EVA
Pour autoriser les interruptions de manière globale: CLRCINTM; armement du mécanisme des ITs pour toutes ; les sources masquables Pour les inhiber: SETCINTM; désarmement du mécanisme des ITs Gestion des interruptions
ADC Module Block Diagram (dual sequencer mode) 12-bit A/D Converter Software EVA Ext Pin (ADCSOC) Result Select Result MUX RESULT0... RESULT1 RESULT7 Result Select RESULT8... RESULT9 RESULT15 CHSEL00 (state 0) CHSEL01 (state 1) CHSEL02 (state 2) CHSEL07 (state 7)... MAX_CONV1 Autosequencer Start Sequence Trigger SOC1/ EOC1 SEQ1 CHSEL08 (state 8) CHSEL09 (state 9) CHSEL10 (state 10) CHSEL15 (state 15)... MAX_CONV2 Autosequencer Start Sequence Trigger SEQ2 Sequencer Arbiter SOC2/ EOC2 Software EVB Analog MUX MUX A ADCINA0 ADCINA1 ADCINA7... MUX B ADCINB0 ADCINB1 ADCINB7... S/H A S/H MUX S/H B
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 Bits CHSELSEQ1 x1276CHSELSEQ2 xxxxCHSELSEQ3 xxxxCHSELSEQ4
V in ADCRESxData MemSigned Q |1111|1100| |1111|1100| |1111|1100| |1111|1100| |0000|0000| |0000|0000| Int resultADC; resultADC = ADCRESx ^ 0x8000; Exemple de mesure d’un courant via l’ADC ADCINx V CCA V SSA TMS320F2407 V in 3.3 v - + R R 2R V < V in < V PWM1 PWM2 + DC_BUS GND Shunt resistor A 0 V < V ADCin < +3.3 V
Convertisseur Analogique Digital ADC Le convertisseur étant sur 10 bits, le résultat de la conversion est:
Bit 15-6 : résultat de la conversion sur 10 bits Lecture du résultat d’une conversion En assembleur LACCRESULTx,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 Les registres résultats RESULTx Gestion des convertisseurs A/N (ADC)
/* 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= -2 N-1.b N-1 + b i.2 i avec: b N-1 = 0 si X > 0 b N-1 = 1 si X < 0 X max = 2 N-1 -1 X min = - 2 N-1 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 Q k » : K bits après la virgule Si X est codé sur N bits en format Q k. X = - b N-1-K.2 N-1-K + b N-2-K.2 N-2-K b 0 + b b -K.2 -K Erreur < 2 -K Pour éviter de traiter les puissances négatives, on multiplie X par 2 K. Cela correspond à la représentation de l’entier Y tq Y= round ( X.2 K )
Codage des nombres Représentation en virgule fixe: Valeurs extrêmesX max = 2 N-1-K - 2 -K X min = - 2 N-1-K | X min | = 2 -K Exemples : en format Q5 sur 8 bits soit: = = Représentation sur 8 bits en format Q 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: Q K1 x Q K2 : Résultat en Q K1+K2 Si on souhaite un résultat en format Q K3, 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 = x 2 12 =3342 d D0E h cos = 0.5 x 2 12 =2048 d 800 h D0E h x 800 h = 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 h après décalage : b alors que I.cos = x 0.5 = Codage des nombres
Calcul en virgule fixe Multiplication de 2 nombres en format Q 15 LARAR1, #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: Q 30 sur 32 bits PAC ; Transfert de Preg dans l’accu. SACHad_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 Q 15 [ ]
Codage des nombres Calcul en virgule fixe: Multiplication de 2 nombres en format Q 15 et Q 13 Valeurs du tableau en format Q 13 Contenu de l’adresse ad_donnée en format Q 15 Le résultat sera en Q 28 sur 32 bits. P our ramener le résultat en Q 15 il faut diviser par 2 13 et ne conserver que les bits de poids faibles ou multiplier par 2 3 et ne conserver que les bits de poids forts c-à-d effectuer un décalage de 3 bits à gauche
LARAR1, # 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: Q 30 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 Q 15 [ ] Codage des nombres