Électronique et Informatique Industrielle 2 nde année - EII2 12 septembre 2017 Traitement Numérique du Signal Supports de cours magistraux Olivier Sentieys ENSSAT - Université de Rennes 1 [email protected]http://www.irisa.fr/cairn http://people.rennes.inria.fr/Olivier.Sentieys/ 6 Rue de Kerampont - BP 447 22305 LANNION - France IRISA — ENSSAT Institut de Recherche en Informatique et Systèmes Aléatoires École Nationale Supérieure de Sciences Appliquées et de Technologie Technopôle Anticipa Lannion
66
Embed
Traitement Numérique du Signalpeople.rennes.inria.fr/Olivier.Sentieys/teach/SlidesTNS.pdf · Supports de cours magistraux ... Synthèse de filtre IIR Synthèse de filtre FIR ...
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Électronique et Informatique Industrielle 2nde année - EII212 septembre 2017
Traitement Numérique du SignalSupports de cours magistraux
Olivier Sentieys
ENSSAT - Université de Rennes [email protected]://www.irisa.fr/cairn
http://people.rennes.inria.fr/Olivier.Sentieys/6 Rue de Kerampont - BP 447
22305 LANNION - France
IRISA — ENSSATInstitut de Recherche en Informatique et Systèmes Aléatoires
École Nationale Supérieure de Sciences Appliquées et de Technologie
Technopôle Anticipa Lannion
Traitement numérique du signal et
Processeurs de traitement du signal
Olivier Sentieys
Traitement numérique du signal – EII2
• Analyse spectrale
• Introduction• Analyse de filtre numérique • Processeurs de TNS
• Transformée en TNS • Synthèse de filtre RII• Synthèse de filtre RIF
• Systèmes multi-cadences
• Arithmétique virgule fixe
I-3
Traitement Numérique du Signal(Digital Signal Processing)
AnalogSignal
Processing
DigitalSignal
Processing
ConverterTechnologyProvides the
Bridge
A/DD/A
Analog orReal-WorldSignals
Digital orComputer-WorldSignals
[ICE97]
Video/Image/Graphics Audio/Speech/Control
100M 10M 1M 100k 10k
High Data RateFcl Low Data Rate
I-4
Cycle de développementBesoin
Spécificationstechnologiques
Spécificationsopératoires
Spécificationsfonctionnelles
Contraintes temps réel,
Consommation d'énergie, Flexibilité
Coût
Spécification
ImplantationMatérielle
ImplantationLogicielle
Partitionnement
Implantation
Performances
Conception fonctionnelle
Définition de l'algorithme Simulation
Description de l'algorithme
Spécificationsfonctionnelles
I-5
Contenu du cours de TNS et PTS
• Analyse et conception de systèmes de TNS– Analyse des filtres numériques – Transformées en TNS– Synthèse des filtres numériques RII – Synthèse des filtres numériques RIF– Analyse spectrale – Systèmes multi-cadences
• Implantation de systèmes de TNS– Arithmétique virgule fixe (codage - évaluation de la précision)– Implantation logicielle : processeurs de traitement du signal – Implantation matérielle : module conception des circuits intégrés
I-6
Modules TNS/PTS
1
2
3
4
56
7
8
1
2
34
5
6
12Devoir surveillé 2h
1
2
CM TNS
TD TNS
TP TNS
Introduction - chaÎne de TNS
Analyse des filtres numériques
Arithmétique virgule fixe
Bruit de quantification
Transformées en TNS
Synthèse de filtre IIR
Synthèse de filtre FIR
Analyse spectrale
Système multi-cadences
9
10
11
PTS
7
8 Interpolation Analyse spectrale
Transforméede Fourier (x.4.2)
Implantation VF IIR (x.1. 7)
Analyse et implantation VF FIR (x.1.3)
Analyse cellule 2ème ordre IIR (x.1.2)
Synthèse FIR éch. Fréquentiel (x.3.2)
1
2
3
TP PTS
Synthèse FIR par fenêtrage (x.3.1)
Synthèse IIR x.2.2)
15xN 23xN Projet PTS
1
6
I-7
Planning modules TNS/PTS
• Exercice à préparer pour les séances de TD – Ramassage possible des copies et intégration de la note au DS
o TD1 : Analyse et implantation FIR (1.2.1 – partie 1)o TD2 : Analyse et implantation IIR (1.2.5 – partie 1)o TD3 : Analyse et implantation IIR (1.2.5 – partie 2)
Transformée de Fourier (1.5.2)
o TD4 : Synthèse IIR (1.3.2)o TD5 : Synthèse FIR par fenêtrage (1.4.1) o TD6 : Synthèse FIR échantillonnage fréquentiel (1.4.2)o TD7 : Analyse spectrale (1.8.1, 1.8.3)
Interpolation (1.9.1, 1.9.2)o TD8 : révisions
I-8
Plan du cours
I. Introduction 1. Introduction, problématique, caractéristiques, 2. Applications typiques de TNS 3. Caractéristiques des algorithmes 4. Chaîne de traitement et problèmes temps réel, solutions architecturales
II. Analyse des filtres numériques 1. Spécification, classification, représentation 2. Analyse fréquentielle 3. Structures des filtres RII et RIF
I-9
Plan du cours (suite)
III. Implantation d'algorithmes de TNS 1. Caractéristiques des algorithmes 2. Traitement temps réel 3. Solutions architecturales
Processeurs de traitement du signal I. Introduction2. Description des différentes unités 3. Panorama des processeurs 4. Outils de développement
I-10
Plan du cours (suite)
IV. Arithmétique virgule fixe 1. Présentation de l'arithmétique virgule fixe2. Processus de codage en virgule fixe3. Exemple d'un filtre IIR cascadé4. Évaluation de la précision
V. Transformées en TNS 1. TFD, convolution linéaire 2. TFR : Transformée de Fourier Rapide
VI. Synthèse des filtres numériques RII 1. Invariance Impulsionnelle 2. Transformation Bilinéaire
I-11
Plan du cours (fin)
VII. Synthèse des filtres numériques RIF 1. Introduction 2. Filtres à Phase Linéaire 3. Méthode du Fenêtrage 4. Échantillonnage en Fréquence
VIII. Analyse spectrale 1. Effets de la troncature2. Caractéristiques des fenêtres3. Influence sur l'analyse
IX. Systèmes multi-cadences 1. Définition2. Décimation3. Interpolation
I-12
Introduction
1. Introduction et problématique2. Applications typiques de TNS
• Avantages– Pas de dérive : température, vieillissement, valeur des composants– Précision : garantie par le nombre de bits– Souplesse : plusieurs tâches simultanées possibles– Prédiction : simulation sur ordinateur– Prototypes : changements par modifications du logiciel– Performances : pas de distorsion de phase, filtrage adaptatif, etc.– Intégration : progrès des systèmes VLSI et DSP
• Inconvénients– Coût : élevé pour des réalisations simples– Vitesse : bande passante large = vitesse de calcul élevé– Complexité : réalisation à la fois matérielle et logicielle
I-15
Quelles applications ?
• A la Maison– Télévision à la demande, Télévision Satellite, Jeu Vidéo et Réalité
• Au Bureau – Vidéoconférence, Fax, Modems, téléphone, etc.– Réseaux rapides (ADSL, fibre, ethernet), sans-fil (WiFi)
• En mobilité, sur la route– Téléphonie mobile (3G, 4G, 5G), commande vocale, radar, GPS, etc.
I-16
Domaines d'application
• Communication homme-machine, synthèse, transformation texte-parole et inverse,reconnaissance de parole, identification et vérification du locuteur
• Télécommunications, codage et restauration de la parole, courrier vocal, télécopie,audionumérique (CD, DAB), TV numérique, compression et transmission d'images, cryptage etprotection, transmission de données, télé informatique, annulation d'écho, codage à débitréduit, télé et visioconférence, téléphonie cellulaire, ...
• Annulation d'écho– Réseau téléphonique utilisant les satellites géostationnaires (540ms)– Téléphone main libre en voiture (écho + bruit)– Téléconférence
o • Réponse impulsionnelle de la salleo • Effets : écho, Larsen, réverbérationo • Problème de déconvolution
Microphone
Loud speaker
near end speach
AmbientNoise
Reflections
to far end speaker
from far end speaker
+-
Ht Computation of coefficients
Annulateur d'écho par filtrage adaptatifI-26
Applications
• Compact Disc Audio– Echantillonnage à 44,1 kHz sur 16 bits des deux voies : 1,41 Mbit/s– Information + correction d'erreurs, contrôle et affichage : 4,32 Mbit/s– 90 dB de rapport Signal à Bruit et de séparation stéréo (contre 60 et 30 dB)
Encodeur du système Compact Disc Lecture du système Compact Disc
En pratique : SuréchantillonnageConversion N/A classique
A/DConverter
Parity Coding
MUX Modulator
Control /Display
DemodulError
CorrectionFilter
D / A
BufferMemory
D / A
D/AConverter
LP filter16 bit PCM
Fe = 44.1 kHz
D/AConverter
LP filter16 bit PCM
Fe = 176.4 kHz
4 DigitalLP filter
44.1 kHz
I-27
Applications
• Encodeur MP3– Codage fréquentiel perceptuel
o Analyse du signal dans le domaine fréquentiel• Séparation du signal en bandes de fréquence
o Utilisation d'un model perceptuel • Modélisation du système auditif humain• Prise en compte des phénomènes de masquage• Le seuil de perception dépend des fréquences
o Quantification et codage :• Distribution du nombre de bits aux composantes spectrales • Quantification afin que le bruit soit en dessous des seuils de masquage
– Si N(z)=1 : filtre tout-pôle – Si D(z)=1 : filtre RIF
• Principales propriétés
– Les RII peuvent être instables : structure à base de pôles et de zéros
– Bande de transition faible – Synthèse par réutilisation des méthodes analogiques – Instabilité numérique due au rebouclage : forme cascade plus stable
)()(
1)(
1
0
zDzN
za
zbzH N
i
ii
M
i
ii
=+
=
∑
∑
=
−
=
−
∏
∏
=
=−
−
−= N
ii
M
ii
MN
pz
zzzbzH
1
10
)(
)()(
II-13
Filtrage Numérique 4 Analyse fréquentielle
Analyse fréquentielle L'analyse fréquentielle est l'étude du module, de la phase et du temps
de propagation de groupe du filtre H.
Ω est la pulsation relative : Ω = ωT = 2πfT La fonction de transfert en fréquence H(ejΩ) est périodique de période 2π.
Ω 2π
|H(ejΩ)|
π
ΩΩ
== j
j
ezzHeH )()(
II-14
Filtrage Numérique 4 Analyse fréquentielle
Conclusion Trois domaines de représentation – Temporel h(n), équation aux différences – Fonction de transfert en z, diagramme des pôles/zéros – Fréquentiel H(Ω), module, phase
ΩΩ
== j
j
ezzHeH )()(
0 1
( )
( ) . ( ) . ( )M N
i ii i
h n
y n b x n i a y n i= =
= − − −∑ ∑
∑∑∞
=
−∞
=
− ==00
)()(n
n
i
ii znhzczH
TZ TZI
jz e Ω=
TF TFI
II-15
Filtrage Numérique 4 Analyse fréquentielle
Exemple 1
pordre1.avi
( )
1 1
zH zz a
aa
=−
∈
− ≤ ≤
°11
)(
≤≤−
∈−
=
aRa
azzzH
II-16
Filtrage Numérique 4 Analyse fréquentielle
Exemple 2
pzordre1.avi
( )
,0.9 , 0.9
zH zz a
a ba b
=−
∈
− ≤ ≤
°9,0,9,0
,
)(
≤≤−
∈−−
=
baRba
azbzzH
II-17
Filtrage Numérique 4 Analyse fréquentielle
Exemple 3
paordre2.avi
( )( )( *)
1
zH zz p z p
pp
=− −
∈
≤
£1
*))(()(
≤
∈
−−=
pp
pzpzzzH
C
II-18
Filtrage Numérique 4 Analyse fréquentielle
Exemple 4
prordre2.avi
( )( )( *)
0.9
zH zz p z p
pp
=− −
∈
=
£9.0
*))(()(
=
∈
−−=
pp
pzpzzzH
C
II-19
Filtrage Numérique 5 Structures de réalisation
5. Structures de réalisation – Filtres RIF
∑=
−=N
ii inxbny
0
)()(
+
+
+
Z-1
Z-1
b1
bN-1
bN
x(n-1)
x(n-N)
x(n) y(n) b0
+
Z-1
+
Z-1
+
Z-1
b1
bN-1
bN
y(n) b0
x(n)
a) Structure directe b) Structure transposée
II-20
Filtrage Numérique 5 Structures de réalisation
– Filtres RII
∑∑
∑∑
=
−=
−
==
+×=×==⇒
−−−=
N
i
ii
N
i
ii
N
ii
N
ii
zazb
zDzN
zDzNzH
inyainxbny
1
0
10
1
1)(
1)()()()(
)()()(
RII
Z-1
Z-1
b1
bN-1
bN
x(n-1)
x(n-N)
x(n) y(n) Z-1
Z-1
-a1
-aN-1
-aN
y(n-1)
y(n-N)
+
+
+
+
+
+
Z-1
Z-1
b1
bN-1
bN
x(n) y(n) Z-1
Z-1
-a1
-aN-1
-aN
+
+
+
RIF
a) Structure directe
b0 b0
II-21
Filtrage Numérique 5 Structures de réalisation
– Filtres RII
⎪⎪⎩
⎪⎪⎨
⎧
−=
−−=
⎪⎩
⎪⎨⎧
=
=
×+
=×=
∑
∑
∑∑
=
=
=
−
=
−
N
ii
N
ii
N
i
iiN
i
ii
inwbny
inwanxnw
zWzNzY
zXzD
zW
zbza
zNzD
zH
0
1
0
1
)()(
)()()(
)().()(
)(.)(
1)(
1
1)()(
1)(
x(n) y(n)
RII
Z-1
Z-1
-a1
-aN-1
-aN
+
+
+
+
+
+
Z-1
Z-1
b1
bN-1
bN
RIF
b0 w(n)
II-22
Filtrage Numérique 5 Structures de réalisation
– Filtres RII
– Forme cascade de filtres du second ordre b) Structure canonique transposée
+
Z-1
+
Z-1
-a1
-aN-1
-aN
+
+
Z-1
b1
bN-1
bN
y(n) b0
x(n) y(n)
Z-1
Z-1
-a1
-aN-1
-aN
Z-1
b1
bN-1
bN
b0 x(n) +
+
+
+
+
+
w(n)
w(n-1)
w(n-N)
∏∏+
=−−
−−+
= ++
++==
21
12
2,1
1,
22,
11,0,
21
1 1)()(
N
i ii
iii
N
i zazazbzbb
zHizH
H1(z) X(z) Y(z)
H2(z) HK(z) . . .
a) Structure canonique directe
IV-1
Un exemple pour commencer…
• Monsieur S. se rend à la Banca of Chaotica pour un placement
• Placement initial : p=e-1€ (e=2.718281…)• Première année : p=px1-1€ (frais) • Deuxième année : p=px2-1€ (frais) • ...• Nième année : p=pxN-1€ N > 25 ans
• Calcul banque : 1.201.807.247€ J• Calculatrice : -140.1012 L
• Calcul formel ou précision élevée : 6 centimes...IV-2
Arithmétique virgule fixe
1. Présentation arithmétique virgule fixe 2. Processus de codage en virgule fixe
2.1. Détermination de la dynamique 2.2. Détermination de la position de la virgule 2.3. Détermination de la largeur des données
3. Évaluation de la précision
IV-3
Codage en virgule fixe complément à 2
• Définition :
• m : distance (en nombre de bits) entre la position du bit le plus significatif pMSB et la position de la virgule pV
• n : distance entre la position de la virgule pV et la position du bit le moins significatif pLSB
float Input[N] = {0.123, -0.569,...} /* Définition du signal d 'entrée du filtre */float h[N] = {0.2,…, 0,48 ,…, 0.2 }; /* Définition des coefficients du filtre*/
int main()
{
float x[N], y[M], acc;
int i,j;
for(j=0; j<M; j++) /* Filtrage du vecteur d'entrée input */
{
x[0] = Input[j];
acc = x[0]*h[0] ;
for(i=N-1; i>0; i--)
{
acc = acc + x[i]*h[i]; /* Calcul d'une cellule du filtre */
x[i] = x[i-1]; /* Vieillissement des variables internes du filtre */
for(j=0; j<M; j++) /* Filtrage du vecteur d'entree input */
{
x[0] = Input[j];
acc = (long)(x[0]*c[0]) >> 4;
for(i=N-1; i>0; i--)
{
acc = acc + ((long)(x[i]*c[i]) >> 4); /* Calcul d'une cellule du filtre */
x[i] = x[i-1]; /* Vieillissement des variables internes */
}
y[j] = (int)(acc>>16);}
}
Réduction de la largeur de la variable 32 bits ð 16 bits Récupération des 16 bits les plus significatifs de la donnée (l 'opération de cast sur acc permet de récupérer les bits de poids faible uniquement)
Recadrage de la sortie de la multiplication : changement de format : (32,0,31) ð (32,4,30)
Le signal d'entrée et les coefficients sont spécifiés au niveau du code C en entiers sur 16 bits (absence de type virgule fixe en C) :
• l'entier représentant Input (16,0,15) est obtenu en multipliant Input par 215
• l'entier représentant c (16,-1,16) est obtenu en multipliant c par 216
IV-37
Arithmétique virgule fixe
1. Présentation de l'arithmétique virgule fixe 2. Processus de codage en virgule fixe
2.1. Détermination de la dynamique 2.2. Détermination de la position de la virgule 2.3. Détermination de la largeur des données
3. Évaluation de la précision
IV-38
Quantification1 Bruit de conversion A/N
xQ(n) = Q[x(n)]
e(n) = xQ(n) - x(n)
|e(n)| £ q/2
Quantification en conversion A/N Quantification d'une sinusoïde
n
x(n)
3q2qq
n
xQ(n)
3q2qq
n
e(n)q/2
- q/2CAN
x(n) xQ(n)
IV-39
Qx(n) xQ(n) = Q[x(n)] = k.q x(n) xQ(n)
+
e(n) = Q[x(n)] - x(n)
Quantification2 Modèle de bruit
• Modèle bruit additif
– Définition : approximation de chaque valeur d'un signal x(n) par un multiple entier du pas de quantification élémentaire q.
– e(n) est l'erreur de quantification
• Sources de bruit– Bruit de conversion A/N– Limitation des chemins de données de l'architecture cible
Élimination de bits lors d'un changement de format
IV-40
Quantification2 Caractéristiques de quantification
. ArrondiQ(x) = k.q si (k-1/2).q £ x < (k+1/2).q
. TroncatureQ(x) = k.q si k.q £ x < (k+1).q
Etude statistique
• {e(n)} est une séquence d'un processus aléatoire continu et stationnaire
• {e(n)} est décorrélée de {x(n)}
• {e(n)} est un bruit blanc additif
• la distribution de probabilité de {e(n)} est uniforme sur l'intervalle de quantification
– Théorème de Parseval – Transformées de fonctions réelles
• Relation entre TFSD et TFD – Signaux de durée finie ou périodique
– Cas général ?
V-5
TFD
X(k) ⇔x(n)
x(n) et X(k) sont, dans le cas général, des nombres complexes.
X = W . x (2)
X(0)X(1)
.
.X(N-1)
=
1 1 . . 1
1 WN1 WN
2 . WNN-1
. WN2 WN
4 . WN2(N-1)
. . . . .
1 WNN-1 WN
2(N-1) . WN(N-1) 2
×
x(0)x(1)
.
.x(N-1)
• Définition
• Forme Matricielle
Transformées en TNS 2 Transformée de Fourier Discrète
⎪⎪
⎩
⎪⎪
⎨
⎧
−==
−==
∑
∑−
=
+
−
=
−
1
0
2
1
0
2
1..0)(1)(
1..0)()(
N
k
Nnkj
N
n
Nnkj
NnekXN
nx
NkenxkX
π
π
nkNj
knN
Nj
N
eW
eWπ
π
2
2
−
−
=
=
V-6
Transformées en TNS 2 Transformée de Fourier Discrète
La TFD revient à calculer un produit matrice-vecteur où chaque élément est de type complexe. La complexité de calcul de la TFD est de N2 multiplications, et de N(N-1) additions sur des nombres complexes. Ceci revient à une complexité de 4N2 multiplications réelles et N(4N-2) additions réelles. Cet algorithme se comporte donc en O(N2), mais ne possède pas de problèmes d'adressage car les x(n) et les Wi sont rangés dans l'ordre en mémoire.
Complexité de calcul
– En 1965, Cooley et Tuckey [COOLEY 65] ont publié un algorithme applicable quand N est le produit de 2 ou plusieurs entiers dont la complexité est en O(Nlog2N)
Wk(N-n)N = (Wkn
N )* (3.1)
WknN = Wk(n+N)
N = W(k+N)nN (3.2) Périodicité
Wn+N/2N = -Wn
N (3.3) Symétrie
W2knN = Wkn
N/2 (3.4)
Propriétés des W n N = e -2jπ n
N
V-7
En exploitant la propriété 3.4, on obtient :
(4)
où G(k): TFD sur N/2 points d'indices pairs,H(k): TFD sur N/2 points d'indices impairs.
X(k) = x(n).WNnk
n pair∑ + x(n).WN
nk
nimpair∑
X(k) = x(2n)n=0
N/2−1∑ .WN
2nk + x(2n +1)n=0
N/2−1∑ .WN
(2n+1)k
X(k) = x(2n)n=0
N/2−1∑ .WN /2
nk +WNk. x(2n + 1)
n=0
N/2−1∑ .WN/2
nk
X(k) = G(k) + WNk .H(k) k = 0,1,.. .., N −1
X(k + N2) = x(2n)
n=0
N/2−1∑ .WN/2
n(k+N/2) +WNk+N/2. x(2n +1)
n=0
N/2−1∑ .WN/2
n(k+N/2)
X(k + N2) = G(k)−WN
k.H(k)
Transformées en TNS 3 Transformée de Fourier Rapide
• TFR (FFT) partagée dans le temps (DIT)
V-8
••• TFR DIT •••
x(0)
x(2)
x(4)
x(6)
x(1)
x(3)
x(5)
x(7)
TFD
N/2 pts
TFD
N/2 pts
X(0)
X(1)
X(2)
X(3)
X(4)
X(5)
X(6)
X(7)
W80
W81
W82
W83
W84
W85
W86
W87
O(N )2 O(N)
Xm(p)
Xm(q)
Xm+1(p)
Xm+1(q)
-1WNr
Xm+1(p) = Xm(p) + WrN Xm(q)
Xm+1(q) = Xm(p) - WrN Xm(q) (6)
Complexité d'un papillon : 1 multiplication complexe, 2 additions/soustractions complexes
• On obtient une fonction de transfert H(p) respectant le gabarit analogique spécifié
Þ Passage vers H(z)VI-6
Synthèse des filtres RII3 Invariance impulsionnelle
• Le filtre numérique et le filtre analogique ont la même réponse impulsionnelle
t
ha(t)
Ha(p)x(t) y(t)
filtre analogique
t
h(nT)
H(z)x(nT) y(nT)
filtre numérique
T
h(nT) = ha(t) / t = nT
VI-7
Synthèse des filtres RII3 Invariance impulsionnelle
• Le filtre numérique et le filtre analogique ont la même réponse impulsionnelle
– Conserve la réponse temporelle et la stabilité– Phénomène de recouvrement de spectre du à l'échantillonnage– Non respect de la spécification fréquentielle
{ }å úû
ùêëé-
=
¾®¾¾¾®¾¾®¾
-
=-
)(1 ,
1)()(
)()()()(1
pHdeppôlesipT
a
TznTta
La
ai
pezpHRésiduszH
directenformulatioouzHnThthpH
( )å +=W
kTk
aj jjH
TeH pw 21)(
VI-8
• Réponse fréquentielle
– Normalisation(xT) ou (/H(0))
Synthèse des filtres RII3 Invariance impulsionnelle
1Ha(p)
1/T
p
W
2P-2P P
H(W)
VI-9
Synthèse des filtres RII4 Transformation bilinéaire
• Approximation d'une intégrale par la méthode des rectangles1
1
1
112
-
-
+-
=zz
Tp
t
e(nT)
nT(n-1)T
s(n) = s(n-1) + T[e(n) + e(n-1)]/2
H(z)e(n) s(n) 1/p
e(t) s(t)
Intégrateuranalogique
Intégrateurnumérique
1Appelée également, selon les sources, méthode des trapèzes VI-10
Synthèse des filtres RII4 Transformation bilinéaire
– Conservation de la stabilité
– Relation entre fréquences numériques et analogiques
plan p
p = jwa
plan z
z = ejwT
p 0
VI-11
Synthèse des filtres RII4 Transformation bilinéaire
– Distorsion en fréquence connue
fe/2
filtre analogique filtre numérique
fe/2
p
p/Twa
wT
-p
÷øö
çèæ=
22TtgT
numériqueanalogique ww
VI-12
Synthèse des filtres RII4 Transformation bilinéaire
• Procédure de synthèse
– A partir du gabarit en fréquence numérique wn
– Effectuer une prédistorsion en fréquence
– Synthèse de H(p) par méthodes vues en Electronique du signal– Transformation bilinéaire
÷øö
çèæ=
22TtgT
na ww
1
1
112
)()(-
-
+-
==
zz
Tp
pHzH
VI-13W
pWp
1|H(ejW)|1-d1
1+d1
d2
Wa
wa
p
1
|Ha(jw
a)|
1-d 1
1+d 1 d 2
wa
a
p
wawa
W
wa=2/T tan(W/2)
2p VI-14
Synthèse des filtres RIIExemple
• Filtre numérique analogique du premier ordre
– Invariance impulsionnelle : Hi(z)
– Transformation bilinéaire : Hb(z)
CR
ppH
c
c
.1
1
1)(
=
+=
w
w
fc = 1 KHz, fe = 10 Khz
VII-1
Synthèse des filtres numériques RIF
1. Introduction
2. Filtres à Phase Linéaire
3. Méthode du Fenêtrage
4. Échantillonnage en Fréquence
VII-2
Synthèse des filtres RIF 1 Introduction
• Recherche de H(z) correspondant aux spécifications (gabarit)
– Synthèse directe en z
– Filtres à phase linéaire ou minimale
• 3 méthodes de synthèse – Méthode du fenêtrage – Méthode de l'échantillonnage fréquentiel – Méthodes d'optimisation : minimiser un critère d'erreur entre courbe
réelle et courbe idéale
VII-3
Synthèse des filtres RIF 2 Phase linéaire
• Filtre à phase minimale – Zéros dans le cercle unité
• Filtre à phase linéaire
– Condition pour avoir une phase linéaire Symétrie ou antisymétrie par rapport à α = (N-1)/2
⎩⎨⎧
Ω−=Ω
−Ω
Ω= ΩΩ
αβϕ
ϕ
)()(:)(
).()( )(
amplitudemodulepseudoAavec
eAeH jj
VII-4
Synthèse des filtres RIF 2 Phase linéaire
réponse impulsionnelle symétrique β=0
réponse impulsionnelle antisymétrique β=±π/2
N impair α entier
N pair α non entier
h(n)
α N-1
h(n)
α N-1
h(n)
α N-1
h(n)
α N-1
Type I
Type II
Type III
Type IV
VII-5
Synthèse des filtres RIF 2 Phase linéaire
N impair
N pair
ααα
αα
…1),(2),(
)cos()(
0
0
=−==
Ω= ∑=
Ω−Ω
nnhaha
naeeH
n
nn
jj
0)(2/1),2/(2
])cos[()(2/
12/1
=
=−=
Ω−= ∑=
Ω−Ω
π
α
HNnnNhb
nbeeH
n
N
nn
jj
…
0)()0(1),(2
)sin()(1
2
==
=−=
Ω= ∑=
Ω−Ω
π
αα
αα
π
HHnnhc
nceeeH
n
nn
jjj
…
0)0(2/1),2/(2
])sin[()(2/
1
2 2/1
=
=−=
Ω−= ∑=
Ω−Ω
HNnnNhd
ndeeeH
n
N
nn
jjj
…
απ
Tout filtre
Passe Haut
Passe Bande Dérivateur
Passe Haut Dérivateur
Type I
Type II
Type III
Type IV
Réponses fréquentielles
VII-6
Synthèse des filtres RIF 2 Phase linéaire
N impair
N pair Tout filtre
Passe Haut
Passe Bande Dérivateur
Passe Haut Dérivateur
π 2π
Type I
Type II
Type III
Type IV
π 2π
π 2π
π 2π
Réponses fréquentielles
VII-7
Synthèse des filtres RIF 3 Méthode du fenêtrage
• Développement en série de Fourier du filtre idéal
– Filtre non causal, de type RII
• Passage de h(n) idéal au RIF approché par fenêtrage de h(n)
∫−ΩΩ Ω=
π
ππdeeHnh jnj ).(
21)(
∑∞
−∞=
Ω−Ω =n
jnj enheH )()(
)().()( nwnhnha =
VII-8
Synthèse des filtres RIF 3 Méthode du fenêtrage
• Exemple : filtre passe-bas idéal
Filtre passe-bas idéal
c
cc
nnnhΩ
ΩΩ=
)sin()(π
Ω π Ωc
1
-Ωc -π
|H(ejΩ)|
VII-9
Synthèse des filtres RIF 3 Méthode du fenêtrage
• Prise en compte d'une condition de phase linéaire par décalage de α
• Fenêtrage de h(n) )()()()().()( ΩΩΩ ∗=⇔= jjj
aa eWeHeHnwnhnh
H(Ω) W(Ω) *
=
|Ha(Ω)|
VII-10
ΔΩ
ΔA
1+ΔA H(Ω) ^
H(Ω)
W(Ω)
1 1-ΔA
Synthèse des filtres RIF 3 Méthode du fenêtrage
– Largeur de la zone de transition ΔΩ ⇔ 1/2 largeur du lobe principal – Atténuation ΔA ⇔ amplitude du premier lobe secondaire
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 : bnat
– 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
III-18
Éléments de l'UT
– Unités de saturation ou d'arrondi – Unités spécifiques
Unité de manipulation de bit, Viterbi, ...
• Unités de stockage de l'UT– Registres opérandes
Stockage des opérandes sources ou des résultats intermédiaires
– Registres d'accumulation Stockage du résultat de l'additionneurNombre de registres d'accumulation limité (1 à 4) Données stockées en double précisionPossibilité de bits de garde pour stocker les bits supplémentaires issus d 'accumulations successives
badd = bmult + bg
Bits de garde ACCH ACCL
2.bnatbg
III-19
Structure de l'UT de type MAC
+
Accumulateur
´
A B
Sat /Arr
bnat
bmult
badd
MACP
Interconnexions registres - opérateurs spécialiséesð Structure hétérogèneð Bonnes performances en terme
de consommation et de surface
bnat
Opérateurs Nbits Entrées Nbits Sortie
Multiplieur bnat 2 bnat
Additionneur/ UAL 2 bnat
2 bnat +bg
2 bnat
2 bnat +bg
Saturation/Arrondi 2 bnat
2 bnat +bg
bnat
bnat
Registre Nbits
Opérande source bnat
Accumulateur 2 bnat
2 bnat +bg
III-20
Exemple : TMS320C54xDB PBCBDB CB DB CB EBDB � 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
III-21
Processeurs de traitement du signal
1. Introduction 2. Description des différentes unités
2.1. Unité de traitement2.2. Unité de mémorisation2.3. Unité de contrôle
2.4. Unité de communication
3. Exemple de processeurs4. Outils de développement III-22
Exemple FIR Fil Rouge
• Les différents accès à la mémoire– Recherche de l'instruction– Lecture de la donnée xn-k
– Lecture du coefficient hk
– Vieillissement des données xn-k-1 = xn-k
TAP
y(n)+
x
+
x
+
x
+
xx
x(n)
h(0) h(1) h(2) h(3) h(4)
D D D D
III-23
Localisation des opérandes
Mémoire
Opérateur
R
A
texec
tacc
Mémoire
RX
Opérateur
RY
A
texec
tacc
• Modèle registre-mémoire – Opérandes situées en mémoire et dans les registres
Temps d'exécution de l'instruction
tinst = tacc+ texec
• Modèle « Load-Store » – Opérandes situées uniquement dans des registres
Temps d'exécution de l'instruction
tinst = max(texec,,tacc)
III-24
DM
DP
IM
IP
[Classification de E. Lee (1989)]
Ex: TMS320C10
Architecture Harvard de base
• Architecture Harvard : séparation de la mémoire données et de la mémoire programmeðFetch d'instruction pipeliné avec fetch opérande
III-25
Modification 1
• Autorisation de mémorisation de données dans l'IM
• En un cycle si 2 accès mémoire par cycle (tacc = 1/2.tinst) :
– fetch de l'instruction– fetch deux opérandes de la mémoire– exécution d'un MAC– écriture du résultat en I/O ou mémoire
DM
DP
IM/DM
IP
1-vers-2
AT&T DSP32 et DSP32C
III-26
Modification 2
• DM est une mémoire multi-ports, plusieurs accès aux données par cycle
• Utilisable pour des mémoires internes au CI
Fujitsu MB86232 (3 ports en mémoire interne)
DM
DP
IM
IP
III-27
Modification 3
• Cache pour charger les instructions fréquentes
• Évite les conflits d'accès données et instructions de la modification 1
TMS320C25 : cache 1 instruction pour les bouclesDSP16 : cache 15 instructionsADSP-2100 : cache 16 instructions
DM
DP
IM/DM
IP
1-vers-2 cache
III-28
Modification 4
Motorola DSP 56001 et 96002TMS320C30 et C40
DM 1
DP
IM
IP
1-vers-2
DM 2
• Deux mémoires données DM séparées
• En un cycle : – fetch de l'instruction– fetch de deux opérandes (si les
temps d 'accès aux mémoires DM1, DM2 et IM sont identiques)
III-29
Modèle du C54x
• Bus et mémoires internes
Program
Dataread
Dataread
Datawrite
Mémoire interne
ROM : - Bootloader- Utilisation dans l'espace dataou program
SARAM (Single Acces RAM) - 1 lecture ou 1 écriture par cycle
III-30
Modes d'adressage
• Adressage immédiat : la donnée est stockée directement dans l'instruction – Exemple C54x : LD #75h, A
Adressage court (instruction sur 1 mot) : valeur spécifiée sur 3,4,8 ou 9 bits Adressage long (instruction sur 2 mots) : valeur spécifiée sur 16 bits
– Utilisé pour l'initialisation des registres – Inconvénient : augmentation du temps d'exécution et de la taille du code
• Adressage registre directe : les données sont stockées dans des registres – Exemple C54x SUB A, B
A = 75h
III-31
Modes d'adressage
• Adressage mémoire directe : l'adresse de la donnée est stockée dans l'instruction– Adressage absolu : l'adresse complète est stockée dans l'instruction
C54x les adresses sont sur 16 bits L'instruction doit être codée sur plusieurs mots
– Adressage paginé : pour limiter le nombre de bits stockés dans l'instruction l'adresse est composée de deux parties :
a11 A10 a9 a8 a0a15
Partie stockée dans un registre. pointeur de page: DP. pointeur de pile: SP
Partie stockée dans l'instruction
9 bits TMS320C54x 7 bits
III-32
Modes d'adressage
• Adressage indirecte par registre :– Registre d'adresse (AR) pointant sur les données
LD *AR1, A
– Possibilités de post modifications :linéaire : AR:= AR ± 1 LD *AR1+, A
indexé : AR:= AR ± MR LD *AR1+0, A
– MR: registre d'index
modulo : (AR:= AR ± 1)N LD *AR1+% ,A
bit-reverse : FFT LD *AR1+0B ,A
x0 x1
x2
x3x5
addr = AR1AR1 = AR1 + 1
addr = AR1AR1 = AR1 + AR0
addr = AR1AR1 = (AR1 + 1) modulo BK
(BK) specifies the size of the circular buffer.
addr = AR1 (Aï *AR1)
addr = AR1AR1 = bitrev(AR1 + AR0)
After access, AR0 is added to ARx with reverse carry (rc) propagation.
III-33
Buffer circulaire et bit-reverse
– Buffer circulaire :Vieillissement automatique des données
– Bit-Reverse :. Adressage des données en entrée ou en sortie de la FFT. Attention à l 'adresse de début du tableau : xxxx0000
• Unité de gestion des adresses du TMS320C54x � 8 registres auxiliaires
(AR0…AR7)� 2 unités de calcul ARAU� registres spécifiques
� BK : taille du buffer circulaire
� AR0 : registre d'index
III-35
Processeurs de traitement du signal
1. Introduction 2. Description des différentes unités
2.1. Unité de traitement 2.2. Unité de mémorisation2.3. Unité de contrôle
2.4. Unité de communication
3. Exemple de processeurs4. Outils de développement III-36
Pipeline
• Exécution de l'instruction en plusieurs phases :– 1. Recherche de l'instruction– 2. Décodage de l'instruction – 3. Recherche des opérandes – 4. Exécution
Inst n-1
i+1i i+2 i+3 i+4
Inst n+1Inst n
Inst n-1 Inst n Inst n+1
Inst n-1 Inst n Inst n+1
Recherche Instruction
Recherche Opérande
DécodageInstruction
Inst n-1 Inst nExécution
III-37
Codage des instructions
• Stationnarité temporelle:– Une instruction définit l'ensemble des opérations à réaliser pour chaque
unité fonctionnelle
MULT R1,R2,T ADD T,A,A LD R1,AR1 LD R2,AR2
LOAD
i+1i i+2 i+3 i+4
LOADLOAD
MULT MULT MULT
ADD ADD ADD
Transfertmémoire .U.T.
UnitéAccumulateur
UnitéMultiplieur
III-38
Codage des instructions
• Stationnarité des données:– Une instruction définit une séquence complète d'opérations à réaliser
sur un ensemble de données
MAC *AR1,*AR2
LOAD
i+1i i+2 i+3 i+4
LOADLOAD
MULT MULT MULT
ADD ADD ADD
Transfertmémoire .U.T.
UnitéAccumulateur
UnitéMultiplieur
III-39
Format des instructions
• Format encodé: largeur minimale (16 à 32 bits)– Restrictions:
nombre d'opérations disponibles modes d'adressageopérandes sources et destination
– Utilisation de bits de mode
÷ Compromis øMinimiser la largeur des instructions
òDiminuer la consommation
et la surface mémoire & busò
Abaisser les coûts
Maximiser le parallélisme
òAugmenter l'efficacité
du processeur
Jeu d'instructionshétérogène
III-40
Structures de contrôle
• Boucle matérielle– 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
– Exemple boucle multi-instruction
MOVE #16,BLOOP MAC (R0)+,(R4)+,A
DEC BJNE LOOP
RPT #16MAC (R0)+,(R4)+,A
Bouclelogicielle
Bouclematérielle
C5x
DO #16,End... Loop bodyEnd
SPLK #16RPTB End-1... Loop bodyEnd
DSP 56000 C5x
III-41
Structures de contrôle
• Instructions de branchement– Branchement multi-cycles : ajout de NOP entre BR et 1ère instruction– Branchement retardé : déplacement de l'instruction de branchement BR
• Instructions à prédicat– Instructions conditionnelles du type :
• Instructions de mode– Définir un mode de fonctionnement spécifique
exemple : contrôle d'un registre à décalage, d'une unité de saturation, ...
INF R1,R5,10[R1] ADD R3,R2,3[!R1] ADD R3,R2,3
If Then Else
III-42
Unité de contrôle du C50
• PC sur 16 bits• pile de 8 x 16 bits• PFC, IR: pour le pipeline
1. Introduction 2. Description des différentes unités
2.1. Unité de traitement 2.2. Unité de mémorisation 2.3. Unité de contrôle 2.4. Unité de communication
3. Exemples de processeurs4. Outils de développement
III-44
Périphériques
• Périphériques intégrésports sériesports parallèlestimersDMAgénérateur de wait statehost portPLL
• Connexion aisée aux CAN et CNA– les CAN/CNA ne sont généralement pas intégrés dans les DSP afin de pouvoir
choisir un CAN/CNA en adéquation avec l'application
III-45
Processeurs de traitement du signal
1. Introduction 2. Description des différentes unités
2.1. Unité de traitement 2.2. Unité de mémorisation 2.3. Unité de contrôle
2.4. Unité de communication
3. Exemples de processeurs4. Outils de développement III-46
DSP conventionnels
• 16-24 bits en virgule fixe, accumulation 40-60 bits• 32 bits en virgule flottante• 16 à 32 bits d'instructions• Une instruction par cycle, jeu d'instructions
complexe• Architecture non orthogonale, fortement contrainte• Mémoire à accès multiples "on-chip"• Unités dédiées de gestion des adresses• Matériel dédié pour la gestion des boucles
Exemple : TMS320C54xDB PBCBDB CB DB CB EBDB � 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
III-49
C5000 instruction MAC
Syntax Execution Example
MAC[R] Smem, src (Smem) x (TREG) + (src) --> src MAC *AR5, A
MAC[R] Xmem, Ymem, src [,dst] (Xmem) x (Ymem) + (src) --> src or [,dst] (Xmem) --> TREG
MACR *AR5+, *AR6+, A, B
MAC #lk, src [,dst] (TREG) x lk + (src) or [,dst] MAC #345h, A, B
MAC Smem, #lk, src [,dst] (Smem) x lk + (src) or [,dst] (Smem) --> TREG
MAC *AR5+, #1234h, A
Description The MAC[R] instruction multiplies and adds with or without rounding. The result is stored in the destination accumulator, if specified, or in the source accumulator. For syntaxes 2 and 3, the data-memory value after the instruction is stored in TREG. TREG is updated during the read phase. The MACR instruction rounds the result of the MAC operation by adding 2^15 to the result and clearing the 16 LSBs (bits 15-0) to 0. Operands Smem: Single data-memory operand Xmem, Ymem: Dual data-memory operands src, dst: A (accumulator A), B (accumulator B) lk: 16-bit long-immediate value
III-50
C5000 instruction FIRS
Syntax Execution Example
FIRS Xmem, Ymem, pmad
pmad -->PAR While (RC) != 0 (B) + (A(32-16)) x (Pmem addressed by PAR) --> B ((Xmem) + (Ymem)) << 16 --> A (PAR) + 1 --> PAR (RC) - 1 --> RC
FIRS *AR3+, *AR4+, COEFFS
Description FIRS is useful to implement symmetrical FIR filters. The FIRS instruction multiplies accumulator A(32-16) with a program memory value addressed by pmad (program memory address) and adds the result to the value in accumulator B. At the same time, it adds the memory operands Xmem and Ymem, shifts the result left 16 bits and loads this value into accumulator A. In the next iteration, pmad is incremented by 1. Once the repeat pipeline is started, the instruction becomes a single-cycle instruction.
III-51
C5000 instruction LMS
Syntax Execution Example
LMS Xmem, Ymem
(A) + (Xmem) << 16 + 2^15 --> A (B) + (Xmem) x (Ymem) --> B
LMS *AR3+. *AR4+
Description The LMS instruction is used to execute the least mean square algorithm (LMS). The dual data-memory operand Xmem is shifted left 16 bits and added to accumulator A. The result is rounded by adding 2^15 to the high part of the accumulator (bits 31-16). The final result is stored in accumulator A. In parallel, Xmem and Ymem are multiplied and the result is added to accumulator B. Xmem does not overwrite TREG; therefore, TREG always contains the error value used to update coefficients.
III-52
Processeurs de traitement du signal 1. Introduction 2. Description des différentes unités
2.1. Unité de traitement 2.2. Unité de mémorisation 2.3. Unité de contrôle
2.4. Unité de communication
3. Exemples de processeurs4. Outils de développement
III-53
Cycle de développement (1)
Besoin
Spécificationstechnologiques
Spécificationsopératoires
Spécificationsfonctionnelles
Contraintes temps réel,
Consommation d'énergie,Flexibilité
Coût
Spécification
Implantation
ImplantationLogicielle
ImplantationMatérielle
Partitionnement
Performances
Conception fonctionnelle
Définition de l'algorithme Simulation
Description de l'algorithme
Spécificationsfonctionnelles
Vecteurs de test
Génération manuelle ou automatique
III-54
Cycle de développement (2)
Conversion en virgule fixe
Vecteurs de test
Code C virgule flottante
Modélisation de haut niveau
Code C virgule fixe
#def ine pi 3.1416#def ine pi 3.1416
main(){
f loat x,h,zfor(i=1;i<n;i++)
{
*z= *y++ + *h++}
for(i=1;i<n;i++){
*z= *y++ + *h++
}
Correlator.C
#def ine pi 3.1416#def ine pi 3.1416
main(){
f loat x,h,zfor(i=1;i<n;i++)
{
*z= *y++ + *h++}
for(i=1;i<n;i++){
*z= *y++ + *h++
}
Correlator.C
#def ine pi 3.1416#def ine pi 3.1416
main(){
f loat x,h,zfor(i=1;i<n;i++)
{
*z= *y++ + *h++}
for(i=1;i<n;i++){
*z= *y++ + *h++
}
Correlator.C
Génération manuelle ou automatique Génération manuelle
#def ine pi 3.1416#def ine pi 3.1416
main(){
f loat x,h,zfor(i=1;i<n;i++)
{
*z= *y++ + *h++}
for(i=1;i<n;i++){
*z= *y++ + *h++
}
Correlator.C
#def ine pi 3.1416#def ine pi 3.1416
main(){
f loat x,h,zfor(i=1;i<n;i++)
{
*z= *y++ + *h++}
for(i=1;i<n;i++){
*z= *y++ + *h++
}
Correlator.C
#def ine pi 3.1416#def ine pi 3.1416
main(){
f loat x,h,zfor(i=1;i<n;i++)
{
*z= *y++ + *h++}
for(i=1;i<n;i++){
*z= *y++ + *h++
}
Correlator.C
Génération de code(compilateur - linker)
Test & Debug(Simulateur -
Emulateur HW)
Bruit blanc gauss ien
Chirp (0 ® Fe/2)
( ) 4.2)(max =nyn
( ) 3.9)(max =nyn
Bruit blanc uniforme
( ) 4.3)(max =nyn
AnalysePerformances
III-55
Cycle de développement (3)
• Conception fonctionnelle– Spécifications du flot de données du TS,– Simulation, validation– Prototypage rapide
Matlab/Simulink (Mathworks), SPW (CoWare), Cossap (Synopsys), Ptolemy(Université de berkley)
• Développement du code– Implantation matérielle : code VHDL– Implantation logicielle : code C
III-56
Cycle de développement (4)
• Implantation matérielle – Synthèse du circuit – Simulation VHDL et validation– Analyse des performances– Test
• Implantation logicielle – Génération de code (compilateur C/ass, linker)– Test & Debug : validation du code – Analyse : mesure des performances
III-57
Cycle de développement (5)
• Mise au point du logiciel - Debugging– Simulateur au niveau instruction
Mise au point avant que le matériel soit disponible
– Emulation du HardwareOn-chip debugging/emulation : IEEE 1179.1 JTAG standard
– Carte de développementVérification temps réel de l'algorithmeSystème avec des faibles volumes de production
III-58
Développement logiciel
[Bier97]
Assembler
C Compiler
Linker
Simulator
DSP Development Board
Hardware Emulator
Final Product
Debugger
BinaryExecutable
Object CodeLibraries
Object Code
AssemblyLibraries
AssemblyCode
C/C++Libraries
C/C++Code
III-59
Code Composer Studio
. Choix de la cible
. Configuration de l'OS DSP/BIOS
. Librairies : - DSPLib- TMS320 DSP Algorithm Standard
. IDE
. Générateur de code . Compilateur C . Compilateur assembleur . Linker
. Gestionnaire de projet
Code & Build
Application design
III-60
Analyse
Debug
. Visualisation de signaux
. Profiler (mesure du temps d'exécution du code)
. Analyse temps réel (visualisation des tâches du DSP/BIOS)
Simulateur Émulateur HW
Exécution pas à pas Analyse de variables Déclenchement sur événements
Code Composer Studio
III-61
Inefficacité des compilateurs C
• Analyse du surcoût associé au compilateur C : DSPStone
– Meilleurs performances pour les DSP plus généraux et les DSP virgule flottante / architecture homogène
0
200
400
600
800
1000
1200
Sur c
oût (
%)
ADSP21xx/ADI
DSP56002/Motorola
TMS320C51/TI
TMS320C54/TI
TMS320C62/TI
Processeurs
Sur coût temps d'execution
ANSI C
C modifié
-100
-50
0
50
100
150
200
250
300
350
400
Sur c
oût (%
)ADSP21xx/
ADIDSP56002/
MotorolaTMS320C51/
TITMS320C54/
TITMS320C62/
TIProcesseurs
Sur coût taille du code
ANSI C
C modifié
[Ropers99]
III-62
Les raisons de l'inefficacité
• Inadéquation du langage C pour décrire des applications TNS– Absence de support pour l'arithmétique virgule fixe
Extensions du langage C Langage orienté signal
• Inefficacité des techniques classiques de développement des compilateurs (développement du DSP puis du compilateur)
• Inefficacité des techniques classiques de compilation qui ont été développées pour les architectures homogènes
– Les architectures des DSP conventionnels sont hétérogènes
• Absence de support pour les spécificités des DSP– Registres d'état, modes d'adressage (modulo, bit inversé)...
III-63
Développement en C ou en assembleur
• Développement en assembleur : – Le code est optimisé– Le code n'est pas portable - demande du savoir faire
• Développement en C :– Plus abordable rapidement– Beaucoup moins performant et pas aussi simple ...– Conseils :
ne pas déclarer ses variables en float (chaque opération fera appel à des routines de la bibliothèque de calcul en flottant)
déclarer les variables en int et les recadrages sont gérés par des décalages :• nécessité de connaître les conventions utilisées par le compilateur
– ex: renvoi d 'une donnée en double précision en mémoire