Upload
responsable-disimmtv
View
1.201
Download
4
Embed Size (px)
DESCRIPTION
DSP
Citation preview
2
Développement pour une plateforme DSP Mise au point de l ’algorithme
Prototypage, simulation haut-niveau Matlab Langage C sur PC
Implémentation DSP Développement sur carte d'évaluation
Langage C Cartes EVM, SDK Noyau temps-réel (DSP/BIOS)
Optimisation des parties critiques Assembleur
Outils de débogage Simulateur Émulateur Boundary scan JTAG (Norme IEEE 1179.1) Communication temps-réel avec un PC hôte
3
DSP
Simulateur
Assembleur *.lst*.obj
Linker *.map*.cmd
IDE
*.cCompilateur
C
*.asm
Développement pour un DSP
Outils deconception
*.asm
Editeurde Texte
*.out
DSP*.hex
Chargementsur la cible
4
C vs. assembleur
Assembleur Langage bas-niveau
Fastidieux Jeux d’instructions
complexes et irréguliers Spécifique à chaque
constructeur Plus puissant
Accès direct à certains registres inconnus du C
Nécessaire pour une optimisation poussée
Langage C Langage de plus haut-
niveau Plus rapide à coder Meilleure portabilité
Code machine généré moins efficace
Malgré l’optimisation par le compilateur
Outils de développement Noyau temps-réel
(DSP/BIOS) Configuration de la carte Librairies de calculs
optimisées (DSPLIB)
5
Outils d'aide au développement
Target Board
DSP
CODEC
DIPSwitches
Timer
CSL DSP/BIOS™Kernel/Scheduler
DsplibImglib
Drivers
User Application
McBSP EMIF CPU
6
CSL (Chip Support Library)
Librairie pour faciliter l'utilisation des périphériques internes du DSP
Plateformes C5000 et C6000 Texas Instruments Accessible depuis le langage C
Organisation en modules Un module par périphérique
C67x™ DSP Modules
CHIP
DAA
DAT
DMA
EBUS
GPIO
HPI
IRQ
MCBSP
PLL
PWR
UART
WDTIM
7
Avantages d'une librairie de supportde type CSL Abstraction du matériel à travers une API logicielle
Configuration Accès aux ressources Macros pour accéder au niveau des contenus de registres
Intégré au noyau temps-réel DSP/BIOS Interface graphique CSL
Facilitation du développement Méthodes standards d'accès aux périphériques Temps de développement réduit Programmation à plus haut-niveau Utile pour compenser l'augmentation de la complexité des
processeurs et des applications
8
Librairies spécialisées (DSPLIB, IMGLIB)
Librairies de support pour le calcul Traitement du signal ou des images Déjà programmées Optimisées Utilisables depuis le langage C
Fonctionnalités de base FFT Filtrage Mathématiques et trigonométrie Calcul matriciel
9
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 Contraintes sur 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
Temps de réponse bornés
10
Système temps-réel 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)
11
Stratification des traitements sous DSP/BIOS
Interruptions matérielles
Interruptions logicielles
Multi-tâche
Tâche de fond (idle)
Hard Real-time
Soft Real-time
2nd-TIERTraitement par blocsRéaction à la milliseconde
1st-TIERTraitement par échantillonRéaction à la microseconde
Traitements ordonnancésExécution concurrente
S'il reste du temps
12
Mise en œuvre et implémentation de filtres RIF et RII
13
Méthodologie d'implantation d'un filtre
Étape 0 : Choix du filtre Choix du filtre et calcul des coefficients
Étape 1 : Choix de structure Choix d'un schéma d'implantation Écriture des équations correspondantes
Étape 2 : Choix algorithmiques Choix de l'implantation mémoire et des variables Écriture de l'algorithme
Étape 3 : Choix numériques Choix du format Qk Écriture du programme
Étape 4 : Validation Définir un protocole de test et l'appliquer
Etape 5 : Optimisation
(a)
1
f(norm)fc : cut-off frequency
pass-band stop-band
pass-band stop-bandtransition band
1
s
pass-bandripple
stop-bandripple
fpb : pass-band frequency
fsb : stop-band frequency
f(norm)
(b)
p1
s
p0
-3
p1
fs/2
fc : cut-off frequency
fs/2
|H(f)|(dB)
|H(f)|(linear)
|H(f)|
Étape 1 : Schéma et équations
Méthodes de synthèse d'un filtre
Il existe de nombreuses méthodesMéthode de la fenêtreOptimisation par moindres carrésCalcul des coefficients par approximation de
tchebycheffPar TFD récursiveetc.
Synthèse de filtres
Synthèse de filtre
Synthèse de filtre
Synthèse de filtre
Synthèse de filtre
Synthèse de filtre
22
Étape 1 : Schéma et équations
b1
b0
b2
-a1
-a2
ynxn
wns
22110
2211
nnnn
nnnn
wbwbwby
wawasxwwn-1
wn-2
z-1
z-1
Exemple sur une cellule RII du 2e ordre
Forme directe II
Équations correspondantes
23
Étape 2 : Variables et algorithme
s
coefs
a1
a2
b2
b1
b0
wn-1 w(n-1)
dbuffer
wn-2 w(n-2)
tableau descoefficients
tableau desretards
Variable temporaire : w (recevra wn)Calcul
wn ← s * xn – a1 * w(n-1) – a2 * w(n-2)
y ← b0 * wn + b1 * w(n-1) + b2 * w(n-2)Mise à jour retards w(n-2) ← w(n-1)
w(n-1) ← wn
xn
? puis yn
x
y
? puis wn w
variablestemporaires
État de la mémoirelors de l'appel de la fonction
Entrées : x (contient xn) dbuffer (contient wn-1 et wn-2) coefs (contient les coefficients)
Sorties : y (reçoit yn) dbuffer (contient wn'-1 et wn'-2 pour n'=n+1)
0
1
2
3
4
5
0
1
24
Étape 3 : Format Qk et programme C
x(n) Q15s Q15
ai Q15
bi Q15
wk Q15 /* Calcul */w=((long)coefs[0]*x +(long)coefs[1]*dbuffer[0] –(long)coefs[2]*dbuffer[1]) >> 15;
y=((long)coefs[5]*w +(long)coefs[4]*dbuffer[1] +(long)coefs[3]*dbuffer[0]) >> 15;
/* Mise à jour retards */dbuffer[1]=dbuffer[0];dbuffer[0]=w;
/* Sortie */return y;
}
int cellule(int x) { int w; int y;
int coefs[6];int dbuffer[2];
Conversion algorithme (calcul sur des réels)vers programme (calcul en format Qk)
s * xdevient
(coefs[0]*x)>>15pour un résultat en Q15
25
Étape 3 : Programme détaillé
Si programmation en assembleur, nécessité de décomposer en calculs élémentairesAlgorithme détailléConversion en assembleur
ACC=x(n) sACC=ACC - a1 w(n-1)
ACC=ACC - a2 w(n-2)w(n)=ACC>>15
ACC=w(n) b0
ACC=ACC + b2 w(n-2)
ACC=ACC + b1 w(n-1)y(n)=ACC>>15w(n-2)=w(n-1)w(n-1)=w(n)
26
Implantation mémoire pour cellules en cascade
s
coefs
a11
a12
b12
b11
b10
a21
a22
b22
b21
b20
w1(n-1)
dbuffer
w1(n-2)
w2(n-1)
w2(n-2)cellule 1
cellule 2
cellule 2
cellule 10
1
2
…
…
5
5+1
5+2
…
0
1
2+1
2+2
27
Structure transverseImplémentation par
Buffer linéaireBuffer circulaire
Filtres RIF
28
Structures pour filtre RIF
Structure transverse avec ligne à retard
Structure en treillis (filtres adaptatifs)
yi(n) = yi-1(n) + ki ui-1(n) et ui(n) = k1 yi-1(n) + ui-1(n-1)
avec y0(n)=u0(n)=x(n).
z-1
+
+
k1x(n)
z-1
+
+
k2
z-1
+
+
k3
y3(n)
u3(n)
y2(n)
u2(n)
y1(n)
u1(n)
y0(n)
u0(n)
z-1
z-1
z-1
+ + +
b0
b2
bN-1
y(n)
x(n)
b1
1....1 110 Nnxbnxbnxbny N
29
z -1
+b
1,1
x(n)
z -1
+
b1,2
z -1
+b
2,1
z -1
+
b2,2
z -1
+b
M,1
z -1
+
bM,2
y(n)b0
Structures en cascade:
Structures pour filtre RIF
M
kz
kbz
kbb
Nz
bN
bz
b
bz
b
bb
Nz
Nbzbzbb
N
k
kzk
bzH
1
22,
11,
10
1
0
1...2
0
21
0
110
11
...22
110
1
0
30
Filtre RIF par structure transverse
Deux aspectsMise à jour de la mémoire
A chaque réception d’une nouvelle donnée x(n)Calcul du filtre
ACCU=0 for i=0 to N-1:
ACCU ← ACCU + h(i) × x(n-i) Sortie de y(n)=ACCU
31
2
0
1
N-2
N-1
Buffer linéaire
x(n-1)
x(n-2)
…
…
…
…
x(n-N+1)
x(n-N)
x(n)
x(n-1)
x(n-2)
…
…
…
x(n-N+2)
x(n-N+1)
x(n-N)
x(n)
b0
b1
b2
…
…
…
bN-2
bN-1
y(n)
Mise à jour du buffer Calcul de y(n)
1
0
N
i
inxibny
décalage
xtab xtab
0
1
N-2
N-1
1
Schéma "état mémoire" Schéma de structure de filtre
32
Buffer circulaire
bk+1x(n-k+1)
…
x(n-N+1)
x(n-N)
x(n-1)
x(n-2)
…
x(n-k)
x(n)
…
bN-1
b0
b1
b2
…
bk
y(n)
Mise à jour du buffer Calcul de y(n)
1
0
N
i
inxibny
x(n-k+1)
…
x(n-N+1)
x(n)
x(n-1)
x(n-2)
…
x(n-k)
idx
0
1
N-2
N-1
0
1
N-2
N-1
idx
xtab xtab
Schéma "état mémoire" Schéma de structure de filtre
33
Quantification des coefficients RIF
Virgule fixe: B=16 bits pour h(i) , x(n-i) et y(n) 40 bits pour les accumulateurs
Représentation Qk Coefficient de magnitude maximale:
hmax = max |h(i)|
Nombre de bits nécessaires pour la partie entière : BE = log2(hmax)
Codage Qk avec k = B – BE
h(i) = round(h(i)/2k)
1
0
N
i
inxihny
34
Filtre RIF avec buffer circulaire en assembleur
N .set 32
; adr_x+d supposé chargé dans AR2
STM #(coef)+N-1, AR3
STM #(adr_y), AR5
STM #N, BK
STM #1, AR0
RPTZ A, #N-1
MAC *AR2+0%, *AR3-, A
STH A, *AR5
i = coef h(N-1)
Adresses Contenu
i + 1 h(N-2)
i + 2 h(N-3)
…… ……
i + N - 1 h(0)
Mémoire Programme
k = adr_x x(n-N+d-1)
Adresses Contenu
…… ……
k + d - 1 x(n-N+1)
…… ……
k + d x(n)
k + N x(n-N+d)
Mémoire Données
Rmq: les log2(N) bits de poids faible de adr_x doivent être nuls
1
0
N
i
inxihny
short fir_filter (short input){int i;short output;int acc=0;int prod;R_in[0] = input; /* lire les valeurs des échantillons */acc = 0; /* initialisation de l’acc à zéro*/for (i=0; i<128; i++) {prod = (h[i]*R_in[i]); /* Q.15 */acc = acc + prod; /* mise a jour des 32-bit de l’acc */} output = (short) (acc>>15); /* mise en forme de l’output (16-bits) */for (i=127; i>0; i--) /* décalage des échantillons */R_in[i]=R_in[i-1];return output;}
Exemple d’implémentation d’un filtre RIF en Q15
36
Structures de filtresDécomposition en élements simplesProblèmes de quantification
Filtres RII
37
Filtre RII
Fonction de transfert rationnelle
Equation aux différences
H zN z
D z
b z
a z
ii
i
Q
kk
k
P( )( )
( )
0
1
1
y b x a yn i n ii
Q
k n kk
P
0 1
38
Filtre RII – Pôles et zéros
Zéros au numérateur
Pôles au dénominateur
Q
ii
Q
i
ii zzbzb
0
10
0
1
P
ii
P
i
ii zpza
0
1
1
11
39
Forme directe I (ND)
y b x a yn i n ii
Q
k n kk
P
0 1z-1
z-1
z-1
z-1
z-1
z-1
z-1 z-1
b1
b0
b2
b3
bQ-1
-a1
-a2
-a3
-aQ-1
xn yn
• Forme non canonique :• Nécessite Q+P mémoires
)(
1)()(
zDzNzH
Forme directe I (ND)
40
Forme directe II (DN)
z-1
z-1
z-1
z-1
b1
b0
b2
b3
bQ-1
-a1
-a2
-a3
-aQ-1
yn
• Forme canonique• Nécessite max(Q,P) mémoires
)()(
1)( zN
zDzH
xn
Forme directe II (DN)
41
Forme directe II transposée
b2
b3
bQ-1
-a1
-a2
-a3
-aQ-1
xn
z-1
z-1
b1
z-1
b0
z-1
yn
z-1
z-1
z-1
z-1
b1
b0
b2
b3
bQ-1
-a1
-a2
-a3
-aQ-1
ynxn
Forme directe II Forme directe II transposée
42
Quantification des coefficients
z-1
z-1
z-1
z-1
b1
b0
b2
b3
bQ-1
-a1
-a2
-a3
-aQ-1
ynxn
Forme directe II
kkk aaa
kkk bbb
Quantification d’un coef :
aq = round(a*q)/q
avec un pas de quantification q=2-k
43
Quantification des coefficients
Le dénominateur quantifié devient :
La fonction de transfert est donc perturbée.
Plus le degré du polynôme est élevé, plus la fonction de transfert sera perturbée.
kkk aaa
1
1
11
1
11Q
ll
Q
k
kk zpzazD
H zN z
D z
b z
a z
ii
i
Q
kk
k
P( )( )
( )
0
1
1
44
Décomposition d’un filtre RII
en sections du deuxième ordre choisies pour leur stabilité coefficients réels (racines conjuguées)
Structure parallèle
22
11
110
1
zaza
zbb
22
11
110
1
zaza
zbbxn yn
Structure cascade
Expansion partielle
1
02
21
1
110
0 1)(
)( N
i ii
ii
zaza
zbbc
zA
zB
c0
22
11
22
110
1
zaza
zbzbb2
21
1
22
110
1
zaza
zbzbbxn yn
Factorisation
1
02
21
1
22
11
0 1
1
)(
)( N
i ii
ii
zaza
zbzbb
zA
zB
45
Décomposition en cascade
H1 H2 H3
s0 s1 s2 s3x(n) y(n)
22
11
22
11
1
1)(
zaza
zbzbzH
ii
iii
avec : et03210 bssss
)()()(1
1
)(
)(3210
1
02
21
1
22
11
0 zHzHzHbzaza
zbzbb
zA
zB N
i ii
ii