PROCESSEUR DE TRAITEMENT NUMERIQUE DU SIGNAL DIGITAL SIGNAL PROCESSOR Département de Physique Faculté des Sciences Option : InfoTronique 1 Email:[email protected] Plan du cours Chapitre 1. INTRODUCTION ET GENERALITES SUR LES DSP Chapitre 2. ARITHMETIQUE EN PRECISION FINIE FORMAT FIXE OU FORMAT FLOTTANT Chapitre 3. ARCHITECTURE DE LA FAMILLE TMS320C54X Chapitre 4. LES PÉRIPHÉRIQUES Chapitre 5. ASSEMBLEUR Chapitre 6. MÉTHODOLOGIE ET OUTILS DE DÉVELOPPEMENT D’APPLICATION SUR DSP 2 ARCHITECTURE DE LA FAMILLE TMS320C54X Description générale Architecture détaille Organisation mémoire Les Mode d’adressage Les interruptions 3 Description générale Les DSP de TI sont organisés 3 plateformes: 4 ARCHITECTURE La façon dont les éléments d'un système à microprocesseur sont interconnectés et échangent leur information. 5 Description générale Architecture Harvard modifiée Jeu d’instructions contenant des instruction ,monocycle spécialisé dans le TNS MAC avec un multiplieur 17x17 Le temps de Cycle varie de 10 a 25ns, la RAM interne de 5 a 32 Kmots, la mémoire ROM est également de taille variable. Périphériques Le processeur est disponible en boîtier TQFP de 100, 128, ou 124 broches Un boîtier 144 broche BGA (ultramince) est disponible pour les processeurs les plus performants 6 Description générale 7 Description générale Un Bus pour mémoire programme 3 Bus pour mémoire donnée 4 Bus d’adresse Taille des mots:16 bits 2 accumulateurs 1 MAC Une unité de comparaison et de sélection et stockage CSS Un registre à décalage 2 unité de calcul d’adresse avec 8 registres auxiliaire 8 Ex:Diagramme bloc du TMS320C5416 9 Unité de calcul d’adresses et Bus 10 Schéma de principe des échanges CPU 11 CPU Séquenceur 1. 2. 3. Décodage des instructions Pilotage les autres unités Cache d’instructions Unité de génération d’adresse programme 1. 2. Compteur de programme (PC) Gestion matérielle des boucles Unité de génération d’adresses données 1. 2. 3. 4. Adressage indirect efficace Incrémentation/Décrémentation de pointeurs Adressage circulaire Incrémentation bit-reverse (pour la FFT) 12 Unité Centrale de Calcul 13 ALU 14 Accumulateur Les deux accumulateurs sont des registres de 40 bits. Ils sont faits pour stocker certains arguments des instructions arithmétiques et logiques, ainsi que les résultats de ces instructions. Le fait que ces accumulateurs aient 40 bits (32 bits + 8 bits de garde) leur permet de stocker sans perte d’information le résultat de multiplications 16x16 bits, et même d’accumuler un nombre important de résultats partiels sans risque de dépassement. Cela est particulièrement intéressant pour les opérations de filtrage ou produit scalaire, ou on doit accumuler un nombre important de produits partiels. 15 Registre à décalage 16 MAC 17 Registres internes •Un compteur de programme (PC) : registre sur 16 bits qui contient l’adresse de la prochaine instruction à chercher en mémoire. • Un pointeur de pile (SP) : utilisé pour les opérations de gestion automatique de la pile. La pile est utilisée en particulier pour l’appel de fonctions et le déclenchement de routines d’interruptions. • Deux accumulateurs (A et B) • Un registre temporaire (T) : 16 bits contient les résultats temporaires. • Trois registres de gestion des répétitions (BRC, RSA, REA) : Ces trois registres de 16 bits contiennent le compteur de répétition, l’adresse de début et l’adresse de fin pour la mise en oeuvre des répétitions (boucles) de groupes d’instructions. 18 Registres internes • Trois registres de statut et contrôle (ST0, ST1, PMST) • Huit registres auxiliaires (AR0-AR7) : utilisés pour stocker des adresses d’accès à des variables (pour pointer sur ces variables), pour accéder aux données via l’utilisation des modes d’adressages indirects. certains calculs simples par exemple. • Un registre de masques d’interruptions (IMR) : Ce registre contient les masques d’interruptions • Un registre de flags d’interruptions (IFR) : Ce registre contient les flags d’interruptions • Un registre de transitions (TRN) : Ce registre de 16 bits contient l’historique des transitions lors du décodage de Viterbi. • Un registre d’adressage circulaire (BK) : Ce registre de 16 bits contient la taille du buffer pour l’utilisation des modes d’adressages circulaires. 19 Les registres d’état et de contrôle Trois registres d’état et contrôle (ST0, ST1, PMST) : ST0, ST1: configuration du processeur Modifiés par: SSBX, RSBX LD pour DP,ARP,ASM PMST:configuration et contrôle de la mémoire Initialisé par écriture en mémoire dans la zone des registre mappés en mémoire 20 ST0 • DP (Data Pointer): 9 bits, constituent le « Data Page Pointer ». Ce pointeur contient l’adresse de base utilisée en mode d’adressage direct sur DP • OVA, OVB : 2 bits, indiquent un overflow en représentation signée en complément à 2, sur chacun des accumulateurs A ou B. Chacun est mis à 1 si un overflow intervient sur l’accumulateur correspondant, durant une opération arithmétique. • C (carry) : 1 bit ,modifié par une addition ou par une soustraction. Il est mis à 1 après une addition si l’addition génère une retenue. Il est mis à 0 après une soustraction si la soustraction génère une retenue. Le bit C est aussi modifié par les instructions de rotations et décalage, ainsi que certaines instructions spéciales. • TC (Test Control): Ce bit contient le résultat des instructions de test de l’ALU. Il est en général utilisé pour conditionner des instructions conditionnelles telles que des branchements. • ARP (Auxiliary Register Pointer) : 3 bits, constituent un pointeur sur l’un des 8 registres auxiliaires utilisé en mode d’adressage indirect, dans le mode « compatibilité » (CMPT = 1). Ce mode de fonctionnement est offert pour des raisons de compatibilité avec les générations antérieures de CPU. Il est très rarement utilisé dans du code récent à cause de son manque de souplesse. 21 ST1 • ASM (Accumulator Shift Mode) : Ce champ de 5 bits permet de spécifier un décalage arithmétique pour les instructions qui permettent de décaler un opérande ou un résultat dans la même opération. Le décalage est représenté en notation signée en complément à 2 (entre – 16 et +15). • CMPT (Compatibility) : Ce bit permet d’utiliser le mode « compatibilité » pour le mode d’adressage indirect. Ce mode de fonctionnement est offert pour des raisons de compatibilité avec les générations antérieures de CPU. Il est très rarement utilisé dans du code récent à cause de son manque de souplesse. CMPT = 0 : Mode compatibilité désactivé. CMPT = 1 : Mode compatibilité activé. • FRCT (Fractional) : Ce bit permet de décaler d’un bit vers la gauche le résultat d’une multiplication signée. FRCT = 0 : Mode de recalage fractionnaire désactivé. FRCT = 1 : Mode de recalage fractionnaire activé. • C16 : Ce bit permet de forcer l’ALU à travailler C16 = 0 : Mode de calcul normal (40 bits). C16 = 1 : Mode de calcul double 16-bits. • SXM (Sign Extension Mode) : Ce bit permet d’activer ou de désactiver le mode d’extension de signe. L’extension de signe est effectuée lors du chargement d’un opérande de 16 bits ou 32 bits à l’entrée de l’ALU ou dans un accumulateur. Elle est aussi effectuée lors des décalages arithmétiques. SXM = 0 : Mode d’extension de signe désactivé. SXM = 1 : Mode d’extension de signe activé. • OVM (Overflow Mode) : Ce bit permet d’activer ou de désactiver le mode de saturation dans le cas d’un overflow. Lorsqu’il est activé, le résultat d’opérations arithmétiques telles qu’additions, soustractions multiplications ou décalages arithmétiques est saturé aux limites de représentation signée en complément à 2 sur 32 bits (entre –2 147 483 648 et +2 147 483 647). Les 8 bits de garde de l’accumulateur qui contient le résultat sont donc tous placés dans l’état du bit de signe. OVM = 0 : Mode de saturation désactivé. OVM = 1 : Mode de saturation activé. 22 ST1 • INTM (Interrupt Mask) : Ce bit permet d’autoriser ou d’interdire le CPU à répondre aux interruptions. Il a un effet sur toutes les interruptions masquables. INTM = 0 : Toutes les interruptions masquables sont permises. INTM = 1 : Toutes les interruptions masquables sont bloquées. • HM (Hold Mode) : Ce bit permet de choisir l’un de 2 comportements lors de l’activation de l’entrée HOLD du DSP : Si HM=1, le CPU place ses bus externes en état haute impédance et arrête l’exécution du code, ce qui le place dans un mode de faible consommation. Si HM=0, le CPU place ses bus externes en état haute impédance, mais continue à exécuter du code à partir de la RAM interne. HM = 0 : Le CPU exécute le code interne durant un « Hold ». HM = 1 : Le CPU stoppe toute exécution durant un « Hold ». • XF (External Flag) : Le TMS320C5402 possède une sortie d’usage général qu’il est possible de placer dans un état ou l’autre, sous contrôle logiciel. • CPL (Compiler Mode) : Ce bit permet de choisir si l’adressage direct est effectué par rapport à SP (Stack Pointer) ou par rapport à DP (Data Pointer). L’utilisation de l’adressage direct par rapport à SP est intéressant car cela permet de réserver de l’espace sur la pile et d’y accéder efficacement. Ce processus est très utilisé par les compilateurs C pour passer des arguments aux fonctions, et allouer des variables automatiques, d’ou le nom « Compiler Mode ». Le mode d’adressage direct sur DP est offert principalement pour des raisons de compatibilité avec les DSP de générations antérieures, mais n’offre pas d’avantages particuliers. CPL = 0 : Adressage direct sur DP. CPL = 1 : Adressage direct sur SP. • BRAF (Block Repeat Active Flag) : Ce flag indique si une répétition de bloc est active ou non. BRAF = 0 : Pas de répétition de bloc en cours. BRAF = 1 : Répétition de bloc en cours. 23 PMST • DROM (Data ROM) : Ce bit permet de rendre visible ou non-visible la ROM interne du DSP dans l’espace données du DSP. Cette ROM (F000H à FFFFH) contient le code du Bootloader et est normalement visible dans l’espace programme si le CPU a démarré en mode microcontrôleur. A l’aide du bit DROM, on peut la rendre visible dans l’espace donnée. Si c’est le cas, les accès dans la plage F000H à FFFFH ne sont pas acheminés sur le bus externe, mais sont redirigés dans la ROM interne. En général on choisit de ne pas rendre la ROM interne visible dans l’espace données. DROM = 0 : La ROM interne n’est pas visible dans l’espace données. DROM = 1 : La ROM interne est visible dans l’espace données. • AVIS (Address Visibility) : Ce bit permet de faire sortir sur le bus d’adresses externe toutes les adresses correspondant à des accès internes du CPU. Normalement seules les adresses pour les accès externes sortent sur le bus externe. Cette fonction est intéressante pour tracer les accès internes du CPU dans une phase de débuggage. Toutefois, cette fonction augmente la consommation du DSP, ainsi que le bruit électromagnétique qu’il rayonne. AVIS = 0 : Les adresses des accès internes n’apparaissent pas sur le bus d’adresses externe. AVIS = 1 : Les adresses de tous les accès du CPU apparaissent sur le bus d’adresses externe. • OVLY (RAM Overlay) : Ce bit permet de rendre visible la RAM interne du DSP dans l’espace programme. Autrement la RAM interne n’est visible que dans l’espace données. Si cette fonction est activée, le CPU est capable d’exécuter son code à partir de la RAM interne. Cela est intéressant car la RAM interne permet jusqu’à 2 accès par cycle, ce qui fait que le code s’y exécute rapidement. • MP/MC (Microprocessor/Microcontroler) : Ce bit permet de rendre visible ou non la ROM interne dans l’espace programme du DSP. Cette ROM (F000H à FFFFH) contient le code du Bootloader, et est donc visible dans l’espace programme lorsque le DSP démarre en mode microcontrôleur. Dans ce cas, il est possible de placer le bit MP/MC à 1 après le bootload, pour « récupérer » l’espace occupé par la ROM dans le plan d’adressage. Lorsque le bit MP/MC est à 1, la ROM n’est pas visible dans le plan d’adressage programme du CPU, et tous les accès dans la zone F000H à FFFFH sont acheminés sur le bus externe du DSP. Il est alors possible d’exécuter du code à partir d’une ROM externe du DSP. - MP/MC = 0 : La ROM interne est visible dans l’espace programme. - MP/MC = 1 : La ROM interne n’est pas visible dans l’espace programme. 24 PMST • IPTR (Interrupt Pointer) : Les vecteurs d’interruption sont par défaut placés dans la zone FF80H à FFFFH de l’espace programme. L’utilisateur peut « reloger » dynamiquement ces vecteurs dans n’importe quelle plage de 128 mots de l’espace programme. Pour cela, il suffit d’ajuster les 9 bits du champ IPTR, qui constituent les 9 bits de poids fort de l’adresse des vecteurs. • SST (Saturation on Store) : Ce bit permet d’activer la fonction de saturation lors de l’écriture en mémoire d’un accumulateur. Cette fonction n’est disponible que pour certaines des instructions d’écriture. SST = 0 : Mode de saturation lors de l’écriture désactivé. SST = 1 : Mode de saturation lors de l’écriture activé. • SMUL (Saturation on Multiply) : Certains modèles (pas tous) de la famille TMS320C5000 permettent d’effectuer une saturation à l’issue d’une multiplication intermédiaire, lors de l’utilisation d’instructions de multiplicationsaccumulation (MAC, MAS…etc.). Pour être fonctionnel, le bit OVM doit aussi être à 1. SMUL = 0 : Saturation sur multiplications intermédiaires désactivé. SMUL = 1 : Saturation sur multiplications intermédiaires activé. • CLKOFF (Clock Off) : Ce bit permet de désactiver la sortie d’horloge ClkOut du DSP. Cette désactivation est en général effectuée pour minimiser le bruit électromagnétique rayonné par le DSP. Cela n’arrête pas l’horloge interne du DSP, seulement la sortie. CLKOFF = 0 : Sortie ClkOut active. CLKOFF = 1 : Sortie ClkOut inactive. 25 Organisation mémoire Carte mémoire Carte mémoire physique Associe à chaque adresse une connexion vers une mémoire physique Configuration matérielle statique spécifique à chaque processeur Configurable dans une certaine mesure (MP/MC, DROM, OVLY) Carte mémoire logique Blocs d’adresses logiques nommés Position et taille définies statiquement Doit être compatible avec la carte physique Sur architecture Harvard, Section A l’intérieur d’un bloc logique Taille décidée lors de l’édition des liens, en fonction de son contenu Variable / code A l’intérieur d’une section Position dans la section décidée lors de l’édition des liens 26 Organisation mémoire logique et physique physique logique simplifiée CPU d’adresses programme CPU Mémoire Programme ROM SARAM d’adresses Données Mémoire Données Mémoire interne DARAM SRAM Mémoire externe Ref: TMS320C54x DSP Reference Set, Volume 1: CPU and Peripherals…………………….Spru131g.pdf 27 Répartition des adresses et des types de mémoires (320C541) Mémoire Données Mémoire Programme 0000h OVLY=0 0000h-13FFh Externe OVLY= 1 0000h-007Fh Reserve 0080h-13FFh DRAM interne 0000h 0000h-005Fh Memoire des Registres 0060h-007Fh Memoire de Travail 0080h-13FFh DRAM interne 1400h-8FFFh Externe 2000h 2000h 4000h 4000h 6000h 6000h 8000h 8000h 1400h-DFFFh Externe A000h C000h E000h FFFFh MP/MC=0 9000h-FF7Fh ROM interne FF80h-FFFFh Vecteurs d’interruption internes MP/MC= 1 9000h-FF7Fh Externe FF80h-FFFFh Vecteurs d’interruption Externes A000h C000h E000h FFFFh DROM=0 E000h-FFFFh Externe DROM= 1 E000h-FEFFh ROM interne FF00h-FFFFh Reserve 28 Organisation mémoire Espace mémoire adressable: 192Kmot Mémoire Programme: OVLY,MP/MC Mémoire Données: DROM Registres mappés en mémoire: 00h- 5Fh (page 0) 29 Organisation mémoire Extension de la mémoire Registre XPC Extra Memory Maped Register Accès à plusieurs pages (128pages-tms 320C548) Espace d’E/S Accessibles par des instructions lecture/écriture Le bus données et programme externe commun aux espaces de données, programme et E/S 30 Les Mode d’adressage 31 Mode d'adressage Un mode d'adressage constitue la façon dont une instruction particulière accède aux opérandes qu’elle doit manipuler. Les modes d'adressages sont donc liés aux instructions elles-mêmes. Tous les modes d'adressages ne sont pas disponibles pour toutes les instructions. Pour une instruction qui manipule plusieurs opérandes, les différents opérandes peuvent être accédés avec des modes d’adressage 32 Modes d'adressage Adressage immédiat opérande à manipuler est une constante définie sur 3, 4, 8, 9 ou 16 bits utilisation du symbole # devant l’opérande constant EX LD #80h,A 33 Modes d'adressage Adressage absolu opérandes dont l’adresse en mémoire est constante variables statiques. 4 types d’adressage absolu : Dmad : l’espace « données ». Ex: MVKD SAMPLE, *AR5 Pmad : l’espace « programme ». Ex: MVPD TABLE, *AR7– PA : « IO » Ex: PORTR FIFO, *AR5 *(lk) « contenu d’une longue constante » Ex: LD *(0x1000),A 34 Modes d'adressage Adressage sur l’accumulateur l’accumulateur A pour accéder en lecture ou en écriture à des cases mémoires dans l’espace « programme » EX READA *(AR5) 35 Modes d'adressage Adressage direct en définissant un décalage (offset) par rapport à une adresse de base définie dans un registre spécial, suivant le bit CPL du registre de contrôle ST1 DP SP CPL=0 CPL=1 36 Modes d'adressage Adressage direct 37 Modes d'adressage Adressage indirect permet essentiellement d’accéder à des opérandes dont les adresses se trouvent dans des registres auxiliaires (AR0 à AR7). Adresses peuvent varier en cours d’exécution. 38 Modes d'adressage Adressage indirect 39 Modes d'adressage Mode de modification des AR 40 Modes d'adressage Mode de modification des AR 41 Modes d'adressage Adressage indirect 1 opérande Indexé Bit reverse Circulaire AR0 AR0 BK 42 Modes d'adressage Bit reverse N=16 43 Modes d'adressage Adressage indirect 2 opérandes 44 Modes d'adressage Adressage des registres mappés en mémoire LDM MMR, dst MVDM dmad, MMR MVMD MMR, dmad MVMM MMRx, MMRy POPM MMR PSHM MMR STLM src, MMR STM #lk, MMR Sans modification de SP et DP Mise a zero des 9 bits MSB des ARx 45 Modes d'adressage Adressage de la pile Adressée par SP Appel à un sous programme PC Routine d’interruption Sauvegarder un cotexte ou des données Instructions: PSHD,PSHM,POPD,POPM 46 Les Interruptions 47 Les Interruptions types Matériel: port externe ou périphérique interne Logiciel:instruction de programme Interrompre le programme principal Sauvegarder le contexte Prendre en charge de la routine (ISR) Recharger le contexte 48 Les Interruptions Interruption Masquable: Bloquée ou activée 4 broches externes d’interuption INT0-INT3 interruption internes générées par les périphériques: TINT, RINT0, XINT0, RINT1, XINT1 Interruption Non-Masquable: activée Interruptions software Broche externes pour RS et NMI 49 Les Interruptions échantillonnage des broches d’Intr externes 3 cycle à l’état bas ___ prise en compte au moins 2 cycle à l’état haut ___ nouvelle détection 50 Les Interruptions Le registre de Masque IMR Masquer les interruption qu moyen de bit de l’IMR Registre mappé en mémoire add=00h L’ordre du bit correspond à l’ordre de priorité IMR(i)=1, INTM(ST1)=0 Î autorisation de l’intr Accès par des instructions lecture/écriture mémoire de données 51 Les Interruptions Les Interruption Non-Masquable RS (reset): PC=FF80h Instruction de branchement au programme NMI Équivalente au Reset N’affecte pas l’état du processeur Interruptions masquables globalement interdites Ne modifie aucun mode du circuit 52 Les Interruptions Mode d’interruption Bit INTM, ST1(11) INTM=0 Î Intr NM autorisées INTM=1 Î Intr NM interdites Interruption en serviceÎINTM=1 INTM=1 :Reset materiel, instruction SSBX INTM=0 :instruction RSBX, RETE(return from interrupt with automatic reenable) 53 Les Interruptions Le registre de drapeaux d’interruption IFR EX:C541 Activer un bit associé à une interruption Registre mappé en mémoire add=01h Activer indépendamment de INTM IFR(i)=1Îintr active en attente du service Un drapeau peut être effacé : Reset (RS =0). Le programme sert l’interruption un 1 est écrit dans le bit IFR correspondant à l’interruption . Exécution de l’interruption avec l’instruction INTR 54 Les Interruptions L’instruction INTR k Interruption logicielle Le contrôle du programme :adresse mémoire programme associée à k Le masque n’a pas d’effet sauf pour les interruption:INT0- INT3 55 Les Interruptions Vecteurs d’interruption réside dans l’espace programme (organisation mémoire) 4 mots successifs pour chaque interruption. A l’initialisation: Add_VI= FF80h Î PC correspondant à l’interruption, exécuter le code qui s’y trouve ( Le code, une instruction de branchement inconditionnelle (B …) a la routine d’interruption IPTR Pointeur du vecteur d’interruption (PMST…………….1Dh) Add _VI= Shift_L7(IPTR) // Shift_L2( Intr) IPTR(reset)=1FFh ÎAdd_VI= FF80h (page 511) 56 Les Interruptions Réception de la requête Acknowledgement Exécution ISR 57 Reference - SPRU131g.pdf Annexes 58 59 60 61