44
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

Chapitre3 prog dsplf3

Embed Size (px)

DESCRIPTION

DSP

Citation preview

Page 1: Chapitre3 prog dsplf3

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

Page 2: Chapitre3 prog dsplf3

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

Page 3: Chapitre3 prog dsplf3

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)

Page 4: Chapitre3 prog dsplf3

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

Page 5: Chapitre3 prog dsplf3

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

Page 6: Chapitre3 prog dsplf3

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

Page 7: Chapitre3 prog dsplf3

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

Page 8: Chapitre3 prog dsplf3

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

Page 9: Chapitre3 prog dsplf3

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)

Page 10: Chapitre3 prog dsplf3

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

Page 11: Chapitre3 prog dsplf3

12

Mise en œuvre et implémentation de filtres RIF et RII

Page 12: Chapitre3 prog dsplf3

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

Page 13: Chapitre3 prog dsplf3

(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

Page 14: Chapitre3 prog dsplf3

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.

Page 15: Chapitre3 prog dsplf3

Synthèse de filtres

Page 16: Chapitre3 prog dsplf3

Synthèse de filtre

Page 17: Chapitre3 prog dsplf3

Synthèse de filtre

Page 18: Chapitre3 prog dsplf3

Synthèse de filtre

Page 19: Chapitre3 prog dsplf3

Synthèse de filtre

Page 20: Chapitre3 prog dsplf3

Synthèse de filtre

Page 21: Chapitre3 prog dsplf3

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

Page 22: Chapitre3 prog dsplf3

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

Page 23: Chapitre3 prog dsplf3

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

Page 24: Chapitre3 prog dsplf3

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)

Page 25: Chapitre3 prog dsplf3

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

Page 26: Chapitre3 prog dsplf3

27

Structure transverseImplémentation par

Buffer linéaireBuffer circulaire

Filtres RIF

Page 27: Chapitre3 prog dsplf3

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

Page 28: Chapitre3 prog dsplf3

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

Page 29: Chapitre3 prog dsplf3

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

Page 30: Chapitre3 prog dsplf3

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

Page 31: Chapitre3 prog dsplf3

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

Page 32: Chapitre3 prog dsplf3

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

Page 33: Chapitre3 prog dsplf3

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

Page 34: Chapitre3 prog dsplf3

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

Page 35: Chapitre3 prog dsplf3

36

Structures de filtresDécomposition en élements simplesProblèmes de quantification

Filtres RII

Page 36: Chapitre3 prog dsplf3

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

Page 37: Chapitre3 prog dsplf3

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

Page 38: Chapitre3 prog dsplf3

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)

Page 39: Chapitre3 prog dsplf3

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)

Page 40: Chapitre3 prog dsplf3

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

Page 41: Chapitre3 prog dsplf3

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

Page 42: Chapitre3 prog dsplf3

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

Page 43: Chapitre3 prog dsplf3

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

Page 44: Chapitre3 prog dsplf3

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