Cours-Processeurs de traitement du signal DSP

publicité
Processeurs de traitement du
signal (DSP)
Sylvain MONTAGNY
[email protected]
Bâtiment chablais, bureau 13
04 79 75 86 86
Présentation des cours : Sommaire
 Cours
: 13.5 h en 9 séances

Chapitre 1 : Introduction aux systèmes de traitement numérique

Chapitre 2 : Représentation numérique du signal

Chapitre 3 : Les unités spécifiques des DSP

Chapitre 4 : Le DSP TMS320C5416

Chapitre 5 : Un outil de développement logiciel, code composer
studio
Université de Savoie
2
Présentation TD
 TD
: 7.5 h en 5 séances

TD1 : Codage des nombres et architecture numérique

TD2 : Etude avancée de l’architecture d’un DSP, le DSPic30F2010

TD3 : Organisation mémoire et organisation du code
Université de Savoie
3
Présentation TP

TP : 16h en 4 séances de 4h

TP1 : Prise en main de l’environnement de programmation
Code Composer Studio

TP2 : Détection de fréquence dans un signal DTMF

TP3 : Génération de fréquences sonores
Université de Savoie
4
Examens

Un contrôle final : 1h30

Une note de travaux pratiques
Université de Savoie
5
Chapitre 1 : Introduction aux systèmes de
traitement numérique


1.1 Chaîne de traitement numérique
1.2 Solutions classiques de traitement
numérique et problématiques
Université de Savoie
6
La chaine de traitement numérique
Ports d’entrées / sorties
Actionneur
Capteur
Filtre
anti
repliement
CAN
Système de traitement
numérique
(Processeur, FPGA…)
Analogique
CNA
Filtre
de
reconstruction
Analogique
Mémoire
Numérique
Université de Savoie
7
Chaîne de traitement numérique
Avantages / Inconvénients
Avantages :




Robustesse :
Précision :
Multitâche :
Prédiction :
Inconvénients :



Coût :
Vitesse :
Complexité :
Université de Savoie
8
Chaîne de traitement numérique
Exemples d’applications (2)

Télécommunications : détection de
BP Filter Detector
tonalité
Schéma de détection
de tonalité
697 Hz
BP Filter
Detector
770 Hz
BP Filter
Detector
852 Hz
697 Hz
1
2
3
LP Filter
Limiter
BP Filter
Detector
941 Hz
770 Hz
4
5
6
HP Filter
Limiter
BP Filter
Detector
1209 Hz
BP Filter
Detector
1336 Hz
BP Filter
Detector
1477 Hz
852 Hz
7
8
9
941 Hz
*
0
#
1209 Hz 1336 Hz 1477 Hz
Fréquences de tonalité du clavier numérique
|G| (dB)
Gabarit du filtre numérique
-0 dB
-3 dB
-30 dB
Université de Savoie
FS1
FP1
FP2
FS2
Fe
2
10
La chaine de traitement numérique
Complexité des algorithmes
Fréquence
en Hz
1 000 000
10 000
100
1
Faible
Complexité de l’algorithme
Température
Codage de la voix
Reconnaissance
vocale
Elevée
MP3
Reconnaissance
d’image
Positionner les applications suivantes dans le graphique
11
Chapitre 1 : Introduction aux systèmes de
traitement numérique


1.1 Chaine de traitement numérique
1.2 Solutions classiques de traitement
numérique et problématiques
Université de Savoie
12
Problématique et solutions
Filtrage numérique sur processeur classique (1)

Fonction de transfert d’un filtre numérique
଴
ଵ
ଵ

ିଵ
ିଵ
௤
௣
ି௤
ି௣
Programme d’un filtre numérique
loop:
mov *r0,x0
mov *r1,x1
mpy x0,x1,a
add a,b
mov x1,*r2
inc r0
inc r1
inc r2
dec ctr
tst ctr
jnz loop
Lecture des opérandes sources
Opération MAC
Exécution en 15 à 20
cycles sur processeur
classique
Vieillissement de l’échantillon
Gestion des pointeurs d’adresse
Gestion de la boucle
Exécution en 1 cycle
sur DSP
13
Problématique et solutions
Filtrage numérique sur processeur classique (2)

Problèmes :






Temps d’accès aux échantillons
Temps d’accès aux coefficients
Gestion des pointeurs d’adresse
Multiplication lente
Stockage du résultat
Sur un DSP on cherche à :




Obtenir une gestion automatisée des pointeurs pour les boucles
Multiplier le nombre de chemin entre le processeur et la
mémoire pour éviter le goulot d’étranglement
Réaliser des multiplications en 1 coup d’horloge
Limiter la consommation : Pmoy = K . Vdd 2 . FHorloge
14
Problématique et solutions
Gestion du temps réel
Te = Période d’échantillonnage
 T = Temps de traitement

Horloge
acquisition
Te
t
Interruption
Activité
processeur
Entrée de l’échantillon
t
T
Sortie du résultat
Université de Savoie
15
Problématique et solutions
Solutions architecturales (document architecture reconfigurable)

Compromis performance – flexibilité
Cf article : Architecture reconfigurable, les processeurs du futurs
2 V DSP
3 MOPS/mW
Efficacité énergétique
Pleiades
10-50 MOPS/mW
Flexibility
En MIPS/W
Embedded
Processor
SA110
0.4 MIPS/mW
100-1000 MOPS/mW
ASIC
DSP
Embedded
FPGA
Alpha
0.007 MIPS/mW
Reconfigurable
Processor
EE : Efficiency : MIPS / Watt
16
Chapitre 2 : Représentation numérique du
signal


2.1 De l’analogique au numérique
2.2 Le codage des nombres entiers et réels
Université de Savoie
17
De l’analogique au numérique
Signal Analogique
Numérisation


111
110
101
100
011
010
001
000
Signal Numérique
q
Restriction des instants considérés : Fréquence d’échantillonnage Fech
Restriction des valeurs de l’amplitude possible : Nombre de bits N
Université de Savoie
18
De l’analogique au numérique
Effets du repliement de spectre

Reconstitution d’un signal
échantillonné à fs > 2fc

Reconstitution d’un signal
échantillonné à fs < 2fc
Université de Savoie
19
De l’analogique au numérique
Quantification Uniforme
On parle de quantification uniforme si les intervalles (valeurs
du signal numérisés) sont de même longueur q ( q est le pas
de quantification )

L’erreur de quantification est l’écart entre la valeur réelle et la
valeur quantifiée :
1. Erreur de d’arrondi
q
e
2
2. Erreur de saturation x<valeur min ou x>valeur max
Université de Savoie
20
De l’analogique au numérique
Plage globale de
quantification
1. Erreur d’arrondi
q
e
0

0
1
2
3
4
5
7
8
9
Rapport signal sur bruit relatif à la quantification
RSBdB  Px

6
Temps
dB
 Pe
dB
 Px 
 10 log 
 Pe 
On peut montrer que le RSB se rapproche de l’expression
3
dB
2
 log10  
RSBdB  Px  6 N  10 log10 xmax
2


21
De l’analogique au numérique
2. Erreur de saturation
e
xmax
Cette erreur se produit
lorsque l’amplitude de
l’échantillon à convertir
dépasse xmax ou xmin
C’est une erreur non bornée,
on cherche donc à minimiser
la probabilité de saturation.
0
0
1
2
3
4 5 6
Temps
7
8
9
Université de Savoie
Le RSB se dégrade très
rapidement au-delà d'un seuil
où cette probabilité est non
négligeable.
22
De l’analogique au numérique
Quantification uniforme et RSB
Quantification uniforme 16 bits sur [-1,1]
120
saturation
100
RSB (dB)
80
60
40
erreur d’arrondi
20
0
-60
-50
-40
-30
-20
-10
puissance du signal (dB)
0
Quantification uniforme 16 bits signés sur [-1,1]
10
23
De l’analogique au numérique
Quantification uniforme vs logarithmique
Signal original x
Signal original x
Signal compressé y=C(x)
1
1
1
0.5
0.5
0.5
0
0
0
-0.5
-0.5
-0.5
-1
0
0.2
0.4
0.6
0.8
1
-1
0
0.2
0.4
0.6
0.8
1
-1
Signal quantifié x q=C-1(y q)
Signal quantifié x q=Q(x)
1
1
0.5
0.5
0.5
0
0
0
-0.5
-0.5
-0.5
0
0.2
0.4
0.6
0.8
quantif. uniforme
domaine linéaire
1
-1
0
0.2
0.4
0.6
0.8
quantif. logarithmique
domaine linéaire
0.2
0.4
0.6
0.8
1
Signal quantifié y q=Q(y)
1
-1
0
1
-1
0
0.2
0.4
0.6
0.8
quantif. uniforme
domaine compressé
24
1
De l’analogique au numérique
Quantification Uniforme vs Logarithmique

45
Loi A sur 8 bits
40
Loi A

35
RSB (dB)
30

25
20
RSB à peu près constant
sur une plage de 30 dB
La compression limite les
effets de la granulation
15
10

5
0
-60
-50
-40
-30
-20
-10
puissance du signal (dB)
granulation
0
10
Quantification uniforme

saturation
Université de Savoie
L’effet de granulation est
linéaire par rapport à la
puissance du signal
25
Chapitre 2 : Représentation numérique du
signal


2.1 De l’analogique au numérique
2.2 Le codage des nombres entiers et réels
Université de Savoie
26
Le codage des nombres entiers

Non signées
N 1
A chaque chiffre est affecté un poids exprimé en puissance de 2 :
x   bi 2i
i 0
Exemple
( 101 )2 <=> 1.22 + 0.21 + 1.20 = ( 5 )10

Signées : Complément à 2
C’est le format le plus utilisé en arithmétique binaire. Le bit de poids fort
représente le signe
 Nombre positif : codé comme un non-signé
 Nombre négatif : codé par son C2 (Inversion des bits puis
ajout de1)
Université de Savoie
27
Le codage des nombres entiers
Entiers signés : Format complément à 2
Format le plus utilisé en arithmétique binaire
Codage
3
0 1 1
2
0 1 0
1
0 0 1
0
0 0 0
-1
1 1 1
-2
1 1 0
-3
1 0 1
-4
1 0 0
1
Dynamique
2
N 1
Nombre
2
N 1
Complément à 2 de x :
C2(x) = 2N – x
Implantation efficace :
Inversion des bits puis ajout de 1
C2(x) = C1(x) + 1
Signe
28
Le codage des nombres entiers
Propriétés du codage en complément à 2

Représentation “circulaire”

111
En ajoutant 1 à la plus
grande valeur positive on
obtient la valeur négative
extrême
000
-2 110
101
-3

0
-1
1
001
010 2
100
-4
011
3
Les DSP peuvent être
configurés pour opérer de
deux manières:


C2 pur
C2 avec arithmétique de
saturation
C2 pur
Université de Savoie
C2 avec saturation
29
Le codage des nombres réels

La représentation des nombres doit répondre à deux
exigences contradictoires :

Précision: intervalle entre deux rationnels codés :
>>> Doit être le plus petit possible

Dynamique: Rapport entre le plus grand rationnel et le plus petit
rationnel codés :
>>> Doit être la plus étendue possible

Dans ce contexte les unités de calcul des DSP travaillent


Soit en format fixe (notation décimale)
Soit en format flottant (notation scientifique)
Université de Savoie
30
Le codage des nombres réels
1.Codage en virgule fixe (1)

Le format d’une donnée ne varie pas au cours du temps

Représentation : partie entière - partie fractionnaire
-2m-1
S
bm-1
bm-2
21
20
2-1
2-2
b1
b0
b-1
b-2
Partie entière codée en C à 2
2-n
b-n+2 b-n+1
b-n
Partie fractionnaire
m1
x  (2)m1 S  bi 2i CA2
i  n
Université de Savoie
31
Le codage des nombres réels
1. Codage en virgule fixe (2)

Propriétés:



Partie fractionnaire codée sur k bits
Partie entière codée sur N-k bits en C2
Définition "format Qk" :


La représentation Qk du réel x correspond à la
représentation CA2 de l'entier y tel que: y  round(2 k x)
Q0 désigne le cas particulier des entiers signés en CA2
Université de Savoie
32
Le codage des nombres réels
1. Codage en virgule fixe (3)

Si on ne précise pas le format Qk, un nombre
binaire peut représenter plusieurs valeurs.

Exemple : 01011101 peut représenter :



Q2 : 23.25
Q4 : 5.8125
Q7 : 0.7265625
Université de Savoie
33
Le codage des nombres réels
1. Codage en virgule fixe (4)

Exemple: Q5 sur 8 bits

Partie entière codé sur 3 bits (dont 1 de signe)

Partie fractionnaire codée sur 5 bits

Valeurs comprises entre -4 et +3.96875

Erreur maximale q /2 = 2-6 si arrondi au plus proche
34
Le codage des nombres réels
1. Codage en virgule fixe (5)
#/Poids
-22
21
20
-4
1
0
0
-3.96875
1
0
0
0
3.9375
3.96875
,2
2-2
2-3
2-4
2-5
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
1
1
1
1
1
1
0
0
1
1
1
1
1
1
1
-1
35
Le codage des nombres réels
1. Codage en virgule fixe (6)
Précision: quantification uniforme de pas q
q=2-k
Dynamique:
-2N-k-1 >> 2N-k-1-2-k

Exemple format sur 16 bits:

Quel format faut-il pour représenter tous les réels :



-1≤Nombre<1
-8≤Nombre<8
-200≤Nombre<200
>>Donner la précision de chaque codage.
Université de Savoie
36
Le codage des nombres réels
2. Codage en virgule flottante

Virgule flottante
 Représentation : exposant - mantisse
 La mantisse et l’exposant sont représenter eux même en CA2.
Ils peuvent donc prendre des valeurs négatives.
dE-1
d1
Exposant
d0 cM-1
c2
c1 c0
Mantisse
Norme IEEE :
x  Mantisse .2 Exposant
Exposant sur 8 bits
Mantisse sur 24 bits
1 ≤ |Mantisse| <2
Université de Savoie
37
Le codage des nombres réels
Comparaison fixe - flottant
Dynamique virgule fixe/flottante
1500

Niveau de dynamique
 max(x ) 

DN (dB)  20. log

 min( x ) 
D ynam ique en dB
Virgule flottante
1000
500
Virgule fixe
0
10
15
20
25
30
Nombre de bits
Rapport Signal à Bruit virgule fixe/flottante
Rapport Signal à Bruit de
Quantification
 Ps 
dB  10. log  
 Pe 
80
RS B en dB

100
Virgule flottante
60
40
Virgule fixe
20
0
-50
0
Dynamique du signal d entré e en dB
50
38
Application
En langage de programmation C, nous utilisons les types de variables
suivant. Retrouver la valeur minimale et maximale de chacun des types.
Nom du type Signification Codage
8 bits
-128 à 127
Entier non signé
32 bits
0 à 232-1
Entier signé
32 bits
-231 à 231-1
Réel signé
32 bits
• 24 bits de mantisse
• 8 bits d’exposant
-3,4 x 1038 à 3,4 x 1038
Réel signé
64 bits
• 53 bits de mantisse
• 11 bits d’exposant
-1,7 x 10308 à 1,7 x 10308
char
Entier signé
unsigned int
int
float
double
Plage de valeur
Université de Savoie
39
Chapitre 3 : Les unités spécifiques des DSP





3.1
3.2
3.2
3.3
3.4
Architecture générale et objectifs
Unité de commande
Unité de traitement
Unité de mémorisation
Performance / Consommation
Université de Savoie
40
Architecture générale et objectifs
Processeur
CPU
Unité de
commande
Unités de
traitement
Bus internes
Mémoire
interne
Unité de
Communication
Université de Savoie
Périphériques
et mémoire externes
41
Chapitre 3 : Les unités spécifiques des DSP





3.1
3.2
3.2
3.3
3.4
Architecture générale et objectifs
Unité de commande
Unité de traitement
Unité de mémorisation
Performance / Consommation
Université de Savoie
42
Unité de commande

C’est le chef d’orchestre du CPU. Il séquence
et décode les instructions une à une.

Pour être efficace, le CPU met en œuvre :


Un pipeline
Une gestion des boucles matérielles
Université de Savoie
43
Les phases du Pipeline
P (Prefecth) - Generate program address = Incrémentation du compteur ordinal
F (Fetch) - Get Opcode = Lecture du code de l’instruction en mémoire
D (Decode) - Decode instruction = Décodage de l’instruction
A (Access) - Generate read address = Calcul des adresses des opérandes
= Calcul de l’adresse du résultat
R (Read) - Read operands = Lecture des opérandes en mémoire
X ( Execute) = Exécution de l’instruction
= Ecriture du résultat l’adresse calculée
P F D A R X
P F D A R X
P F D A R X
P F D A R X
P F D A R X
P F D A R X
Full Pipeline : Toutes les unités
matérielles du DSP sont en activités
Unité de commande
Séquentiel vs pipeline
Instruction
Fetch
t2
t3
t4
t5
Instruction 1
t7
t8
F2
D1
D2
Read
R1
Execute
F1
-
R2
X1
t1
t2
t3
t4
t5
t6
t7
t8
F1
F2
F3
F4
F5
…
…
…
D1
D2
D3
D4
D5
…
…
R1
R2
R3
R4
R5
…
X1
X2
X3
X4
X5
Read
Execute
CPU
Decode
D1
R1
-
MemD
X1
-
MemD
F4
F5
MemP
X2
Exécution séquentielle
Fetch
MemP
Instruction 2
F1
Decode
t6
CPU
t1
D3
D4
R2
R3
MemD
X1
X2
MemD
Amorçage du pipeline
Exécution avec pipeline : entrelacement des instructions
Université de Savoie
45
Unité de commande
Exemple de rupture de séquence
Code à exécuter :
1: Instr1
2: Si B==1 Alors GOTO 10:
3: Instr3
4: Instr4
5: Instr5
6: Instr6
…
10:
11:
12:
…
Instr10
Instr11
Instr12
Etat du pipeline avec prédiction que B≠1 :
Si prédiction incorrecte (B=1)
F
D
R
X
Si prédiction correcte (B≠1)
t1
t2
t3
t4
t5
t6
t7
t8
F1
F2
F3
F4
F5
F10
F11
F12
F
D1
D2
D3
D4
!
D10
D11
D
R1
R2
R3
!
!
R10
R
X1
X2
!
!
!
X
Evaluation du prédicat (B==1)
=> rupture de séquence
t1
t2
t3
t4
t5
t6
t7
t8
F1
F2
F3
F4
F5
F6
…
…
D1
D2
D3
D4
D5
D6
…
R1
R2
R3
R4
R5
R6
X1
X2
X3
X4
X5
Vidange du pipeline:
Perte de 3 cycles
Evaluation du prédicat (B==1)
=> pas de rupture
Unité de commande
Exemple de conflit d'accès mémoire
Programmes et Données dans la même mémoire à 1 accès par cycle
Fetch
Decode
t1
t2
t3
t4
t5
t6
t7
t8
F1
F2
conflit
conflit
F3
F4
!
!
D1
D2
!
!
D3
D4
!
R1
R2
!
!
R3
R4
X1
X2
!
!
X3
Read
Execute
Conflit pour l’accès mémoire entre Fetch et Read
 Les lectures de données R1/R2 empêchent les chargements d'instruction F3/F4
 Réductions des performances d'au moins 50%


Problème réglé si


Mémoire multi-accès
Programmes et Données dans des mémoires différentes (ou multi-bloc)
Université de Savoie
47
8
Unité de commande
Effets du pipeline lors du débogage
Code à exécuter :
1:
A=1
2:
B=1
3:
C=1
… NOP …
10:
A=2
11:
B=2
12:
C=2
13:
D=2
14:
E=2
…
Watch Window
A
1
B
1
C
1
Watch Window
A
1 ???
B
1
C
1
Watch Window
A
2 !!!
B
1
C
1
Watch Window
A
2
B
2
C
1
La flèche indique la position du PC
Plusieurs cycles sont nécessaires
avant que la variable soit modifiée :
Cela n’intervient qu’à l’étape X
(exécution)
F
D
R
X
t1
t2
t3
t4
t5
t6
t7
t8
F10
F11
F12
F13
F14
…
…
…
D10
D11
D12
D13
D14
…
…
R10
R11
R12
R13
R14
…
A=2
B=2
C=2
D=2
E=2
Programme 1
Visualisation des variables
Programme 2
Visualisation des variables
Unité de commande
Utilisation des ressources par le pipeline
Etage
pipeline
P
F
D
A
R
X
Description
Partie hardware utilisée
Generate program address
Get Opcode
Decode instruction
Generate read address
Read Operand
Generate write address
PC
Program memory
Decoder
ARs, ARAU
Data memory
ARs, ARAU
Execute instruction
Write result
MAC, ALU
Data Memory
PC =
Program Counter
ARAU = Auxiliary Register Arithmetic Unit
AR =
Adresse Register
MAC= Multiply ACcumulate
ALU = Arithmetic Logic Unit
50
Unité de commande
Retards dans le pipeline


Le pipeline atteint son plein rendement une
fois qu’il est “rempli”
Un retard peut se produire

S’il existe un conflit de ressources (retard ponctuel)



accès à la mémoire
utilisation des bus
En cas de rupture de séquence (vidange du
pipeline)



branchement non prévu
appel de sous-programme
interruption
Université de Savoie
51
Unité de commande
Gestion des boucles

L’objectif est d’optimiser le traitement des
boucles de petite taille



Initialisation des paramètres de la boucle en 1 instruction
Pas d'instructions supplémentaires pour la gestion de la fin
de la boucle
Exemple boucle mono-instruction
MOVE
LOOP MAC
DEC
JNE
#16,B
(R0)+,(R4)+,A
B
LOOP
Boucle logicielle
Université de Savoie
RPT
MAC
#16
(R0)+,(R4)+,A
Boucle matérielle
52
Unité de commande
Exemple : Calcul d’un filtre RIF
N 1
Gestion matérielle des boucles :
Unité de génération d’adresses programme
Unité MAC matérielle
+ Chargement simultané
de l’instruction et des
opérandes
A=0;
for (i=0; i<N; ++i) {
A = A +
}
Y = A >> 15;
B[i] *
X[i];
Unité de génération
d’adresses données
Code C
y n    b(i ) x n  i 
i 0
B[i] X[i]
Y
SSBX FRCT
STM #B, AR2
STM #X, AR3
STM #Y, AR4
RPTZ A, #N-1
(x1)
MAC *AR2+,*AR3+, A (xN)
STH A, *AR4
(x1)
Equivalent ASM
Université de Savoie
53
Unité de commande
Optimisation du compilateur C
Code C
#define N 256
short in[N];
short out[N];
void toto()
{
int i;
for (i=0; i<N; i++)
{
out[i]=in[i];
}
}
Adresses des tableaux
_inputData = 331h = 817
_outputData = 431h = 1073
Prise en compte des
capacités matérielles du DSP
Pas d’optimisation
813D toto
813D
PSHM 11h
813E
FRAME -1
813F
SSBX SXM
8140
LD
#100h,0,A
8142
ST
#0h,0h
8144
SUB
0h,A
8145
BC
8154h,ALEQ
debut :
8147
MVDK 0h,11h
8149
LD
*AR1(817),A
814B
STL
A,*AR1(1073)
814D
LD
#100h,0,A
814F
ADDM 1h,0h
8151
SUB
0h,A
8152
BC
8147h,AGT
fin:
8154
FRAME 1
8155
POPM 11h
8156
FRET
Sauvegarde AR1 (save-on-entry)
Manipulation de nombres signés
A <= 256 (100h)
Met la valeur initiale 0 de i dans pile[0h]
A <= A - pile[0h]
Si A<=0, alors aller à fin:
Copie pile[0h] dans AR1
Charge in[AR1] dans A
Stocke A dans out[AR1]
A <= 256 (100h)
pile[0h] <= pile[0h] + 1
A <= A - pile[0h]
Si A>0 alors reboucler sur debut:
Restaure de AR1
Retour de la fonction
8033 toto Optimisation au niveau fonction (-o2)
8033
STM
431h,13h
AR3 <= @out
8035
STM
331h,12h
AR2 <= @in
8037
RPT
#0ffh
Répéter 256=255+1 fois
8038
MVDD *AR2+,*AR3+
*AR3 <= *AR2
8039
NOP
803A
NOP
Université
803B
FRET de Savoie
54
Unité de commande
Unité de contrôle du C50
•
PC sur 16 bits
pile de 8 * 16 bits
PFC,IR: pour le pipeline
•
Registres de status ST0,ST1,PMST
•
Gestion des boucles
• RPTC: repeat instruction
• BRCR: repeat bloc
•
Interruptions :
• IMR: masque interruptions
• IFR: flags interruptions
•
BMAR: bloc move
GREG: mémoire globale
•
•
•
Université de Savoie
55
Chapitre 3 : Les unités spécifiques des DSP





3.1
3.2
3.2
3.3
3.4
Architecture générale et objectifs
Unité de commande
Unité de traitement
Unité de mémorisation
Performance / Consommation
Université de Savoie
56
Unité de traitement
DSP virgule fixe / virgule flottante

Il existe deux types de DSP :
Les DSPs à virgule fixe traitent des nombres
entiers seulement
 Les DSPs à virgule flottante traitent des
nombres réels codés sous la forme mantisse
exposant.

Université de Savoie
57
Unité de traitement
DSP virgule fixe (1)

Arithmétique :


Dynamique limitée : [-Xmax et Xmax] : Possibilité de
débordement  nécessité de recadrer les données
Développement :

Temps de développement plus long : Étude de la
dynamique des données, détermination du codage et
des recadrages
Université de Savoie
58
Unité de traitement
DSP virgule fixe (2)

Architecture :


Opérateurs plus simples
Largeur des données b : 16 bits




Efficacité énergétique plus importante : consommation
moins importante
Processeur moins cher (surface du circuit moins importante)
Processeur rapide (seulement pour les calculs à virgule fixe)
Marché :

applications grand public
Xx % des ventes en xx
TMS320C62x :
TMS320C64x :
59
Unité de traitement
DSP virgule flottante (1)

Arithmétique :


Dynamique importante : 1500 dB pour 32 bits
Développement

Temps de développement plus court

Recadrage des données assuré par le processeur
Compilateur de langage de haut niveau plus efficace : plus
grande portabilité

Université de Savoie
60
Unité de traitement
DSP virgule flottante (2)

Architecture :

Largeur des données : 32 bits

Opérateurs plus complexes (gestion de la mantisse et de
l’exposant)


Processeur plus cher et consommant plus
Marché


Applications nécessitant une grande dynamique :
audionumérique
Applications avec des faibles volumes
61
Unité de traitement
Exemple

Filtre numérique FIR sur N points
N 1
y(n)   h(i).x(n  i)  x(n)  h(n)
i 0
Dessiner la structure matérielle permettant de réaliser le calcul de y(n).
D
D
D
D
x(n)
h(0)
x
h(1)
x
+
h(2)
x
h(3)
+
x
+
h(4)
x
+
y(n)
Cellule
 Objectif : traitement d’une cellule par cycle
Université de Savoie
62
Unité de traitement
Eléments de l’unité de traitement (1)

Opérateurs

Multiplieur câblé




Multiplication en 1 cycle ou pipelinée (1 résultat de multiplication
par cycle)
Le résultat est fourni directement à l’UAL ou il est stocké dans un
registre (P register)
Largeur des opérandes
source : b
résultat : bmultiplication = 2.b
Unités de saturation ou d’arrondi
 Unités spécifiques


Unité de manipulation de bit, Viterbi, ...
Université de Savoie
63
Unité de traitement
Eléments de l’unité de traitement (2)

U.A.L.


Opérations arithmétiques : addition, soustraction,
incrémentation, négation
Opérations logiques : and, or, not
Additionneur indépendant de l’UAL
 Registres à décalage (recadrage des données)



spécialisé : réalisation de quelques décalages prédéfinis
en //
en barillet : réalisation d ’un décalage quelconque en 1
cycle
Université de Savoie
64
Unité de traitement
Éléments de l’unité de traitement (3)

Unités de stockage de l’unité de traitement

Registres opérandes


Stockage des opérandes sources ou des résultats intermédiaires
Registres d’accumulation

Stockage du résultat de l ’additionneur

Nombre de registres d’accumulation limité (1 à 4)

Données stockées en double précision

Possibilité de bits de garde pour stocker les bits supplémentaires
issus d ’accumulations successives badd = bmultiplication + bgarde
Bits de garde
bgarde
ACCH
ACCL
2.b
65
Unité de traitement
Structure de l’unité de traitement MAC
A
B
b
b

P
bmult
MAC
+
badd
Accumulateur
Sat /Arr
Université de Savoie
66
Unité de traitement
Exemple : TMS320C54x
DB PB DB
CB
CB DB CBDBEB

1 multiplieur 16*16 bits
 Op source 1 : registre T
 Op source 2 : mémoire
 Op destination :

1 additionneur 40 bits
1 ALU (40 bits)

Université de Savoie

2 registres d ’accumulation 40
bits

1 registre à décalage en
barillet

1 unité dédiée à l ’algorithme
de Viterbi
67
Chapitre 3 : Les unités spécifiques des DSP





3.1
3.2
3.2
3.3
3.4
Architecture générale et objectifs
Unité de commande
Unité de traitement
Unité de mémorisation
Performance / Consommation
Université de Savoie
68
Unité de mémorisation
Les différents accès à la mémoire

Exemple Filtre FIR




Recherche de l’instruction
Lecture de la donnée xn-k
Lecture du coefficient hk
Vieillissement des données xn-k-1 = xn-k
D
D
D
D
x(n)
h(0)
x
h(1)
x
x
h(2)
h(3)
x
h(4)
x
y(n)
+
+
+
+
TAP
69
Unité de mémorisation
Rappels : Bus

Le CPU est le maître du bus


Il est le seul à écrire sur les bus adresse et contrôle
Le périphérique obtempère sur le bus données



CPU
Lecture : il fournit la donnée demandée
Ecriture : il récupère la donnée fournie par le CPU
Haute impédance : il se déconnecte du bus
BUS
Périphérique
Adresses : sélection du périphérique
et localisation d’une donnée
Données : valeur de la donnée à échanger
adresses
CPU
données
contrôle
Périphérique
Contrôle : lire / écrire / haute impédance
Université de Savoie
70
Unité de mémorisation
Accès mémoire pour un calcul
1
2
CPU
Mémoire
4
3




(1)
(2)
(3)
(4)
Charger une instruction depuis la mémoire
Charger les opérandes depuis la mémoire
Effectuer les calculs
Stocker le résultat en mémoire
Université de Savoie
71
Unité de mémorisation
Architecture Von Neuman
CPU



BUS
Mémoire
Programme
+ Données
Un seul chemin d'accès à la mémoire
Architecture des processeurs d’usage général (Pentium,
68000)
Goulot d'étranglement pour l'accès à la mémoire
Université de Savoie
72
Unité de mémorisation
Architecture Harvard
Mémoire Programme
CPU
Mémoire Données


Séparation des mémoires programme et données
Meilleure utilisation du CPU

Chargement du programme et des données en parallèle
Université de Savoie
73
Unité de mémorisation
Accès mémoire multi-port
Mémoire Programme
+ Données
CPU
Mémoire Données

Plusieurs bus de données
 Accès simultané à plusieurs données
 Combiné avec



mémoire multi-accès (plusieurs accès à la même mémoire en un
cycle)
mémoire multi-blocs (accès simultané à deux blocs de mémoire
distincts)
Exemple du TMS320C54xx :
 1 bus programme (P)
 2 bus de lecture des données (C et D)
 1 bus d’écriture des données (E)
74
Unité de mémorisation
Exemple du TMS320C5416
Program A/D Bus (P)
Internal
Data Read A/D Bus (D)
Memory
Data Read A/D Bus (C)
Ext’l
Mem
I/F
A
External
D
Memory
Data Write A/D Bus (E)

Internal: Up to 4 accesses / cycle



External: 1 access / cycle
up to 8M words program
Exemple du TMS320C54xx :



1 bus programme (P)
2 bus de lecture des données (C et D)
1 bus d’écriture des données (E)
Université de Savoie
75
Unité de mémorisation
Exemple du TMS320C5416
Université de Savoie
77
Unité de mémorisation
Exemple du TMS320C5416
Program
Data
ROM
ROM
SARAM
DARAM
P Bus
Ext’l
Mem
I/F
D Bus
C Bus
A
D
E Bus
Université de Savoie
78
Unité de mémorisation
Cache d'instructions
DSP
cache
d’instructions
Mémoire Programme
+ Données
CPU

Cache = mémoire associative rapide


Contient les dernières instructions exécutées
Utile en cas de boucle



Mémoire Données
Accès aux instructions sans accès en mémoire programme
Libère le bus pour des données
Pas appliqué aux données

Problème de validation du temps réel
Université de Savoie
79
Unité de mémorisation
Bus externes
Boitier du DSP
Mémoire Programme
+ Données
CPU
Mémoire Données
MUX
Transfert entre les bus
internes et externe par
multiplexage temporel
Limitation du nombre de broches
 Réduction des coûts
 Diminution des performances lors
des accès au bus externe

80
Unité de mémorisation
Accès Direct à la Mémoire : DMA
Mémoire Programme
+ Données
CPU
Mémoire Données
interruptions
DMA
configuration

Accès DMA : entrées-sorties vers la mémoire interne


indépendant du CPU et des bus internes
Système d'interruptions "données reçues"/"données transmises"
81
Unité de mémorisation
DMA et buffer ping-pong
DSP
McBSP2
CAN
McBSP2
DRR
DXR
DMA4
PING
IN
31
PONG
IN
2
CNA
DMA5
PING
OUT
1
Traitement
Buffers en mémoire
PONG
OUT
2
Buffers en mémoire
Université de Savoie
Source: Texas Instruments C5000 DSP Teaching Kit82
Unité de mémorisation
Mémoire interne sur les C54x
Capacité en mémoire interne de différents modèles C54x
Découpage en blocs

Plusieurs types de RAM incluse sur le chip




Single access (SARAM) : un accès par cycle
Dual access (DARAM) : deux accès par cycle
Two-way shared : deux accès par cycle même depuis l'extérieur
DARAM découpée en blocs


Accès simultané à deux blocs de mémoire différents
2x2=4 accès par cycle en théorie (en réalité limité par le reste de l'architecture)
sources : "TMS320C54x DSP Functional Overview", SPRU307A, Texas Instrument
"TMS320VC5416 DSK Reference Technical", Spectrum Digital
83
Unité de mémorisation
Adressage indirect : *ARx (1)



MPY
L’instruction contient un numéro de registre auxiliaire
ARx qui contient l’adresse en mémoire ou se trouve la
donnée
Analogue aux pointeurs en C
Possibilité de modifier la valeur du registre
*AR4, *AR3, A
; Multiplication de la donnée à l’adresse contenue dans AR4
; par celle pointée par AR3 et stockage du résultat en A
; On remarque l’accès simultané à deux données
; A ← dm(AR4) × dm(AR3)
Université de Savoie
84
Unité de mémorisation
Adressage indirect : exemple (3)
Option
Syntax
Action
No Modification
*ARn
no modification to ARn
Increment /
Decrement
*ARn+
*ARn-
post increment by 1
post decrement by 1
Indexed
*ARn+0
*ARn-0
post increment by AR0
post decrement by AR0
AR0
Circular
*ARn+%
*ARn-%
*ARn+0%
*ARn-0%
post increment by 1 - circular
post decrement by 1 - circular
post increment by AR0 - circular
post decrement by AR0 - circular
BK
Bit-Reversed
*ARn+0B
*ARn-0B
post inc. ARn by AR0 with reverse carry
post dec. ARn by AR0 with reverse carry
Pre-modify
*ARn (lk)
*+ARn (lk)
*+ARn (lk)%
*+ARn
*(ARn+LK), ARn unchanged
*(ARn+LK), ARn changed
*(ARn+LK), ARn changed - circular
pre-increment by 1, during write only
*(lk)
16-bit lk is used as an absolute address
Université de
Savoie
See Absolute
Addressing
Absolute
Affected by:
BK, AR0
AR0
(=FFT size/2)
BK
85
Unité de mémorisation
ARAU (Unité d’adressage indirect)
Registres d'adressage
Unités de calcul spécialisées
Ecriture sur les bus
d'adresse des bus C, D et E
86
Unité de mémorisation
Buffer linéaire

Chaque nouvel échantillon donne lieu au déplacement
de l’ensemble des données du buffer, l’adresse du
nouvel échantillon est toujours la même.
Time n
Time n+1
Time n+2
Time n+3
x(n)
x(n-1)
x(n-2)
x(n-3)
x(n+1)
x(n)
x(n-1)
x(n-2)
x(n+2)
x(n+1)
x(n)
x(n-1)
x(n+3)
x(n+2)
x(n+1)
x(n)
Université de Savoie
87
Unité de mémorisation
Adressage circulaire


Exemple : stockage des échantillons d’entrée dans un
filtre FIR.
Time n
Time n+1
Time n+2
Time n+3
x(n-1)
x(n)
x(n-3)
x(n-2)
x(n-1)
x(n)
x(n+1)
x(n-2)
x(n-1)
x(n)
x(n+1)
x(n+2)
x(n+3)
x(n)
x(n+1)
x(n+2)
Chaque nouvel échantillon donne lieu à l’écriture d’une
donnée. Cette adresse est calculée par le générateur
d’adresse.
Université de Savoie
88
Unité de mémorisation
MMR : Memory Mapped Registers Addressing




MMRs are in page 0 of data memory.
They can be accessed by some specific MMR
instructions allowing simple access to page 0.
In these cases DP, SP and CPL are ignored
Example : STM (STore to Memory-mapped register):

Stores an immediate value to the specified MMR or Scratch
memory address.
0000h
MMRs
0060h
007Fh
Scratch
Tip: use the .mmregs directive
to allow MMR names to be
interpreted as addresses
Université de Savoie
89
Unité de mémorisation
Memory Mapped Registers
Name
Addr.
(Hex)
Description
Name
Addr.
(Hex)
Description
IMR
0000
Interrupt Mask Register
AR0
0010
Address Register 0
IFR
0001
Interrupt Flag Register
AR1
0011
Address Register 1
-----
2-5
Reserved
AR2
0012
Address Register 2
ST0
0006
Status 0 Register
AR3
0013
Address Register 3
ST1
0007
Status 1 Register
AR4
0014
Address Register 4
AL
0008
A accumulator low (A[15:00])
AR5
0015
Address Register 5
AH
0009
A accumulator high (A[31:16])
AR6
0016
Address Register 6
AG
000A
A accumulator guard (A[39:32])
AR7
0017
Address Register 7
BL
000B
B accumulator low (B[15:00])
SP
0018
Stack Pointer Register
BH
000C
B accumulator high (B[31:16])
BK
0019
Circular Size Register
BG
000D
B accumulator guard (B[39:32])
BRC
001A
Block Repeat Counter
T
000E
Temporary Register
RSA
001B
Block Repeat Start Address
TRN
000F
Transition Register
REA
001C
Block Repeat End Address
PMST
001D
PMST Register
-------
01E-01F
Reserved
Note: XPC and Peripheral MMR locations are device dependent
90
Chapitre 3 : Les unités spécifiques des DSP





3.1
3.2
3.2
3.3
3.4
Architecture générale et objectifs
Unité de commande
Unité de traitement
Unité de mémorisation
Performance / Consommation
Université de Savoie
91
Performance / Consommation
Consommation énergétique

Filtrage numérique FIR:

C549


C6201


200MHz, 2.5V
ADSP-21160


100MHz, 3.3V
ZSP16401


200MHz, 1.8V
DSP16210


100MHz, 2.5V
100MHz, 2.5V
C6701

167MHz, 1.8V
92
Performance / Consommation
Mesures des performances
MFLOPS
Million Floating–Point
Operation Per Second
Mesure le nombre d’opérations
arithmétiques à virgule flottante que le
DSP à virgule flottante peut réaliser
en une seconde
MOPS
Million Operation
Per Second
Mesure le nombre total d’opérations
(calcul, accès DMA, transferts, etc.) que
le DSP peut réaliser en une seconde
MIPS
Million Instructions
Per Second
Mesure le nombre de codes machine
(instructions) que le DSP peut réaliser
en une seconde
MMACS
Million of MAC
per Second
Mesure le nombre d’opérations MAC
(Multiply+Accumulate) que le DSP peut
réaliser en une seconde
MBPS
Mega-Bytes
Per Second
Mesure la bande passante d’un bus
particulier ou d’un dispositif d’E/S
Université de Savoie
93
Performance / Consommation
Panorama des DSP (2)
Université de Savoie
94
Chapitre 4 : Le DSP TMS320C5416
4.1 L’architecture
 4.2 L’organisation mémoire

Université de Savoie
95
L’architecture
Diagramme bloc du TMS320C5416 (1)
Université de Savoie
96
L’architecture
Diagramme bloc du TMS320C5416 (2)
Program/Data ROM
16K Words
Program/Data RAM
128K Words
JTAG Test/
Emulation
Control
Bus externe
MUX
D(15-0)
Mémoire
interne
Program/Data Buses
Timer
A(23-0)
MAC
17 x 17 MPY
ALU
40-Bit ALU
40-Bit Adder
CMPS Operator
(VITERBI)
RND, SAT
EXP Encoder
Ch 2
Shifter
Accumulators
40-Bit ACC A
Ch 3
Muxed GP I/O
Ch 0
Ch 1
Ch 4
Ch 5
Addressing Unit
8 Auxiliary Registers
Peripheral Bus
CPU40-Bit ACC B
40-Bit Barrel
(-16, 31)
DMA
8/16-bit Host Port
Interface (HPI)
Multichannel Buffered
Serial Port (McBSP)
Multichannel Buffered
Serial Port (McBSP)
Multichannel Buffered
Serial Port (McBSP)
PLL Clock
Generator
2 Addressing Units
S/W Waitstate
Generator
Power Management
Université de Savoie
Entrées
Sorties
97
L’architecture
Diagramme bloc du TMS320C5416 (3)
Program/Data ROM
16K Words
Program/Data RAM
128K Words
JTAG Test/
Emulation
Control
Bus externe
MUX
D(15-0)
Program/Data Buses
Timer
A(23-0)
MAC
17 x 17 MPY
ALU
40-Bit ALU
40-Bit Adder
CMPS Operator
(VITERBI)
RND, SAT
EXP Encoder
Ch 2
Shifter
Accumulators
40-Bit ACC A
Ch 3
40-Bit Barrel
(-16, 31)
Génération
d’adresses
40-Bit ACC B
DMA
Muxed GP I/O
Ch 0
Ch 1
Ch 4
Ch 5
Addressing Unit
8 Auxiliary Registers
Peripheral Bus
Unités de
calcul
Mémoire
interne
8/16-bit Host Port
Interface (HPI)
Multichannel Buffered
Serial Port (McBSP)
Multichannel Buffered
Serial Port (McBSP)
Multichannel Buffered
Serial Port (McBSP)
PLL Clock
Generator
2 Addressing Units
S/W Waitstate
Generator
Power Management
CPU
Université de Savoie
Entrées
Sorties
98
Structure interne du
TMS320C54x
Source : Texas Instruments
TMS320C54x DSP
Reference Set
Vol 1 : CPU and Peripherals
Unité de controle
Génération
d'adresses
programme
Génération
d'adresses
données
Bus P
programme
Bus C / D
lecture
données
Bus E
écriture
données
Université de Savoie
100
Registres
ALU
Shifter
MAC
Viterbi
Chapitre 4 : Le DSP TMS320C5416
4.1 L’architecture
 4.2 L’organisation mémoire

Université de Savoie
102
L’organisation mémoire
Les types de mémoires

L’architecture « Harward Modifiée » du DSP lui
donne donc une organisation autour de deux
types de mémoire :



De la mémoire pour le programme
De la mémoire pour les données
Ces types de mémoire seront physiquement de
la ROM ou de la RAM (DARAM, SARAM…). Selon
la version du circuit, le type (ROM, RAM) et la
taille de la mémoire intégrée dans le circuit
diffère.
Université de Savoie
103
L’organisation mémoire
Quantité et type de mémoire programme
Université de Savoie
104
L’organisation mémoire
Quantité et type de mémoire données
Université de Savoie
105
L’organisation mémoire
Type de mémoire

Chaque DSP possède donc une certaine
quantité de RAM à double accès (DARAM), de
la RAM à simple accès (SARAM) et de la ROM
interne.

La RAM est généralement réservé aux données
et la ROM au programme mais on trouve
beaucoup d’exception à cette règle.
Université de Savoie
106
L’organisation mémoire
Mémoire Programme (1)

La zone de la mémoire programme de
l’adresse 0 à 13FFh , sera située à
l’extérieur du circuit si le bit OVLY
(Overlay) est mis à 0.

Lorsque ce bit est à 1 la zone 80h à
13FF (4992 mots) est située en
mémoire interne. Elle est constitué de
RAM à double accès commune à
l’espace de mémoire donnée. Dans ce
cas 0 à 7Fh est interdit.

Lorsque la zone est commune aux 2
espaces, cela signifie qu’elle peut
contenir aussi bien des instructions
que des données : on se sert de cette
possibilité plus particulièrement
lorsque l’on souhaite faire la mise à
jour dynamique d’un programme
préalablement chargé en mémoire.
L’organisation mémoire
Mémoire Programme (2)

De 1400h à 8FFFh (31 Kmots) se
trouve une zone de mémoire
adressable à l’extérieur du circuit. La
zone de 9000h à FFFFh (28Kmots)
pourra être de la ROM interne si la
broche MP/MC =0, ou de la ROM
externe si la broche est à1.

Dans les 2 cas, la zone située de FF80h
à FFFFh (128 mots) est réservé aux
vecteurs d’interruption.
108
L’organisation mémoire
Mémoire de données

Cet espace comporte une zone de RAM
à double accès de 0 à 13FFh (5Kmots)
dont 96 mots, de l’adresse 0 à 5 Fh
réservés au stockage des registres
mappés en mémoires et une zone de
mémoire de travail de 60h à 7Fh. La
mémoire situé de 80h à 13FFh pourra,
comme nous l’avons vu
précédemment, être partagée par
l’espace programme (OVLY=1).

La zone suivant de 1400h à E000h
(50Kmots) sera située à l’extérieur du
circuit.

Si DROM est à 0, la mémoire de
l’adresse E000h à FFFFh sera
accessible à l’extérieur, ce sera de la
ROM interne si DROM=1
Chapitre 5 : Un outil de développement logiciel
Code Composer Studio
5.1 L’interface et la compilation
 5.2 Les librairies

Université de Savoie
110
L’interface Code Composer Studio
1. Introduction
Chaine de compilation : exemple de CCS V3.3
Program.c
*.asm, *.c
module.h
Module.h54
program.cdb
Generate
programcfg.h54
Compile or
Assemble
program.obj
*.obj
Programcfg_c.c
programcfg.s54
Programcfg.h
Assemble
Compile
programcfg.obj
programcfg_c.obj
programcfg.cmd
program.cmd
Link
program.out
112
1. Introduction
Emulateur JTAG
HOST
TARGET
CCS
JTAG
Interface
JTAG
Emulator
DSP
Target
JTAG est un outil puissant pour faire du debug logiciel bas niveau. Son
implementation demande une carte équipée d’un émulateur JTAG. Celui-ci est
parfois jumelé avec la connectivité USB qui alimente la carte.
Sur le starter kit DSK5416, l’émulateur JTAG est intégré : chargement du
code, execution en pas à pas, breakpoint, visualisation de la mémoire…
113
L’interface et la compilation
Chaîne de compilation (3)

projet.pjt :
fichier contenant l’ensemble des options du projet et qui fourni le lien
vers tous les fichiers que contient le projet.

program.c :
Programme source en langage C contenant la fonction main(). Nous
pouvons aussi avoir d’autres fichier.c pour les fonctions utilisateur.

program.asm :
Programme source en assembleur contenant la fonction main(). Nous
pouvons aussi avoir d’autres fichier.asm pour les fonctions utilisateur.

header.h :
Fichier header pour les déclaration des fonctions ou variables du langage
C utilisées dans le projet.
Université de Savoie
114
L’interface et la compilation
Chaîne de compilation (4)

header.h54 :
Fichier header pour les déclaration des fonctions ou variables assembleur
utilisées dans le projet.

librairie.lib :
Librairie compilée. Ce genre de fichier est souvent donné par le
constructeur pour fournir des fonctions utilisateurs spécifiques pour son
composant.

program.obj :
Fichier objet. C’est un fichier compilé depuis une fichier assembleur ou
un fichier C.

command.cmd:
Fichier de commande. Indispensable pour le linker afin qu’il définisse
l’emplacement des variables et du code en mémoire.
L’interface et la compilation
Chaîne de compilation (5)
Fichier généré par la chaine de compilation

program.out :
C’est le programme exécutable pour une cible spécifique. Il s’agit
du code chargé en mémoire.

program.lst :
Fichier listing, il s’agit d’un fichier où sont superposés le code en
C, le code assembleur généré, le code machine généré, et les
adresses mémoires utilisées pour chaque instruction.

program.map :
Fichier mapping, il s’agit d’un fichier résumant toutes les
quantités et les zones mémoires utilisées.
>> Document d’exemples de code
L’interface et la compilation
Outils de débogage

Type d’outils

Emulateur



Boundary-scan (JTAG)



Communique avec le DSP à
grande vitesse
Capable de simuler/enregistrer
en temps-réel l’état interne
exact du DSP
Protocole intégré au sein du
processeur
Interrompt le DSP pour
accéder à l’information
DSP
Emulateur
ou
IDE
Contrôleur JTAG
Définition de breakpoints
et modification des variables
Récupération des données
depuis la mémoire du DSP
Opérations

Interruption et relance de
l’exécution



Chargement du code
Breakpoints
Accès en lecture/écriture


Visualisation et modification du
contenu mémoire
Registres internes
117
L’interface et la compilation
Affichage du code désassemblé
#define N 256
short inputData[N];
short outputData[N];
void toto()
{
int i;
for (i=0; i<N; i++)
{
outputData[i] = inputData[i];
}
}
Compilation et édition des liens
puis affichage du code désassemblé
« Mixed Source/ASM »
Chapitre 5 : Un outil de développement
logiciel: Code Composer Studio
5.1 L’interface et la compilation
 5.2 Les librairies

Université de Savoie
119
Les librairies
Avantages d'une librairie
Il existe plusieurs librairies :



CSL : Chip support Library, fourni par le constructeur de composant
BSL : Board support Library fourni par le constructeur de la carte de
développement.
Librairies spécialisées : DSPLIB,IMGLIB…
Il s’agit de faire une abstraction du matériel à travers une API logicielle
(Application Programmable Interface). Ces interfaces logicielles sont
pilotées par une interface graphique dans le cas du CSL et permettent :


un temps de développement réduit
une programmation de plus haut niveau
Elles sont presque indispensables pour compenser la complexité des
processeurs actuels.
Université de Savoie
120
Les librairies
Exemple : Board Support Library
Cas du TP 2 sur DSP TMS320
Ces fonctions font parties des librairies de la carte (Board Support Library)
>> Voir
C:\CCStudio_v3.1\docs\hlp\C5416DSK.HLP
Université de Savoie
121
Les librairies
Exemple : Chip Support Library
Université de Savoie
122
Les librairies
Exemple : DSPLIB

Cette librairies est un support pour le calcul. Elle est




La library DSPLIB est composée de 3 parties




Déjà programmée
Optimisée
Utilisable depuis le langage C
Un fichier header : dsplib.h
Un fichier objet (54xdsp.lib) comportant le code compilé des
fonctions déclarées dans dsplib.h
Un fichier source 54xdsp.src permettant la customisation des
fonctions par l’utilisateur.
Exemple :


short cfft8 (DATA *x, DATA scale);
short fir(DATA *x, DATA *h, DATA *r,DATA **d, ushort nh, ushort nx);
Les librairies
Vue synoptique des modules utiles
User Application
Logiciel applicatif
Abstraction du matériel
et système d’exploitation
DSP/BIOS™
Kernel/Scheduler
CPU Timer EMIF
Matériel
USB/
JTAG
CSL
Dsplib
Imglib
BSL
Drivers
McBSP
DSP
CODEC
LED
Boutons
Carte DSK
Université de Savoie
124
Téléchargement