Chapitre3 prog dsplf3

Preview:

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