processeur de traitement numerique du signal digital signal processor

publicité
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
Téléchargement