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