Exemples d'applications - Lirmm

Optimisations de l'assembleur. ▫ Critères de sélection des outils et du langage. • Compilateurs : taille et vitesse du code. • Simulateurs : vitesse. ARCHI'07 - 117.
5MB taille 61 téléchargements 411 vues
Processeurs de Traitement Numérique du Signal (DSP)

Processeurs de Traitement Numérique du Signal (DSP)

I. II. III. IV.

Olivier Sentieys IRISA Université de Rennes I ENSSAT Lannion [email protected] http://www.irisa.fr/R2D2

Introduction Architectures MAC/Harvard Evolutions des DSP Flot de développement

Merci à Daniel Ménard pour son support

Exemples d’applications I. Introduction

1. 2. 3. 4.

Contexte applicatif Caractéristiques algorithmiques Solutions architecturales Marché des DSP

          

Téléphonie cellulaire Communications sans-fil Contrôle de moteur Modems Photo et caméra numériques Voix sur IP, réseau Audio grand public Navigation Vidéoconférence Jouets, consoles vidéo Synthèse musicale, effets

ARCHI’07 - 4

         

• Performances • Faible coût • Faible énergie

Communications satellite Analyse sismique Sécurité Médical Reconnaissance vocale Sonar, radar Débruitage, écho Anticollision … et pleins d’autres à venir

Tâches élémentaires

Algorithmes de TdSI1

Compression de signal (parole, audio, vidéo) Filtrage Modulation et démodulation Détection et correction d’erreurs Contrôle Traitements audio (e.g. réduction bruit, égalisation, annulation d’écho, conversion de fréquence)  Reconnaissance vocale  Synthèse de signaux      

ARCHI’07 - 5

1Traitement

du signal et de l’image

 Signaux numériques o Temps et amplitude discrets o Flot de données o Scalaires, vectorielles, matricielles, …

 Traitement temps réel o Temps d'exécution Tex guidé par flots de données o Période d'échantillonnage Te période des sorties Tf > Tex e(t) Te

s(t)

ARCHI’07 - 6

Algorithme

ex. s(n) = max(moy(e), s(n-1))

Tf

Diversités

Fonctions typiques de TdSI

 Complexité des algorithmes de TdSI

 Convolution, filtrage (RIF, RII), corrélation, DCT

< 5 MOPS

10-30 MOPS

Faible mesure/contrôle

> 100-1000 MOPS Elevé

Compression Compression ADSL UMTS parole modemsaudio GSM Compression Imagerie vidéo médicale

 Format des données Application

Taille des données

PWM, mesures, contrôle

1 à 4 - 18 à 22 bits

o y = y + x.h : MAC (multiplication-accumulation)

 Adaptation (LMS) o yn = yn-1 + x.h : MAD (multiplication-addition)

 FFT, multiplication complexe o xr=xr.wr-xi.wi; xi=xr.wi+xi.wr

 Viterbi o a1 = x1 + x2; a2 = y1 + y2; o y = (a1>a2) ? a1 : a2 : ACS (addition-comparaison-sélection)

convertisseurs sigma -delta

ARCHI’07 - 7

radio HF/VHF, radar

6 - 14 bits

sonar

10 - 12 bits

parole

8 - 14 bits

audio

16 - 20 bits

imagerie / vidéo

8 - 36 bits (par pixel)

analyseurs de s ang

16 - 18 bits

 Estimation de mouvement o sad += |xi,j - yi+u,j+v| : SAD (sum-of-absolute-difference) ARCHI’07 - 8

Exemple Fil Rouge

Fonctions typiques de TdSI

 Filtre Numérique RIF sur N points

 Filtre Numérique RIF symétrique sur N points

D

D

D

D

x(n)

h(0)

x

h(1)

x

h(2)

x

h(3)

x

h(4)

+

+

+

+

+

x y(n)

0

+

+

h(0)

+

x

h(1)

h(2)

x y(n)

TAP ARCHI’07 - 9

x +

ARCHI’07 - 10

+

Fonctions typiques de TdSI

Fonctions typiques de TdSI

 FFT Fast Fourier Transform

 Filtrage adaptatif LMS

• Butterfly (DIF) X

X’ = X + W.Y

Y

x x x x ARCHI’07 - 11

Y’ = X - W.Y

W

+

+ -

 DLMS xn(i-1)

+ -

x en

ARCHI’07 - 12

+ hn(i)

hn-1(i) xn(i)

x

+ y

y

Fonctions typiques de TdSI

Caractéristiques algorithmiques

 Estimation de mouvement

 Charge de calcul importante o Nids de boucles o Multiplications-accumulations (convolution) o Multiplications-additions (FFT, DCT, adaptation, distances, ...)

• Codage vidéo MPEGx, H26x N+2p

Matched Block Motion Vector NxN (u,v)

p Reference Block NxN

Search Window

ARCHI’07 - 13

sadmin = MAXINT; mvx=0; mvy=0; for (u=-p; u0; i--) { acc = acc + x[i]*h[i]; /* Calcul d'une cellule du filtre */ x[i] = x[i-1]; /* Vieillissement du signal */ } y[j] = acc; }



z max1 = max n (x(n) ).  h(m) m = 

 Norme Chebychev z max 2 = max n , (x(n) )max(H ( ) )

+

y (n)

 Méthode garantissant l’absence de débordements

 Méthode garantissant l’absence de débordements pour un signal d’entrée à bande étroite e.g. x(n)=cos(wt)

 Arithmétique d’intervalle (non récursifs)

} ARCHI’07 - 129



ARCHI’07 - 128

Fil rouge : filtre FIR

for(i=0; i> 1

m'MULT ' = 1

ARCHI’07 - 132

Graphe flot de données d’une cellule du FIR

Sources de bruit dans un FIR  Bruit de quantification associé à l’entrée  Bruit lié au recadrage externe 

 Recadrage des coefficients

[ xm , xm ] x (n)

b0

z-1

>>

>>

 >>

b1

z-1

>>



bN-2

>>

 >>

bN-1

x (n)

>>



Renvoi en mémoire du résultat

>>

b0

Filtre FIR

+

+  Recadrage interne

+

b

m

k = log 2 ( K )

b1

+



b1

+

z-1

bN-2 +



b N-2

bgm1 +

bN-1 +



b N-1

bgm N-2+

bgm N-1+

+

+

+

+

Filtre FIR  Biais lié au codage des coefficients 

m = 

ARCHI’07 - 133



z-1

bg mem

[ K .xm , K .xm ] K=

+

bgm0 +

>>



z-1

+

b0

y (n)

+

 Bruit lié au renvoi en mémoire du résultat

bx

z-1

>>

ACC

+

m ADD = max(mMULT , m ACC , m ACC ) = 1

Recadrage des données dans un FIR  Recadrage externe

ACC

m ACC = 1

max n (y (n) )= max n (x(n) ).  h(m) =  ai = 1.65 ARCHI’07 - 131

mMULT = mb + mx + 1 = 0 mMULT = 0

y (n)

DACC = 1,65 



ARCHI’07 - 134

 Bruit lié au recadrage interne 

y (n)

Filtre FIR

Filtre FIR : code C virgule fixe

 Architecture du processeur cible

x[i] h[i]

• Données en mémoire sur 16 bits • Multiplication 16 bits  16 bits  32 bits • Addition 32 bits + 32 bits  32 bits

MULT

 bmult +

ADD

int x[M] = {-809, -6180, -1570, ...} int h[N] = {-1933, 2386, 3631,};

/* Signal x, codage (16,0,15)*/ /* Coefficients (16,-1,16)

*/

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 x (16,0,15) est obtenu en multipliant x par 215 • l’entier représentant h (16,-1,16) est obtenu en multipliant h par 216

int main() { int x[N]; y[M]; long acc; int i,j;

ACC

(16,0,15) x (n)

z-1



a0 (16,-1,16)

z-1



a1 (32,0,31)

>> 1

aN-2

z-1

 >> 1

>> 1

+

+

+

(32,1,30)

y (n)

Filtre récursif (IIR)



 z-1

b1

/* Calcul d'une cellule du filtre */ /* Vieillissement des variables internes */

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)

ADD0

+ b0



yn

yi-1(n) sortie cellule précédente

+

+ a2,i



a1,i

wi(n-2)

 wi(n-1)

wi(n)

 a1

z-1

b2,i

b1 

 b2



z-1 

 a2

wn

+yn

b0

z-1 

+

} }

(entrée) x(n)

ADD 1

wn

a1

for(i=N-1; i>0; i--) { acc = acc + ((long)(x[i]*h[i])>>1); x[i] = x[i-1]; } y[j] = (int)(acc>>16);

Recadrage de la sortie de la multiplication : changement de format : (32,0,31)  (32,1,30)

Filtre IIR d’ordre 2 (cellule i)

 Cascade de cellules d’ordre 2



/* Filtrage du vecteur d'entree input */

ARCHI’07 - 136

Renvoi de la donnée en mémoire

+

for(j=0; j>1;

(16,1,14)

ARCHI’07 - 135

ADD 0

/* Initialisation des variables internes du filtre */



aN-1

>> 1

(32,1,30)

xn

for(i=0; i