Sie sind auf Seite 1von 159

EII2

Traitement Numrique du Signal

Daniel MENARD
Olivier SENTIEYS
sentieys@enssat.fr
http://r2d2.enssat.fr/enseignements/Tns/Tns.php

Notes :

Traitement Numrique du Signal


(Digital Signal Processing)

Analog or
Real-World
Signals

Analog
Signal
Processing

A/D
D/A

Digital
Signal
Processing

Digital or
ComputerWorld
Signals

Converter
Technology
Provides the
Bridge

Video/Image/Graphics
Fcl High Data Rate
100M

10M

Audio/Speech/Control
Low Data Rate
1M

100k

10k
[ICE97] 2

Notes :
Digital signal processing (DSP) is a segment of the IC industry where advanced digital
and analog technologies merge. The typical function of the DSP device is to perform realtime processing of a digitized analog signal, changing that signal using arithmetic
algorithms, and then passing the signal on. The process is very math intensive and quite
complicated. In fact, finding competent DSP designers and programmers is often a
challenge for many DSP manufacturers.

Cycle de dveloppement
Besoin
Spcifications
opratoires

Spcification
Spcification
Spcifications
fonctionnelles

Dfinition de
de
Dfinition
l'algorithme
l'algorithme

Simulation
Simulation

Conception fonctionnelle
fonctionnelle
Conception

Contraintes
Contraintes
temps
temps rel,
rel,
Consommation
Consommation
dnergie,
dnergie,
Flexibilit
Flexibilit
Cot
Cot

Performances

Description de
lalgorithme

Implantation

Spcifications
technologiques

Partitionnement
Partitionnement

Implantation
Implantation
Matrielle
Matrielle

Implantation
Implantation
Logicielle
Logicielle

Notes :

Contenu du cours de TNS et PTS


Analyse et conception de systmes de TNS
Analyse des filtres numriques
Transformes en TNS
Synthse des filtres numriques RII
Synthse des filtres numriques RIF
Analyse spectrale
Systmes multi-cadences

Implantation de systmes de TNS


Arithmtique virgule fixe (codage - valuation de la prcision)
Implantation logicielle : processeurs de traitement du signal
Implantation matrielle : module conception des circuits intgrs

(S4)
4

Notes :

Plan du cours
I. Introduction
1. Introduction, problmatique, caractristiques, solutions architecturales
2. Caractristiques des algorithmes
3. Applications typiques de TNS
4. Chane de traitement et problmes temps rel

II. Processeurs de traitement du signal


I. Introduction
2. Description des diffrentes units
3. Panorama des processeurs
4. Outils de dveloppement

Notes :

Plan du cours (suite)


III. Arithmtique virgule fixe
1. Prsentation de larithmtique virgule fixe
2. Processus de codage en virgule fixe
3. Exemple dun filtre IIR cascad

IV. Analyse des filtres numriques


1. Spcification, classification, reprsentation
2. Analyse frquentielle
3. Structures des filtres RII et RIF

V. Transformes en TNS
1. TFD, convolution linaire
2. TFR : Transforme de Fourier Rapide
6

Notes :

Plan du cours (suite)


VI. Quantification - valuation de la prcision
1. Quantification
2. Effets de la quantification en TNS

VII. Synthse des filtres numriques RII


1. Invariance Impulsionnelle
2. Transformation Bilinaire

VIII. Synthse des filtres numriques RIF


1. Introduction
2. Filtres Phase Linaire
3. Mthode du Fentrage
4. chantillonnage en Frquence
7

Notes :

Notes

Notes :

Plan du cours (fin)


IX. Analyse spectrale
1. Effets de la troncature
2. Caractristiques des fentres
3. Influence sur l'analyse

X. Systmes multi-cadences
1. Dfinition
2. Dcimation
3. Interpolation

Notes :

Filtre passe-bas

0.21
0.2
0.2
035
0.49
0.58
1.236
0.61
0.613
0.61
0.6
0.563
0.421
0.236

0.21
0.2
0.2
035
0.49
0.58
1.236
0.61
0.613
0.61
0.6
0.563
0.421
0.236

Notes :

h
f
e
c

g
d

h
g
CNA
f

T.N.S.
e
CAN

Action
numrique
Te

Actionneurs
anti-repliement

Capteurs

Chane de traitement

10

I.1

Traitement Numrique du Signal

Avantages
Pas de drive : temprature, vieillissement, valeur des composants
Prcision : garantie par le nombre de bits
Souplesse : plusieurs tches simultanes possibles
Prdiction : simulation sur ordinateur
Prototypes : changements par modifications du logiciel
Performances : pas de distorsion de phase, filtrage adaptatif, etc.
Intgration : progrs des systmes VLSI et DSP

Inconvnients
Cot : lev pour des ralisations simples
Vitesse : bande passante large = vitesse de calcul lev
Complexit : ralisation la fois matrielle et logicielle
11

Notes :

Quelles applications ?
A la Maison

Tlvision la demande, Tlvision Satellite, Jeu Vido et Ralit


Virtuelle, Electromnager, Rseaux, ...
DVD, HDTV, CD, DAB, DVB

Au Bureau

Vidoconfrence, Fax, Modems, Pagers, etc.


Rseaux rapides, Sans-fil (WLAN, WiFi, etc.)
ATM, ISDN, ADSL

Sur la route

Tlphone cellulaires, Commande vocale, Radar et Sonar, GPS et


traceur de route, Fax/Modems sans-fil, Vhicules intelligents, etc.

Systmes de l'ge de l'information


= fusion entre

Calculateur- Tlcommunications- Consommateur

Notes :

12

Domaines d'application

Communication homme-machine, synthse, transformation texte-parole et inverse,


reconnaissance de parole, identification et vrification du locuteur

Tlcommunications, codage et restauration de la parole, courrier vocal, tlcopie,


audionumrique (CD, DAB), TV numrique, compression et transmission d'images, cryptage et
protection, transmission de donnes, tl informatique, annulation d'cho, codage dbit
rduit, tl et visioconfrence, tlphonie cellulaire, ...

Dfense, systmes d'armes, surveillance, guidage, navigation

Biophysique, gnie biomdical, EEG, ECG, radiographie, tomographie, scintigraphie,


gammagraphie, chographie, aide aux handicaps, ...

Acoustique, arienne, sous-marine, sonar, ultrasons, nuisances

Gophysique, sismique, de surface, ocanographique, tldtection

Electromagntisme, radar, radionavigation, optique, astrophysique

Automobile, injection lectronique, ABS, positionnement global, commande d'assiette


adaptative

Musique, numrique, MIDI, chantillonneurs (sampleurs), synthtiseurs, mlangeurs,


rverbration et cho, effets spciaux, filtrage, enregistrement (DAT)

Instrumentation, capteurs, mtrologie, analyse spectrale, gnration de signaux, analyses


de transitoires, DPLL

Graphisme et imagerie, rotation 3D, vision, reconnaissance de formes, restauration

d'images, stations de travail, animation, cartographie

13

Notes :

Glossaire du TNS

Saisie, acquisition, conversion (A/N, N/A), codage

Filtrage, FIR, IIR, convolution rapide, filtres spciaux

Reprsentation, modlisation, analyse spectrale, transformes

Compression, approximation, extrapolation, codage de source, rduction de dbit

Modulation, codage de canal, protection contre les erreurs, cryptage, garantique

Dtection, rception optimale, dmodulation, dcodage, correction

Estimation, paramtrique, estimation d'onde ou d'tat, filtrage, prdiction, lissage

Analyse de systme, modles de canaux, milieux de propagation

Amlioration, rduction de bruit, annulation d'cho, compensation, galisation

Dconvolution, imagerie, rsolution, dtection de source, restauration

Classification, reconnaissance, signatures

Apprentissage, estimation squentielle, adaptation, poursuite

Analyse temps frquence, non stationnarit, estimation de dlais, de phase

Traitement multi-frquences, dcimation, interpolation, filtrages en sous bandes

Arithmtique bit fini, quantification, dpassement, virgule fixe, flottante, bruits de calcul,
sensibilit des coefficients.

Architecture des systmes, DSP, ASIC, mmoire

Notes :

14

Caractristiques algorithmiques
Traitement temps rel
Temps d'excution de l'algorithme Tex guid par acquisition I/O
Priode d'chantillonnage Te
Priode des sorties Tf (frame period) > Tex
Ni plus vite ... ni plus lentement

(not faster ... not slower)

Signaux numriques : quantit importante de donnes


Donnes scalaires, vectorielles, matricielles, multidimensionnelles
Oprations I/O intensives par DMA

e(t)
Te

s(t)

Algorithme

Tf

Notes :

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

15

Notes

16

Notes :

Caractristiques algorithmiques
Charge de calcul importante
multiplications-accumulations (convolution)
multiplications-additions (FFT, DCT, adaptation,...)

Virgule Fixe ou Flottante


problmes lis la quantification !!!

Calculs d'adressage complexes


accs linaire, index
bit-reverse ou similaire (FFT)
vieillissement des donnes

Boucles de traitement courtes

17

Notes :

Fonctions typiques de TS
Filtrage, convolution
y = y + x.h

: MAC (multiplication-accumulation)

Adaptation
yn = yn-1 + x.h

: MAD (multiplication-addition)

FFT, multiplication complexe


xr = xr.wr - xi.wi
xi = xr.wi + xi.wr

Viterbi
a1 = x1 + x2; a2 = y1 + y2;
y = (a1>a2) ? a1 : a2

: ACS
18

Notes :

Solutions architecturales
Compromis performance - flexibilit

EE =

Pc
( MIPS / mW )
C

Pleiades
10-50 MOPS/mW

Embedded
Processor

Flexibility

2 V DSP
3 MOPS/mW

Efficacit nergtique :

SA110
0.4 MIPS/mW

100-1000 MOPS/mW

ASIC
DSP

ASIP
Embedded
FPGA
100

Notes :

Reconfigurable
Processor

Alpha
0.007 MIPS/mW

10

EE : Efficiency : MIPS / Watt

1
19

Solutions architecturales
Processeurs programmables du commerce (ISP)
Processeurs gnraux RISC, VLIW
Micro-contrleurs
Processeurs de Traitement du Signal (DSP)
Processeurs Multimdia

Processeurs programmables maison (ASIP)


De type DSP ou Ctrl

Processeurs et logique reconfigurables

18%

FPGA enfouis, Processeurs reconfigurables

Coprocesseurs ASIC
41%
41%
Proc. Prog (comm.)

Prog. Proc. (maison)

ASIC

20

Notes :

Caractristiques des DSP


Applications embarques et grand public
Trs faible cot
Le cot est proportionnel la surface du circuit

Faible consommation
Pmoy = . C . Vdd

.F

: facteur d'activit dfini comme le nombre moyen de transitions (0 1) pendant une


priode d'horloge.

Une partie importante de la consommation est lie la mmoire


Ncessit de minimiser la largeur des donnes et des instructions stockes en mmoire

Temps rel
Implmentation efficace des applications de TS

Sret de fonctionnement

21

Notes :

Exemple : GSM
Environ quivalant 60 MIPS
0110...
A/D

speech
decoder

channel
decoder

modulator

IF upc

D/A

user interface / control


RF
A/D

speech
coder

channel
coder

modulator

IF upc

D/A

1010...

synchronisation

Coprocessor, Hardware
DSP, ASIP, ASP
Controller
22

Notes :

Architecture Von Neumann


Les processeurs RISC
MEMORY DATA BUS

MEM. DATA
REGISTER

PC

ADDRESS
REGISTER

REGISTER
FILE

ALU

MUX

MEMORY ADDRESS BUS


23

Notes :
A typical data path of a RISC architecture is shown. It includes a register file with source
and destination latches, an ALU (arithmetic and logic unit) and a program counter (PC). A
RISC processor may also have additional registers for data and instruction addressing or
other control realted functions.
Most RISC designs use the same ALU to compute both algebraic operations and memory
addresses for load and store operations. The justification for such a design is that
because during load and store operations the ALU is not busy, such an implementation
does not cause any performance penalty.
[Bhaskaran 95]

Notes

24

Notes :

FIR sur machine Von Neumann


Problmes :
Bande passante avec la mmoire et gestion des pointeurs dadresse
Code pour le contrle
Multiplication lente
loop:
mov
mov
mpy
add
mov
inc
inc
inc
dec
tst
jnz

*r0,x0
*r1,x1
x0,x1,a
a,b
x1,*r2
r0
r1
r2
ctr
ctr
loop

Lecture des oprandes sources


Opration MAC

Data Path

Vieillissement de lchantillon
Gestion des pointeurs dadresse

Gestion de la boucle

Excution en 15 20 cycles

Notes :

Memory

25

Architecture Harvard
Bus et mmoires donnes/instructions spares
Unit de traitement de type mpy-acc
Registres distribus ( RISC register file)
Chaque module (ALU) possde ses propres registres locaux

Gnration adresses efficaces (AGUs)


Modes dadressage spciaux : auto incr-decr, circular buffering (delay
line) ...

in@2 in@1

in

26

Notes :
Because many DSP algorithms involve performing repetitive computations, most DSP
processors provide special support for efficient looping. Often, a special loop or repeat
instruction is provide which allows the programmer to implement a for-next loop without
expending any instruction cycles for updating and testing the loop counter or branching back
to the top of the loop.
Finally, to allow low-cost, high-performance input and output, most DSP processors
incorporate One Or more serial or parallel I/O interfaces, and specialized I/O handling
mechanisms such as low-overhead interrupts and direct memory access (DMA) to allow data
transfers to proceed with little or no intervention from the rest of the processor.
In some cases, system designers may prefer to use a general-purpose processor over a
DSP processor. Although general-purpose processor architectures often require several
instructions to perform operations done with just one DSP processor instruction, generalpurpose processors sometimes compensate by running at extremely fast clock speeds. If the
designer needs to perform non-DSP processing, then using a using a general-purpose
processor for both DSP and non-DSP processing could reduce the system parts count and
lower costs versus using a separate DSP processor and general-purpose microprocessor.
Furthermore, some popular general-purpose processors feature a tremendous selection of
application development tools.
On the other hand, because general-purpose processor architectures lack eatures that
simplify DSP programming, software development is sometimes more tedious than on DSP
processors and can result in awkward code that's difficult to maintain. Moreover, if generalpurpose processors are used only for signal processing, they are rarely cost-effective
compared to DSP chips designed specifically for the task. Thus, at least in the short run, we
believe that system designers will continue to use traditional DSP processors for the majority
of DSP intensive applications.

FIR sur DSP conventionnel


Jeu d'instructions complexe
T
loop:
acc=acc+P
// P=T*PM(*r0+)
// T=DM(*r1+)
jnz loop

Program
Memory

MULT
Data Path
P

Excution en 1 cycle

Data
Memory

ALU
ACC

Texas TMS320C25
27

Notes :

I.

Introduction

I.2

Types de signaux

Signaux mdicaux
EEG, ECG, Images IRM, Images scanner, ...

Signaux sismiques
Donnes
Statistiques, Bourse, ...

Signal de parole
Sons
Images
...
28

Notes :

Signal de Parole
Processus de phonation
Gnration d'une nergie ventilatoire
(poumons+trache)
Vibration des cordes vocales
Ralisation d'un dispositif articulatoire
(conduit vocal)

Cavit nasale
Glotte

Cavit buccale

Lvres

Cavit nasale
Conduit vocal
Larynx
Langue

Modle source filtre


29

Notes :
Le signal de parole est ralis au moyen dun appareil phonatoire non
initialement prvu pour cela. Il faut tout dabord une nergie ventilatoire
pour tre linitiateur du mouvement dair qui cre les ondes acoustiques et
qui cre par la mme occasion le mouvement oscillatoire des cordes
vocales ou au contraire qui les carte pour crer du bruit; cest le rle de la
soufflerie. Elle est compose des poumons qui sont le gnrateur dair et
du conduit tracho-bronchique. Ce souffle passe le larynx (o sigent les
cordes vocales) pour former londe glottique. Un dispositif carte ou
rapproche les cordes vocales selon quelles doivent vibrer ou non pour
obtenir le son. Si les cordes vocales sont rapproches, elles vibrent et
donnent un son dit vois (80% de la phonation), sinon on obtient un son
dit non vois. Ensuite, le pharynx, la langue et les parois se modifient et
forment un filtre possdant une certaine fonction de transfert qui modifie
londe glottique par convolution, ce qui donne, aprs rayonnement au
niveau des lvres, le signal de parole .

Signal de parole

Un son vois et son spectre (son eu )

Un son non vois et son spectre (son ch )

Notes :
On peut distinguer la nature du son (vois ou non) par son allure (temporelle et
frquentielle). Un son vois possde un signal pseudo priodique : son spectre contient
des harmoniques (nergie prsente dans les diffrentes frquences). Le premier
harmonique, qui reflte la frquence de vibration des cordes vocales est appel la
frquence fondamentale (F0) ou en anglais le pitch (de 80 100 Hz chez lhomme, de
175 300 Hz pour la femme et de 200 600 Hz chez lenfant). Lvolution de la
frquence fondamentale dtermine la mlodie de la parole [MAL,01].
Pour un son non vois, on obtient un signal qui ressemble un bruit possdant beaucoup
de hautes frquences : le fait de filtrer le signal par un passe-bas pour respecter le
thorme de Shannon fait quil devient plus difficile de distinguer des sons chuintants
comme ch et sh car leurs diffrences se situent justement dans les hautes
frquences.
Les spectres des figures 2.3 et 2.4 sont obtenus par le passage de londe glottique dans
la fonction de transfert du conduit vocal. On dfinit un formant comme le maximum de la
fonction de transfert du conduit vocal, mais les maxima de la fonction de transfert sont
excits par les composantes spectrales du signal glottique. Donc, les maxima du spectre
de la figure 2.3 correspondent peu prs aux formants.
Pour cataloguer et rfrencer les sons afin de les tudier, on utilise une base de donne
qui possde tous les sons simples : les lments de cette base sont appels
phonmes. Un phonme se dfinit rigoureusement comme tant la plus petite unit
susceptible de changer un mot en un autre : par exemple, [k] de car et [p] de par
sont des phonmes. Enfin, la mlodie de la parole lie la dure et lintensit des
syllabes sont les lments qui caractrisent la prosodie, qui sert entre autre la
comprhension syntaxique de la phrase (augmenter de faon significative la valeur du
pitch la fin dune phrase interrogative).

30

Signal de parole
Signal temporel
Aspects statistiques
Variabilit intra-individuelle
Variabilit inter-individuelle
Masquage temporel
Prosodie

Signal frquentiel

Amplitude (dB)
40
30

Structure formantique

20

Fondamental (pitch)

10

Harmoniques

Masquage frquentiel

0
-10
-20
0

Notes :

Frquences

Fe/2

31

Notes

32

Notes :

I.

Introduction

I.3

Applications

Tlcommunications : dtection de tonalit


Schma de dtection
de tonalit

BP Filter

Detector

697 Hz

BP Filter

Detector

770 Hz

BP Filter

Detector

852 Hz

697 Hz

LP Filter

Limiter

BP Filter

Detector

941 Hz

770 Hz

HP Filter

Limiter

BP Filter

Detector

1209 Hz

BP Filter

Detector

1336 Hz

BP Filter

Detector

1477 Hz

852 Hz

941 Hz

#
|G| (dB)

1209 Hz 1336 Hz 1477 Hz

Gabarit du filtre numrique

-0 dB

Frquences de tonalit du clavier numrique

-3 dB

-30 dB

FS1

FP1

Notes :

FP2

FS2

Fe
2

33

I.

Introduction

I.3

Applications

Voie MIC (PCM)


Parole chantillonne 8 kHz en bande limite 300-3400Hz sur
8 bits par une loi logarithmique (Rec. G711 du CCITT)
Dbit normalis de 64 kbit/s par voie numrique (MIC)

Codage de la parole
Le codage permet : soit d'augmenter le nombre de signaux par
voie (multiplexage temporel), soit d'largir la bande code (7kHz
pour audio et visioconfrence)
ADPCM : 32 kbit/s sans dgradation audible
s(n)

e(n)
CB

Q
s(n)

canal de
transmission

e'q(n)
DC

s' (n)

Q-1
s' (n)

Q-1

P
eq(n)

Notes :

s(n)

CB : codeur binaire
DC : dcodeur binaire
P : prdicteur
Q : quantificateur
Q-1: quantificateur inverse

34

I.

Introduction

I.3

Applications

Annulation d'cho

Rseau tlphonique utilisant les satellites gostationnaires (540ms)


Tlphone main libre en voiture (cho + bruit)
Tlconfrence
Rponse impulsionnelle de la salle
Effets : cho, Larsen, rverbration
Problme de dconvolution
Ambient
Noise
Microphone

to far end
speaker

+-

near end
speach

Ht

Computation
of coefficients
from far end
speaker

Reflections

Loud
speaker

Annulateur d'cho par filtrage adaptatif


35

Notes :

I.

Introduction

I.3

Applications

Compact Disc Audio


Echantillonnage 44,1 kHz sur 16 bits des deux voies : 1,41 Mbit/s

Information + correction d'erreurs, contrle et affichage : 4,32 Mbit/s


90 dB de rapport Signal Bruit et de sparation stro (contre 60 et 30 dB)
Buffer
Memory

Control /
Display
A/D
Converter

Parity
Coding

MUX

Modulator

Demodul

LP filter

Fe = 44.1 kHz
Conversion N/A classique

Filter

D/A

D/A
Lecture du systme Compact Disc

Encodeur du systme Compact Disc

D/A
16 bit
Converter
PCM

Error
Correction

16 bit
PCM
44.1 kHz

Digital
LP filter

D/A
Converter

LP filter

Fe = 176.4 kHz
En pratique : Surchantillonnage
36

Notes :

I.

Introduction

I.4

Notions de temps rel en TNS

Traitement par ligne


Flot de donnes ininterrompu
En entre : flot dchantillons sur N bits N.Fe bit/s par entre
En sortie : flot dchantillons sur N bits N.Fe bit/s par sortie
y(n) = f(X,Y,H,...)

x(n)

y(n)

TNS
X

Y
x(n)
x(n-1)

Entres courantes
et antrieures

Notes :

H
h(0)
h(1)

Coefficients
h(i), sin(t), ...

y(n)
y(n-1)

Sorties courantes
et antrieures
37

Exemple filtre FIR


quation aux diffrences
N 1

y ( n ) = ci . x ( n i ) = x ( n ) * h ( n ) avec
i =0

x(n)

h(i) = ci

h(i) = 0

i [0, N 1]
ailleurs

y(n)

Graphe Flot de Signal


x (n )

c0

zz-1-1

c1

zz-1-1

Notes :

cN 2

zz-1-1

cN 1

y (n )

38

Exemple filtre FIR


Traitement par ligne : code C ...

39

Notes :

Notes

40

Notes :

I.

Introduction

I.4

Notions de temps rel en TNS

Traitement par blocs


Xn

x(n)

3 phases

Yn = F(Xn,Yn,H,...)

x(n)
x(n-1)

Yn

TNS

Vecteur
de taille N

y(n)

y(n)
y(n-1)

Acquisition de Xn (Vecteur de taille N)


Traitement par blocs
Restitution de Yn

h(0)
h(1)

Les phases dacquisition dun traitement au suivant peuvent soit


x(n)

Xn

se recouvrir
N points

Xn+R
Xn+2R

Notes :

x(n)

tre jointives

Xn

Xn+N

x(n)

tre disjointes

Xn
Xn+2N

Xn+M

41

Exemple filtre FIR


Traitement par blocs : code C ...

42

Notes :

Cadence des calculs


Nv : nombre de voies traiter en parallle
Nop : quantit doprations lmentaires ncessaires

au TNS

Te

: priodicit du calcul

Puissance de calcul de la machine :


Pcalcul =

NV . N op

(en MIPS, MOPS ou MFlOps)

Te

Pcalcul = 2.B. NV . N op

B est la bande du signal

43

Notes :

Exemple : Convolution
Traitement ligne
y(n) =

N1

h(k).x(n k)

k= 0

Complexit pour un point y(n) : ??


Architecture ralisant une multiplication
accumulation en 1 cycle

Traitement blocs avec recouvrement de N-R chantillons


Yn

y( n) h(0 )
y(n1)
h( N 1)
=
y( n N+1) h(1)

H
h( 1)
h( 0)

h(1)

h( N1)

. Xn
h(N 1) x( n )

x( n1)
.

h( 0) x(nN +1)

Complexit pour un vecteur Yn :


Mme Architecture

Notes :

44

I. Processeurs de traitement du signal


1. Introduction
2. Description des diffrentes units
2.1. Unit de traitement
2.2. Unit de mmorisation
2.3. Unit de contrle
2.4. Unit de communication

3. Panorama des processeurs


4. Outils de dveloppement
Notes :

46

Le march des processeurs DSP


Les communications dominent : 76,4% des revenus en 2004
Systmes

grand public : DVD, TV et radio numrique, ...

Ordinateurs : asservissement des moteurs pour les disques durs, ...

Military
5%

Consumer
5%
Industrial
12%

(modem, xDSL)

Communications
51%
Computer
27%

[ICE97]

B. McCleanICE, Status 1997: A Report on the


Integrated Circuit Industry, Integrated Circuit
Engineering Corporation (ICE), Scottsdale, 1997

47

Notes :

Notes

48

Notes :

Le march des processeurs DSP


En haut de la liste des plus fortes croissances du

march de lindustrie des semi-conducteurs.


DSP Market Trends (M$)
14000
12000
10000
8000
6000
4000

2007

2006

2005

2004

2003

2002

2001

2000

1999

1998

1997

1996

1995

1994

1993

1992

2000

Prvisions Forward
Concept Co.
49

Notes :

Le march des processeurs DSP

(Lucent)

(Motorola)

Tendance du march :
vers des solutions intgration de curs de DSP

Notes :

50

Les diffrentes gnrations

Performances normalises

10000

Architecture VLIW
superscalaire

StareCore(300MHz)
TMS320C62x (300MIPS)
Carmel (300 MHz)

1000

Architecture
conventionnelle
DSP16210 (100 MIPS)
amliore

100

2me

DSP56301
TMS320C54x (50-100MIPS)
ADSP2183 (50MIPS)

gnration

DSP56001 (13MIPS)
ADSP21xx (13MIPS)
TMS320C50

10

1re gnration
TMS320C20 (5 MIPS)
TMS320C10 (2.5 MIPS)
1
1980

1982

1984

1986

3me gnration

Architecture
conventionnelle

1988

1990

1992

Anne

Notes :

4me gnration

1994

1996

1998

2000

2002

51

Modlisation dun processeur

Unit de contrle : I.P.


Unit de
traitement
D.P.

Unit de
mmorisation
I.M. + D.M.

Unit de communication : E.I.U

52

Notes :

Modlisation dun processeur


Unit de contrle (IP : Instruction Processor) : unit fonctionnelle
(UF) qui interprte les instructions et commande les autres UF

Unit de traitement (DP : Data Processor) : UF qui modifie ou


transforme les donnes

Unit de mmorisation:
IM : Instruction Memory : stocke les instructions
DM : Data Memory : stocke les donnes traites par le DP

Unit de communication (EIU : External Interface Unit) :


contrle les accs aux donnes ou instructions externes, ou d'autres
processeurs
53

Notes :

Architecture Von Neumann


Les processeurs RISC
MEMORY DATA BUS

MEM. DATA
REGISTER

PC

ADDRESS
REGISTER

REGISTER
FILE

ALU

MUX

DP

IP

IM - DM

MEMORY ADDRESS BUS

54

Notes :

FIR sur machine Von Neumann


Problmes :
Bande passante avec la mmoire et gestion des pointeurs dadresse
Code pour le contrle (gestion de la boucle)
Multiplication lente
loop:
mov
mov
mpy
add
mov
inc
inc
inc
dec
tst
jnz

*r0,x0
*r1,x1
x0,x1,a
a,b
x1,*r2
r0
r1
r2
ctr
ctr
loop

Lecture des oprandes sources


Opration MAC

Data Path

Vieillissement de lchantillon
Gestion des pointeurs dadresse

Gestion de la boucle

Excution en 15 20 cycles

Notes :

Memory

55

Notes

56

Notes :

Objectifs
Unit de traitement :
Raliser efficacement les traitements typiques en TNS
1 MAC par cycle

Unit de mmorisation :
Alimenter efficacement en donnes lunit de traitement afin de ne pas la
ralentir
Grer efficacement les pointeurs dadresse

Unit de contrle :
Gestion efficace des structures de contrle utilises en TNS : boucles
Encodage des instructions
Minimiser la taille des instructions
Encoder le maximum de paralllisme
57

Notes :

Caractristiques des DSP


Proprits du traitement
numrique du signal
Calculs intensifs et rptitifs

Primitives simples

Consquences sur les


architectures
Fonctionnement pipeline
Architecture Harvard
Structures de contrle
volues
Units de traitement
spcialises cbles
Gestion complexe de
ladressage

Le tout dans un environnement temps rel


58

Notes :

I. Processeurs de traitement du signal


1. Introduction
2. Description des diffrentes units
2.1. Unit de traitement
2.2. Unit de mmorisation
2.3. Unit de contrle
2.4. Unit de communication

3. Panorama des processeurs


4. Outils de dveloppement
Notes :

59

Exemple Fil Rouge


Filtre numrique FIR sur N points
N 1

y (n) = h(i ).x(n i ) = x(n) h(n)


i =0

x(n)
h(0)

h(1)

h(2)

h(3)

h(4)

x
y(n)

Cellule

Objectif : traitement dune cellule par cycle


60

Notes :

Reprsentation des donnes


Virgule fixe
Le format dune donne ne varie pas au cours du temps
Reprsentation : partie entire - partie fractionnaire
2m-1

21

20 2-1 2-2

S bm-1 bm-2

b1

b0

b-1 b-2

Partie entire

2-n
b-n+2 b-n+1 b-n

m 1

x = ( 2) S + bi 2i
m

CA2

i = n

Partie fractionnaire

Virgule flottante
Reprsentation : exposant - mantisse
S

dE-1

d1
Exposant

d0 cM-1

c2
Mantisse

c1

c0

1 M
x = 2u (1) S E + Ci 2i 1

2 i =1
E 1

avec u = (1) S E d i 2i
i =1

61

Notes :

Comparaison fixe - flottant


D ynamique virgule fixe/flottante
1500

Niveau de dynamique
DN ( dB )

max( x )
=
= 20. log

min( x )

D ynamique en dB

Virgule flottante
1000

500

Virgule fixe
0
10

15
20
25
Nombre de bits

30

Rapport S ignal B ruit virgule fixe/flottante


100

b =16 bits

Rapport Signal Bruit

dB

P
= 10. log s =
Pe

RS B en dB

de Quantification

80
60

Virgule flottante

40
20
0
-50

Virgule fixe

0
D ynamique du signal d entr e en dB

50

62

Notes :

DSP virgule fixe


Arithmtique :
Dynamique limite : [-Xmax et Xmax]
Possibilit de dbordement ncessit de recadrer les donnes

Dveloppement :

TMS320C62x
TMS320C62x ::
MHz (150 MHz - 300 MHz)
-- ffCLK :: 300
CLK 300 MHz (150 MHz - 300 MHz)
-- On
On Chip
Chip Memory
Memory 72
72 Kbytes
Kbytes
896
896 Kbytes
Kbytes
-- Price
Price :: $9
$9
102
102
TMS320C64x
TMS320C64x ::
-- ffCLK :: 11 GHz
GHz (300
(300 MHz
MHz -- 1GHz)
1GHz)
CLK
-- On
On Chip
Chip Memory
Memory 160
160 Kbytes
Kbytes
1056
1056 Kbytes
Kbytes
-- Price
:
$18

219
Price : $18 219

Temps de dveloppement plus long


tude la dynamique des donnes, dtermination du codage et des recadrages

Architecture :
Oprateurs plus simples
Largeur des donnes bnat : 16 bits
Efficacit nergtique plus importante, consommation moins importante
Processeur plus rapide
Processeur moins cher (surface du circuit moins importante)

March : applications grand public


95% des ventes en 96
63

Notes :

Notes

64

Notes :

DSP virgule flottante


Arithmtique :

Dynamique importante : 1500 dB pour 32 bits

TMS320C67x
TMS320C67x ::
MHz (100 MHz - 300 MHz)
-- ffCLK :: 300
CLK 300 MHz (100 MHz - 300 MHz)
-- On
On Chip
Chip Memory
Memory 72
72 Kbytes
Kbytes
264
264 Kbytes
Kbytes
-- Price
Price :: $14
$14
105
105

Dveloppement
Temps de dveloppement plus court
Recadrage des donnes assur par le processeur
Compilateur de langage de haut niveau plus efficace : plus grande portabilit

Architecture :
Largeur des donnes : 32 bits
Oprateurs plus complexes (gestion de la mantisse et de lexposant)
Processeur plus cher et consommant plus

March
Applications ncessitant une grande dynamique : audionumrique
Applications avec des faibles volumes
65

Notes :

Elments de lUT
Oprateurs
Multiplieur cbl
Multiplication en 1 cycle ou pipeline (1 rsultat de multiplication par cycle)
Le rsultat est fourni directement lUAL ou il est stock dans un registre (P register)
Largeur des oprandes

source : bnat
rsultat : bmult = 2.bnat

U.A.L.
Oprations arithmtiques : addition, soustraction, incrmentation, ngation
Oprations logiques : and, or, not
Largeur des oprandes

sources et destination identique badd 2.bnat

Additionneur indpendant de lUAL


Registres dcalage (recadrage des donnes)
spcialis : ralisation de quelques dcalages prdfinis en //
en barillet : ralisation d un dcalage quelconque en 1 cycle

66

Notes :

lments de lUT
Units de saturation ou darrondi
Units spcifiques
Unit de manipulation de bit, Viterbi, ...

Units de stockage de lUT


Registres oprandes
Stockage des oprandes sources ou des rsultats intermdiaires

Registres daccumulation
Stockage du rsultat de l additionneur
Nombre de registres daccumulation limit (1 4)
Donnes stockes en double prcision
Possibilit de bits de garde pour stocker les bits supplmentaires issus d accumulations successives
badd = bmult + bg

Bits de garde

bg

ACCH

ACCL
2.bnat
67

Notes :

Structure de lUT de type MAC


Oprateurs

Nbits Entres

Nbits Sortie

Multiplieur

bnat

2 b nat

2 b nat

2 b nat

2 b nat +b g

2 b nat +b g

2 b nat

b nat

2 b nat +bg

b nat

Additionneur/ UAL
Saturation/Arrondi

AA

BB

bnat

bnat

bmult
Registre

Nbits

Oprande source

b nat

Accumulateur

2 bnat
2 b nat +bg

Interconnexions
Interconnexions registres
registres -- oprateurs
oprateurs spcialises
spcialises

Structure
Structure htrogne
htrogne

Bonnes
Bonnes performances
performances en
en terme
terme
de
de consommation
consommation et
et de
de surface
surface

MAC

badd

Accumulateur
Accumulateur

Sat /Arr

68

Notes :

Exemple : TMS320C54x
DB

PB
CB DB

CB DB CBDB EB

1 multiplieur 16*16 bits


y Op source 1 : registre T
y Op source 2 : mmoire
y Op destination :

1 additionneur 40 bits
1 ALU (40 bits)

2 registres d accumulation 40
bits

1 registre dcalage en barillet

1 unit ddie l algorithme de


Viterbi

69

Notes :

I. Processeurs de traitement du signal


1. Introduction
2. Description des diffrentes units
2.1. Unit de traitement
2.2. Unit de mmorisation
2.3. Unit de contrle
2.4. Unit de communication

3. Panorama des processeurs


4. Outils de dveloppement
Notes :

70

Exemple FIR Fil Rouge


Les diffrents accs la mmoire:
Recherche de linstruction
Lecture de la donne xn-k
Lecture du coefficient hk
Vieillissement des donnes xn-k-1 = xn-k
D

x(n)
x
h(0)

x
h(1)

x
h(2)

x
h(3)

x
h(4)
y(n)

TAP

71

Notes :

Notes

72

Notes :

FIR sur machine Von Neumann


Problmes :
Bande passante avec la mmoire
Lecture des chantillons
Vieillissement des chantillons

Gestion des pointeurs dadresse


loop:
mov
mov
mpy
add
mov
inc
inc
inc
dec
tst
jnz

*r0,x0
*r1,x1
x0,x1,a
a,b
x1,*r2
r0
r1
r2
ctr
ctr
loop

Lecture des oprandes sources


Opration MAC

Data Path

Vieillissement de lchantillon
Gestion des pointeurs dadresse

Gestion de la boucle

Excution en 15 20 cycles

Notes :

Memory

73

Localisation des oprandes


Modle registre-mmoire
Oprandes situes en mmoire et dans les registres
Temps d excution de l instruction

Mmoire
tacc

tinst = tacc+ texec

texec

Oprateur
A

Modle Load-Store
Oprandes situes uniquement dans des registres
Temps d excution de l instruction

Mmoire
tacc
RRYY

RRXX

tinst = max(texec,,tacc)
Oprateur

texec

AA
74

Notes :

Architecture Harvard de base


Architecture Harvard : sparation de la mmoire

donnes et de la mmoire programme


Fetch d'instruction pipelin avec fetch oprande

DP

IP

Ex: TMS320C10

DM

IM

Classification de E. Lee (1989)75

Notes :

Modification 1
Autorisation de mmorisation de

donnes dans l'IM


En un cycle si 2 accs mmoire par

cycle

(tacc = 1/2.tinst) :

DP

IP

1-vers-2

fetch de linstruction
fetch deux oprandes de la mmoire
excution dun MAC

DM

IM/DM

criture du rsultat en I/O ou mmoire

AT&T DSP32 et DSP32C

76

Notes :

Modification 2

DM est une mmoire multi-

DP

IP

DM

IM

ports, plusieurs accs aux


donnes par cycle
Utilisable pour des mmoires

internes au CI

Fujitsu MB86232 (3 ports en mmoire interne)


77

Notes :

Modification 3

Cache pour charger les

DP

IP

1-vers-2

cache

DM

IM/DM

instructions frquentes
vite les conflits d'accs

donnes et instructions
de la modification 1

TMS320C25 :
DSP16 :
ADSP-2100 :

cache 1 instruction pour les boucles


cache 15 instructions
cache 16 instructions
78

Notes :

Modification 4
Deux mmoires donnes

DP

DM spares

IP

En un cycle :
fetch de linstruction

1-vers-2

fetch de deux oprandes (si les


temps d accs aux mmoires
DM1, DM2 et IM sont identiques)

DM 1

DM 2

IM

Motorola DSP 56001 et 96002


TMS320C30 et C40
79

Notes :

Notes

80

Notes :

Modle du C54x
Bus et mmoires internes :
Mmoire
Mmoire interne
interne

Program

Data
read
Data
read
Data
write

ROM
ROM ::
-- Bootloader
Bootloader
-- Utilisation
Utilisation dans
dans lespace
lespace data
data
ou
ou program
program
DARAM
DARAM (Dual
(Dual Acces
Acces RAM)
RAM)
-- 11 lecture
lecture ++ 11 criture
criture par
par cycle
cycle
SARAM
SARAM (Single
(Single Acces
Acces RAM)
RAM)
-- 11 lecture
lecture ou
ou 11 criture
criture par
par cycle
cycle

81

Notes :

Modes dadressage
Adressage immdiat : la donne est stocke directement dans
linstruction
Exemple C54x : LD #75h, A

A
A == 75h
75h

Adressage court (instruction sur 1 mot) : valeur spcifie sur 3,4,8 ou 9 bits
Adressage long (instruction sur 2 mots) : valeur spcifie sur 16 bits

Utilis pour l initialisation des registres


Inconvnient : augmentation du temps d excution et de la taille du code

Adressage registre directe : les donnes sont stockes dans


des registres
Exemple C54x SUB A, B

82

Notes :

Modes dadressage
Adressage mmoire directe : ladresse de la donne est
stocke dans linstruction
Adressage absolu : l adresse complte est stocke dans linstruction
C54x les adresses sont sur 16 bits
L instruction doit tre code sur plusieurs mots

Adressage pagin : pour limiter le nombre de bits stocks dans l instruction


ladresse est compose de deux parties :

a15

Partie stocke dans un registre


. pointeur de page: DP
. pointeur de pile: SP

a11 A10

9 bits

a9

a8

TMS320C54x

a0

7 bits

Partie stocke dans


linstruction
83

Notes :

Modes dadressage
Adressage indirecte par registre :
Registre dadresse (AR) pointant sur les donnes
LD *AR1, A

addr
addr == AR1
AR1 (A
(A
**AR1)
AR1)

Possibilits de post modifications :


linaire : AR:= AR 1

LD *AR1+, A

addr
addr == AR1
AR1
AR1
AR1 == AR1
AR1 ++ 11

index : AR:= AR MR

LD *AR1+0, A

addr
addr == AR1
AR1
AR1
AR1 == AR1
AR1 ++ AR0
AR0

MR: registre dindex


x0 x1
x2
x5

x3

modulo : (AR:= AR 1)N

LD *AR1+% ,A

addr
addr == AR1
AR1
AR1
AR1 == (AR1
(AR1 ++ 1)
1) modulo
modulo BK
BK
(BK) specifies the size of the circular buffer.

bit-reverse : FFT

LD *AR1+0B ,A

addr
addr == AR1
AR1
AR1
AR1 == bitrev(AR1
bitrev(AR1 ++ AR0)
AR0)

After access, AR0 is added to ARx with reverse carry (rc) propagation.
84

Notes :

Buffer circulaire et bit-reverse


Buffer circulaire :
Vieillissement automatique des donnes

lment courant
du buffer
lment
courant

xn-4 xn-3
xn-2
xn-1

xn-6

xn-3
xn-2
xn-1
xn
xxn+1
n-7
xn-6
xn-5
xn-4

Premier lment
du tableau

du buffer

N=8
Dernier lment
du tableau

xn
*AR1

Bit-Reverse :
. Adressage des donnes en entre ou en
sortie de la FFT
. Attention l adresse de dbut du tableau
: xxxx0000

In d e x

b it

b it re v e rs e

0
1
2
3
4
5
6
7

000
001
010
011
100
101
110
111

000
100
010
110
001
101
011
111

in d e x b it
re v e rs e
0
4
2
6
1
5
3
7

85

Notes :

Unit de gestion des adresses


Unit de gestion des adresses du TMS320C54x
y
y
y

8 registres auxiliaires
(AR0AR7)
2 units de calcul ARAU
registres spcifiques
y
y

BK : taille du buffer
circulaire
AR0 : registre d index

86

Notes :

I. Processeurs de traitement du signal


1. Introduction
2. Description des diffrentes units
2.1. Unit de traitement
2.2. Unit de mmorisation
2.3. Unit de contrle
2.4. Unit de communication

3. Panorama des processeurs


4. Outils de dveloppement
Notes :

87

Notes

88

Notes :

Pipeline
Excution de linstruction en plusieurs phases :
1. Recherche de linstruction
2. Dcodage de linstruction
3. Recherche des oprandes
4. Excution

i
Recherche
Instruction
Dcodage
Instruction
Recherche
Oprande
Excution

Inst n
- 1

i+1
Inst n
Inst n
- 1

i+2

i+3

i+4

Inst n+1
Inst n
Inst n
- 1

Inst n+1
Inst n
Inst n
- 1

Inst n+1
Inst n

89

Notes :

Codage des instructions


Stationnarit temporelle:
Une instruction dfinit lensemble des oprations raliser pour chaque
unit fonctionnelle
MULT R1,R2,T

ADD T,A,A

i
Transfert
mmoire .U.T.
Unit
Multiplieur
Unit
Accumulateur

LOAD

i+1

LD R1,AR1

i+2

i+3

LOAD

LOAD

MULT

MULT

MULT

ADD

ADD

LD R2,AR2

i+4

ADD

90

Notes :

Codage des instructions


Stationnarit des donnes:
Une instruction dfinit une squence complte doprations
raliser sur un ensemble de donnes.
MAC *AR1,*AR2

i
Transfert
mmoire .U.T.
Unit
Multiplieur
Unit
Accumulateur

LOAD

i+1

i+2

i+3

LOAD

LOAD

MULT

MULT

MULT

ADD

ADD

i+4

ADD

91

Notes :

Format des instructions


Compromis Maximiser
Minimiser la
largeur des instructions
le paralllisme

Diminuer la consommation
Augmenter lefficacit
et la surface mmoire & bus
du processeur

Abaisser les cots

Format encod: largeur minimale (16 32 bits)


Restrictions:
nombre d oprations disponibles
modes d adressage
oprandes sources et destination

Utilisation de bits de mode

Jeu dinstructions
htrogne
92

Notes :

Structures de contrle
Boucle matrielle
Optimiser le traitement des boucles de petite taille
Initialisation des paramtres de la boucle en 1 instruction
Pas d'instructions supplmentaires pour la gestion de la fin de la boucle

Exemple boucle mono-instruction


Boucle
logicielle

LOOP

MOVE
MAC
DEC
JNE

#16,B
(R0)+,(R4)+,A
B
LOOP

RPT
MAC

#16
Boucle
(R0)+,(R4)+,A matrielle

SPLK
RPTB
...

#16
C50
End-1
Loop body

Exemple boucle multi-instruction


DSP 56000

DO
...

#16,END
Loop body

End
End

93

Notes :

Structures de contrle
Instructions de branchement
Branchement multi-cycles: ajout de NOP entre BR et 1re instruction
Branchement retard : dplacement de linstruction de branchement BR

Instructions prdicat
Instructions conditionnelles du type :

If
Then
Else

[R1]
[!R1]

INF R1,R5,10
ADD R3,R2,3
ADD R3,R2,3

Instructions de mode
Dfinir un mode de fonctionnement spcifique
exemple : contrle dun registre dcalage, dune unit de saturation, ...

94

Notes :

Unit de contrle du C50

PC sur 16 bits
pile de 8 * 16 bits
PFC,IR: pour le pipeline

Registres de status ST0,ST1,PMST

Gestion des boucles


RPTC: repeat instruction
BRCR: repeat bloc

Interruptions :
IMR: masque interruptions
IFR: flags interruptions

BMAR: bloc move


GREG: mmoire globale

95

Notes :

Notes

96

Notes :

I. Processeurs de traitement du signal


1. Introduction
2. Description des diffrentes units
2.1. Unit de traitement
2.2. Unit de mmorisation
2.3. Unit de contrle
2.4. Unit de communication

3. Panorama des processeurs


4. Outils de dveloppement
Notes :

97

Priphriques
Priphriques intgrs:
ports sries
ports parallles
timers
DMA
gnrateur de wait state
host port
PLL

Connexion aise aux CAN et CNA :


les CAN/CNA ne sont gnralement pas intgrs dans les DSP afin de pouvoir
choisir un CAN/CNA en adquation avec lapplication

98

Notes :

I. Processeurs de traitement du signal


1. Introduction
2. Description des diffrentes units
2.1. Unit de traitement
2.2. Unit de mmorisation
2.3. Unit de contrle
2.4. Unit de communication

3. Panorama des processeurs


4. Outils de dveloppement
Notes :

99

DSP conventionnels
16-24 bits en virgule fixe, accumulation 40-60 bits
32 bits en virgule flottante
16 32 bits d'instructions
Une instruction par cycle, jeu d'instructions

complexe

Architecture non orthogonale, fortement contrainte


Mmoire accs multiples "on-chip"
Units ddies de gestion des adresses
Matriel ddi pour la gestion des boucles
100 millions de produits intgrent ces DSP

Notes :

100

Panorama des DSP


Texas Instrument
C2000 : virgule fixe 16 bits : contrle moteur
C5000 : virgule fixe 16 bits : faible consommation
OMAP : C55x + P ARM

C6000 : virgule fixe 16 bits (C67 flottant) : hautes performances

Analog Device
ADSP21xx : virgule fixe 16 bits
SHARC : virgule flottante 32 bits

Motorola
DSP560xx, DSP563xx : virgule fixe 24 bits : audionumrique
DSP566xx, DSP568xx : virgule fixe 16 bits
StareCore : virgule fixe 16 bits, hautes performances
101

Notes :

I. Processeurs de traitement du signal


1. Introduction
2. Description des diffrentes units
2.1. Unit de traitement
2.2. Unit de mmorisation
2.3. Unit de contrle
2.4. Unit de communication

3. Panorama des processeurs


4. Outils de dveloppement
Notes :

102

Cycle de dveloppement (1)


Besoin
Spcifications
opratoires

Spcification
Spcification
Spcifications
fonctionnelles

Spcifications
technologiques

Dfinition de
de
Dfinition
l'algorithme
l'algorithme

Simulation
Simulation

Gnration manuelle
ou automatique

Performances

Conception fonctionnelle
fonctionnelle
Conception
Description de
lalgorithme

Contraintes
Contraintes
temps
temps rel,
rel,
Consommation
Consommation
dnergie,
dnergie,
Flexibilit
Flexibilit

Partitionnement
Partitionnement

Implantation
Implantation
Logicielle
Logicielle

Implantation
Implantation
Matrielle
Matrielle

Implantation
Implantation

Vecteurs
Vecteurs
de
de test
test

Cot
Cot

103

Notes :

Notes

104

Notes :

Cycle de dveloppement (2)


#define pi 3.1416
#define pi 3.1416
main()
{
float x,h,z
for(i=1;i<n; i++)
{
*z = *y++ + *h++
}
for(i=1;i<n; i++)
{
*z = *y++ + *h++
}
Corre lator.C

Vecteurs
Vecteurs
de
de test
test

#define pi 3.1416
#define pi 3.1416
main()
{
float x,h,z
for(i=1;i<n; i++)
{
*z = *y++ + *h++
}

#define pi 3.1416
#define pi 3.1416
main()
{
float x,h,z
for(i=1;i<n; i++)
{
*z = *y++ + *h++
}
for(i=1;i<n; i++)
{
*z = *y++ + *h++
}
Corre lator.C

for(i=1;i<n; i++)
{
*z = *y++ + *h++
}

Modlisation de
haut niveau

Corre lator.C

Code C
virgule flottante

Conversion en virgule fixe

Gnration manuelle
ou automatique

Gnration manuelle
#define pi 3.1416
#define pi 3.1416
main()
{
float x,h,z
for(i=1;i<n; i++)
{
*z = *y++ + *h++
}
for(i=1;i<n; i++)
{
*z = *y++ + *h++
}
Corre lator.C

#define pi 3.1416
#define pi 3.1416
main()
{
float x,h,z
for(i=1;i<n; i++)
{
*z = *y++ + *h++
}
for(i=1;i<n; i++)
{
*z = *y++ + *h++
}
Corre lator.C

x (n )

Bruit blanc uniforme

y (n )

max ( y ( n ) ) = 3 . 4
n

x(n )

#define pi 3.1416
#define pi 3.1416
main()
{
float x,h,z
for(i=1;i<n; i++)
{
*z = *y++ + *h++
}
for(i=1;i<n; i++)
{
*z = *y++ + *h++
}
Corre lator.C

Code C
virgule fixe

y (n )

Bruit blanc gaussien

max
n

x (n )

( y ( n ) ) = 2. 4

y (n )

Chirp (0 Fe/2)

max ( y ( n ) ) = 9 .3
n

Gnration de code
(compilateur - linker)

Test & Debug


(Simulateur Emulateur HW)

Analyse

Performances

105

Notes :

Cycle de dveloppement (3)


Conception fonctionnelle
Spcifications du flot de donnes du TS,
Simulation, validation
Prototypage rapide
Matlab/Simulink (Mathworks), SPW (CoWare), Cossap (Synopsys), Ptolemy
(Universit de berkley)

Dveloppement du code
Implantation matrielle : code VHDL
Implantation logicielle : code C

106

Notes :

Cycle de dveloppement (4)


Implantation matrielle
Synthse du circuit
Simulation VHDL et validation
Analyse des performances

Test

Implantation logicielle
Gnration de code (compilateur C/ass, linker)
Test & Debug : validation du code
Analyse : mesure des performances

107

Notes :

Cycle de dveloppement (5)


Mise au point du logiciel - Debugging
Simulateur au niveau instruction
Mise au point avant que le matriel soit disponible

Emulation du Hardware
On-chip debugging/emulation : IEEE 1179.1 JTAG standard

Carte de dveloppement
Vrification temps rel de lalgorithme
Systme avec des faibles volumes de production

108

Notes :

Dveloppement logiciel
Assembly
Libraries
Assembler

Object Code
Libraries

Hardware Emulator
Simulator

Assembly
Code
Linker

C/C++
Libraries

C Compiler

Binary
Executable

Object Code

C/C++
Code

Debugger
DSP Development Board

Final Product
[Bier97]

109

The degree to which ease of system development is a concern depends on the application.
For example, users of a DSP-based rapid prototyping or simulation acceleration system in a
research environment will probably require tool.s that make system development as simple
as possible. On the other hand, a company developing a next-generation digital cellular
telephone may be willing to suffer with poor development tools and an arduous development
environment if the DSP chip selected shaves $5 off the cost of the end product. (Of course,
this same company might reach a different conclusion if the poor development environment
results in a three month delay in getting their product to market!)

Notes :

That said, items to consider when choosing a DSP are software tools (assemblers, linkers,
simulators, debuggers, compilers, code libraries, and real-time operating systems) hardware
tools (development boards and emulators), and higher-level tools (such as block-diagrainbased code-generation environments).
A fundamental question to ask when choosing a DSP is how the chip will be programmed.
Typically, developers choose either assembly language, a high-level language - such as C or
Ada - or a combination of both. Surprisingly, a large portion of DSP programming is still done
in assembly language. Because DSP applications often have voracious number-crunching
requirements, programmers are often unable to use compilers which generate assembly
code that executes slowly. Rather, programmers are often forced to endure long sessions
hand oplimizing assembly code to lower execution time and code size to acceptable levels.
This is especially true in consumer applications where cost constraints prohibit upgrading to
a higher-performance DSP processor or adding a second processor.
Users choosing high-level language compilers often find that the compilers work better for
floating-point DSPs than for fixed-point ones, for several reasons. First, most high-level
languages do not have native support for fixed-point arithmetic. Second, floating-point
processors tend to feature more regular, less restrictive instruction sets than smaller, fixedpoint processors, and are thus better compiler targets. Third, as mentioned, floating-point
processors typically support larger memory spaces than fixed-point processors, and are thus
better able to accomodate compiler-generated code, which tends to be larger than hand
crafted assembly code.
../..

Code Composer Studio

Application
design

Code & Build

. Choix de la cible
. Configuration de lOS DSP/BIOS
. Librairies :
- DSPLib
- TMS320 DSP Algorithm Standard

. IDE
. Gnrateur de code
. Compilateur C
. Compilateur assembleur
. Linker
. Gestionnaire de projet

110

Notes :

Code Composer Studio

Debug

Analyse

Simulateur
mulateur HW

Excution pas pas


Analyse de variables
Dclenchement sur vnements

. Visualisation de signaux
. Profiler (mesure du temps dexcution du code)
. Analyse temps rel (visualisation des tches du
DSP/BIOS)

111

Notes :

Notes

112

Notes :

Inefficacit des compilateurs C


Analyse du surcot associ au compilateur C : DSPStone
Sur cot temps d'execution

Sur cot taille du code

1200

[Ropers99]

400

350

ANSI C

1000
300

ANSI C
C modifi

600

Sur cot (%)

Sur cot (%)

C modifi

250

800

200
150

100

400
50
0

200

-50

0
ADSP21xx/
ADI

DSP56002/
Motorola

TMS320C51/ TMS320C54/ TMS320C62/


TI
TI
TI

-100
ADSP21xx/
ADI

Processeurs

DSP56002/
Motorola

TMS320C51/
TI

TMS320C54/
TI

TMS320C62/
TI

Processeurs

Meilleurs performances pour les DSP plus gnraux et les DSP virgule
flottante / architecture homogne
113

Notes :

Les raisons de linefficacit


Inadquation du langage C pour dcrire des applications TNS
Absence de support pour larithmtique virgule fixe
Extensions du langage C
Langage orient signal

Inefficacit des techniques classiques de dveloppement des

compilateurs (dveloppement du DSP puis du compilateur)

Inefficacit des techniques classiques de compilation qui ont


t dveloppes pour les architectures homognes
Les architectures des DSP conventionnels sont htrognes

Absence de support pour les spcificits des DSP


Registres dtat, modes dadressage (modulo, bit invers)...
114

Notes :

Dveloppement en C ou en assembleur
Dveloppement en assembleur :
Le code est optimis
Le code nest pas portable - demande du savoir faire

Dveloppement en C :
Plus abordable rapidement
Beaucoup moins performant et pas aussi simple ...
Conseils :
ne pas dclarer ses variables en float (chaque opration fera appel des routines de
la bibliothque de calcul en flottant)
dclarer les variables en int et les recadrages sont grs par des dcalages :
ncessit de connatre les conventions utilises par le compilateur
ex: renvoi d une donne en double prcision en mmoire

115

Notes :

Conclusion
L architecture des DSP conventionnels a t optimise afin

dimplanter efficacement les applications de TNS


Consquences :
Le cot et la consommation dnergie sont trs faibles
Les performances obtenues sont bonnes mais elles sont insuffisantes pour les nouvelles
applications :
Tlphonie de 3me gnration

Ncessit dutiliser des architectures nouvelles


Les compilateurs de langage de haut niveau sont peu efficaces

Les parties critiques de lapplication doivent tre codes la main en


assembleur

116

Notes :

volution des architectures


Augmentation du nombre doprations excutes par instruction
Architectures conventionnelles amliores : Multi-MAC
Capacits SIMD

Augmentation du nombre dinstructions excutes par cycle


VLIW
Superscalaires

Architectures clusterises
DSPs hybrides MCUs

117

Notes :

II. Arithmtique virgule fixe


1. Prsentation de larithmtique virgule
fixe
2. Processus de codage en virgule fixe
2.1. Dtermination de la dynamique
2.2. Dtermination de la position de la virgule
2.3. Dtermination de la largeur des donnes

3. Exemple dun filtre IIR cascad


118

Notes :

Codage en virgule fixe complment 2


2-n

Dfinition :

x = 2 m S + bi 2i

S bm-1 bm-2

b1

b0

b-1 b-2

pLSB

b-n+2 b-n+1 b-n

m
pMSB

i= n

-1

-2 2

m 1

m-1

Partie entire

Partie fractionnaire

m : distance (en nombre de bits) entre la position du bit le plus


significatif pMSB et la position de la virgule pV
n : distance entre la position de la virgule pV et la position du bit le
moins significatif pLSB
2m-1
0

-1

-2

b = m+ n+ 1 bits
format: (b,m,n)

m
pv

-3

-4

2-n
-5

S bm-1

-6

-7

b-6 b-7

pMSB

-8

-9

-10

b=8
m = -3
n=10

b-n+1 b-n

pLSB

ex:
ex: 0.09472
0.09472 (8,-3,10)
(8,-3,10)
01100001
01100001
-10
0.0625+0.03125+2
0.0625+0.03125+2-10

b
119

Notes :

Notes

120

Notes :

Codage en virgule fixe complment 2


Domaine de dfinition du codage :

[ 2

,2 m 2 n

n
Pas de quantification : q = 2

Exemple de codage :
(6,3,2), Q26

0111.11
0111.11 7.75
7.75
0111.10
0111.10 7.5
7.5
0000.11
0000.11
0000.10
0000.10
0000.01
0000.01
0000.00
0000.00
1111.11
1111.11
1111.10
1111.10
1111.01
1111.01

0.75
0.75
0.5
0.5
0.25
0.25
00
-0.25
-0.25
-0.5
-0.5
-0.75
-0.75

1000.01
1000.01 -7.75
-7.75
1000.00
1000.00 -8
-8

Notes :

-0.5 = -8+7. 5

-7.75 = -8+0.25
121

Rgles de larithmtique virgule fixe


Addition: z=x+y
Rgle : le format des oprandes x et y doit tre identique
tapes :
Choix dun format commun (bADD,mADD,nADD)

m ADD = max (m x ,m y )

Alignement de la virgule

n ADD = max (n x ,n y )

Extension des bits des oprandes a et b


0

1 1

mx
0

1 10

my

my

mz

0 x (7.75) format : (7,3,3)

nx

1 10 y (1.5)
0

format : (3,1,1)

ny
1

b ADD = m ADD + n ADD + 1

0 z (9.25) format : (8,4,3)

+ 1 si x + y D ADD
m
m z = ADD
si x + y D ADD
m ADD
n z = n ADD
bz = m ADD + n ADD + 1

nz
122

Notes :

Exemple de calcul
Addition: z=x+y
Dbordement possible si sign(x) = sign(y) = sxy
Dbordement prsent si sign(z) sxy
1

0 0 1 1 1 1 1 0

x (7.75)

format : (7,3,3)

0 0 0 0 0 1 0 0

y (0.5)

format : (2,0,1)

0 1 0 0 0 0 1 0

z (8.25)

format : (8,4,3)

Ncessit dun bit supplmentaire


pour coder le rsultat

0 1 1 1 1 1 0

x (7.75)

format : (7,3,3)

1 1 1 1 1 0 0

y (-0.5)

format : (2,0,1)

0 1 1 1 0 1 0

z (7.25)

format : (8,4,3)

S il n y a pas de dbordement la
dernire retenue peut tre ignore

123

Notes :

Rgles de larithmtique virgule fixe


Multiplication:

r=ab

Rgle : la reprsentation de a et b doit tre identique


tapes :
Extension des bits de signe des oprandes a et b
Doublement du bit de signe du rsultat

Le bit redondant peut tre intgr la partie entire du rsultat


-20 2-1

0
-21

2-2

0 0 0 1 1 1

my
0

mz
-2-2

x (0.5)

0 0 1

format : (2,0,1)

nx
y (1.75)

format : (4,1,2)

ny
1

z (0.875)

format : (6,2,3)

nz = nx + n y
mz =m x +m y + 1
bz = b x + b y

nz
2-3

124

Notes :

Exemple de calcul
Multiplication:

r=ab

Extension du signe des oprandes


2-3

1 1 1 0

x (-0.5)

format : (4,0,3)

0 0 1 1

y (0.75)

format : (4,0,3)

0 0

1 1

0 0
1

0 0 0

1 1

1 0 0

1 1

1 1

0 0

0 0

0 0

2-1

.0

z (-0.375)

format : (8,1,6)

2-6

Bit de signe
Bit de signe redondant

125

Notes :

Rsum des rgles


Addition
Choix du format commun :
x

bin

+
y

z
bout

bin

Multiplication

si bout > bin alors m ADD = max (m x ,m y )

nz = nx + n y

si bout = bin alors m ADD = max (m x ,m y ,m z )

mz =m x +m y + 1

Doublement
du bit de signe

bz = b x + b y
126

Notes :

Processus de codage
x
Dx

fQ(fD(x))
Processus de codage

y
Dy

Loi de dpassement fD(x)

Xmax

fD(x)

Xmax

Xmin

Xmin
Xmax

(b)
Xmin

Xmin

Modulaire (b)

fQ(x)

xi
ui ui+1

Loi de quantification fQ(x)


Arrondi (c)

fQ(x)

ui ui+1

x
(c)

Troncature (d)
e(x)= x-y

Xmax

(a)

Saturation (a)

Erreur de quantification

fD(x)

(d)
e(x)

e(x)
xi
ui ui+1

ui ui+1

127

Notes :

Notes

128

Notes :

II. Arithmtique virgule fixe


1. Prsentation de larithmtique virgule fixe
2. Processus de codage en virgule fixe
2.1. Dtermination de la dynamique
2.2. Dtermination de la position de la virgule
2.3. Dtermination de la largeur des donnes

3. Exemple dun filtre IIR cascad

129

Notes :

Codage des donnes


Codage des donnes en virgule fixe :
Dfinir la position de la virgule :
Nombre de bits pour la partie entire et pour la partie fractionnaire
-2m 2m-1
S bm-1 bm-2

21

20 2-1

b1

b0

m
Dynamqiue

Garantire labsence
de dbordement

Partie entire

2-n

b-1 b-2

b-n+2 b-n+1 b-n

Partie fractionnaire

Respecter les rgles de


larithmtique virgule fixe

Prcision

Maximiser la
prcision des calculs
RSBQ (Rapport Signal Bruit de
Quantification)
130

Notes :

Les diffrentes tapes du codage


Dtermination du domaine de dfinition : D(xi)
Valeur minimale et maximale des donnes

Dtermination de la position de la virgule mxi

Nombre de bits minimal pour reprsenter la partie entire permettant


dviter les dbordements

Dterminer et optimiser la largeur des donnes bxi


Utiliser au mieux larchitecture

valuation de la prcision de lalgorithme :


Calcul du Rapport Signal Bruit de Quantification (cf. TNS partie 2)
131

Notes :

Mthodologie de codage
Application

Dtermination
Dtermination
de
de la
la dynamique
dynamique

Dtermination
Dtermination de
de la
la
position
position de
de la
la virgule
virgule

valuation
valuation
de
de la
la prcision
prcision

Synthse
Synthse de
de
larchitecture
larchitecture

Optimisation
Optimisation
de
de la
la largeur
largeur
des
des donnes
donnes

RSBQ

Selection
Selection
Scheduling
Scheduling
Allocation
Allocation

Optimisation
Optimisation
du
du format
format des
des
donnes
donnes

Gnration
Gnration
de
de code
code
Instruction
Instruction selection
selection
Register
Register allocation
allocation
Scheduling
Scheduling
Optimisation
Optimisation

RSBQmin
Code VHDL

Implantation matrielle : FPGA, ASIC

Contrainte de prcision
associe a lapplication

Code assembleur

Implantation logicielle : DSP, C


132

Notes :

Fil rouge : filtre FIR


float x[N] = {0.123, -0.569,...} /* Dfinition du signal d entre du filtre */
float h[N] = {0.2, 0. ,.., 0.2 }; /* Dfinition des coefficients du filtre*/
int main()
{
float x[N], y[M], acc;
int i,j;
for(i=0; i<N; i++){x[i] = 0;}

/* Initialisation des variables internes du filtre */

for(j=0;

/* Filtrage du vecteur d'entre input */

j<M; j++)

{
x[0] = Input[j];
acc = x[0]*h[0] ;

for(i=N-1; i>0; i--)


{
acc = acc + x[i]*h[i];

/* Calcul d'une cellule du filtre */

x[i] = x[i-1];

/* Vieillissement des variables internes du filtre */

}
y[j] = acc;
}
}

133

Notes :

Fil rouge : filtre FIR


Graphe Flot de Signal du filtre FIR

x(n)

c0

zz-1-1

c1

zz-1-1

cN 2

zz-1-1

cN 1

y (n)

134

Notes :

II. Arithmtique virgule fixe


1. Prsentation de larithmtique virgule fixe
2. Processus de codage en virgule fixe
2.1. Dtermination de la dynamique
2.2. Dtermination de la position de la virgule
2.3. Dtermination de la largeur des donnes

3. Exemple dun filtre IIR cascad

135

Notes :

Notes

136

Notes :

Dtermination de la dynamique

Dtermination
Dtermination
de
de la
la dynamique
dynamique
Dtermination
Dtermination de
de la
la
position
position de
de la
la virgule
virgule

Format des donnes: (b,m,n)

Dtermination
Dtermination et
et
optimisation
optimisation de
de de
de la
la
largeur
largeur des
des donnes
donnes

2-n
m

m-1

S bm-1 bm-2

b1

-2 2

-1

b0

b-1 b-2

Partie entire

b-n+2 b-n+1 b-n

m
pMSB

pLSB

Partie fractionnaire

But: dterminer le nombre de bits minimal pour reprsenter la


partie entire (mxi)

m xi = log 2 (max ( xi

))
137

Notes :

Mthodes pour dterminer D(xi)


Mthodes statistiques :
Simulation de lalgorithme en virgule flottante
Dtermination de la dynamique partir des paramtres statistiques
du signal
Estimation prcise mais dpendante du signal dentre

Mthodes analytiques :
Dtermination de lexpression de la dynamique
Utilisation de la norme L1
Estimation conservatrice mais labsence de dbordement est garantie

138

Notes :

Mthodes analytiques
Normes dans le cas des systmes linaires
Norme L1:

X(z)

H(z)

Y(z)

Mthode garantissant labsence


de dbordement

ymax1 = max n ( x(n) ). h(m)


m =

Norme Chebychev

ymax 2 = max n ( x(n) ) max ( H ( ) )

Mthode garantissant labsence de


dbordement pour un signal dentre
bande troite ( x(n)=cos(wt) )

Norme L2

ymax 3 = max n ( x(n) ).

h ( m)

m =

Mthode limitant la probabilit


de dbordement

ymax 3 ymax 2 ymax1


139

Notes :

Filtre FIR
Propagation de la dynamique des entres au sein du

GFS reprsentant lapplication


x(n)

] 1,1[

c0

zz-1-1

] c0 , c0 [

c1

zz-1-1

] c N 2 , cN 2 [

] c1 , c1[

+
Normes L1

cN 2

zz-1-1

cN 1

N 1 N 1
ci , ci
i =0
i =0

] cN 1 , cN 1[

N 1

m =

m =0

y (n)

max n ( y ( n ) ) = max n ( x ( n ) ). h ( m ) = ci = 10.65

Notes :

140

Dynamique dans un systme cascad


Dynamique de la sortie y2
H 1 ( z ).H 2 ( z )
H1 ( z )
x(n)

H1(z)

H1 (e j )

y1(n)

H2(z)

y2(n)

H 2 (e j )

H12 (e j ) = H1H 2 (e j )

141

Notes :

Dynamique dans un filtre IIR


Sources de dbordement : additionneurs
Filtre IIR forme directe II: 2 sources ADD0 et ADD1
Forme directe II

wn

ADD 0

xn

ADD 1

w( n ) = x ( n ) a1 y ( n 1) a2 y (n 2)
wmax1 = xmax . hD ( m )
m =

H D ( z) =

1
1 + a1 z 1 + a2 z 2

-a1

yn

b0

z-1

b1

z-1

-a2

ymax1 = xmax . h(m)


m =

b2

H ( z) =

b0 + b1 z 1 + b2 z 2
1 + a1 z 1 + a2 z 2

142

Notes :

Exemple : filtre IIR directe II


Filtre H(z)

0.5 0.2428 z 1 + 0.5


H ( z) =
1 0.85 z 1 + 0.8417 z 2

xmax

Norme L1

h(m) = 2.5645 m

m =

xmax

m =

( m) = 9

=2

mw = 4
F iltre1 N um (z )/D en(z )

2
1.5

Norme Chebychev

H(jw)

1
0.5
0
0

0.5

1.5

2.5

3.5

3.5

F iltre 1/D en(z )


8

Fonction de transfert des


filtres H(z) et HD(z)

6
4

HD(jw)

2
0
0

Notes :

0.5

1.5

2.5

143

Notes

144

Notes :

Exemple : filtre IIR directe II


Comparaison des diffrentes mthodes
Mthodes

G1.max

N1

G2.max

N2

Mthodes analytiques
Norme L1

2,56

Norme Chebychev

1.687

7,13

Mthodes statistiques
Chirp

1,66

7.12

Bruit blanc gaussien

0.74

2.34

Bruit blanc uniforme

1.4

4.87

G1max =

ymax
xmax

N1 = log 2 (G1max )

G2 max =

wmax
xmax

N 2 = log 2 (G2 max )


145

Notes :

II. Arithmtique virgule fixe


1. Prsentation de larithmtique virgule fixe
2. Processus de codage en virgule fixe
2.1. Dtermination de la dynamique
2.2. Dtermination de la position de la virgule
2.3. Dtermination de la largeur des donnes

3. Exemple dun filtre IIR cascad

146

Notes :

Obtention de la position de la virgule

Dtermination
Dtermination
de
de la
la dynamique
dynamique
Dtermination
Dtermination de
de la
la
position
position de
de la
la virgule
virgule

Objectifs du codage en virgule fixe


Respect des rgles de larithmtique virgule fixe

Dtermination
Dtermination et
et
optimisation
optimisation de
de de
de la
la
largeur
largeur des
des donnes
donnes

Alignement de la virgule des oprandes sources dune addition


ou dune soustraction
Format commun pour les oprandes sources

Prvenir les dbordements


Recadrage des donnes : adapter le format des donnes la dynamique des
donnes
Dbordement possible lors dune addition ou dune soustraction
Ncessit dintroduire des bits supplmentaires

147

Notes :

Rgles pour la position de la virgule


Donne x :

mx = log 2 (max n ( x ( n ) ))
Multiplication : format de la sortie

mz = mx + m y
Addition : choix dun format commun

m ADD = max( mx , m y , mz )
148

Notes :

Rgles pour la position de la virgule


Additionneur avec bit de garde
Changement de rfrentiel
garde disponible

Sx

Bg

Sy

Sy

Sz

bmx-1

b0

b-1

b-2

b-n

rapport au

bit le plus significatif de y

m y ' : position de la virgule de y dans le


bmy-1

Sy

gy
Sz

m y : position de la virgule de y par

mx

Nombre de bit de

b0

my

bmz-1

gz

b-2

b-n

rfrentiel commun

m y = m y g y

my'
b0

mz

b-1

b-1

b-2

b-n

mz = mz g z

mz '

m ADD = max( mx g x , m y g y , mz Bg )
149

Notes :

Cas du filtre FIR


Architecture sans bit de garde
x(n i )
zz-1-1

mx = 0

ci

mc = 1

S S

>> 4

S S

mMULT = 0

S S S S S S

>>
>>

+
S

S S S S S S

m ADD = 4

y (n )
S

Renvoi en mmoire
en simple prcision

150

Notes :

Cas du filtre FIR


Architecture avec 8 bits de garde
x(n i )
zz-1-1

mx = 0

mc = 1

ci

S S

mMULT = 0

m ADD = 4

S S S S S

Ng = 8 (8 bits de garde)

S S

S S S S S

y (n )

S S S S S

g ACC = 4

>> 4

m ACC = 4
S

Renvoi en mmoire
en simple prcision

151

Notes :

Notes

152

Notes :

II. Arithmtique virgule fixe


1. Prsentation de larithmtique virgule fixe
2. Processus de codage en virgule fixe
2.1. Dtermination de la dynamique
2.2. Dtermination de la position de la virgule
2.3. Dtermination de la largeur des donnes

3. Exemple dun filtre IIR cascad

153

Notes :

Optimisation de la largeur

Dtermination
Dtermination
de
de la
la dynamique
dynamique
Dtermination
Dtermination de
de la
la
position
position de
de la
la virgule
virgule
Dtermination
Dtermination et
et
optimisation
optimisation de
de de
de la
la
largeur
largeur des
des donnes
donnes

Implantation logicielle
Architectures traditionnelles : oprateurs de largeur unique
Architectures volues : diffrents types de donnes sont supports

Implantation matrielle
Objectif : optimiser la largeur des oprateurs

154

Notes :

AA

Cas du filtre FIR

BB

16 bits

32 bits

Architecture double prcision

32 bits

(sans bit de garde)

32 bits

Accumulateur
Accumulateur

(16,0,15)

x(n)

zz-1-1

16 bits

Dplacement
vers lentre

c0

16 bits

Dplacement vers
les coefficients

(16,-1,16)

c1

zz-1-1

cN 1

(32,0,31)

32 bits

>>
>>

cN 2

zz-1-1

>>
>>

>>
>>

>>
>>

(32,4,27)

32 bits

(16,4,11)

32 bits

(32,4,27)

16 bits

y (n)

155

Notes :

Recadrage des donnes dans un FIR


c Recadrage
externe

x (n)

b0

d Recadrage des
coefficients

z-1

>>

>>

b1

z-1

>>

bN-2

z-1

>>

bN-1

>>

>>

>>

>>

>>

Renvoi en
mmoire
du rsultat

y (n)

Filtre FIR

>>

e Recadrage
interne

156

Notes :

Sources de bruit dans un FIR


Bruit de quantification associ lentre
Bruit li au recadrage externe c
Bruit li au renvoi en
mmoire du rsultat

bx
x (n)

b0

z-1

b0
bgm0

b1

z-1

b1
bgm1

z-1

bN-2 +

b N-2
+

bN-1 +

b N-1

bgm N-2

bgm N-1 +
bg mem

Filtre FIR
Biais li au codage
des coefficients d

y (n)

Bruit li au recadrage interne e

157

Notes :

Filtre FIR : code C virgule fixe


int Input[M] = {-809, -6180, -1570, ...}

/* Signal x, codage (16,0,15)*/

int c[N] = {13107, 14336, 15565, ..., 13107, 14336};


int main()

*/

Le
Le signal
signal dentre
dentre et
et les
les coefficients
coefficients sont
sont spcifis
spcifis au
au niveau
niveau du
du code
code C
C en
en entiers
entiers
sur
sur 16
16 bits
bits (absence
(absence de
de type
type virgule
virgule fixe
fixe en
en C)
C) ::
15
lentier
lentier reprsentant
reprsentant Input
Input (16,0,15)
(16,0,15) est
est obtenu
obtenu en
en multipliant
multipliant Input
Input par
par 2215
16
lentier
lentier reprsentant
reprsentantcc (16,-1,16)
(16,-1,16) est
est obtenu
obtenu en
en multipliant
multipliant cc par
par 2216

{
int x[N]; y[M];
long

/* Coefficients (16,-1,16)

acc;

int i,j;
for(i=0; i<N; i++){x[i] = 0;}
for(j=0;

j<M; j++)

/* Initialisation des variables internes du filtre */

/* Filtrage du vecteur d'entree input */

{
x[0] = Input[j];
acc = (long)(x[0]*c[0]) >> 4;
Recadrage
Recadrage de
de la
la sortie
sortie de
de la
la multiplication
multiplication ::
changement
changement de
de format
format :: (32,0,31)
(32,0,31)
(32,4,30)
(32,4,30)

for(i=N-1; i>0; i--)


{
acc = acc + ((long)(x[i]*c[i]) >> 4);
x[i] = x[i-1];

/* Calcul d'une cellule du filtre */

/* Vieillissement des variables internes */

}
y[j] = (int)(acc>>16);
}
}

Notes :

Rduction
Rduction de
de la
la largeur
largeur de
de la
la variable
variable 32
32 bits
bits
16
16 bits
bits
Rcupration
Rcupration des
des 16
16 bits
bits les
les plus
plus significatifs
significatifs de
de la
la donne
donne (l(lopration
opration de
de
cast
castsur
sur acc
accpermet
permetde
dercuprer
rcuprerles
lesbits
bitsde
depoids
poidsfaible
faibleuniquement)
uniquement)

158

II. Arithmtique virgule fixe


1. Prsentation de larithmtique virgule fixe
2. Processus de codage en virgule fixe
2.1. Dtermination de la dynamique
2.2. Dtermination de la position de la virgule
2.3. Dtermination de la largeur des donnes

3. Exemple dun filtre IIR cascad

159

Notes :

Rfrences

O. Sentieys Processeurs de traitement du signal (DSP) : tat de l'art, applications,


volution et perspectives, cole thmatique du CNRS, Seix (Arige), 20-23 novembre 2000.

P. Laspley, J. Bier, E. Lee, DSP Processor Fundamentals, IEEE Press, 1996, ISBN 0-78033405-1

G. Baudoin, F. Virollau Les DSP, Famille TMS320C54x, Dveloppement d applications,


2000, Dunod, ISBN 2-10-004646-2

[ICE97] B. McClean ICE, Status 1997: A Report on the Integrated Circuit Industry,
Integrated Circuit Engineering Corporation (ICE), Scottsdale, 1997

[Bier97] J. Bier, P. Lapsley & G. Blalock, Choosing a DSP Processor, Berkeley Design
Technology (BDT), 1997.

[Lapsley96] P. Lapsley and G. Blalock, How to Estimate DSP Processor Performance,


IEEE Spectrum, July 1996.

[Ropers99] A. Ropers and al., "DSPstone : TI C54x" Report IISPS AAchen University of
Technology, 1999.
160

Notes :

Das könnte Ihnen auch gefallen