Merged 20200614 235758
Merged 20200614 235758
Signaux Physiques
Déterministes Aléatoires
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é.
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)
𝑆(𝑡) 𝑆𝑒 (𝑡)
𝑡 𝑛 𝑇𝑒
𝑇𝑒
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 :
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
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 :
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,…).
x (t ) A sin(2 f s t ) (1.12)
N
y (n ) x (k ) h (n k ) (1.14)
k 0
Transformations complexes
o Laplace
pt
L( p ) f (t ) e
0
dt (1.18)
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
A n ,m A n1,m I n (1.25)
2.1. Définition
– 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.
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
c. Récepteur GPS
2.4. Classification & performance des DSP
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.
𝑉 = −𝑏 𝑛−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
S an-2 . . . a0 a-1 . . . a -m
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. 𝐹)
Mémoire de
Mémoire de bus d’adresse bus d’adresse
données
programme CPU
bus données bus données
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
39 32 31 16 0 15
AG (Bits de garde) AH (Bits de poids fort) AL (Bits de poids faible)
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
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 :
MAC UNIT
Exemple:
MAC *AR2+, *AR3+, A ; A = A + X[i] * Y[i];
Comparator unit
Exemple 1 :
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.
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
Note : IMR n’a aucun effet sur ces interruptions. C.-à-d. (lire ou écrire sur l’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
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
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
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 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
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
10000000
fs = 9260 Hz
2 36 15
4.1. MODE D’ADRESSAGE
Le C542 offre plusieurs modes d’adressage de base.
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)
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
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.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.
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)
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 ».
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 »
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.