0% ont trouvé ce document utile (0 vote)
48 vues39 pages

Merged 20200614 235758

Ce chapitre traite des algorithmes de traitement du signal numérique. Il présente les classifications des signaux, les paramètres d'un signal, la conversion analogique-numérique incluant l'échantillonnage, la quantification et le codage, ainsi que différents codes binaires comme le code BCD.

Transféré par

boucheneb
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
48 vues39 pages

Merged 20200614 235758

Ce chapitre traite des algorithmes de traitement du signal numérique. Il présente les classifications des signaux, les paramètres d'un signal, la conversion analogique-numérique incluant l'échantillonnage, la quantification et le codage, ainsi que différents codes binaires comme le code BCD.

Transféré par

boucheneb
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Chapitre I : Algorithmes de traitement du signal

1.1. Algorithmes de traitement du signal : Dans tous les algorithmes du traitement du


signal, on trouve des traitements faisant appel à des fonctions mathématiques. Avant de
commencer avec les notions algorithmiques, nous devons fait rappel aux signaux et leurs
caractéristiques.

1.2. Classifications des signaux

Signaux Physiques

Déterministes Aléatoires

Permanents Transitoires Stationnaires Non-stationnaires

Périodiques Non-périodiques Ergodiques Non-ergodiques

Figure 1 : Classifications des signaux

1.3. Paramètres d’un signal

 Puissance moyenne d’un signal


t2
1
P (t 1 , t 2 )  
(t 2  t 1 ) t1
x (t ) 2 dt (1.1)

 Puissance moyenne total du signal :


T /2
1
Px  lim
t  T 
T /2
x (t ) 2 dt (1.2)

 La puissance d’un signal discret est :


1 N 1
P 
2
x (n ) (1.3)
N n 0

 L’énergie d’un signal discret est :



E   x (n )
2
(1.4)

1.4. LES SIGNAUX NUMERIQUES

Le monde extérieur étant par nature ‘’analogique’’, une opération préliminaire de conversion
analogique numérique est nécessaire.
La conversion analogique numérique est la succession de trois effets sur le signal analogique de départ :
- l’Échantillonnage pour rendre le signal discret.
- la Quantification pour associer à chaque échantillon une valeur.
- le Codage pour associer un code binaire à chaque valeur quantifié.

1.4.1. ÉCHANTILLONNAGE (discrétisation du temps)

Un signal discret de fréquence f s est une suite { x (nT e ) } de duré finie N , représentée par
la fonction suivante :

x (nT e )  x (t )  Te    (t  nT e ) (1.5)


Avec :
1
Te  (1.6)
fe
La fréquence d’échantillonnage f e doit être supérieure à la fréquence du signal f s , définie par la
condition de Shannon:
f e  2 f s (1.7)

L’échantillonnage consiste à prélever à des instants précis 𝑇𝑒 (période d’échantillonnage), le


plus souvent équidistants, les valeurs instantanées d’un signal. Cette opération est réalisée par un
échantillonneur souvent symbolisé par un interrupteur :

𝑆(𝑡) 𝑆𝑒 (𝑡)

𝑡 𝑛 𝑇𝑒
𝑇𝑒
1
𝐹𝑒 =
𝑇𝑒
(a) (b)

Figure 2.1 : Discrétisation du temporel. (a) Signal analogique (b) Signal échantillonné.

Cette conversion non instantanée est effectuée par échantillonneur-bloqueur qui mémorise la tension
à convertir et la maintient constante pendant toute la durée de conversion.
1.4.2. QUANTIFICATION (discrétisation de l’amplitude)

Dans l’espace des amplitudes, chaque valeur s(nT) est approchée par un multiple entier d'une quantité
élémentaire q ; La quantification consiste à associer à une valeur réelle x quelconque, une autre valeur
xq appartenant à un ensemble fini de valeurs et ce suivant une certaine loi :
– Arrondi supérieur : l'unité supérieure, au dixième supérieur, au centième supérieur,
au millième supérieur.
– Arrondi le plus proche.

L'arrondi à l'unité d'un nombre décimal est le nombre entier le plus proche de celui-ci.

Exemple :

– 6,67 ≈ 6,7 -› Le nombre a été arrondi au dixième supérieur.


– 6,67 ≈ 7 -› Le nombre a été arrondi l'unité supérieure.

L’écart entre chaque valeur xq est appelé pas de quantification (q). Le fait d’arrondie la valeur de
départ entraîne forcément une erreur de quantification que l’on appelle le bruit de quantification (bq).
La loi de quantification uniforme utilise un pas de quantification (q) constant entre chaque valeur xq.

xq

0111
0110
0101
0100
0011
q
0010
0001 x
0000
1001 Te
1010
1011
1100
1101

Figure 2.2 : Quantification du signal.

Le bruit de quantification bq est dans ce cas un signal aléatoire. Ces caractéristiques sont donc définies
par ses propriétés statistiques. On suppose que l'erreur de quantification est répartie régulièrement dans
l’intervalle ]-q/2, q/2[, sa densité de probabilité P(b) valant 1/q. La variance de l'erreur de
quantification est :
q /2
1 q2
q q/2
E (b 2 )  b 2
db  (1.8)
12
La puissance du bruit de quantification est égale à :

q2
Pb  (1.9)
12
Le rapport signal/bruit définie par :
P 
RSB  10  log  s  (1.10)
 Pb 
Pour un signal sinusoïdal

Ps  A 2 (1.11)

a. Quantification Uniforme
 Erreur de granulation : Liée à la précision q

 
Erreur de saturation : Liée à la dynamique x min , x max 
 Le RSB se dégrade très rapidement dès qu’il y a saturation
Dynamiques typiques :

x min  0 x max  q (2 N 1)


 X sur N bits non signés : et

 X sur N bits signés en C2 : x min   q (2 N 1) et x max  q (2 N 1)  1


b. Quantification Logarithmique
Deux lois logarithmiques sont actuellement utilisées :
 la loi A est utilisée en Europe
 la loi µ aux Etas Unis et au Japon

1.4.3. CODAGE

L'échantillonnage est utilisé pour prélever le signal à des instants multiples de « Te » et ensuite convertir
les échantillons sous forme d'un code binaire. La valeur approchée ainsi, obtenue est ensuite associée à
un nombre ; c’est le codage, ce terme étant souvent utilise pour designer l'ensemble, c'est-à-dire le passage
de la valeur s(nT) au nombre qui la représente.
Le codage consiste à associer à un ensemble de valeurs discrètes un code composé d’éléments binaires.
Les codes les plus connus :
 Code binaire naturel,
 Code binaire décalé,
 Code complément à 2,
 Code BCD,
 Code Gray.

Exemple BCD
Chiffre Code BCD
C’est le code le plus utilisé. Son principe est basé sur le fait d’associer un decimal
code binaire à chaque chiffre décimal. 0 0000
1 0001
125
2 0010
001 010 101 3 0011
4 0100
5 0101
125 = (001010101)bcd
6 0110
Les opérations arithmétiques sont assez compliquées en utilisant le code 7 0111
BCD. Cependant, une règle de base stipule que lors de l’addition de deux 8 1000
9 1001
nombres écrits suivant le code BCD, si le résultat ne comporte pas de / 1010
configurations non autorisées, alors il est correct sinon il ne l’est pas. Dans / 1011
ce dernier cas, il faut rajouter la valeur 6 (0110) au résultat et cela pour / 1100
/ 1101
chaque configuration non autorisée. / 1110
/ 1111
1.5. Algorithmes

Définition : Est une suite finie d’instructions détaillées qui, si elles sont correctement exécutées, conduit
à un résultat donné. Chaque opération citée ci-après nécessite un algorithme spécifique pour chaque
système électronique choisi (ASIC, DSP, FPGA, µP, µC,…).

 Génération des signaux

o Génération d’un signal sinusoïdale

x (t )  A  sin(2 f s t   ) (1.12)

 Convolution des signaux



s (t )  h (t )  g(t)   h ( )  g (t   )d 

(1.13)

N
y (n )   x (k )  h (n  k ) (1.14)
k 0

 Corrélation des signaux



C( )  s (t )  r (t )   s (t   )  r
*
(t )dt (1.15)


 Filtrage des signaux


o Finite Impulse Response Filter (FIR)
N
y (n )   a (k ) x (n  k ) (1.16)
k 0

o Infinite Impulse Response Filter (IIR)


N M
y (n )   a (k ) x (n  k )   b (k ) y (n  k ) (1.17)
k 0 k 0

 Transformations complexes
o Laplace

 pt
L( p )   f (t ) e
0
dt (1.18)

o Discrete Fourier Transform (DFT)


 j 2  nk 
N 1  

X (k )   x (n ) e
 N 
(1.19)
n 0

o Hilbert

1 f (x )
H (y ) 
  x  y dx

(1.20)

o Transformer en Z

F (z )   x (n ) z
n 
n
(1.21)

 Calcul matriciel
o Opération arithmétique sur les matrices
 Addition ou soustraction de deux matrices
C (i , j )  A (i , j )  B (i , j ) (1.22)
 Multiplication de 02 matrices
m
C (i , j )  A (i , k )  B (k , j )   A (i , n )  B (n , j ) (1.23)
n 1

 Identités et Inversement des matrices


An , m  I n  I m  An , m  An , m (1.24)

A  n ,m   A n1,m   I n (1.25)

 Calculs statistiques des signaux


o Moyennes, Médiane, Écart-type, Variance, Standard-déviation, Moments, …
 Calculs probabiliste des signaux
o Esperance, Variance, Auto-covariance, Estimation, Distribution, …
 Analyse Temps-fréquence des signaux
o Gabor, Wigner-ville, Ondelette,…
 Codage et compression des données
o Hufman, ASCII, Cryptographie,…
 Traitement d’image
o Négation, Luminosité, contraste, Opération mathématique sur les images,…
Chapitre 2 : Généralités sur les processeurs DSP

2.1. Définition

– DSP : Digital Signal Processing (traitements du signal numérique).

– Traitement du Signal :
Ensemble des connaissances scientifiques et technologiques permettant la réalisation d’une
chaîne d’acquisition et de traitement de l’information.

– Les processeurs DSP :


Sont des microprocesseurs spécifiquement conçu pour le traitement des signaux numériques. Il
se caractérise par le fait qu’il intègre un ensemble de fonctions spéciales. Ces fonctions sont
destinées à le rendre particulièrement performant dans leur domaine d’application.

2.2. Présentation des différentes familles de DSP

Le premier DSP a été produit en 1982 par Texas Instruments. Depuis, cinq autres générations
de DSP sont apparues. Ces composants ont connu une croissance très importante ces dernières années.
On les retrouve partout, du téléphone portable aux instruments de mesure scientifique le plus
perfectionné et les automobiles. Les principaux fabricants de DSP sont récapitulés dans le tableau ci-
après.
 C6000TM multicore DSP + Arm® SoC : Sont µp optimisées pour les systèmes embarqués,
économies d'énergie, performances en temps réel, et incluent les appareils OMAP-L1x et 66AK2x.
La prise en charge OpenCL et OpenMP pour une programmation multicœur homogène et
hétérogène.
Vendor Family Arithmetic type Clock speed
Analog devices ADSP-21xxx Fixed-point / Floating-point 80MHz - 750 MHz
Texas instruments TMS320Cxxx Fixed-point / Floating-point 40MHz - 300 MHz
Freescale MSC71xx Fixed-point 400 MHz
Agere DSP1641x Fixed-point 285MHz
DSP56300 Fixed-point 275MHz
Motorola
DSP56001A Floating-point 33 MHz
Micro chip dsPIC30Fxx Fixed-point 10 Hz
2.3. Domaines d’applications des µp DSP

a. Lecteur MP3 dictaphone

b. Appareil photo numérique

c. Récepteur GPS
2.4. Classification & performance des DSP

2.4.1. PERFORMANCES DES DSP


Tous les systèmes à bases de DSP bénéficient des avantages suivants :
 Souplesse de la programmation : Pour modifier par exemple tel ou tel paramètre d’un filtre
numérique ne nécessite pas un changement matériel.
 Implémentation d’algorithmes adaptatifs : Certaines fonctions de traitement du signal sont
difficiles à implanter en analogique, (un filtre à réponse en phase linéaire).
 Stabilité : en analogique, les composants sont toujours plus ou moins soumis à des variations de
leurs caractéristiques en fonction de la température, de la tension d’alimentation, du vieillissement.
Ces inconvénients n’existent pas en numérique.
 Répétabilité, reproductibilité : les valeurs des composants analogiques sont définies avec une marge
de précision plus ou moins grande. Dans ces conditions, aucun montage analogique n’est strictement
reproductible à l’identique, il existe toujours des différences qu’il convient de maintenir dans des
limites acceptables. Un programme réalisant un traitement numérique est par contre parfaitement
reproductible.

2.4.2. EVALUER LES PERFORMANCES D ’ UN DSP


La puissance de calcul dépend de la rapidité de l'exécution des instructions et l'horloge. La méthode
classique pour évaluer les performances d’un DSP basé sur sa vitesse d’exécution. Un obstacle apparaît
alors, car une instruction ne signifie pas forcément la même chose d’une famille de DSP à l’autre. Le
Tableau suivant résume les principales définitions en usage.

Acronyme Définition
MFLOPS Mesure le nombre d’opérations à virgule flottante (multiplications,
Million Floating point additions, soustractions, etc.) en une seconde.
Operations Per Second.
MOPS Mesure le nombre total d’opérations que le DSP peut effectuer en une
Million Operations Per seconde. Par opérations, il faut comprendre non seulement le
Second. traitement des données, mais également les accès DMA, les transferts
de données, les opérations d’E/S, etc. Cette définition mesure donc les
performances globales d’un DSP plutôt que ses seules capacités de
calcul.

MIPS Mesure le nombre de codes machines (instructions) que le DSP peut


Million Instructions Per effectuer en une seconde.
Second.

MBPS Mesure la largeur de bande d’un bus particulier ou d’un dispositif


Mega-Bytes Per Second. d’E/S.
MMACS Mesure le nombre d’opérations MAC (Multiply + Accumulate)
Million of MAC Per Second que le DSP peut réaliser en une seconde.
Chapitre 3 : Arithmétique à virgule fixe et à virgule flottante

3.1. REPRESENTATION DES NOMBRES


Pour représenter les nombres fractionnaires il est nécessaire de définir la position de la virgule : pour
ce faire, il existe deux méthodes.
– La représentation en virgule fixe.
– La représentation en virgule flottante.

3.2. REPRESENTATION EN VIRGULE FIXE


La représentation polynomiale d’un nombre réelle signé est donnée par la forme suivante :
𝑛−2

𝑉 = −𝑏 𝑛−1 𝑆 + ∑ 𝑎𝑖 𝑏 𝑖
𝑖=−𝑚

Cette méthode consiste à diviser par ‘b’ autant de fois que cela est nécessaire pour obtenir un
quotient nul. Ensuite on écrit les restes successifs dans l’ordre inverse de celui dans lequel ils
ont été obtenus. Pour la partie fractionnaire on multiplie par b la partie fractionnaire si le
résultat est un nombre plus grand ou égal à b-1 on garde la valeur sinon le résultat
intermédiaire est nul.
Partie entière : (𝑉)10 = 𝟏𝟎 ; (𝑉)2 = 1010
10 2
0 5 2
1 2 2
0 1 2
1 0

On retranche ensuite la valeur gardée à la partie fractionnaire restante et on recommence


autant de fois qu’il faut pour obtenir la précision demandée.
Partie fractionnaire : (𝑉)10 = 𝟎. 𝟒 ; (𝑉)2 = 0110 …
0.4*2 = 0.8  0
0.8*2 = 1.6  1
0.6*2 = 1.2  1
0.2*2 = 0.4  0
0.4*2 = 0.8  0
0.8*2 = 1.6  0
La figure suivante montre la structure d’un nombre réelle signé placé dans un registre de N bits.

S an-2 . . . a0 a-1 . . . a -m

n bits: Partie entier m bits : Partie fractionnaire


La position du point décimal dépend du nombre à représenter. Pour avoir une précision maximale, le
nombre de bits de la partie entier (signe compris) doit répondre à la relation suivante :
𝑛 = 𝑟𝑜𝑢𝑛𝑑 (𝑙𝑜𝑔2 (|𝑉|) + 0.5) + 1
Avec :
log2 : Le logarithme binaire (logarithme en base 2) en fonction du logarithme népérien (ln) :
ln(x )
log 2 (x ) 
ln(2)
La partie fractionnaire, pour un nombre représenté sur N bits prend la valeur triviale suivante :
𝑚 = (𝑁 − 𝑛)
La résolution ou quantification du codage représente la variation la plus petite entre deux nombres
successifs :
𝑞 = 2−𝑚
Définis selon le format {n.m} correspond aux valeurs extrêmes [xmin , xmax] qu’il est possible de
représenter :

𝐷 = [−2𝑛−1 , 2𝑛−1 − 2−𝑚 ]

Exemple :
Soit le nombre V = 10.4. Sur 16 bits, le format optimal est donné par :
n = round(log2(v) + 0.5) +1 = round ( 3.3785+0.5)+1 = 4+1 = 5
m = 16 − 5 = 11
(V)2 = 01010011001101001
La valeur décimale reconstituée vaut :
Vr =10.4004
La différence entre la valeur décimale à convertie et la valeur décimale reconstituée est
donnée par la relation :
Δq = | Vr – V | = 10.4004 –10.4 = 0.0004

Avec Matlab :
>> q = quantizer('fixed', 'Ceiling', 'Saturate', [16 5]);
>> num2bin(q, 10.4);
ans = 0101001100110100

>> bin2num(q,'0101001100110100')

ans = 10.4004
2.2. REPRESENTATION EN VIRGULE FLOTTANTE
Le standard IEEE 754 pour les nombres en virgules flottantes en simple précision est de 32 bits.
Le premier bit S (le plus à gauche) représente le signe, les 8 bits suivants (E0-E7) l’exposant et les
23 derniers (F9-F31) la représentation fractionnaire du nombre en format 0.23, appelé mantisse.

S E0 . . . E7 F9 . . . F31

Exposant Mantisse

La valeur V représentée par le mot codé en 32 bits peut être déterminé de la manière suivante :
 E = 255 , F≠0 𝑉 = 𝑁𝑎𝑁
 E = 255, F=0, S=1 𝑉 = −∞
 E = 255, F=0 ,S=0 𝑉 = +∞
 0 < E < 255 𝑉 = (−1)𝑆 2(𝐸−127) ⋅ (1. 𝐹)
 E = 0 , F≠0 𝑉 = (−1)𝑆 2(𝐸−126) ⋅ (0. 𝐹)

La résolution ou quantification du codage en virgule flottante dépend de la valeur de l’exposant E. Pour


un exposant de nE bits et une mantisse de nm bits, soit un codage en virgule flottante de N=nm+nE+2 bits
et pour un exposant 0 < 𝐸 < 2𝑛𝐸−1 :
q = 22nE −1 2−n𝑚
Le domaine de définition des nombres en virgule flottante avec un exposant de nE bits et une mantisse
de nm bits, pour un exposant 0 < 𝐸 < 2𝑛𝐸−1
𝐷 = [−22 (𝑛𝐸−1) . . . 22(𝑛𝐸−1) ]
Example 1:
S=10.4
q = 2/(2^N);
y = q * floor((s*(1-q)/q) + 0.5) ;
Sq = 10.3203
Rappel :
Les fonctions Matlab qui arrondi les nombres sont les suivants : fix ; ciel; round; floor
Exemple d’un Décodeur HCF4532
Chapitre 4 : Architecture des DSP

4.1. CHAINE DE TRAITEMENT NUMERIQUE


D’une manière générale l’architecture d’un système de traitement numérique du signal peut être
représentée par la figure suivante.

CAN DSP CNA

Figure 3.1 : Chaîne typique d’un système de traitement numérique du signal


Dans un système temps réel on dispose en général de deux types de mémoires : - La mémoire système
utilisée par le noyau. - La mémoire d’application.
L’accès mémoires se fait de manière habituelle par lecture ou écriture en utilisant en général de pointeurs.
Ces deux zones mémoires doivent être distinctes et indépendantes. La zone mémoire système doit être
protégée Ceci permet de garder l’intégrité du fonctionnement du noyau, garant de la sûreté du système
complet.
4.2. ARCHITECTURE DES PROCESSEURS DE SIGNAUX NUMERIQUES.
Dans l'architecture Von-Neumann, le programme et les données sont enregistrés sur la même
mémoire. Chaque instruction contient la commande de l'opération à effectuer et l'adresse de la donnée à
utiliser, il faut donc souvent plusieurs cycles d'horloge pour exécuter une instruction (cette architecture
elle est très souple pour la programmation).

Mémoire Bus d’adresse


Données et CPU
Instructions Bus données

Figure 3.2 : Architecture Von-Neumann


La Figure 3.2 indique une architecture simple de Harvard, on sépare systématiquement la mémoire de
programme de la mémoire des données : l'adressage de ces mémoires est indépendant.

Mémoire de
Mémoire de bus d’adresse bus d’adresse
données
programme CPU
bus données bus données

Figure 3.3 : Architecture Harvard

Les échanges s'effectuent de manière double entre l'unité centrale et les deux mémoires, ce qui permet
une grande souplesse pour l'enregistrement et l'utilisation des données. La mémoire de programme est
également utilisée en partie comme mémoire de données pour obtenir encore plus de possibilités de
traitement avec des algorithmes complexes.
4.3. TMS320C542, FIXED-POINT DIGITAL SIGNAL PROCESSORS

TMS320C542

4.3.1. LES RESSOURCES DU TMS320C542

SRAM DRAM ROM Prog space CVDD DVDD MAX SPEED


- 10k 2k 64k 5v 5v 25ns
JTAG TDM BSP DMA HPI Timers PLL GPIO
1 1 1 - 1 1 H/W -

BSP : Buffered Serial Port


PLL : On-Chip Phase-Locked Loop
TDM : Time-Division Multiplexed Serial Port
JTAG : On-Chip Scan-Based Emulation Logic, IEEE Std 1149.1 Boundary Scan Logic
HPI : 8-Bit Parallel Host-Port Interface.
GPIO : General-Purpose Input Output.
4.3.2. ARCHITECTURE INTERNE TMS320C542
 ACCUMULATEURS
Le C54X contenant deux accumulateurs de 40 bits (A et B) mappés en mémoire (MMR) qui peuvent
servir de source et de destination pour l’ALU et pour le MAC.

39 32 31 16 0 15
AG (Bits de garde) AH (Bits de poids fort) AL (Bits de poids faible)

 LES BUS DU C542


Le C542 peut traiter un total de 64K mots de programme mémoire en utilisant le bus de programme
(PAB), bus lecture données (CAB, DAB) et bus d’écriture données (EAB).
 LES GENERATEURS D ’ADRESSES
Générateur d’adresse programme : PAGEN comprend six registres.
PC : Compteur de Programme.
RC : Compteur de Répétition.
BRC : Compteur de Répétition de Bloc.
RSA : Registre d’Adresse de Démarrage de BRC.
REA : Registre d’Adresse de Fin de BRC.
IPTR : Pointeur de Vecteur d’Interruption.
Générateur d’adresse donnée : DAGEN utilisé pour modifier la MMR
SP : Pointeur de Pile.
DP : Pointeur de Donnée.
BK : Taille du Registre Circulaire.
AR0-AR7 : Les Registres Auxiliaires.
ARP : Pointeur de Registre Auxiliaire

ARP AR0 BK lK 1

AR0
ARAU0
AR1
AR2 +/- % 0 B

AR3 DAB
AR4
AR5 AR0 BK 1

AR6 ARAU1
AR7
BK +/- % 0 EAB ou CAB

DB EB
 ALU UNIT

Exemple : Multiplication entiers 16 bits


; Int16 X,Y,R;
; Int32 A;
MPY *AR2,*AR3, A ; A = (Int32)X * Y;
STL A,*AR4 ; R = (Int16)A;

 Barrel shifter unit


Le shifter produit un décalage vers la gauche de 0 à 31 bits et un décalage vers la droite de 0 à 16 bits sur
les données d'entrée.
Les exigences de décalage sont définies dans le champ de comptage de décalage (ASM) de ST1 ou
définies dans le registre temporaire (TREG), qui est désigné en tant que registre de comptage de décalage.
Ce shifter et le détecteur d'exposant normalisent les valeurs dans un accumulateur en un seul cycle. Les
bits les moins significatifs (LSB) de la sortie sont remplis de 0 et les bits les plus significatifs (MSB)
peuvent être remplis de zéro ou étendus de signe, en fonction de l'état du bit de mode étendu-étendu
(SXM) de ST1. Des capacités de décalage supplémentaires permettent au processeur d'effectuer des
opérations de mise à l'échelle numérique, d'extraction de bits, d'arithmétique étendue et de prévention de
débordement.
Exemple:

ASM = #-1

AR0 = #3 ; AR0 = 3
B = A - *AR3<<16 ; B = P-Q
A = A + *AR3<<16 ; A = P+Q
*AR2+ = HI(A)<<ASM ; P' = (P+Q)/2 => (1800h)
*AR3+ = HI(B)<<ASM ; Q' = (P-Q)/2 => (1802h)

NB :

En base binaire, un décalage à gauche correspond à une multiplication par 2 et le décalage à


droite représente une division par 2.

 MAC UNIT
Exemple:
MAC *AR2+, *AR3+, A ; A = A + X[i] * Y[i];

 Comparator unit

Exemple 1 :

TC = (AR0 = = AR6) ; if AR0= AR 6, TC is set to 1; else, TC=0


TC = (AR0 > AR6) ; if AR 0 is greater than AR6, TC=1; else, TC=0
TC = (AR0 < AR4) ; if AR 0 is less than AR4, TC=1; else, TC=0

 EXPONENT UNIT

Exemple :
; L’accumulateur A contient une valeur sur 40 bits.
EXP A ; Calcule l’exposant de A et le stocke dans T
NORM A ; Normalise A en fonction de T
STL A,*AR3 ; Stocke la mantisse dans AR3
ST T,*AR4 ; Stocke l’exposant dans AR4
4. ÉTUDE DE LA CARTE MEMOIRE
La carte mémoire effective permet d’estimer l’empreinte mémoire nécessaire pour implanter le
programme sur le DSP.

Mémoire programme Mémoire de donnée

0000h-007Fh Réservé 0000h-005Fh MMR


0080h-00FFh interruptions 0060h-007Fh Scratch pad RAM
0100h-017Fh Communication kernel 0080h-27FFh DRAM
0180h-07FFh Program RAM 2800h-7FFFh Catch RAM
0800h-0FFFh BSP RAM block 0800h-FFFFh EPROM
1000h-1009h Kernel buffer
100Ah-17FFh HPI RAM block
1800h-27FFh Program RAM
2800h-EFFFh Externe
F000h-FFFFh Réservé
4.1. Registre de Mémoire Mappée (MMR registre)

Name Address Description


IMR 0000h Interrupt mask register
IFR 0001h Interrupt flag register
--- 0002h-0005h Reserved for testing
ST0 0006h Status register 0
ST1 0007h Status register 1
AL 0008h Accumulator A low word (15-0)
AH 0009h Accumulator A high word (31-16)
AG 000Ah Accumulator A guard bits (39-32)
BL 000Bh Accumulator B low word (15-0)
BH 000Ch Accumulator B high word (31-16)
BG 000Dh Accumulator B guard bits (39-32)
TREG 000Eh Temporary register
TRN 000Fh Transition register
AR0-AR7 0010h Auxiliary register 0-7
SP 0018h Stack pointer register
BK 0019h Circular buffer size register
BRC 001Ah Block-repeat counter register
RSA 001Bh Block-repeat start address register
REA 001Ch Block-repeat end address register
PMST 001Dh Processor mode status register
XPC 001Eh Extended program page register
--- 001Fh Reserved

4.1.1. REGISTRE DE MASQUE DES INTERRUPTIONS IMR:

15-10 9 8 7 6 5 4 3 2 1 0
Réservée HPINT INT3 TXINT TRINT BXINT0 BRINT0 TINT INT2 INT1 INT0
0 1 0 0 1 0 0 0 0 0 0

INT0 – INT2 : interruptions d’utilisateur externe.


TINT : interruptions de temporisateur interne.
BRINT0 : port série buffer(BSP) reçoit interruptions.
BXINT0 : port série buffer(BSP) transmet interruptions.
TRINT0 : port série TDM reçoit interruptions.
TXINT0 : port série TDM transmet interruptions.
INT : interruption d’utilisateur externe.
HPINT : interruption HPI.

Note : IMR n’a aucun effet sur ces interruptions. C.-à-d. (lire ou écrire sur l’IMR)

4.1.2. REGISTRE DE DRAPEAUX DES INTERRUPTIONS IFR:

15-10 9 8 7 6 5 4 3 2 1 0
réservée HPINT INT3 TXINT TRINT BXINT0 BRINT0 TINT INT2 INT1 INT0
0 1 0 0 1 0 0 0 0 0 0

C’est un registre qui identifier et autorise les interruptions actives.


4.1.3. REGISTRE DE STATUT ST0 :

15-13 12 11 10 9 8-0
ARP TC C OVA OVB DP (data page pointer A15-A8)
000 1 1 0 0 00000000

ARP : pointeur de registre auxiliaire


TC : drapeau test/contrôle.
C : retenue.
OVA : débordement pour l’accumulateur A
OVB : débordement pour l’accumulateur B
DP : pointeur de page de donnés mémoire.

4.1.4. REGISTRE DE STATUT ST1 :

15 14 13 12 11 10 9 8 7 6 5 4-0
BRAF CPL XF HM INTM 0 OVM SXM C16 FRCT CMPT ASM
0 0 1 0 1 0 0 1 0 0 0 00000

BRAF : drapeau actif de répétition de Bloc.


CPL : mode de compilateur.
XF : indique l’état du drapeau externe
HM : mode Hold.
INTM : mode d’interruption.
OVM : mode débordement.
SXM : signe d’extension.
C16 : double mode arithmétique de 16bit.
FRCT : mode fractionnel.
CMPT : mode compatibilité
ASM : mode de décalage d’accumulateur

4.1.5. REGISTRE DE STATUT PMST :


15-7 6 5 4 3 2 1 0
IPTR ̅̅̅̅̅
MP/𝐌𝐂 OVLY AVIS DROM CLKOFF - -
1FFh 0 0 0 0 0 NA NA

IPTR : pointeur de vecteur d’interruption.


̅̅̅̅ : mode microprocesseur /micro-ordinateur.
MP/MC
OVLY : superposition de RAM.
AVIS : mode de l’adresse visibilité.
DROM : ROM de données.
CLKOFF: clock out off.
4.1.6. CIRCUIT INTERFACE ANALOGIQUE (TLC320AC01)
TLC320AC01, est utilisé pour effectuer les conversions A/N et N/A.

4.2. Les principales caractéristiques de TLC320AC01


Il existe neuf registres de données utilisés comme suit :
Registre 0 : Le registre No-op. L'adresse 0 permet d'effectuer des ajustements de phase sans
reprogrammer un registre de données. Aucune opération d'E/S de registre n'a lieu, de sorte que l'appareil
peut recevoir des commandes secondaires pour le réglage de phase sans reprogrammer aucun registre.
Une lecture du no-op est 0. Le format du mot de commande est le suivant :

DS DS DS DS DS DS DS DS DS DS DS DS DS DS
DS15-14
13 12 11 10 09 08 07 06 05 04 03 02 01 00
Control bits x 0 0 0 0 0 x x x x x x x x

Registre 1 : Le registre A contrôle le comptage du compteur A.


La commande suivante charge DS07 (MSB) - DS00 dans le registre A. Les données dans DS07 - DS00
déterminent la division de l'horloge maître pour produire le FCLK interne.
MCLK
FCLK 
2  REG A
La valeur par défaut des données du registre A est 18 (décimale) comme indiqué ci-dessous en rouge.

DS15-14 DS13 DS12 DS11 DS10 DS09 DS08 DS07 - 00

Control bits R/ W 0 0 0 0 1 00010010

Registre 2 : Le registre B contrôle le comptage du compteur B.


La commande suivante charge DS07 (MSB) - DS00 dans le registre B. Les données dans DS07 - DS00
contrôlent la division de FCLK pour générer l'horloge de conversion Fréquence de conversion FCLK
(contenu du registre B) :
MCLK
FCLK 
2  REG A  REG B
DS15-14 DS13 DS12 DS11 DS10 DS09 DS08 DS07 - 00

Control bits R/ W 0 0 0 1 0 00010010

Registre 3 : Le registre A 'contrôle le réglage de phase de la période d'échantillonnage. L'ajustement est


égal à la valeur de registre multipliée par la période maître d'entrée.
La commande suivante contient l'adresse du registre A et charge DS07 (MSB) - DS00 dans le registre A
' au format complément à 2 et contrôlent le nombre de périodes d'horloge maître pendant lesquelles le
temps d'échantillonnage est décalé. La valeur par défaut des données du registre A' est 0, comme
indiqué ci-dessous.

DS15-14 DS13 DS12 DS11 DS10 DS09 DS08 DS07 - 00

Control bits R/ W 0 0 0 1 1 00000000

Registre 4 : Le registre de gain de l'amplificateur contrôle les gains des amplificateurs d'entrée, de
sortie et de contrôle.
La valeur de données par défaut est indiquée ci-dessous.

DS DS DS DS DS DS DS DS DS DS DS DS DS DS
DS15-14
13 12 11 10 09 08 07 06 05 04 03 02 01 00

Control bits R/ W 0 0 1 0 0 0 0 0 0 0 1 0 1
La commande suivante contient l'adresse du registre de sélection du gain de l'amplificateur avec le code
de sélection pour les gains programmables de la sortie moniteur (DS05 – DS04), de l'entrée analogique
(DS03 – DS02) et de la sortie analogique (DS01 – DS00).
La valeur par défaut du gain de sortie du moniteur est le silencieux, ce qui correspond aux bits de
données DS05 et DS04 égaux à 00 (binaire).
La valeur par défaut du gain d'entrée analogique est 0 dB, ce qui correspond aux bits de données DS03
et DS02 égaux à 01 (binaire).
La valeur par défaut du gain de sortie analogique est 0 dB, ce qui correspond aux bits de données DS01
et DS00 égaux à 01 (binaire).
La valeur de données par défaut est indiquée ci-dessous.
DS DS DS DS DS DS DS DS
07 06 05 04 03 02 01 00
Gain de sortie du moniteur = silencieux 0 0
Gain de sortie du moniteur = 0 dB 0 1
Gain de sortie du moniteur = –8 dB 1 0
Gain de sortie du moniteur = –18 dB 1 1

Gain d'entrée analogique = silencieux 0 0


Gain d'entrée analogique = 0 dB 0 1
Gain d'entrée analogique = 6 dB 1 0
Gain d'entrée analogique = 12 dB 1 1
Gain de sortie analogique = silencieux 0 0
Gain de sortie analogique = 0 dB 0 1
Gain de sortie analogique = –6 dB 1 0
Gain de sortie analogique = –12 dB 1 1

Registre 5 : Le registre de configuration analogique contrôle :


• L'ajout / suppression du filtre passe-haut au chemin du signal ADC
• L'activation / désactivation du bouclage analogique
• La sélection des entrées régulières ou des entrées auxiliaires
• La fonction qui permet le traitement des signaux qui sont la somme des entrées régulières et
des entrées auxiliaires (VIN + VAUX IN) Registre 6 Le registre de configuration numérique contrôle :
• Sélection de la fonction free-run
• Activation / désactivation de la sortie FSD [délai de synchronisation de trame
(synchronisation)]
• Sélection de la fonction 16 bits
• Forcer les communications secondaires
• Réinitialisation du logiciel
• Mise hors tension du logiciel
DS DS DS DS
03 02 01 00
Doit être réglé sur 0 0
Filtre passe-haut désactivé 1
Filtre passe-haut activé 0
Bouclage analogique activé 0 0
Active IN + et IN– (désactivé AUX IN + et AUXIN–) 0 1
Active AUXIN + et AUXIN– (désactive IN + et IN–) 1 0
Enable analog input summing 1 1

Registre 7 : Le registre de délai de synchronisation de trame contrôle le délai entre la synchronisation


de trame du périphérique maître et la synchronisation de trame du périphérique esclave. Le registre 7
doit être le dernier registre programmé lors de l'utilisation de dispositifs esclaves car toutes les données
de registre sont verrouillées et valides sur le seizième front descendant de SCLK. Sur le seizième front
descendant de SCLK, tous les intervalles de synchronisation de trame retardés sont décalés de cette
quantité programmée.
Registre 8 : Le registre des numéros de synchronisation de trame informe le dispositif maître du
nombre d'esclaves connectés dans la chaîne. Le nombre de synchronisation de trame est égal au nombre
d'esclaves plus un.
4.3. Interface avec TMS320C542 & configuration des registres A et B

A register B register
ADC rate
(Hz)
HEX DEC HEX DEC

10 0214 20 6944
MHz 0212 18 7716
0124 36
020F 15 9260
020A 10 13889
0214 20 13889
0212 18 15432
0112 18
020F 15 18520
020A 10 27778
0214 20 20833
0212 18 23148
010C 12
020F 15 27778
020A 10 41666

Exemple : calcul fréquence d’échantillonnage


A=0124h = 36, B=020Fh =15
F(MCLK)
fs 
2  A register value  B register value

10000000
fs  = 9260 Hz
2  36  15
4.1. MODE D’ADRESSAGE
Le C542 offre plusieurs modes d’adressage de base.

4.1.1. ADRESSAGE DIRECT


L’instruction contient un décalage (offset) par rapport à une adresse de référence.
 MODE PAGINE (CPL=0)
Le registre DP contient un numéro de page sur 9 bits. L’offset est relatif au début de la page, Chaque
page contient 128 mots.
DP=2, CPL=0
LD 27h, A ; Charge A avec le contenu de l’adresse 127h=(80h*DP)+27h
Attention, ne pas confondre avec
LD #27h, A ; Charge A avec la valeur #27h
 MODE COMPILATEUR (CPL=1)
Le registre SP contient le pointeur de pile, L’offset est relatif au début de pile.
SP=FF02h, CPL=1
LD 27h, A ; Charge A avec le contenu de l’adresse FF29h=SP+27h
Attention, ne pas confondre avec
LD #27h, A ; Charge A avec la valeur #27h

4.1.2. ADRESSAGE INDIRECT


L’instruction contient un numéro de registre auxiliaire *ARx.

 AVEC MODIFICATION : *AR X+, *AR X+0


La modification du registre est réalisée parles générateurs d’adresses ou par des unités
arithmétiques associées aux registres.
- Post-incrémentation : *ARx+ , *AR-
- Pré-incrémentation : *+ARx
- Incrémentation par AR0 : *ARx+0
Exemple1 :
MPY *AR4+, *AR3+, A ; Multiplication de la donnée pointée par AR4
; Par celle pointée par AR3 et stockage du résultat en A
; (AR4 et AR3 sont incrémentés après l’exécution).
; A ← dm(AR4) × dm(AR3); AR4 ← AR4+1; AR3 ← AR3+1
LD *AR4+0, A ; Chargement de la donnée pointée par AR4 dans l’accu A
; AR4 est incrémenté de la valeur de AR0 après exécution.
; A ← dm(AR4) + dm(AR3); AR4 ← AR4+AR0
Exemple 2 : Répétition d’une Instruction (N) fois
RPTZ A, #54 ; Mise à 0 de A et RC ← 54
MAC *AR2+, *AR3+, A ; La valeur pointée par AR2 est additionnée à la valeur pointée par
; AR3, 55 fois.
Exemple3 : Répétition d’un Bloc d’Instructions (N + 1) fois
STM #54, BRC ; Répétition 55 fois
RPTB endblk-1 ; RSA est chargé avec (PC+2) et REA est chargé avec (endblk-1)
MPY *AR2+0%, A
LMS *AR3, *AR2
ST A, *AR3+
endblk :
STH A, *AR3

Exemple 4 : Déplacement de Mémoire à Mémoire (donnée vers donnée)


Debut:
STM #3000h, AR2 ; AR2 pointe sur la zone de départ
STM #1000h, AR3 ; AR3 pointe sur la zone de arrivée
RPT #1023 ; Répétition 1024 fois
MVDD *AR2+, *AR3+ ; Transfert de la mémoire pointée par AR2
; vers la mémoire pointée par AR3
Exemple 5 : Déplacement de Mémoire à Mémoire (donnée vers programme)
Debut:
STM #3000h, AR1 ; AR1 pointe sur la zone de départ
RPT #1023 ; Répétition 1024 fois
MVDD *AR1+, 1000h ; Transfert de la mémoire pointée par AR1
; vers l’adresse mémoire programme 1000h
; l’adresse est auto-incrémentée dans le mode RPT

 BUFFER C IRCULAIRE (*AR X+% )


Le registre BK Stocke la taille N du buffer circulaire. Il peut y avoir plusieurs tampons circulaires
simultanés, à condition qu’ils aient la même taille
Exemple1:
LD #300h, AR2 ; Le registre AR2 est chargé avec l’adresse de départ
STM #3, BK ; Le registre BK (L) est chargé pour l’adressage modulo
STM #1, AR0 ; Le registre AR0 (M) est chargé avec le pas de modification
ST #0, A ; Initialise l’accumulateur : A ← 0
ADD *AR2+0%, A ; Additionne la donnée pointée par AR2 à A,
; post-incrémente AR2 modulo BK : AR2 (AR2 + AR0) % BK
; i.e. AR2 301h
ADD *AR2+0%, A ; idem, puis AR2 ← 302h
ADD *AR2+0%, A ; idem, puis AR2 ← 300h
Exemple2 :
; AR3=@Y[idx] déjà assigné

LD #X , AR2
STM #N , BK
RPTZ A , #99
MAC *AR2+, *AR3+% , A

 BIT-REVERSE
Ce type d’adressage est utilisé dans le calcul de la FFT, il faut que la première adresse du tableau soit un
multiple de N.

Exemple :
LD #4, AR0 ; Adressage pour une FFT sur 8 bits (N/2)
LD *AR2+0B, A ; L’accumulateur A est chargé avec la donnée pointée par
; AR2, lequel est post-incrémenté en mode bit-reverse
 ADRESSAGE PAR L’ACCUMULATEUR
Exemple :
READA *AR2 ; Transfert entre la mémoire programme pointé par A(15-0)
; vers la mémoire de données pointée par AR2
; dm(AR2) ← pm(A)
WRITA *AR3 ; Transfert de la mémoire de données pointée par AR3
; vers la mémoire pointée par A(15-0)
; pm(A) ← dm(AR3)

4.1.3. ADRESSAGE IMMEDIAT


L’instruction contient la valeur de l’opérande. (# Prefix of constants used in immediate addressing)

Exemple :
LD #87, A ; L’accumulateur A est chargé avec l’entier court k=87=75h
; Instruction codée sur un mot de 16 bits
LD #1F4A, AR1 ; Le registre AR1 est chargé avec l’entier long lk=1F4Ah
; Instruction codé sur deux mots de 16 bits

4.1.4. ADRESSAGE ABSOLU


L’instruction contient l’adresse où chercher la valeur. Certaines instructions de transferts entre
mémoires exigent l’adressage absolu.
Exemple :
MVKD 105h, *AR5 ; Transfert de la mémoire donnée à l’adresse dmad=105h
; vers la mémoire donnée pointée par AR5
; dm(AR5) ← dm(105h)
MVDP *AR5, 243h ; Transfert de la mémoire données pointée par AR5
; vers la mémoire programme à l’adresse pmad=243h
; pm(243h) ← dm(AR5)
PORTR 10h, *AR5 ; Transfert depuis le port d’entrée/sorties à l’adresse PA=10h
; vers la mémoire donnée pointée par AR5
; dm(AR5) ← portio(10h)

En remplacement de l’adressage indirect à un seul opérande :


LD *(105h), A ; Chargé depuis la mémoire donnée à l’adresse lk=105h vers
l’accumulateur
; A ← dm(105h)

4.1.5. ADRESSAGE PAR MMR


La plupart des registres sont mappés en mémoire, à la page 0. L’accès à ces MMR se fait grâce aux
instructions suivantes :
Exemples:
STM #0, BK ; mettre 0 dans le registre BK
STM #100h, AR2 ; mettre l'adresse 100h dans le registre AR2

Permet aussi d’accéder à une zone « scratch » pour y stocker des données temporaires.
LDM, STLM
STM
PSHM, POPM
MVDM, MVMD
MVMM
Sauvegarde du contexte lors de l'appel d'un sous-programme, afin que les registres modifiés par le
sous-programme puissent être restitués avant le retour au programme principal.
Subprog:
PSHM PMST ; Sauvegarde de PMST dans la pile
PSHM ST0 ; Sauvegarde de ST0 dans la pile
PSHM ST1 ; Sauvegarde de ST1 dans la pile

4.2. MODE DE POWER-DOWN


Le C542 dispose plusieurs modes de mise hors tension dans lequel il entre dans un état de dormance
tout en conservant le contenu du processeur.
Idle1 : Arrête toutes les activités CPU, sauf l’horloge système. Pour mettre fin à idle, utiliser une
interruption réveil (INTM).
Idle2 : Arrête les périphériques sur puce ainsi que la CPU. Pour mettre fin à idle2, activez l’une des
proches externes interruption (RS, NMI, INTx).
Idle3 : Utilisé pour un arrêt complet de la C452.

4.3. PIPELINING
Instructions segmentées en étages. Exécution entrelacée de plusieurs instructions (Chacune à un étage
différent) géré par le séquenceur.

Les 6 étages de traitement :


Prefetch (P) : Incrémentation du PC (Program Counter).
Fetch (F) : Lecture de l’instruction en mémoire.
Decode (D) : Décodage de l’instruction.
Access (A) : Calcul des adresses des opérandes.
Read (R) : Lecture des opérandes en mémoire et calcul de l’adresse du résultat.
Execute (X) : Exécution et écriture en mémoire.

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
4.4. SYSTEME TEMPS-REEL DSP/BIOS
Noyau temps-réel
– Ordonnanceur temps-réel
– Gestion multi-threads préemptive
• Outils d'analyse temps-réel
– Débogage sans interruption de l'exécution
– Profiling, vision des threads
• Intégration avec
– Real-time data exchange (RTDX)
• Communication hôte ↔ DSP pendant l'exécution
– Chip Support Library (CSL)

Propriétés des systèmes temps-réel


• Piloté par évènements
– Synchrones (chronomètre)
– Asynchrones (interruptions des E/S)
• Contraint dans le temps
– Contraintes dures (deadlines critiques)
– Contraintes souples (deadlines non critiques)
• Concurrence de l'exécution
– Plusieurs traitements en parallèle
– Nécessite un ordonnancement
• multi-tâches (plusieurs traitements à la fois)
• préemptif (toute tâche peut être interrompue par une tâche plus prioritaire)
• Déterministe et fiable
– Comportement du système prédictible
Chapitre 5 : Environnement de développement

5. Code Composer Studio (CCS)


1. IDE
2. Construction d’un projet et exécution
3. Visualisation des données en mémoire
4. Étude de performances
5. Étude de la carte mémoire

5.1. Interface intégrée de développement

Affichage Mixte C/Assembleur


Activer et désactiver dans le menu
« View / Mixed Source/ASM ».

Attention : il n’est pas possible de modifier le code


C lorsque ce mode est activé.

5.2. Construction / Exécution


Séquence « Construction, Chargement, Exécution »
(Build / Load / Execute) Attention à ne pas oublier une étape !
Construire le projet :
 Bouton « Incremental Build » (En bleu au milieu)
Remarque :
Construire le projet signifie compiler chaque fichier *.c en fichier *.obj, puis effectuer l’édition
des liens (linking) pour obtenir un exécutable *.out
La construction incrémentale (Incremental Build) ou la construction complète (Rebuild All)
effectuent toutes ces opérations. La différence est que la version incrémentale recompile
intelligemment seulement les fichiers qui ont changé, et est donc plus rapide.
La compilation simple (Compile File), ne fait que compiler le fichier individuel, et ne produit
donc pas d’exécutable.
Charger le projet sur la carte DSP :
 Item “File / Load Program…”
 Si on a déjà chargé l’exécutable une fois, on peut utiliser “File / Reload Program”.
Exécuter le projet
 Bouton « Run » ou « Animate »

Exécution pas à pas et breakpoints


L’ensemble des fonctions suivantes permet de contrôler finement l’exécution du programme.
L’exécution pas à pas et la « Watch Window » combinés sont des outils puissants de
débugage, car ils permettent de visualiser et modifier le contenu des variables à tout moment
du déroulement d’un programme.
Le PC courant est représenté par une flèche jaune dans la marge gauche. Il indique quelle
est la prochaine ligne de code qui sera exécutée.
« StepInto » : exécute la prochaine ligne de code, en rentrant dans les fonctions.
« Step Over » : exécute la prochaine ligne de code.
« Step Out » : exécute jusqu’à la fin de la fonction courante.
« Run To Cursor » : exécute jusqu’au curseur (comme si l’on avait placé unbreakpoint sur la ligne du
curseur).
« Run » : exécute à partir du PC courant, en s’arrêtant uniquement sur les breakpoints.
« Stop » : interrompt l’exécution à tout moment, et affiche la ligne de code du PC courant. Le
programme peut être à nouveau relancé à partir de cet endroit.
« Animate » : exécute à partir du PC courant, mais ne s’arrête que brièvement sur les break points, avant
de continuer l’exécution.
Positionner ou enlever un break point : double cliquer dans la marge gauche en gris.
Un breakpoint est positionné lorsqu’un cercle rouge est présent.
5.3. Visualisation des données en mémoire
Watch window (Espion) :
Afficher la “Watch Window”
 Menu « View / Watch Window » ou bouton “Watch Window”
Insérer une variable dans “Watch 1”
 Cliquer dans le champ vide de la colonne « Name »
 Cliquer une nouvelle fois, et taper le nom de la variable à « espionner »
Ou bien
 Sélectionner un nom de variable dans le code,clic droit « Add to Watch Window »
Modifier la valeur d’une variable
 Double-cliquer sur la valeur de la variable
 La valeur peut alors être modifiée
Graphiques : Affichage d’un graphe
 Menu « View / Graph / Time/Frequency… »
 Définir “Start Adress”
 Définir « Acquisition Buffer Size » et « Display Data Size »
Mettre la même valeur pour les deux, jusqu’à 2048 échantillons maximum
 Définir « DSP Data Type » (en général « 16 bits signed integer » pour des int)
 Positionner la fenêtre sur le côté
(clic droit sur le graphe, décocher « Float in Main Window »)
Afficher la FFT du signal au lieu de son allure temporelle
 Clic droit sur le graphe, puis « Properties… »
 Modifier « Display Type » vers « FFT magnitude »

5.4. Étude de performances et profiling

Plusieurs techniques permettent de mesurer les performances des algorithmes sous CCS.
L'horloge et RTDX permettent de déterminer le temps de calcul (en cycles) ou la charge du CPU. Ces
deux systèmes (L'horloge et RTDX) sont incompatibles, il faudra donc bien veiller à désactiver l'un
avant d'activer l'autre.
Horloge (clock)
L'horloge (clock) permet de mesurer précisément le nombre de cycles utilisés pour effectuer un
traitement donné. L'opération consistant à mesurer le nombre de cycles pour une fonction ou une partie
du code (range) est appelée profiling.
Remarque :
L'activation de l'horloge ralenti le DSP, des ressources étant utilisées pour mesurer les cycles
nécessaires au traitement. Il s'agit d'un outil à utiliser uniquement pour mesurer le nombre de
cycles, en complément d’autres approches de validation.
Activation de l'horloge
 Bien s'assurer que RTDX est désactivé :
o Menu « RTDX/ Configuration Control »
o Dans la fenêtre qui s'ouvre, décocher la case « Enable RTDX »
 Activer l'horloge : activer l'item du menu « Profiler / Enable Clock »
 Afficher l'horloge : menu « Profiler / View Clock »

Utilisation de l'horloge
Une fois activée, l'horloge incrémente son compteur à chaque fois qu'un cycle est accompli.
Pour mesurer le nombre de cycles d'un bloc de code, on peut utiliser la technique suivante :
 Positionner deux points d'arrêts (break point) : le premier sur la première ligne du bloc de code,
le second sur la première ligne après le bloc de code.
 Faire tourner le programme jusqu'à ce qu'il s'arrête sur le premier point d'arrêt
 Remettre l'horloge à zéro en double cliquant dans sa fenêtre sur le texte "Clock=...".
 Faire continuer le programme (Run)
 Le programme s'arrête juste après le bloc de code, le compteur de l'horloge indique le nombre
de cycles écoulés.
 Note : Des variations de l'ordre de quelques cycles peuvent être observées lors de ces mesures,
qui correspondent à la variabilité du temps de traitement des points d'arrêt.
Désactivation de l'horloge
 Décocher l'item du menu « Profiler / EnableClock ».

« CPU Load » sous RTDX (Real-Time Data Exchange)


RTDX est un protocole spécifique à Texas Instrument permettant l'échange d'informations entre le DSP
et l'ordinateur de façon non invasive, c'est à dire sans interrompre le traitement principal de façon
visible, comme avec l'horloge. En contrepartie, les informations récupérées ne sont pas aussi précises.

Remarque :
« CPU Load » est implémenté au sein du thread idle, et n’est donc appelé que lorsque le système
d’exploitation DSP/BIOS n’a rien de plus prioritaire à faire. Il n’yaura donc aucun affichage dans les
cas où :
 le CPU est occupé à quasiment 100%, ce qui ne laisse pas assez de cycles libres pour la gestion
du CPU Load (calcul de la charge et envoi vers le PC),
 le système fonctionne sur le principe d’une boucle infinie, où la fonction principale ne rend
jamais la main au DSP/BIOS.
Activation de RTDX
 Bien s'assurer que l'horloge est désactivée
o Décocher l'item du menu « Profiler / Enable Clock »
 Réinitaliser le CPU :
Menu « GEL / C542_Configuration / CPU_Reset »
 Ouvrir la fenêtre de contrôle de RTDX
o Menu « RTDX/ Configuration Control »
 Si vous activez RTDX pour la première fois
o Décocher « Enable RTDX », cliqué sur « Configuration… »
o Sélectionner « Continuous Mode » si ce n’est pas déjà le cas
 Cocher la case « Enable RTDX »
 Afficher la charge CPU : Menu « DSP/BIOS / CPU Load Graph »
Désactivation de RTDX
 Décocher la case « Enable RTDX » dans la fenêtre de configuration de RTDX
 Réinitaliser le CPU: Menu « GEL / C542_Configuration / CPU_Reset »

5.5. Etude de la carte mémoire

La carte mémoire effective permet d’estimer l’empreinte mémoire nécessaire pour implanter le
programme sur le DSP.
Génération de la carte mémoire *.map lors de l’édition des liens
Le fichier .map contient toutes les informations connues à l’issue de l’édition des liens concernant
l’utilisation de la mémoire du DSP :
 Blocs mémoires logiques (taille, position et espace utilisé) (IPROG, IDATA, SARAM03…)
 La position des sections logiques statiques au sein de la mémoire (.bss, .text, .cinit…)
 La valeur des symboles statiques définis
Pour obtenir le fichier .map :
 Ajouter une option de compilation afin que le linker génère la carte mémoire effective :
Menu « Project/ Build Options.../ »
Onglet « Linker »
Cocher l’option « Map File name -m » en lui associant le fichier audio.map
 Reconstruire le projet. Le .map devrait se trouver au même niveau que l’exécutable.

Contenu du fichier *.map


Le fichier *.map contient 3 parties :
1. Le bilan de l'occupation mémoire des blocs => empreinte mémoire
Cette partie reprend les directives du fichier de commande, et les complète notamment avec la taille
réellement utilisée dans chaque bloc (colonne used).
2. L'allocation des sections logiques au sein de la mémoire. Cette partie permet de placer les sections
relogeables au sein des blocs logiques, et d’identifier les fichiers de code ayant donné lieu à
l’utilisation des ressources mémoires.
3. La liste des symboles globaux et leur valeur associée de façon statique (triés par nom, puis par valeur
croissante). Un symbole peut correspondre à l’adresse vers le début d’une section ou d’un tableau
statique. Les valeurs affichées peuvent donc permettre de déduire la position de certains tableaux au
sein de la mémoire, mais attention :
 les valeurs peuvent changer d’une compilation à une autre, en fonction des décisions prises lors
de l’édition des liens
 seule l’origine des tableaux peut être retrouvée, par leur taille
 uniquement les valeurs numériques des symboles sont connues, aucune distinction entre « adresse
programme » et « adresse donnée » n'est possible.

Vous aimerez peut-être aussi