Vous êtes sur la page 1sur 123

Processeurs de traitement du

signal (DSP)
Sylvain MONTAGNY
sylvain.montagny@univ-savoie.fr
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


Capteur Actionneur

Filtre Système de traitement Filtre


anti CAN numérique CNA de
repliement (Processeur, FPGA…) reconstruction

Analogique 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
tonalité BP Filter Detector
Schéma de détection
697 Hz
de tonalité 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
852 Hz 7 8 9 BP Filter Detector 1477 Hz

941 Hz * 0 #

Gabarit du filtre numérique


1209 Hz 1336 Hz 1477 Hz |G| (dB)

-0 dB
Fréquences de tonalité du clavier numérique -3 dB

-30 dB

Fe
10
FS1 FS2 2
Université de Savoie FP1 FP2
La chaine de traitement numérique
Complexité des algorithmes
Fréquence
en Hz

1 000 000

10 000

100

Faible Complexité de l’algorithme Elevée

Température Codage de la voix MP3

Reconnaissance Reconnaissance
vocale d’image

11
Positionner les applications suivantes dans le graphique
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 Lecture des opérandes sources
Exécution en 15 à 20
mov *r1,x1 cycles sur processeur
mpy x0,x1,a
add a,b
Opération MAC classique
mov x1,*r2 Vieillissement de l’échantillon
inc r0
inc r1 Gestion des pointeurs d’adresse
inc r2 Exécution en 1 cycle
dec ctr
tst ctr Gestion de la boucle sur DSP
jnz loop
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
t
Entrée de l’échantillon
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
En MIPS/W Pleiades

Flexibility
10-50 MOPS/mW

Embedded
Processor
100-1000 MOPS/mW SA110
0.4 MIPS/mW
ASIC
DSP Alpha
0.007 MIPS/mW
Embedded Reconfigurable
FPGA 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 Signal Numérique


111
110
q
101
Numérisation 100
011
010
001
000

 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 :

q
1. Erreur de d’arrondi e
2
2. Erreur de saturation x<valeur min ou x>valeur max

Université de Savoie 20
De l’analogique au numérique
1. Erreur d’arrondi
Plage globale de

q
quantification

0 Temps
0 1 2 3 4 5 6 7 8 9
 Rapport signal sur bruit relatif à la quantification
 Px 
RSBdB  Px  Pe  10 log 
dB dB

 Pe 
 On peut montrer que le RSB se rapproche de l’expression
RSBdB  Px  6 N  10 log10 xmax
dB 2 3
 log10     21
2
De l’analogique au numérique
2. Erreur de saturation

Cette erreur se produit


lorsque l’amplitude de
l’échantillon à convertir
e dépasse xmax ou xmin
xmax
C’est une erreur non bornée,
on cherche donc à minimiser
la probabilité de saturation.
0
0 1 2 3 4 5 6 7 8 9 Le RSB se dégrade très
Temps rapidement au-delà d'un seuil
où cette probabilité est non
négligeable.

Université de Savoie 22
De l’analogique au numérique
Quantification uniforme et RSB

Quantification uniforme 16 bits sur [-1,1]


120

saturation
100

80
RSB (dB)

60

40

20
erreur d’arrondi

0
-60 -50 -40 -30 -20 -10 0 10
puissance du signal (dB)

Quantification uniforme 16 bits signés sur [-1,1] 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 -1 -1
0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1

Signal quantifié x q=Q(x) Signal quantifié x q=C-1(y q) Signal quantifié y q=Q(y)


1 1 1

0.5 0.5 0.5

0 0 0

-0.5 -0.5 -0.5

-1 -1 -1
0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1

quantif. uniforme quantif. logarithmique quantif. uniforme


domaine linéaire domaine linéaire domaine compressé24
De l’analogique au numérique
Quantification Uniforme vs Logarithmique

45
 Loi A
40 Loi A sur 8 bits  RSB à peu près constant
35
sur une plage de 30 dB
30
 La compression limite les
RSB (dB)

25

20 effets de la granulation
15

10

5  Quantification uniforme
0
-60 -50 -40 -30 -20 -10 0 10  L’effet de granulation est
linéaire par rapport à la
puissance du signal (dB)

puissance du signal
granulation saturation

Université de Savoie 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

Nombre Codage
N 1 Complément à 2 de x :
2 1 3 0 1 1
2 0 1 0 C2(x) = 2N – x
1 0 0 1
Dynamique

0 0 0 0
-1 1 1 1 Implantation efficace :
Inversion des bits puis ajout de 1
-2 1 1 0
-3 1 0 1 C2(x) = C1(x) + 1
N 1
2 -4 1 0 0

Signe

28
Le codage des nombres entiers
Propriétés du codage en complément à 2
0
-1 1
 Représentation “circulaire” 111 000 001
 En ajoutant 1 à la plus
grande valeur positive on -2 110 010 2
obtient la valeur négative
extrême 101 011
100
-3 3
-4

 Les DSP peuvent être


configurés pour opérer de
deux manières:
 C2 pur
 C2 avec arithmétique de
C2 pur C2 avec saturation
saturation
Université de Savoie 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 21 20 2-1 2-2 2-n

S bm-1 bm-2 b1 b0 b-1 b-2 b-n+2 b-n+1 b-n

Partie entière codée en C à 2 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 ,2 -1 2-2 2-3 2-4 2-5


-4 1 0 0 0 0 0 0 0
-3.96875 1 0 0 0 0 0 0 1

0 0 0 0 0 0 0 0 0

3.9375 0 1 1 1 1 1 1 0
3.96875 0 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 d0 cM-1 c2 c1 c0

Exposant Mantisse

Norme IEEE :
Exposant sur 8 bits
x  Mantisse .2 Exposant
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
Virgule flottante

 Niveau de dynamique

D ynam ique en dB
1000

 max(x ) 
DN (dB)  20. log 

500
Virgule fixe

 min( x ) 
0
10 15 20 25 30
Nombre de bits

Rapport Signal à Bruit virgule fixe/flottante


100

 Rapport Signal à Bruit de 80 Virgule flottante

Quantification

RS B en dB
60

40

 Ps  Virgule fixe

dB  10. log   20

 Pe  0
-50 0 50
Dynamique du signal d entré e en dB
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 Plage de valeur

char Entier signé 8 bits -128 à 127

unsigned int Entier non signé 32 bits 0 à 232-1

int Entier signé 32 bits -231 à 231-1

32 bits
float Réel signé • 24 bits de mantisse -3,4 x 1038 à 3,4 x 1038
• 8 bits d’exposant
64 bits
double Réel signé • 53 bits de mantisse -1,7 x 10308 à 1,7 x 10308
• 11 bits d’exposant

Université de Savoie 39
Chapitre 3 : Les unités spécifiques des DSP

 3.1 Architecture générale et objectifs


 3.2 Unité de commande
 3.2 Unité de traitement
 3.3 Unité de mémorisation
 3.4 Performance / Consommation

Université de Savoie 40
Architecture générale et objectifs
Processeur

CPU
Unité de Unités de
commande traitement

Bus internes

Mémoire Unité de Périphériques


interne Communication et mémoire externes

Université de Savoie 41
Chapitre 3 : Les unités spécifiques des DSP

 3.1 Architecture générale et objectifs


 3.2 Unité de commande
 3.2 Unité de traitement
 3.3 Unité de mémorisation
 3.4 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
t1 t2 t3 t4 t5 t6 t7 t8 F1
- MemP
Instruction Instruction 1 Instruction 2
Fetch F1 F2 D1
-

CPU
Decode D1 D2
Read R1 R2 R1
- MemD
Execute X1 X2

Exécution séquentielle X1
- MemD

t1 t2 t3 t4 t5 t6 t7 t8 F4
F5 MemP
Fetch F1 F2 F3 F4 F5 … … …
Decode D1 D2 D3 D4 D5 … … D3
D4

CPU
Read R1 R2 R3 R4 R5 …
Execute X1 X2 X3 X4 X5 R2
R3 MemD

Amorçage du pipeline
X1
X2 MemD
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 10: Instr10
4: Instr4 11: Instr11
5: Instr5 12: Instr12
6: Instr6 …

Etat du pipeline avec prédiction que B≠1 :


Si prédiction incorrecte (B=1) Si prédiction correcte (B≠1)
t1 t2 t3 t4 t5 t6 t7 t8 t1 t2 t3 t4 t5 t6 t7 t8

F F1 F2 F3 F4 F5 F10 F11 F12 F F1 F2 F3 F4 F5 F6 … …

D D1 D2 D3 D4 ! D10 D11 D D1 D2 D3 D4 D5 D6 …

R R1 R2 R3 ! ! R10 R R1 R2 R3 R4 R5 R6

X X1 X2 ! ! ! X X1 X2 X3 X4 X5

Evaluation du prédicat (B==1) Vidange du pipeline: Evaluation du prédicat (B==1)


=> rupture de séquence Perte de 3 cycles => 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
t1 t2 t3 t4 t5 t6 t7 t8

Fetch F1 F2 conflit conflit F3 F4 ! !


Decode D1 D2 ! ! D3 D4 !
Read R1 R2 ! ! R3 R4
Execute X1 X2 ! ! X3

 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 : Watch Window
1: A=1 A 1 La flèche indique la position du PC
2: B=1 B 1 Plusieurs cycles sont nécessaires
3: C=1 C 1 avant que la variable soit modifiée :
… NOP … Cela n’intervient qu’à l’étape X
Watch Window
10: A=2 (exécution)
A 1 ???
11: B=2
B 1
12: C=2
C 1
13: D=2
14: E=2 t1 t2 t3 t4 t5 t6 t7 t8
Watch Window
… F F10 F11 F12 F13 F14 … … …
A 2 !!!
D
B 1 D10 D11 D12 D13 D14 … …

C 1 R R10 R11 R12 R13 R14 …

X A=2 B=2 C=2 D=2 E=2


Watch Window
A 2
B 2
C 1
Programme 1 Programme 2

Visualisation des variables Visualisation des variables


Unité de commande
Utilisation des ressources par le pipeline

Etage
Description Partie hardware utilisée
pipeline
P Generate program address PC
F Get Opcode Program memory
D Decode instruction Decoder
A Generate read address ARs, ARAU
Read Operand Data memory
R
Generate write address ARs, ARAU
Execute instruction MAC, ALU
X
Write result 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 #16,B RPT #16
LOOP MAC (R0)+,(R4)+,A MAC (R0)+,(R4)+,A
DEC B
JNE LOOP

Boucle logicielle Boucle matérielle

Université de Savoie 52
Unité de commande
Exemple : Calcul d’un filtre RIF
N 1
y n    b(i ) x n  i 
Gestion matérielle des boucles : i 0
Unité de génération d’adresses programme

Unité MAC matérielle


+ Chargement simultané Y B[i] X[i]
de l’instruction et des
opérandes

A=0; SSBX FRCT


STM #B, AR2
for (i=0; i<N; ++i) { STM #X, AR3
STM #Y, AR4
A = A + B[i] * X[i];
} RPTZ A, #N-1 (x1)
Unité de génération MAC *AR2+,*AR3+, A (xN)
Y = A >> 15; d’adresses données STH A, *AR4 (x1)

Code C Equivalent ASM


Université de Savoie 53
Unité de commande
Optimisation du compilateur C
Code C 813D toto Pas d’optimisation
813D PSHM 11h Sauvegarde AR1 (save-on-entry)
#define N 256 813E FRAME -1
short in[N]; 813F SSBX SXM Manipulation de nombres signés
short out[N]; 8140 LD #100h,0,A A <= 256 (100h)
8142 ST #0h,0h Met la valeur initiale 0 de i dans pile[0h]
void toto() 8144 SUB 0h,A A <= A - pile[0h]
{ 8145 BC 8154h,ALEQ Si A<=0, alors aller à fin:
int i; debut :
8147 MVDK 0h,11h Copie pile[0h] dans AR1
for (i=0; i<N; i++) 8149 LD *AR1(817),A Charge in[AR1] dans A
{ 814B STL A,*AR1(1073) Stocke A dans out[AR1]
out[i]=in[i]; 814D LD #100h,0,A A <= 256 (100h)
} 814F ADDM 1h,0h pile[0h] <= pile[0h] + 1
} 8151 SUB 0h,A A <= A - pile[0h]
8152 BC 8147h,AGT Si A>0 alors reboucler sur debut:
fin:
Adresses des tableaux 8154 FRAME 1
8155 POPM 11h Restaure de AR1
_inputData = 331h = 817 8156 FRET Retour de la fonction
_outputData = 431h = 1073
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
Prise en compte des 8039 NOP
capacités matérielles du DSP 803A NOP
803B Université
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 Architecture générale et objectifs


 3.2 Unité de commande
 3.2 Unité de traitement
 3.3 Unité de mémorisation
 3.4 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 ACCH ACCL


bgarde 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 DB CBDBEB
CB

 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)

 2 registres d ’accumulation 40
bits

 1 registre à décalage en
barillet

 1 unité dédiée à l ’algorithme


de Viterbi

Université de Savoie 67
Chapitre 3 : Les unités spécifiques des DSP

 3.1 Architecture générale et objectifs


 3.2 Unité de commande
 3.2 Unité de traitement
 3.3 Unité de mémorisation
 3.4 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)

x x x x x
h(0) h(1) h(2) h(3) h(4)

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
 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

CPU BUS Périphérique


Adresses : sélection du périphérique
et localisation d’une donnée
adresses
Données : valeur de la donnée à échanger
données
CPU Périphérique Contrôle : lire / écrire / haute impédance
contrôle

Université de Savoie 70
Unité de mémorisation
Accès mémoire pour un calcul

2
CPU Mémoire
4

 (1) Charger une instruction depuis la mémoire


 (2) Charger les opérandes depuis la mémoire
 (3) Effectuer les calculs
 (4) Stocker le résultat en mémoire

Université de Savoie 71
Unité de mémorisation
Architecture Von Neuman

Mémoire
CPU BUS 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)

Ext’l A
Internal Data Read A/D Bus (D) External
Mem
Memory Data Read A/D Bus (C) I/F 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
SARAM DARAM
ROM ROM

P Bus
A
D Bus Ext’l
Mem
C Bus I/F D

E Bus

Université de Savoie 78
Unité de mémorisation
Cache d'instructions
DSP
cache Mémoire Programme
d’instructions + Données

CPU Mémoire Données

 Cache = mémoire associative rapide


 Contient les dernières instructions exécutées
 Utile en cas de boucle
 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  Limitation du nombre de broches


internes et externe par  Réduction des coûts
multiplexage temporel  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

McBSP2 DSP McBSP2


CAN DRR DXR
CNA

DMA4 DMA5

PING PING
IN OUT
31 1
Traitement
PONG PONG
IN OUT
2 2

Buffers en mémoire 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 83


"TMS320VC5416 DSK Reference Technical", Spectrum Digital
Unité de mémorisation
Adressage indirect : *ARx (1)
 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

MPY *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 Affected by:
No Modification *ARn no modification to ARn
Increment / *ARn+ post increment by 1
Decrement *ARn- post decrement by 1
Indexed *ARn+0 post increment by AR0 AR0
*ARn-0 post decrement by AR0
Circular *ARn+% post increment by 1 - circular BK
*ARn-% post decrement by 1 - circular
*ARn+0% post increment by AR0 - circular BK, AR0
*ARn-0% post decrement by AR0 - circular
Bit-Reversed *ARn+0B post inc. ARn by AR0 with reverse carry AR0
*ARn-0B post dec. ARn by AR0 with reverse carry (=FFT size/2)

Pre-modify *ARn (lk) *(ARn+LK), ARn unchanged


*+ARn (lk) *(ARn+LK), ARn changed
*+ARn (lk)% *(ARn+LK), ARn changed - circular BK
*+ARn pre-increment by 1, during write only
Absolute *(lk) 16-bit lk is used as an absolute address
See Absolute Addressing
Université de Savoie 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-1) x(n-1) x(n+3)
x(n) x(n) x(n) x(n)
x(n-3) x(n+1) x(n+1) x(n+1)
x(n-2) x(n-2) x(n+2) 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 Tip: use the .mmregs directive
to allow MMR names to be
0060h interpreted as addresses
Scratch
007Fh
Université de Savoie 89
Unité de mémorisation
Memory Mapped Registers
Addr. Addr.
Name (Hex) Description Name (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 Architecture générale et objectifs


 3.2 Unité de commande
 3.2 Unité de traitement
 3.3 Unité de mémorisation
 3.4 Performance / Consommation

Université de Savoie 91
Performance / Consommation
Consommation énergétique

 Filtrage numérique FIR:


 C549
 100MHz, 2.5V
 C6201
 200MHz, 1.8V
 DSP16210
 100MHz, 3.3V
 ZSP16401
 200MHz, 2.5V
 ADSP-21160
 100MHz, 2.5V
 C6701
 167MHz, 1.8V
92
Performance / Consommation
Mesures des performances

Mesure le nombre d’opérations


Million Floating–Point arithmétiques à virgule flottante que le
MFLOPS
Operation Per Second DSP à virgule flottante peut réaliser
en une seconde

Mesure le nombre total d’opérations


Million Operation
MOPS (calcul, accès DMA, transferts, etc.) que
Per Second le DSP peut réaliser en une seconde
Mesure le nombre de codes machine
Million Instructions
MIPS (instructions) que le DSP peut réaliser
Per Second en une seconde
Mesure le nombre d’opérations MAC
Million of MAC
MMACS (Multiply+Accumulate) que le DSP peut
per Second réaliser en une seconde

Mega-Bytes Mesure la bande passante d’un bus


MBPS
Per Second 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 Program/Data RAM Mémoire
16K Words 128K Words JTAG Test/
interne
D(15-0) Emulation
MUX Control
Bus externe Program/Data Buses
Timer
A(23-0)
MAC ALU DMA Muxed GP I/O
17 x 17 MPY 40-Bit ALU Ch 0
CMPS Operator 8/16-bit Host Port
40-Bit Adder Interface (HPI)

Peripheral Bus
(VITERBI) Ch 1
RND, SAT EXP Encoder Ch 2 Multichannel Buffered
Serial Port (McBSP)
Shifter Accumulators Ch 3
40-Bit ACC A Multichannel Buffered
CPU40-Bit ACC B
40-Bit Barrel
(-16, 31)
Ch 4 Serial Port (McBSP)

Ch 5 Multichannel Buffered
Addressing Unit Serial Port (McBSP)

8 Auxiliary Registers PLL Clock


Generator
2 Addressing Units
S/W Waitstate
Power Management Generator Entrées
Sorties

Université de Savoie 97
L’architecture
Diagramme bloc du TMS320C5416 (3)
Program/Data ROM Program/Data RAM Mémoire
16K Words 128K Words JTAG Test/
interne
D(15-0) Emulation
MUX Control
Bus externe Program/Data Buses
Timer
A(23-0)
MAC ALU DMA Muxed GP I/O
17 x 17 MPY 40-Bit ALU Ch 0
CMPS Operator 8/16-bit Host Port
40-Bit Adder Interface (HPI)

Peripheral Bus
(VITERBI) Ch 1
Unités de RND, SAT EXP Encoder Ch 2 Multichannel Buffered
calcul Shifter Accumulators
Serial Port (McBSP)
Ch 3
40-Bit ACC A Multichannel Buffered
40-Bit Barrel Ch 4 Serial Port (McBSP)
(-16, 31) 40-Bit ACC B
Ch 5 Multichannel Buffered
Addressing Unit Serial Port (McBSP)
Génération 8 Auxiliary Registers PLL Clock
d’adresses 2 Addressing Units
Generator
S/W Waitstate
Power Management Generator Entrées
Sorties
CPU

Université de Savoie 98
Structure interne du
TMS320C54x

Source : Texas Instruments


TMS320C54x DSP
Reference Set
Vol 1 : CPU and Peripherals
Génération Génération
d'adresses d'adresses
Unité de controle programme données

Bus P
programme

Bus C / D
lecture
données

Bus E
écriture
données

Université de Savoie 100


Registres

ALU

Shifter

Viterbi
MAC
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 program.cdb

module.h Module.h54
Generate

programcfg.h54 Programcfg_c.c programcfg.cmd


programcfg.s54 Programcfg.h
Compile or
Assemble
Assemble Compile

program.obj *.obj programcfg.obj programcfg_c.obj program.cmd

Link

program.out

112
1. Introduction
Emulateur JTAG

HOST TARGET
CCS

JTAG
Interface
JTAG DSP
Emulator 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
DSP ou IDE
 Emulateur
Contrôleur JTAG
 Communique avec le DSP à
grande vitesse
 Capable de simuler/enregistrer
en temps-réel l’état interne Définition de breakpoints
exact du DSP et modification des variables
 Boundary-scan (JTAG) Récupération des données
 Protocole intégré au sein du
processeur depuis la mémoire du DSP
 Interrompt le DSP pour
accéder à l’information
 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
 Déjà programmée
 Optimisée
 Utilisable depuis le langage C

 La library DSPLIB est composée de 3 parties


 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

Logiciel applicatif User Application Dsplib


Imglib

Abstraction du matériel DSP/BIOS™


et système d’exploitation Kernel/Scheduler CSL BSL Drivers

CPU Timer EMIF McBSP


USB/ LED
Matériel JTAG DSP CODEC Boutons

Carte DSK
Université de Savoie 124

Vous aimerez peut-être aussi