Vous êtes sur la page 1sur 162

Electronique

et Informatique Industrielle 2nde annee - EII2


29 septembre 2014

Traitement Num
erique du Signal
Polycopi
e de cours

Olivier Sentieys
ENSSAT - Universit
e de Rennes 1
olivier.sentieys@enssat.fr
http://www.irisa.fr/cairn
6 Rue de Kerampont - CS 80518
22305 LANNION - France

IRISA ENSSAT
Institut de Recherche en Informatique et Syst`
emes Al
eatoires

Ecole
Nationale Sup
erieure de Sciences Appliqu
ees et de Technologie
Technop
ole Anticipa Lannion

ii

Table des mati`


eres
Introduction
Remarques sur la notation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Presentation du document . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Utilisation de Matlab et Scilab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1 Filtrage num
erique
1.1 Introduction au filtrage numerique . . . . . . . . . . . . . . . . .
1.2 Representation dun filtre numerique . . . . . . . . . . . . . . . .
1.3 Specification dun filtre numerique . . . . . . . . . . . . . . . . .
1.3.1 Specifications des filtres passe-bas et passe-haut . . . . . .
1.3.2 Specifications des filtres passe-bande et rejecteur-de-bande
1.4 Classification des filtres numeriques . . . . . . . . . . . . . . . . .
1.4.1 Filtres recursifs RII . . . . . . . . . . . . . . . . . . . . .
1.4.2 Filtres non recursifs RIF . . . . . . . . . . . . . . . . . . .
1.5 Analyse frequentielle des filtres numeriques . . . . . . . . . . . . .
1.6 Structures des filtres RII et RIF . . . . . . . . . . . . . . . . . . .
1.6.1 Structure des filtres RIF . . . . . . . . . . . . . . . . . . .
1.6.2 Structure des filtres RII . . . . . . . . . . . . . . . . . . .
2 Synth`
ese des filtres RII
2.1 Introduction et rappels en filtrage analogique
2.1.1 Introduction . . . . . . . . . . . . . .
2.1.2 Rappels en filtrage analogique . . . .
2.2 Methode de linvariance impulsionnelle . . . .
2.3 Transformation dEuler . . . . . . . . . . . .
2.4 Transformation bilineaire . . . . . . . . . . .

.
.
.
.
.
.

3 Synth`
ese des filtres RIF
3.1 Introduction . . . . . . . . . . . . . . . . . . .
3.2 Filtres `a phase lineaire . . . . . . . . . . . . . .
3.2.1 Filtre RIF `a phase lineaire de type I . .
3.2.2 Filtre RIF `a phase lineaire de type II . .
3.2.3 Filtre RIF `a phase lineaire de type III . .
3.2.4 Filtre RIF `a phase lineaire de type IV . .
3.3 Methode de synth`ese par fenetrage . . . . . . .
3.3.1 Caracteristiques des principales fenetres
1

.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.

3
4
4
4

.
.
.
.
.
.
.
.
.
.
.
.

5
5
6
8
9
9
10
10
11
12
12
12
14

.
.
.
.
.
.

17
17
17
17
21
22
24

.
.
.
.
.
.
.
.

29
29
29
31
31
32
32
34
36

3.4

3.3.2 Choix de la fenetre dans la methode de synth`ese . . . . . . . . . . . . . . 37


Methode de synth`ese par echantillonnage en frequence . . . . . . . . . . . . . . . 39

4 Transform
ee de Fourier Rapide
4.1 Naissance de la TFR . . . . . . . . . . . . . . . . . . . . . . .
4.2 TFR partagee dans le temps (DIT) . . . . . . . . . . . . . . . .
4.3 TFR partagee dans les frequences (DIF) . . . . . . . . . . . . .
4.4 Autres graphes de la TFR . . . . . . . . . . . . . . . . . . . . .
4.5 Annexes au chapitre sur la TFR . . . . . . . . . . . . . . . . . .
4.5.1 Graphe dune TFR DIT radix 2 sur 16 points . . . . . .
4.5.2 Graphe dune TFR DIF radix 2 sur 16 points . . . . . .
4.5.3 Graphe dune TFR `a geometrie constante sur 16 points .
4.5.4 Graphe dune TFR DIF radix 4 sur 16 points . . . . . .
4.5.5 Algorithme DIF de la TFR radix 2 sur I points complexes

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

41
41
42
45
46
48
48
49
50
51
52

5 Analyse spectrale de signaux num


eriques
5.1 Introduction . . . . . . . . . . . . . . . . . . . .
5.2 Troncature dun signal discretise . . . . . . . . .
5.2.1 Operation dans le domaine temporel . . .
5.2.2 Consequences dans le domaine frequentiel
5.3 Analyse spectrale par TFD . . . . . . . . . . . .
5.4 Zero-Padding . . . . . . . . . . . . . . . . . . .
5.5 Param`etres dune analyse spectrale . . . . . . . .
5.6 Conclusion (methodologie) . . . . . . . . . . . .

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

55
55
55
55
56
56
58
59
62

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

6 Syst`
emes multi-cadences
6.1 Reduction de la frequence dechantillonnage . . . . . .
6.2 Augmentation de la frequence dechantillonnage . . . .
evateur de frequence dechantillonnage . . . .
6.2.1 El
6.2.2 Interpolation . . . . . . . . . . . . . . . . . . .
6.2.3 Multiplication de la frequence dechantillonnage

.
.
.
.
.
.
.
.

. .
. .
. .
. .
par

7 Arithm
etique virgule fixe
7.1 Presentation de larithmetique virgule fixe . . . . . . . .
7.1.1 Les differents types de codage . . . . . . . . . .
7.1.2 Definition des r`egles de larithmetique virgule fixe
7.1.3 Multiplication en binaire `a base de decalage . . .
7.2 Codage en virgule fixe . . . . . . . . . . . . . . . . . . .
7.2.1 Determination de la dynamique des donnees . . .
7.2.2 Determination de la position de la virgule . . . .
7.2.3 Determination de la largeur des donnees . . . . .
7.3 Evaluation de la precision . . . . . . . . . . . . . . . . .
7.3.1 Processus de quantification et de depassement .
7.3.2 Modelisation du bruit . . . . . . . . . . . . . . .
7.3.3 Filtrage du bruit . . . . . . . . . . . . . . . . .
7.4 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . .
7.4.1 Description de lapplication . . . . . . . . . . . .
2

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

. . . . . .
. . . . . .
. . . . . .
. . . . . .
un facteur

. . . . .
. . . . .
. . . . .
. . . . .
rationnel

.
.
.
.
.

.
.
.
.
.

65
65
66
68
69
69

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

71
71
71
78
80
83
85
92
99
103
103
105
111
116
117

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

1
7.4.2
7.4.3
7.4.4

Determination de la specification virgule fixe . . . . . . . . . . . . . . . . . 117


Code C de lapplication . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
Evaluation de la precision . . . . . . . . . . . . . . . . . . . . . . . . . . . 121

8 Processeurs de traitement du signal


8.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.1.1 Les solutions architecturales . . . . . . . . . . . . . . . . . .
8.1.2 Domaine dapplication des processeurs de traitement du signal
8.2 Description de lunite de traitement . . . . . . . . . . . . . . . . . .
8.2.1 Representation des donnees . . . . . . . . . . . . . . . . . . .
8.2.2 Presentation des differents elements du chemin de donnees . .
8.2.3 Architecture des chemins de donnees . . . . . . . . . . . . . .
8.3 Description de lunite memoire . . . . . . . . . . . . . . . . . . . . .
8.3.1 Mod`eles de localisation des operandes . . . . . . . . . . . . .
8.3.2 Specificite des DSP . . . . . . . . . . . . . . . . . . . . . . .
8.3.3 Mode dadressage . . . . . . . . . . . . . . . . . . . . . . . .
8.4 Description de lunite de contr
ole . . . . . . . . . . . . . . . . . . . .
8.4.1 Type de code et Pipeline . . . . . . . . . . . . . . . . . . . .
8.4.2 Format du jeu dinstructions . . . . . . . . . . . . . . . . . .
8.4.3 Structure de contr
ole . . . . . . . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

123
123
123
126
127
127
129
134
136
136
138
138
141
141
142
144

A Tables des transform


ees
147
A.1 Transformees en Z . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
A.2 Transformees de Fourier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
B Abaques de filtrage analogique
B.1 Filtres de Butterworth . . . .
B.2 Filtres de Bessel . . . . . . .
B.3 Filtres de Chebyshev . . . . .
B.4 Filtres elliptiques de Cauer .

0pt0pt 0pt0pt 0pt0pt

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

151
151
151
154
155

Introduction
Le traitement numerique du signal est une notion quil nest pas facile de definir simplement
etant donne le nombre important dapplications relevant de cette discipline. En premi`ere
approximation, on peut tout dabord tenter dexpliciter chacun des mots de cette expression.
Traitement signifie que lon est en presence dun processus de sequencement doperations
programmees. Une sequence doperations sapplique ici `a une suite de donnees Numeriques
qui vont representer sous une forme discr`ete un param`etre variable, ou Signal, qui le plus
souvent est exterieur au processus de traitement.
Il sagit donc dappliquer un traitement ou une analyse de linformation `a une sequence de
nombres discrets qui represente un signal provenant pour la majorite des applications du
monde physique qui nous entoure.
Le traitement numerique dun signal necessite un support materiel permettant deffectuer
le traitement de linformation, ce peut-etre du materiel electronique specifique `a une tache
particuli`ere ou du materiel moins specialise comme peut-letre un ordinateur.
Il faut pouvoir communiquer entre le monde physique exterieur et le processus par lequel
seffectue le traitement ; le signal exterieur, sil est defini sur un support continu, doit etre
represente sous une forme discr`ete. Cela veut dire que lon accepte de perdre de linformation :
entre deux valeurs consecutives et discr`etes du signal nous faisons lhypoth`ese de ne disposer
daucune autre information. Nous verrons quune analyse du probl`eme `a traiter permet de
definir correctement ce qui est conserve ou non dans la forme numerique dun signal.
Il faut bien s
ur definir la sequence des operations qui transforme le signal numerique. Cette
operation correspond `
a un objectif de traitement bien precis, par exemple supprimer lecho
des lignes telephoniques, reconnatre une signature radar, etc...
Le developpement de lelectronique permit le traitement du signal analogique ; un signal electronique analogique suit continument le signal physique qui lui est relie via un capteur. Cest
le developpement des calculateurs numeriques qui a conduit `a lessor du traitement numerique
du signal. Cest en effet une approche souple - les traitements correspondent `a des logiciels, les
supports materiels sont polyvalents -, les etats discrets dun calculateur sont stables - ce nest
en effet pas le cas des syst`emes analogiques fortement sensibles aux derives dues par exemple
aux conditions de temperature ou aux probl`emes de vieillissement -. Cependant, lapproche
numerique peut se reveler parfois complexe pour des applications tr`es simples. La quantite
dinformation pouvant etre traitee est correlee `a la vitesse de calcul ; la realisation dun traitement sous forme analogique ira toujours plus vite que par une forme numerique avec un
calculateur et du logiciel.

Introduction

Remarques sur la notation Dans la suite du document, on notera par f la frequence en


Hz, fe la frequence dechantillonnage, T la periode dechantillonnage et = 2f la pulsation
en rad/s. Pour des raisons de simplicite dexpression, on peut faire abstraction de T si on sait
que toutes les grandeurs utilisees seront relatives `a T ou fe .
Pour ces raisons, on peut utiliser dans le domaine frequentiel, la variable = 2f.T = 2f /fe
appelee pulsation relative. Un filtre numerique exprime selon la variable (ou un signal
discret) sera donc periodique de periode 2 (cest `a dire fe ) (voir figure 1.7) et son gabarit
sera defini entre 0 et (cest `
a dire entre 0 et fe /2).
Pr
esentation du document Ce document sinteresse `a lanalyse, la conception et limplantation des applications de traitement numerique du signal. Ce document correspond `a la
suite du polycopie de cours de Signaux et Syst`emes discrets de premi`ere annee. Les chapitres 1
`a 6, rediges par O. Sentieys, concernent lanalyse et la conception dalgorithmes de traitement
numerique du signal. Les filtres numeriques sont analyses dans le chapitre 1 et la synth`ese des
filtres RII et RIF est detaillee dans les chapitres 2 et 3. La transformee de Fourier rapide est
presentee dans le chapitre 4. Le chapitre 5 concerne lanalyse spectrale de signaux numeriques.
Les syst`emes multi-cadences sont analyses dans le chapitre 6. Les chapitres 7 et 8, rediges par
D. Menard (maintenant Professeur `
a lINSA de Rennes) et O. Sentieys, concernent limplantation dalgorithmes de traitement numerique du signal. Le chapitre 7 detaille le processus
de codage en virgule fixe dune application de TNS. Le chapitre 8 presente larchitecture des
processeurs de traitement du signal et les outils de developpement associes.
Utilisation de Matlab et Scilab Matlab, acronyme de Matrix Laboratory, est un environnement logiciel interactif puissant dedie au calcul numerique et `a la visualisation ; il est
tr`es utilise dans les divers domaines des sciences pour lingenieur, tant pour lanalyse que la
conception. Il existe egalement un nombre important de toolboxes qui etendent les possibilites
de Matlab `
a divers domaines specialises au moyen de fonctions supplementaires : traitement
du signal, automatique, traitement dimages, optimisation, reseaux de neurones, logique floue
etc... Il faut considerer Matlab comme etant avant tout un outil de calcul matriciel. Scilab
(http ://www-rocq.inria.fr/scilab) est un equivalent libre de droit de Matlab qui se rev`ele donc
interessant si on ne poss`ede pas de licence Matlab. Meme si elle est proche dans sa philosophie,
la syntaxe des commandes pour lutilisation de Scilab nest pas totalement compatible avec
Matlab.
La plupart des exemples ou figures utilises ont ete realises sous Matlab ou Scilab et seront illustres sous Matlab `
a travers des exemple au cours du document afin deffectuer lapprentissage
de ce type de logiciel, aujourdhui indispensable pour tout traiteur de signaux.
Remerciements Merci `
a Michel Corazza, Herve Chuberre, Olivier Berder et Olivier Boeffard pour leur aide dans lelaboration de ce document.

Chapitre 1

Filtrage num
erique
1.1

Introduction au filtrage num


erique

Il est difficile de donner une definition formelle de la notion de filtrage. Lingenieur electronicien pense souvent `
a une modification des caracteristiques frequentielles dun signal donne
dentree. Dun point de vue theorique, le domaine frequentiel est couple au domaine temporel,
le filtrage modifie donc egalement la reponse dans ce dernier.
A une sequence dechantillons dun signal dentree `a temps discret x(n), un filtre numerique,
defini par sa reponse impulsionnelle h(n) ou par sa fonction de transfert en z H(z), repond
par une sequence dechantillons dun signal de sortie y(n) (figure 1.1).
Filtre numrique
x(n) <=> X(z)

7z
h(n) <=> H(z)

y(n) <=> Y(z)

Figure 1.1 Representation sous forme de fonction de transfert en z


Des exemples de filtrage sont donnes ci apr`es.
Reduction de bruit pour des signaux radio, des images issues de capteurs, ou encore
des signaux audio.
Modification de certaines zones de frequence dans un signal audio ou sur une image.
Limitation `
a une bande frequentielle pre-definie.
Fonctions speciales (derivation, integration, transformee de Hilbert, ...).
Dans lexemple du code DTMF (Digital Tone Multiple Frequency) utilise en telephonie,
le signal transmis est la somme de deux sinusodes dont les frequences sont normalisees
(voir figure 1.2 gauche). Il resulte du choix de la touche appuyee sur votre telephone.
Ce principe est souvent qualifie de frequences vocales. A la reception, pour reconnatre
le numero compose, une serie de bancs de filtres est utilisee (voir figure 1.2 droite). Une
premi`ere discrimination de deux zones frequentielles est realisee par un filtre passe haut
et un filtre passe-bas. Puis, dans chaque zone, une serie de filtres passe-bande suivis
dun detecteur permet de determiner la presence dune frequence particuli`ere.

Filtrage numerique

697 Hz
770 Hz

1
4

2
5

3
6

852 Hz

941 Hz

BP Filter

Detector

697 Hz

BP Filter

Detector

770 Hz

BP Filter

Detector

852 Hz

LP Filter

Limiter

BP Filter

Detector

941 Hz

HP Filter

Limiter

BP Filter

Detector

1209 Hz

BP Filter

Detector

1336 Hz

BP Filter

Detector

1477 Hz

1209 Hz 1336 Hz 1477 Hz


Schma de dtection de tonalit

Frquences de tonalit du clavier numrique

Figure 1.2 Exemple du code DTMF en telephonie

1.2

Repr
esentation dun filtre num
erique

Un filtrage numerique peut etre represente en utilisant plusieurs types de specifications.


1. Fonction de transfert en z. Ce mode de representation est le plus usuel. Il permet
de lier lentree et la sortie dans le plan z par Y (z) = H(z).X(z). On posera dans la
suite :
PN
i
N (z)
i=0 bi .z
=
(1.1)
H(z) =
P
i
D(z)
1+ N
a
.z
i
i=1

o`
u N (z) est le polynome du numerateur de la fonction de transfert, tandis que D(z)
est son denominateur. N est ici lordre du filtre. Dans le cas o`
u H(z) poss`ede des p
oles,
on parlera de filtres RII (pour Reponse Impulsionnelle Infinie). Si N (z) = 1, on parlera
de filtre tous-poles. Dans le cas o`
u D(z) = 1, le filtre ne poss`ede que des zeros. Cette
famille de filtre correspond au cas des filtres RIF (pour Reponse Impulsionnelle Finie).
Celle ci na pas dequivalent en filtrage analogique, et nous verrons que ses proprietes
en font une fonction tr`es utilisee en traitement numerique du signal.
Lequation 1.1 peut egalement etre representee en mettant en avant les p
oles et les
zeros.

QN

i=1
H(z) = b0 QN

(z zi )

i=1 (z

pi )

(1.2)

o`
u pi sont les p
oles et zi sont les zeros de H(z). On rappelle ici que la stabilite du filtre
sera determine par lappartenance des p
oles au cercle unite (i.e. |pi | < 1), et que des
zeros appartenant au cercle unite caracteriseront un filtre `a minimum de phase.
La figure 1.3 montre plusieurs versions de representations de H(z). La forme directe
(figure1.3.a) peut etre decomposee en produit ou en somme de fonctions de transfert
dordre inferieur, generalement dordre 2. Lequation 1.3 et la figure 1.3.b representent
la forme parall`ele, tandis que lequation 1.4 et la figure 1.3.c representent la forme
cascade.
M
M
X
X
b0 + b1 .z 1 + b2 .z 2
(1.3)
Hi (z) =
H(z) =
1 + a1 .z 1 + a2 .z 2
i=1

i=1

1.2 Representation dun filtre numerique

H(z) =

M
Y

Hi (z) =

M
Y
b0 + b1 .z 1 + b2 .z 2
i=1

i=1

(1.4)

1 + a1 .z 1 + a2 .z 2

2. R
eponse impulsionnelle. La reponse impulsionnelle est la fonction en z inverse de
H(z).

X
h(n).z n
(1.5)
H(z) =
n=0

Comme en filtrage analogique, la sortie dun filtre y(nT ) est le resultat de la convolution
du signal dentree represente de mani`ere temporelle x(nT ) avec la reponse impulsionnelle du filtre h(nT ). On a alors y(nT ) = x(nT ) h(nT ), ou, si on fait abstraction de
la periode dechantillonnage T :
y(n) = x(n) h(n) =

X
k=0

x(k).h(n k) =

X
k=0

x(n k).h(k)

(1.6)

Dans le cas o`
u x(n) est une impulsion (n), on retrouve bien y(n) = h(n).
Selon les cas o`
u h(n) est `
a support infini ou fini, on retrouvera respectivement les deux
types de filtres RII et RIF.

3. Equation
aux diff
erences. Une transformation en z inverse de lequation 1.1 permet
daboutir `
a la forme suivante :
y(n) =

N
X
i=0

bi .x(n i)

N
X
i=0

ai .y(n i)

(1.7)

On identifie ici deux parties distinctes : une partie fonction de la valeur courante et des
valeurs precedentes de lentree x(n), et une partie fonction des valeurs precedentes de
la sortie y(n). Selon si les ai sont non nuls ou nuls, on parlera donc de filtres recursifs
ou de filtres non recursifs.
H1(z)
X(z)

H(z)

Y(z)

X(z)

H2(z)

Y(z)

...
a) Forme directe

HM(z)
b) Forme parallle

X(z)

H1(z)

H2(z)

...

HM(z)

Y(z)

c) Forme cascade

Figure 1.3 Representations sous forme de fonctions de transfert en z

Filtrage numerique

1.3

Sp
ecification dun filtre num
erique

Avant quun filtre numerique soit concu et implante, nous avons besoin de definir ses specifications. Un filtre doit laisser passer certaines frequences, alors quil doit en attenuer (voire
eliminer) dautres. Nous devons donc pouvoir representer ces contraintes. Il y a quatre filtres
de bases :
1. les filtres passe-bas laissent passer les frequences inferieures `a une frequence de coupure
fc et bloquent celles qui lui sont superieures (figure 1.4.a),
2. les filtres passe-haut bloquent les frequences inferieures `a une frequence de coupure fc
et laissent passer celles qui lui sont superieures (figure 1.4.b),
3. les filtres passe-bande laissent passer les frequences autour dune frequence centrale f0
(ou comprises entre f1 et f2 ) et bloquent les autres (figure 1.4.c),
4. les filtres rejecteur-de-bande bloquent les frequences autour dune frequence centrale
f0 (ou comprises entre f1 et f2 ) et laissent passer les autres (figure 1.4.d).
H(ej)

H(ej)
1

a) Filtre passe-bas

b) Filtre passe-haut

H(ej)

H(ej)

1 0 2

c) Filtre passe-bande

1 0 2
d) Filtre rjecteur-de-bande

Figure 1.4 Reponses frequentielles ideales des 4 filtres de base

Les filtres representes en figure 1.4 sont ideaux. Dans un cas reel il ne peut y avoir de discontinuites. Le passage entre zones passantes et zones attenuees se fait par des zones dites
de transition dont la largeur va exprimer la selectivite du filtre. Les bandes passantes et
attenuees ne sont egalement pas ideales, elles contiennent des ondulations dont lamplitude
est exprimee par les param`etres dondulation en bande passante et dattenuation.
Pour toutes ces raisons, la specification dun filtre est habituellement realisee `a partir dun
gabarit frequentiel, defini entre 0 et .

1.3 Specification dun filtre numerique

1.3.1

Sp
ecifications des filtres passe-bas et passe-haut

Un filtre passe-bas poss`ede trois zones : la bande passante (0 p ), la bande de transition


(p a ) et la bande attenuee (a ). La figure 1.5.a montre une representation graphique du gabarit frequentiel lineaire dun filtre passe-bas, tandis que la figure 1.5.b
represente un gabarit frequentiel en dB. Un filtre passe-haut verrait ses bandes attenuees et
passantes inversees, on aurait dans ce cas p > a . 1 est londulation en bande passante, 2
est lattenuation.
La selectivite du filtre est definie dans le tableau 1.1.
|H(ej)|

|H(ej)| (dB)
p

1+1
1
1-1

20log(1+1)

0 dB
20log(1-1)

20log2

a) Gabarit frquentiel linaire

b) Gabarit frquentiel en dB

Figure 1.5 Gabarit frequentiel dun filtre passe-bas

1.3.2

Sp
ecifications des filtres passe-bande et r
ejecteur-de-bande

Un filtre passe-bande poss`ede plusieurs zones : la bande passante (p p+ ), deux


bandes de transition et deux bandes attenuees (0 a et a+ ). La figure 1.6
montre une representation graphique du gabarit frequentiel lineaire dun filtre passe-bande.
Un filtre rejecteur-de-bande verrait ses bandes attenuees et passantes inversees.
Le tableau 1.1 resume les param`etres des differents gabarits etudies.

Selectivite s
Ondulation
Attenuation
Frequence centrale 0
Largeur de bande B

Passe-bas

Passe-haut

Passe-bande

Rejecteur-de-bande

p
a

a
p

1
2
-

1
2
-

p+ p
a+ a

a+ a
p+ p

1
p 2
p+ .p
p+ p
0

1
p 2
p+ .p
p+ p
0

Table 1.1 Param`etres de specification dun filtre numerique

10

Filtrage numerique

|H(ej)|
1+1
1
1-1

2
a- p-

p+ a+

Figure 1.6 Gabarit frequentiel lineaire dun filtre passe-bande

1.4

Classification des filtres num


eriques

Les filtres numeriques peuvent etre classes selon plusieurs crit`eres :


1. la longueur de la reponse impulsionnelle implique deux types de filtres RII et RIF,
2. le type de representation, ou de structure, implique deux types de filtres recursifs et
non recursifs.
Nous verrons qu`a lexception dun cas particulier, les filtres recursifs et non recursifs sont
respectivement equivalents aux filtres RII et RIF.

1.4.1

Filtres r
ecursifs RII

Les filtres analogiques ont necessairement une reponse impulsionnelle infinie. Les filtres numeriques RII se comportent de mani`ere similaire, mis `a part les effets dus `a la discretisation.
Cette categorie de filtre est egalement caracterisee par une fonction de transfert en z contenant des p
oles, et une equation aux differences recursives, cest `a dire lorsque la sortie y(n)
depend `a la fois des entrees et des sorties precedentes.
Les equations 1.8 et 1.9 montrent la fonction de transfert en z et lequation aux differences
correspondante de la forme generale dun filtre RII. N est appele ici lordre du filtre.
PN
i
N (z)
i=0 bi .z
=
H(z) =
P
i
D(z)
1+ N
i=1 ai .z
y(n) =

N
X
i=0

bi .x(n i)

N
X
i=0

ai .y(n i)

(1.8)

(1.9)

A partir de lequation 1.8, deux cas se presentent :


1. si N (z) nest pas divisible par D(z), on a un nombre infini de termes dans la division

1.4 Classification des filtres numeriques

11

polynomiale de N (z) par D(z) :


H(z) =

N
X

cn .z n

n=0

h(n) = cn pour n = 0 . . .
H(z) est un filtre RII,
2. si N (z) est divisible par D(z), on a un nombre fini de termes dans la division polynomiale de N (z) par D(z) :
H(z) =

N
1
X

cn .z n

n=0

h(n) = cn pour n = 0 . . . N 1
H(z) est un filtre RIF.
Exemple 1.4.1 : Demontrer que le filtre moyenneur
1 PM 1 i
1 1z M
=M
H(z) = M
i=0 z
1z 1
peut etre exprime de mani`ere recursive : y(n) = s(n 1) +
1 PM 1
ou de mani`ere non recursive : y(n) = M
i=0 e(n i)

1
M [e(n)

e(n M )]

Les principales caracteristiques des filtres RII sont :


1. une bande de transition qui peut etre etroite ;
2. des methodes de synth`ese par transposition des methodes pour les filtres analogiques
(voir chapitre 2) ;
3. une instabilite potentielle due `a des p
oles situes en dehors du cercle unite (i.e. |pi | 1
quel que soit i) ;
4. une instabilite numerique (i.e. apr`es quantification des coefficients et du signal) potentielle due au rebouclage.

1.4.2

Filtres non r
ecursifs RIF

Les filtres RIF ne peuvent pas etre derives des filtres analogiques. Il sont cependant tr`es
largement utilises car ils poss`edent des proprietes uniques (phase lineaire, stabilite, flexibilite).
Les equations 1.10 et 1.11 montrent la fonction de transfert en z et lequation aux differences
correspondante de la forme generale dun filtre RII. N est appele ici la longueur de la reponse
impulsionnelle du filtre.
N
1
X
bi .z i
(1.10)
H(z) =
i=0

y(n) =

N
1
X
i=0

bi .x(n i) =

N
1
X
i=0

h(i).x(n i)

(1.11)

12

Filtrage numerique

On remarque en exploitant lequation 1.11 que les coefficients bi du filtre sont egalement les
valeurs de la reponse impulsionnelle h(n), qui se trouve donc etre limitee dans le temps.

H(z) =

N
1
X
i=0

h(n) =

bi .z i h(n) =

bn
0

N
1
X
i=0

bi .(n i)

pour 0 n N 1
ailleurs

(1.12)
(1.13)

Les principales caracteristiques des filtres RIF sont :


1. une bande de transition qui sera toujours plus large quun filtre RII ayant le meme
nombre de coefficients ;
2. des methodes de synth`ese permettant de deriver nimporte quelle reponse frequentielle
(voir chapitre 3) ;
PN 1
3. une stabilite inherente ( n=0
|h(n)| < ) ;

4. une plus grande stabilite numerique que les RII ;

5. une phase qui peut etre exactement lineaire, par consequent un temps de propagation
de groupe constant et une absence de distorsion harmonique dans le signal ;
6. une plus grande facilite dimplantation dans un syst`eme numerique de traitement.

1.5

Analyse fr
equentielle des filtres num
eriques

Lanalyse frequentielle est la representation de la fonction de transfert du filtre dans le domaine


des frequences, cest `
a dire celui de Fourier. La fonction de transfert en est la transformee
de Fourier du signal h(n).
H(ej ) =

h(n).ejn = H(z)/z=ej

(1.14)

n=0

Cette fonction correspond `


a un signal discret, elle est donc periodique de periode 2. Cest
pour cette raison que lon a lhabitude dutiliser la notation H(ej ) plut
ot que H(). La figure
1.7 represente un exemple de filtre passe-bas. En traitement du signal, on etudie generalement
le module et la phase (ou argument) de la fonction complexe H(ej ).
H(ej ) = Hr (ej ) + jHi (ej ) = |H(ej )|ej()

1.6
1.6.1

(1.15)

Structures des filtres RII et RIF


Structure des filtres RIF

La structure dun filtre est un graphe flots de donnees (GFD) dans lequel les nuds sont
des operations (les additions sont habituellement representees par des cercles contenant un
+ et les multiplications par des triangles associes aux coefficients multiplicande) et les arcs
les dependances, cest `
a dire le flot des donnees issues du signal. Certains arcs sont values

1.6 Structures des filtres RII et RIF

13

|H(ej)|

Figure 1.7 Exemple de filtre passe-bas

dun coefficient z 1 representant un delai dune periode dechantillonnage. Ce coefficient se


represente egalement sous la forme dun registre.
Lequation :
y(n) =

N
X
i=0

bi .x(n i) = b0 .x(n) + b1 .x(n 1) + . . . + bN 1 .x(n N + 1) + bN .x(n N )

represente le comportement temporel dun filtre RIF. On peut en deduire immediatement la


structure directe dun filtre RIF qui est representee `a la figure 1.8.a. La structure transposee
de la figure 1.8.b est obtenue apr`es manipulation de cette equation.
x(n)
b0

x(n)

Z-1
x(n-1)

b1
b1

x(n-N)

y(n)

Z-1

y(n)

+
Z-1

bN-1
+
Z-1

b0

bN-1
+

bN
bN

Z-1
+

a) Structure directe

b) Structure transpose

Figure 1.8 Structures des filtres RIF

1.6.1.1

Complexit
e dimplantation dun filtre RIF

Un filtre RIF necessite N + 1 operations de multiplication, N operations daddition pour


chaque nouvel echantillon `
a filtrer. On peut egalement exprimer la complexite en nombre

14

Filtrage numerique

de multiplication-accumulation (MAC), qui, dans le cas du filtre RIF, vaut N + 1. Le co


ut
memoire dun filtrage RIF est de 2(N + 1) (N + 1 coefficients bi et N + 1 points memoire pour
le vecteur des entrees x(i)).
Si la frequence dechantillonnage du signal vaut Fe , cela signifie que le calcul dun filtre devra
etre realise en un temps Tcalcul inferieur `a Te = F1e .
Sur un processeur de type DSP capable dexecuter une multiplication-accumulation (MAC)
`a chaque cycle, de puissance de calcul Pcalcul exprimee en MIPS (Million dInstruction Par
Seconde), le temps de calcul sera : Tcalcul = (N +1).Tcycle = (N +1)/Pcalcul . Aussi, la puissance
de calcul dun DSP pour limplantation dun filtrage RIF vaut :
Pcalcul (M IP S) > (N + 1).Fe /106

1.6.2

(1.16)

Structure des filtres RII

Lequation suivante (1.17) montre que lon peut representer un filtre RII H(z) sous la forme
du produit de 2 structures, dont une est une filtre RIF N (z), et lautre un filtre RII tout-p
ole
1/D(z).
#
# "

 "X
N
1
1
N (z)
i
= [N (z)]
bi .z
(1.17)
=

H(z) =
P
i
D(z)
D(z)
1+ N
i=1 ai .z
i=0

La structure directe dun filtre RII est donc obtenue en mettant en cascade un filtre RIF sous
forme directe, et la representation immediate du filtre tout-p
ole 1/D(z). Celle ci est donnee `
a
la figure 1.9.a. En reunissant les additions du centre de la figure, on obtient la forme directe
classique utilisee dans la litterature representee `a la figure 1.9.b.
b0

x(n)
Z-1

Z-1

b1

bN-1
+

y(n)
-a1

Z-1
x(n-1)

-aN-1

bN

-aN

RIF

RII

a) Cascade

Z-1

b0

x(n)

Z-1

Z-1
x(n-N)

b1

+
+

y(n)
-a1

Z-1
y(n-1)

bN-1
+

-aN-1

bN

-aN

Z-1
y(n-N)

b) Structure directe

Figure 1.9 Structures directes des filtres RII


Il est bien entendu possible de representer differemment un filtre RII en utilisant la propriete
de commutativite de la multiplication. On a alors :
#
# "N
"


X
1
1
(1.18)
bi .z i

[N (z)] =
H(z) =
P
i
D(z)
1+ N
a
.z
i=1 i
i=0

1.6 Structures des filtres RII et RIF

15

On peut donc echanger sur la figure 1.9.a les 2 blocs RIF et RII. Les deux lignes `a retard
permettant de memoriser les signaux x(n) se retrouvant communes, il est possible de les reunir
en obtenant un vecteur unique de registres w(n), comme represente `a la figure 1.10.a.
x(n)

b0

w(n)

y(n)

x(n)

b0

Z-1
+

b1

w(n-1)
Z-1
+

-aN-1

y(n)

Z-1
b1

-a1

-a1

Z-1
bN-1

bN-1
+

Z-1
bN

bN

-aN
w(n-N)
a) Structure canonique directe

-aN-1

Z-1
+

-aN

b) Structure canonique transpose

Figure 1.10 Structures canoniques des filtres RII


On peut egalement representer la structure canonique sous la forme dun syst`eme dequation
(1.19) faisant apparatre le signal w(n).
(

P
1
.X(z)
W (z) = D(z)
w(n) = x(n) N
i=1 ai .w(n i)
PN
(1.19)
Y (z) = N (z).W (z)
y(n) = i=0 bi .w(n i)

1.6.2.1

Complexit
e dimplantation dun filtre RII

Un filtre RII necessite 2N + 1 operations de multiplication, 2N operations daddition pour


chaque nouvel echantillons `
a filtrer ou 2N + 1 MAC. Le co
ut memoire dun filtrage RII en
structure directe est de 4N + 3 (2N + 1 coefficients bi et 2(N + 1) points memoire pour les
vecteurs des entrees x(n) et des sorties y(n)). La structure canonique permet de diminuer le
co
ut memoire qui ne necessite plus que N + 1 points memoire pour le vecteur w(n).
Si la frequence dechantillonnage du signal vaut Fe , cela signifie que le calcul du filtre devra
etre realise en un temps Tcalcul inferieur `a Te = F1e .
Sur un processeur de type DSP capable dexecuter une multiplication-accumulation (MAC)
`a chaque cycle, de puissance de calcul Pcalcul exprimee en MIPS (Million dInstruction Par
Seconde), Le temps de calcul sera : Tcalcul = (2N + 1).Tcycle = (2N + 1)/Pcalcul . Aussi, la
puissance de calcul dun DSP pour limplantation dun filtrage RIF vaut :
Pcalcul (M IP S) > (2N + 1).Fe /106

(1.20)

16

Filtrage numerique

Exemple 1.6.1 : Cellule elementaire du premier ordre


Soit le syst`eme qui, `
a la suite de donnees x(n), fait correspondre la suite y(n) telle que :
y(n) = x(n) + b.y(n 1)
o`
u b est une constante.
1. Donner les reponses impulsionnelles et indicielles de ce syst`eme. par deux methodes
(suite numerique, transformee en Z). Que peut on dire de la stabilite du filtre.

2. Etudier
lanalogie avec le syst`eme continu de constante de temps t, echantillonne avec
la periode T .

3. Etudier
la reponse frequentielle du filtre.
4. Donner la structure de realisation du filtre.
Exemple 1.6.2 : Cellule du second ordre purement recursive
Soit le syst`eme qui, `
a la suite de donnees x(n), fait correspondre la suite y(n) telle que :
y(n) = x(n) b1 .y(n 1) b2 .y(n 2)
1. Donner la fonction de transfert en Z du syst`eme.
2. En deduire la reponse impulsionnelle du filtre numerique.

3. Etudier
la reponse frequentielle du filtre. On regardera plus particuli`erement linfluence
des coefficients b1 et b2 sur les p
oles de la fonction de transfert H(z).
4. Tracer le diagramme des p
oles et zeros.
5. Donner les structures de realisation.

Chapitre 2

Synth`
ese des filtres RII
2.1
2.1.1

Introduction et rappels en filtrage analogique


Introduction

La synth`ese dun filtre numerique est la recherche dune fonction H(z) (ou h(n)) correspondant
`a la specification sous forme de gabarit. La recherche de cette fonction peut etre realisee selon
diverses methodes.
La methode la plus courante est lutilisation des methodes de synth`ese des filtres
analogiques aboutissant `
a une fonction H(p) correspondant aux specifications. Une
fonction permettant le passage du plan p dans le plan z (i.e. p = f (z)) est ensuite
utilisee pour obtenir H(z).
Cette fonction doit maintenir la stabilite du filtre analogique et maintenir, au mieux, les
caracteristiques de la reponse frequentielle H(ej ) du filtre numerique. Nous etudions
dans la suite du chapitre trois types de transformation f .
Une synth`ese directe en z est egalement possible selon les memes principes que la
synth`ese analogique, mais elle ne sera pas presentee ici vu le nombre important doutils
developpes dans le contexte analogique.
Enfin, des methodes doptimisation issues de lanalyse numerique peuvent etre utilisees afin de rechercher une fonction H(z) sapprochant le plus possible dune fonction
prototype. La minimisation dun crit`ere derreur entre la courbe ideale et la courbe
reelle est alors appliquee.

La figure 2.1 resume la methodologie de synth`ese de filtres analogiques et numeriques RII. Les
premi`eres phases de synth`ese analogique (normalisation, approximation et denormalisation)
sont explicites dans la section suivante, tandis que les differentes transformations p z sont
presentees aux sections 2.2 `
a 2.4.

2.1.2

Rappels en filtrage analogique

Les filtres analogiques sont specifies de mani`ere equivalente aux filtres numeriques (voir section
1.3). Les frequences sont exprimees en fonction de f (en Hz) ou de , la pulsation (en rad/s).
La fonction de transfert H(p) est exprimee en p = j. La synth`ese de cette fonction H(p) est
composee de trois etapes principales :
17

18

Synth`ese des filtres RII


Spcification
Gabarit analogique
Normalisation
Gabarit normalis

Ordre du filtre

Approximation de H(p)
Types de filtre
(Butterworth, Chebyshev,...)

HNorm(p)
Dnormalisation
H(p)
Filtrage numrique

Filtrage analogique

Transformation

Choix dune structure

p=f(z)
invariance impulsionnelle,
bilinaire

Rauch, Sallien-Key,
Biquadratique

Figure 2.1 Methodologie de synth`ese de filtres analogique et numerique RII

1. normalisation du gabarit,
2. approximation de la fonction de transfert normalisee HN orm (p),
3. denormalisation de HN orm (p) aboutissant `a la fonction de transfert H(p).
2.1.2.1

Normalisation

Cette premi`ere phase permet daboutir au gabarit passe-bas prototype (ou gabarit normalise)
`a partir de nimporte quel des 4 types principaux de filtres (passe-bas, passe-haut, passe-bande,
rejecteur-de-bande). Celui-ci (voir figure 2.2) est un gabarit passe-bas possedant une pulsation
de coupure normalisee `
a 1 et une pulsation de bande attenuee valant 1s , s etant la selectivite
definie au paragraphe 1.3 (voir tableau 1.1). Les valeurs dondulation et dattenuation sont
inchangees.
2.1.2.2

Approximation de la fonction de transfert

La phase suivante consiste en la recherche dune fonction HN orm (p) entrant dans le gabarit
prototype passe-bas defini avant. Il existe plusieurs fonctions dapproximation, nous exposons
ci-apr`es les 4 fonctions les plus utilisees.
Pour la determination de lordre du filtre et des coefficients de la fonction de transfert H(p), on
pourra soit utiliser les formules et tableaux donnees ci-apr`es, soit utiliser les abaques fournies
en annexe B.
1. Filtres de Butterworth
Un filtre passe-bas de Butterworth dordre N et de pulsation de coupure c est defini

2.1 Introduction et rappels en filtrage analogique

19
|HNorm(p)| (dB)

|HNorm(p)|

1/s

1+1
1
1-1

0
1

1/s

a) Gabarit prototype linaire

b) Gabarit prototype en dB

Figure 2.2 Gabarit prototype passe-bas

par le carre de sa reponse frequentielle :


B

H () 2 =

1+

1
 2N

(2.1)

Les principales proprietes des filtres de Butterworth sont :


lamplitude est une fonction monolithique decroissante sur ,
la reponse frequentielle est plate dans les bandes passante et attenuee,
le gain maximum
est pour = 0 et vaut 1,

|H B (c )| = 0.5, c est donc la pulsation de coupure `a 3dB,


lattenuation asymptotique dans les hautes frequences vaut 20.N dB/decade.
Lordre du filtre est determine par la relation :


1
log
2 1

(2.2)
N
log 1s
N
2

3
4
5
6

a1
1.4142
2
2.6131
3.2361
3.8637

a2

a3

a4

a5

2
3.4142
5.2361
7.4641

2.6131
5.2361
9.1416

3.2361
7.4641

3.8637

Table 2.1 Coefficients du polynome du denominateur dun filtre passe-bas normalise de


Butterworth de degres 2 `
a6
2. Filtres de Chebyshev
Un filtre passe-bas de Chebyshev de type I dordre N et de pulsation de coupure c
est defini par le carre de sa reponse frequentielle :
C

1
H () 2 =
 ,
(2.3)
1 + 2 TN2 c

20

Synth`ese des filtres RII


o`
u TN (x) est un polynome de Chebyshev de degre N, un param`etre permettant de
regler lamplitude de londulation en bande passante ou en bande attenuee.
Les principales proprietes des filtres de Chebyshev sont :
pour un filtre de type I, lamplitude dans la bande passante poss`ede une ondulation
respectant :
C

1
H () 2 1
0 c =

1 + 2
pour un filtre de type II, ces ondulations sont situees dans la bande attenuee (
c ),

1/(1 + 2 ), N impair
C
|H (0)| =
1,
N pair

lattenuation asymptotique dans les hautes frequences vaut 20.N dB/decade, mais
lordre du filtre sera plus faible quun Butterworth `a specifications equivalentes.
3. Filtres elliptiques
Les filtres elliptiques poss`edent des ondulations `a la fois en bande passante et en bande
attenuee. Ils sont optimaux en terme de selectivite, cest `a dire quils donnent lordre
minimal `
a specification donnee. Un filtre passe-bas elliptique dordre N et de pulsation
de coupure c est defini par le carre de sa reponse frequentielle :
E

H () 2 =

1
2
1 + 2 RN

,

(2.4)

o`
u RN (x) est une fonction rationnelle de Chebyshev de degre N, un param`etre permettant de regler lamplitude de londulation en bande passante ou en bande attenuee.
Londulation en bande passante, equivalente `a un chebyshev-I, est comprise entre 1 et
1/(1 + 2 ).
4. Filtres de Bessel
Les filtres de Bessel sont interessants pour leur phase proche de la linearite. En contrepartie, ils sont ceux ayant la selectivite la plus faible.
2.1.2.3

D
enormalisation

Cette derni`ere etape permet de passer de la fonction de transfert normalisee HN orm (pN ) `
a
la fonction de transfert H(p). Nous appelons ici pN la variable de la fonction normalisee. La
denormalisation consiste donc en lapplication dune fonction f permettant de transformer
cette variable pN en la variable p = j : pN = f (p). La fonction f depend du type de filtre
specifie. Le tableau 2.2 resume les fonctions de denormalisation pour les 4 types de filtres.
passe-bas
pN =

p
c

passe-haut
pN =

c
p

passe-bande


pN = B1 p0 + p0

rejecteur-de-bande
h 
i1
pN = B1 p0 + p0

Table 2.2 Fonctions de denormalisation

2.2 Methode de linvariance impulsionnelle

21

Exemple 2.1.1 : Synth`ese dun filtre passe-haut


Soit le filtre defini par le gabarit suivant :

fp
3 kHz

fa
1 kHz

1
-3 dB

2
-20 dB

1. Dessiner le gabarit du filtre. En deduire le gabarit du filtre prototype.


2. Pour les 4 types de filtre precedents, determiner lordre du filtre et la fonction de
transfert normalisee HN orm (p).
3. En deduire les fonctions de transfert H(p) des 4 types de filtre.

2.2

M
ethode de linvariance impulsionnelle

La methode de linvariance impulsionnelle consiste `a effectuer la synth`ese dun filtre numerique


dont la reponse impulsionnelle h(nT ) est lechantillonnage de la reponse impulsionnelle ha (t)
du filtre analogique equivalent (figure 2.3). On a alors :
h(nT ) , ha (t)|t=nT

ha(t)

(2.5)

h(nT)

t
x(t)

Ha(p)

y(t)

x(nT)

filtre analogique

H(z)

y(nt)

filtre numrique

Figure 2.3 Conservation de la reponse impulsionnelle entre les filtres analogique et numerique
Dans le cas o`
u la fonction de transfert du filtre analogique Ha (p) poss`ede N p
oles simples pi ,
on peut ecrire :
N

Ha (p) =

N (p) X ki
=
D(p)
p + pi
i=1

ha (t) =

N
X
i=1

ki epi t

22

Synth`ese des filtres RII

Si on echantillonne la reponse impulsionnelle du filtre analogique par h(nT ) = ha (t)|t=nT , on


obtient la fonction de transfert du filtre numerique H(z) :

h(nT ) =

N
X

ki epi nT

i=1

H(z) =

N
X
i=1

ki

X
z
1
ki
=
p
T
p
i
ze
1 e i T z 1
i=1

Si on etend cette formulation de H(z) `a tout type de fonction Ha (p), on peut, en utilisant la
formule des residus, obtenir une relation directe entre Ha (p) H(z) :


X
Ha (p)
(2.6)
, pi
H(z) =
Res
1 epT z 1
pi de Ha (p)

Cette methode de synth`ese est simple. Elle conserve la r


eponse temporelle du filtre analogique equivalent et egalement la stabilite du filtre. Par contre, la reponse frequentielle du filtre
nest pas conservee. En effet, cette transformation suit logiquement le theor`eme dechantillonnage et le phenom`ene de recouvrement de spectre. Son utilisation doit respecter les contraintes
dues `a lechantillonnage, en particulier une bande passante inferieure `a la moitie de la frequence dechantillonnage. La reponse frequentielle est donnee par la formulation :
H(ejT ) = H(z)|z=ejT =

1X
2k
)
Ha (j + j
T
T

(2.7)

Par consequent, la methode de linvariance impulsionnelle nest applicable quaux filtres `


a
bande limitee satisfaisant lequation :
|Ha (j)| 0 pour || > B avec B < fe

(2.8)

La figure 2.4 montre le resultat de la reponse frequentielle dun filtre numerique dans le cas
o`
u le filtre analogique equivalent nest pas `a bande limitee. Le phenom`ene de recouvrement
de spectre est ici important. On remarque egalement que la reponse frequentielle de H(z)
poss`ede un facteur multiplicatif 1/T (equation 2.7). Ce facteur, dont la valeur est tr`es elevee
(e.g. 10000 pour une frequence dechantillonnage de 10kHz), doit etre attenue si on veut un
filtre realisable. En pratique, on normalisera H(z) par (T ) ou par (/H(z = ej0 ). Dans ce
dernier cas, on obtiendra une valeur en = 0 equivalente au filtre analogique.

2.3

Transformation dEuler

Leffet de recouvrement de la methode de linvariance impulsionnelle est due `a lutilisation


dune fonction non algebrique et non bijective entre le plan p et le plan z. Nous allons donc
chercher `a utiliser une transformation algebrique entre ces deux plans.
La transformation dEuler consiste `
a utiliser lapproximation simple dune derivee :
e[nT ] e[(n 1)T ]
e(nT )
de(t)
|t=nT = lim

t0
dt
t
T

(2.9)

2.3 Transformation dEuler

23
Ha(p)
1

p
H()
1/T

Figure 2.4 Reponses frequentielles des filtres analogique et numerique

Si on consid`ere un syst`eme lineaire discret H(z) realisant cette approximation, il aura la


forme :
e[nT ] e[(n 1)T ]
s(nT ) =
(2.10)
T
Ce qui donne dans le plan z :
S(z) =
H(z) =

1 z 1
E(z)
T
1 z 1
T

(2.11)
(2.12)

Dans le plan p, la derivation est obtenue par la fonction de transfert Ha (p) = p. Par consequent, la transformation dEuler realisant lapproximation dune derivee est definie par :
H(z) , H(p)|p= 1z1

(2.13)

La transformation inverse donnee par :


z=

1
1 pT

(2.14)

permet de chercher une relation entre les frequences analogique (a ) et numerique (). On
obtient :
z =
z =

1
= ejT
1 ja T


i
1
1 + ja T
1h
1 + ej2 arctan(a T )
1+
=
2
1 ja T
2

(2.15)
(2.16)

La variable z parcourt donc un cercle de centre z = 1/2 et de rayon 1/2. Le cercle unite du
plan z est donc transforme, impliquant une modification importante de la reponse frequentielle
du filtre donnee par lequation 2.16. Cependant, il ny a pas de phenom`ene de recouvrement
de spectre. La stabilite est conservee.
La section suivante montre une transformation utilisant le meme principe, mais dont les
performances en terme de reponse frequentielle sont meilleures.

24

2.4

Synth`ese des filtres RII

Transformation bilin
eaire

La transformation bilineaire est issue dun syst`eme lineaire discret H(z) realisant lapproximation dune integrale par la methode des rectangles (voir figure 2.5). On peut lexprimer
comme un filtre recursif donne par :
s(nT ) = s((n 1)T ) + T

e(nT ) + e((n 1)T )


2

(2.17)

e(nT)

(n-1)T

nT

Figure 2.5 Approximation dune integrale par la methode des rectangles


Ce qui donne dans le plan z :
E(z) + z 1 E(z)
2
T 1 + z 1
S(z)
=
E(z)
2 1 z 1

S(z) = z 1 S(z) + T

(2.18)

H(z) =

(2.19)

Dans le plan p, lintegration est obtenue par la fonction de transfert Ha (p) = 1/p. Par consequent, la transformation bilineaire realisant lapproximation dune integrale est definie par :
H(z) , H(p)|p= 2 1z1

(2.20)

T 1+z 1

La transformation inverse donnee par :


z=

2/T + p
2/T + ja
=
2/T p
2/T ja

(2.21)

permet de chercher une relation entre les frequences analogique (a ) et numerique (). On
obtient :
2 + ja T
= ejT
2 ja T
|z| = 1
a T
a T
a T
arg(z) = arctan(
) + arctan(
) = 2 arctan(
)
2
2
2
z = ejT arg(z) = T
z =

(2.22)
(2.23)
(2.24)
(2.25)

Les equations 2.24 et 2.25 impliquent la relation entre les pulsations analogique et numerique :


T
a T
= tan
(2.26)
2
2

2.4 Transformation bilineaire

25

Cette relation est tr`es importante puisquelle permet de connatre de mani`ere analytique la
transformation entre les reponses frequentielles des filtres analogique et numerique. Cette relation sappelle distorsion en frequence ou frequency warping.
La figure 2.6 montre que lensemble de laxe imaginaire du plan p est transforme vers le
cercle unite du plan z (cf. equation 2.23 et 2.24) de mani`ere bijective. De plus, le domaine
de stabilite (demi-plan gauche du plan p) est transforme vers le disque unite (figure 2.6).
Cette transformation evite donc le phenom`ene de recouvrement de spectre et conserve la
stabilite. Cependant, une compression non lineaire de laxe des frequences est realisee comme
le montrent lequation 2.26 et la figure 2.7.
plan p

plan z
z = ejT

p = ja

Figure 2.6 Transformation du plan p vers le plan z

/T

Figure 2.7 Transformation non lineaire entre les frequences analogique et numerique :
distorsion en frequence
En consequence, la synth`ese de filtre numerique utilisant la transformation bilineaire est
utilisable quand cette compression peut etre toleree ou compensee. La figure 2.8 illustre ce
phenom`ene. Elle montre comment une reponse frequentielle `a temps continu et son gabarit
est transformee en une reponse frequentielle `a temps discret. Si les frequences critiques (i.e.
le gabarit) sont modifiees en utilisant une pr
e-distorsion (equation 2.26), alors le filtre

26

Synth`ese des filtres RII

numerique respectera les specifications initiales.


a

1+1
1
1-1

a p a a

|Ha(ja)|

a=2/T tan(/2)

1+1
1
1-1

|H(ej)|

p a

Figure 2.8 Transformation frequentielle du filtre analogique Ha (a ) vers le filtre numerique


H()

La methodologie de synth`ese par la transformation bilineaire doit donc suivre lalgorithme


suivant :
1. a` partir des specifications frequentielles, effectuer une pre-distorsion des frequences
critiques du gabarit :


p,a
2
a p,a = tan
,
(2.27)
T
2
2. effectuer la synth`ese du filtre analogique Ha (p) (voir section 2.1),
3. utiliser la transformation bilineaire H(z) , H(p)|p= 2 1z1 pour obtenir le filtre nuT 1+z 1

merique H(z).
La pre-distorsion assure que le filtre numerique ainsi synthetise entre dans le gabarit initial.

Exemple 2.4.1 : Synth`ese dun filtre IIR du premier ordre

2.4 Transformation bilineaire

27

On sinteresse ici `
a la synth`ese dun filtre passe-bas RC du premier ordre par les methodes de
linvariance impulsionnelle et bilineaire. Soit le filtre :
Ha (p) =

1
,
1 + pc

avec fc = 1kHz et fe = 10kHz.


1. Donner la reponse frequentielle du filtre analogique Ha (a ). Donner les valeurs de son
module en f = 0, 1kHz, 5kHz et 10kHz.
2. Exprimez les filtres numeriques obtenus par invariance impulsionnelle (Hi (z)) et transformation bilineaire (Hb (z)). Pour Hb (z), il faudra sassurer de la meme frequence de
coupure c que le filtre analogique. Pour Hi (z), il faudra sassurer de la meme valeur
en = 0 que le filtre analogique.
3. Donner de mani`ere analytique les reponses frequentielles des deux filtres numeriques.
Donner les valeurs de leurs modules en f = 0, 1kHz, 5kHz et 10kHz.
4. Tracer ces deux reponses `
a laide de Matlab ou Scilab.

28

Synth`ese des filtres RII

Chapitre 3

Synth`
ese des filtres RIF
3.1

Introduction

Un filtre RIF est defini par sa fonction de transfert en z :


H(z) =

N
1
X

h(n).z n

(3.1)

n=0

o`
u la reponse impulsionnelle h(n) est de longueur N .
A la difference des filtres RII, les filtres RIF ne sont realisables que dans le domaine discret.
Par consequent, leurs methodes de synth`ese ne sont pas derivees des filtres analogiques. On
distingue trois principales methodes, dont deux seront detaillees dans les sections suivantes.
1. La m
ethode du fen
etrage (windowing ) consiste `a appliquer une fenetre de taille
N au filtre ideal equivalent (voir section 3.3).
2. La m
ethode de l
echantillonnage fr
equentiel utilise la Transformee de Fourier
Discr`ete inverse depuis une fonction discr`ete representative du filtre et definie en frequence (voir section 3.4).
3. Les methodes doptimisation se concentrent sur la minimisation dun crit`ere derreur
entre la courbe reelle et le filtre ideal. La plus utilisee est la methode de Parks and
McClellan [PM73], qui reformule le probl`eme de synth`ese de filtre sous la forme dune
approximation polynomiale.

3.2

Filtres `
a phase lin
eaire

Les filtres RIF ont la particularite de pouvoir presenter une phase lineaire. Puisque pour
les syst`emes causaux une phase nulle dans la bande passante nest pas realisable, une phase
exactement lineaire evitera la modification de la forme du signal, cest `a dire le phenom`ene de
distorsion qui peut etre tr`es genant, en particulier dans les syst`emes audio. En effet, une phase
lineaire implique un temps de propagation de groupe constant, et, par consequent, leffet de
la phase sur le signal sera un simple decalage temporel. On posera pour ce type de filtre :
H(ej ) = A(ej )ej+j ,
29

(3.2)

30

Synth`ese des filtres RIF

o`
u et sont des constantes et A(ej ) une fonction reelle, eventuellement bipolaire, de que
lon nommera plus tard pseudo-module 1 (ou amplitude). Dans ce cas, le temps de propagation
de groupe g() = d()
eaire
d sera constant et aura pour valeur . () est ici la phase lin
du filtre valant () = + . On distinguera par la suite quatre types de filtres selon les
valeurs de et et de la parite de N .
Le filtre H(z) et sa reponse frequentielle H(ej ) sont donnes par :
H(z) =

N
1
X

h(n).z n

(3.3)

n=0

H(ej ) = H(z)|z=ej =

N
1
X

h(n).ejn

(3.4)

n=0

H(ej ) = [H(ej )] + j[H(ej )]


j

j arg()

H(e ) = |H(e )|e

1er cas : () = ,

(3.5)
j()

= A(e )e

Dans ce cas :

H(ej ) = A(ej )ej = A(ej )[cos j sin ]


H(ej ) =

N
1
X

(3.6)

h(n).ejn =

N
1
X
n=0

n=0

h(n)[cos n j sin n]

(3.7)
(3.8)

En identifiant les parties reelles et imaginaires des deux equations precedentes, il est possible
dobtenir le syst`eme dequation suivant :
(
PN 1
A(ej ) cos = n=0
h(n) cos n
P
(3.9)
N 1
A(ej ) sin = n=0
h(n) sin n

N
1
X
n=0

h(n) cos n sin

N
1
X
n=0

N
1
X

h(n) sin n cos = 0

(3.10)

n=0

h(n) sin[( n)] = 0

(3.11)

Lequation 3.11 resume donc la condition sur la reponse impulsionnelle pour que le filtre soit
`a phase lineaire.
Si 6= 0, on montre que lequation 3.11 est equivalente `a :

= N 21
h(n) = h(N 1 n) pour 0 n

(3.12)

La reponse impulsionnelle est donc sym


etrique. est laxe de symetrie de h(n). peut etre
entier ou non selon si N est impair ou pair.
1. Le pseudo-module est souvent utilise en remplacement du module car il evite les discontinuites dans le
module dues `
a la valeur absolue et dans la phase dues `
a la determination principale [, ] de largument. On
peut le voir comme une representation du module integrant ses variations de signe

3.2 Filtres `
a phase lineaire

31

2nd cas : () = , Dans ce cas on obtient selon la meme demonstration


que pour le premier cas la relation suivante :
N
1
X
n=0

h(n) sin[( n) + ] = 0

(3.13)

On montre ensuite que lequation 3.13 est equivalente `a :

= /2
= N 21

h(n) = h(N 1 n) pour 0 n

(3.14)

La reponse impulsionnelle est donc antisym


etrique par rapport `a .
On deduit de ces deux cas que selon la parite de N et le type de symetrie de h(n), quatre
types distincts de filtres sont `
a etudier.

3.2.1

Filtre RIF `
a phase lin
eaire de type I

Un filtre RIF `
a phase lineaire de type I est defini par une reponse impulsionnelle symetrique :
h(n) = h(N 1 n),
avec N impair. Le retard =

N 1
2

0n

(3.15)

est un entier. La reponse frequentielle du filtre est :

H(e ) = A(e )e

N
1
X

h(n).ejn

(3.16)

n=0

En utilisant la relation de symetrie de lequation 3.15 on obtient :


N1

j N1

H(ej ) = e

2
X

an . cos(n)

(3.17)

n=0

N 1
)
2
N 1
n),
= 2h(
2

(3.18)

a0 = h(
an

3.2.2

n = 1, . . .

N 1
2

(3.19)

Filtre RIF `
a phase lin
eaire de type II

Un filtre RIF `
a phase lineaire de type II est defini par une reponse impulsionnelle symetrique
comme dans lequation 3.15, avec N pair. Le retard = N 21 nest pas un entier. La reponse
frequentielle du filtre est :
N

j N1
2

H(e ) = e

bn = 2h(

2
X

1
bn . cos[(n )]
2
n=1

N
n),
2

n = 1, . . .

N
2

(3.20)

(3.21)

32

Synth`ese des filtres RIF

Remarque :
si = alors cos[(n 21 )] = 0 ce qui implique que H(ej ) = 0. Par
consequent, un filtrage ne respectant pas cette contrainte (e.g. un filtre passe-haut) est impossible `a realiser avec un filtre de type II.

3.2.3

Filtre RIF `
a phase lin
eaire de type III

Un filtre RIF `
a phase lineaire de type III est defini par une reponse impulsionnelle antisymetrique :
h(n) = h(N 1 n),
0n
(3.22)

avec N impair. Le retard =


est :

N 1
2

est un entier, = /2. La reponse frequentielle du filtre


N1

j N1
2

H(e ) = je

2
X

cn . sin(n)

(3.23)

n=1

N 1
cn = 2h(
n),
2

n = 1, . . .

N 1
2

(3.24)

Remarque : H(ej0 ) = H(ej ) = 0. Par consequent, un filtrage ne respectant pas cette


contrainte est impossible `
a realiser avec un filtre de type III. Les filtres passe-bande ou certains
derivateurs sont realisables.

3.2.4

Filtre RIF `
a phase lin
eaire de type IV

Un filtre RIF `
a phase lineaire de type III est defini par une reponse impulsionnelle antisymetrique comme dans lequation 3.22, avec N pair. Le retard = N 21 nest pas un entier,
= /2. La reponse frequentielle du filtre est :
N

H(ej ) = jej

N1

2
X

n=1

dn = 2h(

N
n),
2

1
dn . sin[(n )]
2
n = 1, . . .

N
2

(3.25)
(3.26)

Remarque : H(ej0 ) = 0, H(ej ) 6= 0. Par consequent, un filtrage ne respectant pas cette


contrainte est impossible `
a realiser avec un filtre de type IV. Les filtres passe-haut ou certains
derivateurs sont realisables.
La figure 3.1 resume les caracteristiques des 4 types de filtre RIF `a phase lineaire. Elle trace
des exemples de reponses impulsionnelle symetriques (types I et II) ou antisymetriques (types
III et IV) et des exemples de reponses frequentielles.

Exemple 3.2.1 : Analyse dun filtre numerique RIF


Soit un filtre RIF defini par sa reponse impulsionnelle h(n) :
h(n) = 0.1(n) 0.3(n 2) + 0.5(n 3) 0.3(n 4) + 0.1(n 6)

3.2 Filtres `
a phase lineaire

33

h(n)

h(n)

N-1

N-1

2
b) Filtre de type II

a) Filtre de type I

h(n)

h(n)

N-1

c) Filtre de type III

N-1

2
d) Filtre de type IV

Figure 3.1 Les quatre types de filtres RIF `a phase lineaire

34

Synth`ese des filtres RIF


1. Donner les expressions de lequation aux differences finies ainsi que la fonction de
transfert en Z.
2. Tracer la reponse impulsionnelle h(n) du filtre.
3. Calculer la reponse frequentielle H(ej ) du filtre. Determiner son module et sa phase.
On note que :
(1 +2 )
2 1
)
cos(
ej1 + ej2 = 2 ej 2
2
4. Donner les valeurs du module en = 0, /2, , , 2.
5. Tracer approximativement son module. De quel type de filtre sagit-il ?

3.3

M
ethode de synth`
ese par fen
etrage

Soit un filtre numerique ideal H(ej ), periodique de periode 2. Il est decomposable en serie
de Fourier par sa reponse impulsionnelle :
H(ej ) =

h(n)ejn

(3.27)

n=

Sa reponse impulsionnelle peut etre exprimee en fonction de H(ej ) par :


Z
1
h(n) =
H(ej )ejn d
2

(3.28)

Ce filtre est non causal et `


a reponse impulsionnelle infinie. La mani`ere la plus simple dobtenir
un filtre RIF approchant H(ej ) est de limiter h(n) par :

h(n), 0 n < N

h(n) =
0, n < 0 et n N

On obtient dans ce cas un filtre numerique RIF approche h(n)


dont la reponse frequentielle
est modifiee par le phenom`ene de Gibbs [OS99], cest `a dire lapparition dondulation dans
les bandes passantes et attenuees damplitude convergeant vers une valeur non nulle lorsque

N . De mani`ere plus generale, on peut representer h(n)


comme le produit du filtre ideal
h(n) avec une fenetre `
a duree finie w(n).

h(n)
= h(n).w(n)

(3.29)

Dans lexemple precedent, w(n) est la fenetre rectangulaire r(n) definie par :

1, 0 n < N
r(n) =
0, n < 0 et n N
j ) :
On peut alors etudier la reponse frequentielle du filtre RIF ainsi synthetise H(e
j ) = H(z)|

H(e
z=ej =

N
1
X

h(n).w(n).ejn

(3.30)

n=0

j ) =
H(e

1
2

H(ej )W (ej() )d

= H(e ) W (ej )

(3.31)
(3.32)

3.3 Methode de synth`ese par fenetrage

35

j ) sera donc le resultat de la convolution entre le filtre


La reponse frequentielle du filtre H(e
ideal et la transformee de Fourier de la fenetre. Les caracteristiques de cette derni`ere sont
donc tr`es importantes. On devra trouver un fenetrage dont le W (ej ) se rapproche le plus
des caracteristiques de ().
La figure 3.2 montre ce phenom`ene de convolution. Les effets sur le filtre ideal sont :
lapparition dondulations en bandes passante et attenuee,
une zone de transition moins rapide determinee par la largeur du lobe principal.
H()

W()

^
H()

Figure 3.2 Processus de convolution de la reponse frequentielle du filtre ideal par la fenetre

Exemple 3.3.1 : Calcul de la TF de la fenetre rectangulaire



1, 0 n < N
Soit la fenetre rectangulaire r(n) definie par : r(n) =
0, n < 0 et n N

1. Calculer la transformee de Fourier R(ej ) de r(n).


2. Tracer sa reponse frequentielle entre et . Donner en particulier la valeur en 0
(amplitude du lobe principal), la largeur du lobe principal et lamplitude du lobe
secondaire.

Exemple 3.3.2 : Filtrage passe bas RIF `a phase lineaire


Soit le filtre passe-bas ideal defini par :
 j
e
pour
c c
j
H(e ) =
0 pour c < et < c
1. Tracer la reponse frequentielle de H(ej ) en module et phase entre 2 et 2.
2. Calculer et tracer h(n).
3. Expliquer comment obtenir un filtre RIF de longueur N `a partir de ce filtre. On utilisera

la fenetre etudiee dans lexemple precedent. Donner et tracer les valeurs de h(n).
j ).
4. Donner une formule analytique de la reponse frequentielle du filtre H(e
5. Tracer son module et sa phase.

36

3.3.1

Synth`ese des filtres RIF

Caract
eristiques des principales fen
etres

Les principales fenetres utilisees sont detaillees `a la figure 3.3. Elles sont definies par les
equations ci dessous :
Rectangulaire

1, 0 n < N
(3.33)
w(n) =
0, n < 0 et n N
Triangulaire (Bartlett)

w(n) =

Hanning
w(n) =

2n
N 1 ,
2n
N 1 ,

0 n N21
N 1
2 nN 1
0, n < 0 et n N

0.5 0.5 cos

2n
N 1

Hamming
w(n) =

0.54 0.46 cos

w(n) =

0.42 0.5 cos

2n
N 1

+ 0.08 cos

, 0nN 1

(3.35)

(3.36)

0, n < 0 et n N

2n
N 1

Blackman

(3.34)

, 0nN 1

0, n < 0 et n N

4n
N 1

, 0nN 1

0, n < 0 et n N

(3.37)

Rectangulaire
Bartlett
Hanning
Hamming
Blackman

0.8

w(n)

0.6

0.4

0.2

10

20

30

40

50

60

Figure 3.3 Reponses temporelles des principales fenetres


Ces fenetres sont les principales fonctions utilisees en analyse spectrale et en synth`ese de
filtre RIF. Leurs reponses frequentielles 20 log 10 |W (ej )|sont donnees `a la la figure 3.4 avec

3.3 Methode de synth`ese par fenetrage

37

N = 64. On voit que selon la fenetre, la largeur du lobe principal et lamplitude du plus grand
lobe secondaire diff`erent. Par exemple, la fenetre rectangulaire poss`ede le lobe principal le
plus etroit (4/N ), mais le lobe secondaire le moins attenue (13dB). Le tableau 3.1 resume
ces caracteristiques. On y voit en particulier quen utilisant une fenetre sans discontinuite et
plus lisse (e.g. Hamming ou Blackman), on peut reduire de mani`ere importante lamplitude
des lobes secondaires parasites. La colonne de droite est en relation avec la synth`ese RIF et
sera detaillee dans la section suivante.
Fentre de Bartlett
0

20

20
W dB

W dB

Fentre rectangulaire
0

40
60

60
0

0.1

0.2
0.3
0.4
Fentre de Hanning

80

0.5

20

20
W dB

W dB

80

40

40
60
80

0.1

0.1

0.2
0.3
0.4
Fentre de Hamming

0.5

40
60

0.1

0.1

0.2
0.3
0.4
Fentre de Blackman

0.5

80

0.2

0.3

0.4

0.5

W dB

20
40
60
80

0.2

0.3

0.4

0.5

Figure 3.4 Reponses frequentielles des principales fenetres

3.3.2

Choix de la fen
etre dans la m
ethode de synth`
ese

On voit donc que le choix de la fenetre aura une influence sur les performances du filtre.
En particulier, les caracteristiques importantes et leur influence sur le filtre synthetise sont
detaillees ci dessous.
La largeur de la zone de transition = |p a | definie `a la section 1.3.2 sera
directement fonction de la largeur du lobe principal m donnee dans le tableau 3.1.
Lorsque la frequence de coupure ou de transition du filtre nest pas trop proche de 0
ou de , on peut considerer que
= 2 m . On voit donc que la transition sera

38

Synth`ese des filtres RIF


Type de fenetre

Rectangulaire
Bartlett
Hanning
Hamming
Blackman

Rapport damplitude
entre lobe principal
et lobe secondaire

13dB
25dB
31dB
41dB
57dB

Largeur du lobe
principal m

Attenuation minimale
en bande attenuee A

4/N
8/N
8/N
8/N
12/N

-21dB
-25dB
-44dB
-53dB
-74dB

Table 3.1 Caracteristiques des principales fenetres


dautant plus faible que N sera grand.
Les ondulations en bande passante et en bande attenuee seront egales, on notera A =
1 = 2 et on parlera de filtre equiripple. Cette attenuation est donnee par la quatri`eme
colonne du tableau 3.1. On voit que A ne d
epend que du type de fen
etre et
non de N .

^
H()
1+A
1
1A

H()

W()

Figure 3.5 Illustration de leffet du fenetrage sur le filtre ideal

La procedure de synth`ese dun filtre numerique RIF par fenetrage `a partir de la reponse
impulsionnelle dun filtre ideal h(n) consiste `a :
1. choisir en fonction de lattenuation A le type de fenetre `a utiliser,
2. choisir en fonction de la largeur de la zone de transition et du type de la fenetre
w(n) la longueur de la reponse impulsionnelle N .

Le filtre RIF resultant h(n)


est ensuite defini par h(n)
= h(n).w(n). Il sera de longueur N .

3.4 Methode de synth`ese par echantillonnage en frequence

39

Remarque : un decalage de de la reponse impulsionnelle du filtre ideal h(n) peut etre

necessaire afin de rendre le filtre


h(n) `a phase lineaire. On aura alors : h(n)
= h(n ).w(n).
Le calcul de la largeur de la zone de transition est ici presente de facon empirique. Dans la
plupart des cas, cette approximation reste suffisante, mais il est quelque fois necessaire diterer
plusieurs fois lalgorithme de synth`ese afin dassurer que le filtre entre dans le gabarit specifie.
Aussi un dernier type de fenetre dit de Kaiser peut etre utilisee. Cette methode, permettant
dobtenir une formulation exacte des param`etres et A, ne sera pas developpee ici, mais
on peut se rapporter `
a [OS99] pour lutiliser.

Exemple 3.3.3 : Caracteristique dun filtre


Soit un filtre defini par une zone de transition = 0.1 et une attenuation > 30dB,
determiner la taille et le type de fenetre `a utiliser.

3.4

M
ethode de synth`
ese par
echantillonnage en fr
equence

La methode de synth`ese par echantillonnage en frequence est appliquee depuis la reponse


frequentielle dun filtre continu ideal H(ej ). A partir de celle-ci et dune valeur de N fixee,
efinie par :
on realise un echantillonnage en frequence de pas e = 2
N d
jke ) , H(ej )| 2k
H(e
=

(3.38)

H(ej)
H(ke)
1

Figure 3.6 Echantillonnage


frequentiel dun filtre derivateur
La figure 3.6 montre un exemple de derivateur defini `a partir dun filtre continu. On remarelimine lechantillon en
quera en particulier que prendre N points entre [0, 2[ `a un pas de 2
N
jk
e

):
= 2. Le filtre RIF h(n)
est alors trouve par TFD inverse de H(e

h(n)
=

N 1
1 X jke 2j n.k
N , n = 0, 1 . . . N 1
H(e
)e
N

(3.39)

k=0

h(n)
= 0, ailleurs

(3.40)

Cette methode de synth`ese est tr`es simple et permet de realiser toute forme de filtre. De plus,
elle peut etre combinee avec la methode du fenetrage. La fonction de transfert en Z du filtre

40

Synth`ese des filtres RIF

sera :

H(z)
=

N
1
X

h(n)z

(3.41)

n=0

En retravaillant cette fonction de transfert, on obtient :


#
" N 1
N
1
N
1
X
X
X
n.k
1
n
jk
2j
e

N
z n
H(z)
=
h(n)z
=
H(e
)e
N
n=0
n=0
k=0
#
"N 1
N
1
X
X
n.k
1

jke )
e2j N z n
H(z)
=
H(e
N

H(z)
=

H(z)
=

1
N

(3.42)

(3.43)

n=0

k=0
N
1
X

N.k

2j N N
z
jke ) 1 e
H(e
k
2j N
1e
z 1
k=0

N 1
1 z N X jke
1
H(e
)
k
N
1 e2j N z 1

(3.44)

(3.45)

k=0

La fonction de transfert du filtre H(z)


peut donc etre egalement exprimee comme une mise en
parall`ele de N filtres RII du premier ordre complexe. Cette decomposition permet dobtenir
directement les coefficients de cette structure du filtre `a partir de la reponse frequentielle
recherchee.
Exemple 3.4.1 : Synth`ese dun filtre passe-bas
Soit un filtre passe-bas ideal defini par :

1 pour || < c = 4
j
N
H(e ) =
0 pour 4
N || <
jke ).
1. Tracer le filtre ideal entre [0, 2]. Tracer ensuite le filtre echantillonne H(e

2. Calculer h(n)
par TFD inverse.

3. Calculer deux versions de H(z).

Chapitre 4

Transform
ee de Fourier Rapide
4.1

Naissance de la TFR

La transformation de Fourier rapide (TFR), ou encore Fast Fourier Transform (FFT), est
directement issue dune reorganisation du calcul des matrices de la transformee de Fourier
discr`ete (TFD) dont la definition est donnee dans les equations 4.1 et 4.2. X(k) est la TFD
du signal x(n). N points du signal x(n) donnent N points de la TFD X(k).
X(k) =

N
1
X

x(n).e(2j

n.k
)
N

n=0

x(n) =

, k = 0, 1 . . . N 1

N 1
n.k
1 X
X(k).e(2j N ) , n = 0, 1 . . . N 1
N

(4.1)

(4.2)

k=0

x(n) et X(k) sont, dans le cas general, des nombres complexes.


Nous pouvons reecrire lequation 4.1 sous forme matricielle en faisant ainsi apparatre la
complexite de lalgorithme de la TFD.

X(0)
X(1)
..
.

X(N 1)

1
1

..

=
.

1
WN1
..
.

1
WN2
..
.

..
.

WN2
WNN 1

WN4
2(N 1)
WN

avec WN le twiddle factor egal `


a e(2j N )

x(0)


x(1)

..

.
2(N 1)
WN

x(N 1)
(N 1)2
WN
WNN 1
..
.

(4.3)

La TFD revient `
a calculer un produit matrice-vecteur o`
u chaque element est de type complexe.
La complexite de calcul de la TFD est donc de N 2 multiplications, et de N (N 1) additions
sur des nombres complexes. Ceci revient `a une complexite de 4N 2 multiplications reelles et
N (4N 2) additions reelles. Cet algorithme se comporte donc en O(N 2 ), mais ne poss`ede pas
de probl`emes dadressage car les x(n) et les WNk sont ranges dans lordre en memoire.
En exploitant les proprietes des WNk (symetrie, periodicite, ...) :
41

42

Transformee de Fourier Rapide

k(N n)

= (WNkn )

k(n+N )

= WN

WN

WN

n+N/2
WN
WN2kn

(4.4)

n(k+N )

= WNkn

(4.5)

= WNn
=

(4.6)

kn
WN/2

(4.7)

on peut reduire le nombre doperations arithmetiques par un rapport de 2, mais la complexite


globale reste en O(N 2 ) [OS75].
De nombreux travaux ont essaye de reduire la complexite de la transformee de Fourier discr`ete, mais il a fallu attendre 1965 et la paire Cooley et Tuckey qui ont publie un algorithme
applicable quand N est le produit de 2 ou plusieurs entiers. Cette publication allait engendrer
de nombreuses recherches sur les algorithmes de calculs des transformees ; la FFT etait nee.
Depuis, et encore de nos jours, beaucoup dalgorithmes de traitement numerique du signal
sont bases sur lutilisation de cet algorithme efficace (ou de ses nombreux derives) pour reduire leur complexite.
Le principe fondamental de la TFR (en francais dans le texte) repose sur la decomposition
du calcul dune sequence de N echantillons en TFD successives sur un nombre inferieur de
points. Selon la mani`ere dont ce principe est implante, on obtient differents algorithmes, tous
comparables au niveau de leur complexite.
TFR partagee dans le temps ou DIT (decimation in time) :
x(n) est decompose en sous sequence.
TFR partagee en frequences ou DIF (decimation in frequency) :
X(k) est decompose en sous sequence.

4.2

TFR partag
ee dans le temps (DIT)

Depuis la formule 4.1, on partage X(k) en une somme sur les termes dindices pairs et une
autre sur les termes dindices impairs, dans notre exemple on se limitera au cas o`
u N est une
puissance de deux.
X
X
X(k) =
x(n).WNnk +
x(n).WNnk
(4.8)
n pair

n impair

N/21

X(k) =

N/21

x(2n).WN2nk +

nk
x(2n).WN/2
+ WNk

n=0

(4.9)

N/21

n=0

X(k) = G(k) + WNk .H(k)


o`
u

(2n+1)k

x(2n + 1).WN

n=0

N/21

X(k) =

nk
x(2n + 1).WN/2

(4.10)

n=0

(4.11)

G(k) : TFD sur les N/2 points dindices pairs,


H(k) : TFD sur les N/2 points dindices impairs.

De plus, on peut reduire la complexite de calcul des echantillons N/2 `a N 1 en calculant


X(k + N/2), puis en appliquant les proprietes de symetrie (voir equation 4.13). On obtient

4.2 TFR partagee dans le temps (DIT)

43

ainsi le calcul dun papillon de la TFR.

N
X(k + ) =
2
X(k +

N/21

N/21

n(k+N/2)
x(2n).WN/2

(k+N/2)
WN

n(k+N/2)

x(2n + 1).WN/2

(4.12)

n=0

n=0

N
) = G(k) WNk .H(k)
2

(4.13)

Lapplication de ces equations est representee graphiquement `a la figure 4.1. On remarque


quune TFD dordre N est decomposee en 2 TFD dordre N/2 suivies dune recombinaison
dont la complexite est en O(N ).
x(0)
x(2)

W80

TFD

x(4)

W81

N/2 points

W82

x(6)

W83

x(1)
x(3)

W84

TFD

x(5)

W85

N/2 points

W86

x(7)

W87

X(0)
X(1)
X(2)
X(3)
X(4)
X(5)
X(6)
X(7)

Figure 4.1 Decomposition DIT de la TFD


Comme N/2 est egalement un nombre pair, on peut de nouveau partager chacune des TFD
dordre N/2 en deux TFD dordre N/4 jusqu`a arriver `a une TFD sur deux points pour laquelle le graphe flot est de complexite O(N ). Finalement il en resulte un graphe flot possedant
log2 N etages de recombinaison (complexite O N )) comme represente `a la figure 4.3 ; la complexite de la transformee de Fourier est enfin reduite `a O(N log2 N ).
Loperation elementaire est ici appelee papillon DIT. On peut le representer sous sa forme generale entre deux etages m et m+1 avec m = 1, 2, . . . , log2 N (figure 4.2 et syst`eme dequations
4.14).
Xm (p)

Xm (q)

Xm+1 (p)

W rN

-1

Xm+1 (q)

Figure 4.2 Papillon DIT de la TFR

Xm+1 (p) = Xm (p) + WNr .Xm (q)


Xm+1 (q) = Xm (p) WNr .Xm (q)

(4.14)

44

Transformee de Fourier Rapide

Un papillon DIT, dont les equations sont donnees ci dessus (4.14) necessite 1 multiplication,
1 addition et 1 soustraction sur des nombres complexes. Le graphe complet necessite le calcul
de N2 log2 N papillons ce qui donne donc en unite de calcul :
N2 log2 N multiplications de nombres complexes,
N log2 N additions/soustractions de nombres complexes, ou,
2N log2 N multiplications de nombre reels 1 ,
3N log2 N additions/soustractions de nombre reels 2 .
Cette complexite precise peut servir `a evaluer le temps de calcul dune TFR compl`ete sur
nimporte quel processeur.
X(0)

X(0)

X(1)

X(8)

X(2)

X(4)

X(3)

X(12)

X(4)

X(2)

X(5)

X(10)

X(6)

X(6)

X(7)

X(14)

X(8)

X(1)

X(9)

X(9)

X(10)

X(5)

X(11)

X(13)

X(12)

X(3)

X(13)

X(11)

X(14)

X(7)

X(15)

X(15)

Figure 4.3 Graphe dune TFR DIF sur 16 echantillons

1. 1 multiplication complexe requiert 4 multiplications et 2 additions sur des nombres reels.


2. 1 addition complexe requiert 2 additions sur des nombres reels.

4.3 TFR partagee dans les frequences (DIF)

45

Si Xm (.) et Xm+1 (.) peuvent etre places en memoire sur le meme vecteur on parle de calcul en
place. De plus, le fait de faire apparatre la separation pair/impair au depart (DIT) puis de
separer `a nouveau en N/4, N/8,... groupes dechantillons, implique en entree des echantillons
dont les adresses suivent un ordre appele bit-reverse tel que :
si la representation en binaire de lindice (n) est (nb . . . n2 n1 n0 ) alors celle de son bitreverse (n ) est (n0 n1 n2 . . . nb ).
A loppose de la TFD, la TFR gen`ere un calcul dadresse non negligeable. Entre deux etages m
et m+1, les W k ne varient pas lineairement avec les x(k). De plus, il est necessaire de presenter
`a lalgorithme les echantillons dans un ordre non regulier (bit-reverse) ce qui engendre un calcul
dadresse supplementaire. Ces probl`emes ne sont pas negligeables - surtout sur un processeur
general - car ils rajoutent `
a la complexite elementaire une complexite dadressage.

4.3

TFR partag
ee dans les fr
equences (DIF)

Depuis la formule 4.1, on partage X(k) en une somme sur les N/2 premiers termes et une
autre sur les N/2 autres termes :
N/21

X(k) =

x(n).WNnk

n=0

N
1
X

x().WNnk
N/21

N/21

X(k) =

x(n).WNnk

N/21 h

n=0

kN/2
WN

x(n + N/2).WNnk

(4.16)

n=0

n=0

X(k) =

(4.15)

n=N/2

i
x(n) + (1)k .x(n + N/2) WNnk

(4.17)

On effectue une separation des indices pairs et impairs :


N/21

X(2p) =

[x(n) + x(n + N/2)] WN2pk

(4.18)

[x(n) x(n + N/2)] WN2pk .WNn

(4.19)

n=0
N/21

X(2p + 1) =

n=0

N/21

X(2p) =

pk
[x(n) + x(n + N/2)] WN/2

(4.20)

n=0

X(2p + 1) =

N/21 

n=0


pk
.WNn
[x(n) x(n + N/2)] WN/2

(4.21)

De meme que pour le partage temporel, le remaniement des equations am`ene le calcul de deux
TFD dordre inferieur selon le schema de la figure 4.4.

46

Transformee de Fourier Rapide


x(0)

X(0)

x(1)

X(2)

TFD

x(2)

X(4)

N/2 points

x(3)

X(6)

x(4)

X(1)

W80

x(5)

TFD

W81

x(6)

W82

x(7)

X(3)

N/2 points

X(5)
X(7)

W83

Figure 4.4 Decomposition DIF de la TFD


Xm (p)

Xm+1 (p)

Xm (q)
-1

W rN

Xm+1 (q)

Figure 4.5 Papillon DIF de la TFR

On peut egalement continuer `


a diviser ces transformees dordre inferieur comme dans le cas
precedent (DIT) jusqu`a arriver au papillon unitaire dont le graphe est decrit `a la figure 4.5
et dans le syst`eme dequations 4.22.


Xm+1 (p) = Xm (p) + Xm (q)


Xm+1 (q) = [Xm (p) Xm (q)].WNr

(4.22)

La complexite elementaire est identique `a la TFR partagee dans le temps, la seule difference
reside dans le calcul dadresse de la table des W k lors des etapes, qui est plus simple `
a
programmer dans le cas DIF. De plus ce sont les echantillons en sortie qui sont places en
ordre bit-reverse.

4.4

Autres graphes de la TFR

Divers param`etres permettent de modifier la structure du graphe flot de donnees de la Transformee de Fourier Rapide (mode dadressage, structure graphique, base du calcul), nous allons
essayer den enumerer les principaux.
Le graphe `
a geometrie constante se caracterise par le fait que chaque passe du calcul poss`ede
la meme structure graphique que les autres passes. Celui-ci est directement issu de la decomposition de la matrice [W ] de la transformee de Fourier discr`ete en matrices de Good [Ka91]
selon la relation ci-dessous.

4.4 Autres graphes de la TFR

47

W =

log
2N
Y

Di .Ci

i=1

avec : Di des matrices diagonales, et Ci les matrices de Good.


Un exemple pour N=4 est represente sous forme matricielle dans lequation 4.23 puis sous
son equivalent de graphe dans la figure 4.6 ci-dessous.



X(0)
1 1 0 0
1
X(1) 0 0 1 1 0



X(2) = 1 1 0 0 0
X(3)
0 0 1 1
0
x(0)

0
1
0
0
1

0 0
1 1 0 0
x(0)

0 0
0 0 1 1 x(1)

1 0
1 1 0 0
x(2)
0 W
0 0 1 1
x(3)
1

(4.23)

X(0)

x(2)
1

x(1)
x(3)

-1

W1

X(1)
X(2)
X(3)

Figure 4.6 Graphe dune TFR `a geometrie constante sur 4 echantillons


Un autre param`etre donnant des graphes de calcul differents est celui du bit-reverse. En effet
on peut choisir lentree comme la sortie selon lordre normal ou lordre bit-reverse. Ceci a pour
effet de modifier la forme du graphe ainsi que du calcul des indices des Wi . Cependant, si
pour eviter un calcul dadressage supplementaire on desire obtenir un graphe dont `a la fois les
entrees comme les sorties sont dans lordre naturel, on passe dans une forme de calcul dit non
en place. Cette forme poss`ede linconvenient majeur de perdre la notion de papillon. Cest `
a
dire quentre deux passes successives on est oblige de memoriser les vecteurs intermediaires,
ce qui a pour effet de doubler la memoire necessaire `a lalgorithme.
On peut egalement utiliser dautres bases de calcul de la transformee (nos exemples etant en
base 2) qui consistent `
a separer la TFD en plus de deux (quatre par exemple) TFD dordre
inferieur ce qui a pour effet de reduire un peu encore la complexite (O(N log4 N ) pour une TFR
base (ou radix) 4). Par contre le papillon elementaire voit son nombre de calcul augmenter.
On peut citer lexemple de la TFR DIF en base 4 dont la complexite en operation est 3N
4 log4 N
multiplications complexes et 4N log4 N additions complexes. Un exemple de graphe radix 4
est donne en annexe du document.

X(2)

X(3)

X(4)
0

entre ordre bit-reversed

X(10)
X(6)
X(14)
0

X(1)

X(5)

0
0

X(6)
X(7)
0

X(9)
0

X(5)

X(3)

DIT:
(Dcimation en
temps)

X(13)

X(14)

FFT

X(15)

FFT inverse

A = A + BW
B = A - BW
W= e

X(12)

-2j
N

k
k

A = A + BW
B = A - BW
W= e

-2j
N

-k
-k

k
B

Transformee de Fourier Rapide

X(11)

X(7)

X(10)

3
0

X(15)

X(9)

2
0

X(13)

X(11)

X(8)

sortie ordre normal

X(12)

48

X(2)
0

Annexes au chapitre sur la TFR

X(4)

4.5

X(1)

X(8)

Graphe dune TFR DIT radix 2 sur 16 points

Figure 4.7 Graphe dune TFR DIT radix 2 sur 16 points

X(0)

X(0)

4.5.1

FFT DIT RADIX-2 en place sur 16 points

X(0)

X(1)

X(2)

X(6)
X(7)

X(8)

X(9)

X(10)

X(11)

X(12)

X(13)

X(14)

X(15)

frquence)

W= e

X(6)
0

X(14)

A = A + B
B = (A-B) W
W= e

-2j
N

X(9)
X(5)

X(13)
X(3)
X(11)

X(7)
X(15)

FFT inverse

-2j
N

X(10)

X(1)

FFT
A = A + B
B = (A-B) W

X(12)
X(2)

X(5)

(Dcimation en

-k

sortie: ordre bit-reversed

entre: ordre normal

X(4)

DIF:

X(4)

X(3)

X(8)

Graphe dune TFR DIF radix 2 sur 16 points

Figure 4.8 Graphe dune TFR DIF radix 2 sur 16 points

X(0)

4.5 Annexes au chapitre sur la TFR

4.5.2

FFT DIF RADIX-2 en place sur 16 points

k
B

49

X(1)

X(4)
X(12)

X(2)
X(3)

entre: ordre bit-reversed

X(2)
X(10)

X(4)
X(5)

X(6)
X(14)

X(6)
X(7)

X(1)
X(9)

X(8)
X(9)

X(5)
X(13)

X(10)
X(11)

X(3)
X(11)

X(12)
X(13)

X(7)
X(15)

X(14)

FFT

Gomtrie
Constante

FFT inverse

A' = A + BW
B' = A - BW
W= e

-2j
N

k
k

A' = A + BW
B' = A - BW
W= e

-2j
N

X(15)

-k
-k

Transformee de Fourier Rapide

sortie: ordre normal

X(8)

X(0)

Graphe dune TFR `


a g
eom
etrie constante sur 16 points

Figure 4.9 Graphe dune TFR `a geometrie constante sur 16 points

X(0)

50

4.5.3

FFT GEOMETRIE CONSTANTE sur 16 points

X(0)

X(1)

X(8)

X(2)
X(3)

X(2)

X(5)

X(6)

X(7)

X(14)

X(8)

X(1)

X(10)

X(9)

X(6)

X(9)

X(10)

X(5)

X(11)

X(13)

X(12)

X(3)

X(13)

X(11)

X(14)
X(15)

X(7)
X(15)

FFT inverse

A = A+B+C+D
-k
B = (A-jB-C+jD)W
-2k
C = (A-B+C-D)W
D = (A+jB-C-jD)W -3k

FFT
A = A+B+C+D
k
B = (A-jB-C+jD)W
2k
C = (A-B+C-D)W
D = (A+jB-C-jD)W 3k
W=e

-2j
N

W=e

-2j
N

sortie: ordre bit-reversed

X(12)

X(4)

entre: ordre normal

X(4)

Graphe dune TFR DIF radix 4 sur 16 points

Figure 4.10 Graphe dune TFR DIF radix 4 sur 16 points

X(0)

4.5 Annexes au chapitre sur la TFR

4.5.4

FFT DIF RADIX-4 en place sur 16 points

A
B
k

C
D

2k

3k D

51

52

4.5.5

Transformee de Fourier Rapide

Algorithme DIF de la TFR radix 2 sur I points complexes

Complexite de calcul : O(I.log2 I)


Nombre total de passes : log2 I
Nombre de groupes dans une passe : 2passe
Nombre de papillons calcules : I.log2 I/2
Complexite dun papillon : 2 additions et 1 multiplication complexes, ou 6 additions et 4
multiplications reelles.
PROCEDURE FFT (X, isign )
[I]complexe X: -- echantillons temporels et spatiaux
int isign:
-- FFT / FFT inverse
variables locales:
[I]real: Wr, Wi:
-- racines Ni`
eme de lunit
e
-- Wr[k]:= COS(2p k / I)
-- Wi[k]:= isign * SIN(2p k / I)
int k,K:
real C,S:
int I1: -- nombre dechantillons par groupe
int I2: -- nombre de papillons par groupe
int I3: -- nombre de groupe
int i,l: -- indice des
echantillons du papillons
complexe t: -- variable temporaire
DEBUT
I2:=I;
I3:=1;
POUR passe DE 1 `
a LOG2I FAIRE
I1:=I2; I2:= I2 / 2;
k:=0;

K:= I / I1;

POUR j DE 0 `
a I2-1 FAIRE
C:=Wr[k]; -- COS (2p k / I)
S:=Wi[k]; -- SIN(2p k / I)
k:=k + K;
POUR i DE j a
` I-1 PAR I1 FAIRE
l:=i + I2;
--- papillon X[i] X[l]
--- X[i] = X[i] + X[l]
--- X[l] = (X[i] - X[l])
t.r:=X[i].r - X[l].r;
t.i:=X[i].i - X[l].i;
X[i].r := X[i].r + X[l].r;

4.5 Annexes au chapitre sur la TFR


X[i].i := X[i].i + X[l].i;
X[l].r := C*t.r + S*t.i;
X[l].i := C*t.i - S*t.r;
FAIT
I3:=I3 * 2;
-- nombre de groupes
FAIT
FAIT
-- bit reverse : remettre la sortie dans lordre normal
j:=1
POUR i DE 1 `
a I-1 FAIRE
SI i<j ALORS
t:=X[j]
X[j]:=X[i]
X[i]:=t
FINSI
k:=I/2
TANT QUE k<j FAIRE
j:=j-k
k:=k/2
FAIT
j:=j+k
FAIT
SI isign=-1 ALORS
--- normaliser X dans le cas de la FFT inverse
POUR tous les X[i] FAIRE
X[i]:=X[i] / I
FAIT
FINSI
FIN

53

54

Transformee de Fourier Rapide

Chapitre 5

Analyse spectrale de signaux


num
eriques
5.1

Introduction

Une des applications majeures utilisant la transformee de Fourier Discr`ete (TFD) en TNS
est lanalyse du contenu frequentiel (spectre) de signaux continus. Le principe de lanalyse
de Fourier numerique dun signal analogique deterministe est represente `a la figure 5.1. La
numerisation du signal continu xc (t) est effectuee de mani`ere classique par un filtre antirepliement suivi dun convertisseur analogique-numerique. Le signal discret x(n) est ensuite
multiplie par une fonction w(n) nommee fenetre temporelle sur N points. Ce fenetrage est
une consequence de la contrainte de duree finie imposee par la TFD qui ne peut seffectuer sur
un nombre infini dechantillons. Le signal resultant xN (n), dont on pourra ensuite analyser le
spectre par TFD (ou par TFR) puis par un calcul du module et eventuellement de la phase,
est donc representatif dune observation limitee du signal dentree sur un horizon dobservation T0 = N.T . Leffet de cette troncature temporelle, indispensable au calcul numerique de
lanalyse spectrale, va etre etudie dans les sections suivantes.

xc(t)

Filtre P.Bas
anti-repliement
c =

CAN
Fe

x(n)
x

xN(n)
FFT

||2

fentre wN(n)
Figure 5.1 Principe de lanalyse de Fourier numerique dun signal analogique deterministe

5.2
5.2.1

Troncature dun signal discr


etis
e
Op
eration dans le domaine temporel

Soit N le nombre dechantillons manipulables par le calculateur numerique utilise, le signal


tronque xN (n) est le resultat de la multiplication du signal discret x(n) de duree infinie par
une fenetre w(n) de duree T0 = N T , appelee fenetre dobservation.
55

56

Analyse spectrale de signaux numeriques

La version tronquee du signal discretise secrit donc finalement :


xN (n) = x(n) w(n)

(5.1)

La fenetre la plus intuitive est une fenetre sans ponderation, cest `a dire une fenetre rectangulaire notee wr (n) definie par :

1 si 0 n N 1
wr (n) =
(5.2)
0 ailleurs
La version tronquee du signal discretise secrit donc finalement dans le cas de la fenetre
rectangulaire :
N
1
X
xN (n) = x(n) wr (n) =
x(k) (n k)
(5.3)
k=0

5.2.2

Cons
equences dans le domaine fr
equentiel

La TF de (5.1) donne
XN (ej ) = X(ej ) W (ej )
Z
1
=
X(ej ).W (ej() ) d
2

(5.4)

o`
u W (ej ) est la representation de la fenetre dans le domaine frequentiel.
Dans le cas de la fenetre rectangulaire, on a :
W (ej ) = Wr (ej ) = ej

N1
2

sin(N /2)
sin(/2)

(5.5)

Une representation de la fenetre wr (n) ainsi que du module de sa TF est donnee `a la figure
5.2.
Exemple 5.2.1 : Calculer la TF Wr (ej ) de la fenetre rectangulaire wr (n) et demontrez quelle secrit comme dans lequation 5.5.
Les consequences obtenues dans le domaine frequentiel sont issues de la convolution spectrale
illustree par lequation 5.4. On obtient donc :
un lissage de la representation spectrale qui implique une perte de finesse de lanalyse
en frequence et un masquage des raies trop proches en frequence,
des ondulations dans la reponse frequentielle dues aux effets des lobes secondaires de
W (ej ), entranant du bruit et du masquage en amplitude.

5.3

Analyse spectrale par TFD

La troncature du signal sur N points nest pas le seul effet dapproximation obtenu lors de
lanalyse spectrale. En effet, lequation 5.4 de convolution spectrale est une fonction de la
variable continue . Ce calcul nest donc pas realisable sur un processeur numerique et doit
donc etre approxime par la transformee de Fourier discr`ete (TFD, voir polycopie EII1).

5.3 Analyse spectrale par TFD

57

fentre rectangulaire
1

0.6

w [n]

0.8

0.4
0.2
0

10

15
n

20

25

30

(j.2.pi.f))

|W (e

Amplitude

0.8
0.6
0.4
0.2
0
0.5

0.4

0.3

0.2

0.1

0
f

0.1

0.2

0.3

0.4

0.5

Figure 5.2 Fenetre rectangulaire de N = 31 points et le module de sa transformee de


Fourier.

58

Analyse spectrale de signaux numeriques

La derni`ere etape de lanalyse spectrale est donc le calcul de le TFD du signal fenetre xN (n).
On obtient alors :
XN (k) =

L1
X

xN (n)ej

2kn
N

n=0

k = 0, 1, . . . , L 1,

(5.6)

o`
u la longueur de la fenetre N est inferieure ou egale `a la longueur de la TFD L. On prendra
le plus souvent L = N , sauf dans le cas du zero-padding (voir section 5.4).
Comme illustree dans le chapitre sur la TFD (voir polycopie EII1), la relation entre la TF
XN (ej ) de xN (n) (equation 5.4) et XN (k) secrit :

XN (k) = XN (ej ) =2k/L
(5.7)

Lespace entre deux points frequentiels de lanalyse est donc de 2/L et la relation entre les
points dindice k de la TFD et les frequences continues fk est donnee par :
k =

k
2k
fk =
L
LT

(5.8)

Exemple 5.3.1 : Determinez lexpression de la TFD, calculee avec une fenetre


rectangulaire (N = 8) du signal x(n) = 2cos2fo n avec fo = 0, 2. Calculez la valeur
numerique des X(k) et dessinez `
a la main ce resultat.
(a) : Fonction cos(2pi fo n) chantillonne tronque sur N=32 points
1

xN(n)

0.5
0

0.5
1

10

15
20
(b) : XN(ej2pif)=TF{xN(n(}

25

30

35

20
15
10
5
0
0.5

0.4

0.3

0.2

0.1
0
0.1
(c) : XN(k)=TFD{xN(n)}

0.2

0.3

0.4

0.5

0.4

0.3

0.2

0.1

0.2

0.3

0.4

0.5

15
10
5
0
0.5

0.1

Figure 5.3 Analyse de Fourier et TFD dun signal sinusodal discret

5.4 Zero-Padding

59

La figure 5.3 illustre lanalyse spectrale par TFD sur un signal sinusodal discret. Le signal
x(t) = cos(2f0 t) est echantillonne puis tronque sur N = 32 points par une fenetre rectangulaire (voir figure 5.3(a)). La figure 5.3(b) represente la TF XN (ej ) de xN (n) et illustre
le probl`eme de la troncature temporelle presente dans la section precedente. En effet, la TF
dun cosinus etant composee de deux impulsions de Dirac situee en f0 et f0 , alors la TF du
signal fenetre est composee de la somme des TF de la fenetre decalees en f0 et f0 (ce que
vous devez avoir trouve si vous avez resolu lexemple page 57).
La figure 5.3(c) represente le resultat du calcul de la TFD sur L = 32 points du signal xN (n)
et souligne donc lerreur due `
a lechantillonnage en frequence effectue lors de la TFD. La TFD
XN (k) est une version echantillonnee de XN (ej ), dans laquelle lespace entre deux points
successifs represente F e/L (ici F e/32). Une erreur visible ici est donc que plusieurs raies
spectrales peuvent etre distinguees apr`es TFD, pour uniquement deux raies effectives dans le
spectre theorique de x(t) = cos(2f0 t).

5.4

Z
ero-Padding

Faire du zero-padding consiste `


a augmenter artificiellement le nombre dechantillons en ajoutant des zeros :
{ x(0) , x(1) , . . . , x(N 1) , 0 , 0 , . . . , 0 }
(5.9)
jusqu`a obtenir un nouveau nombre dechantillons egal a` L. Ainsi, si lon calcule maintenant la
TFD sur ces donnees, cela entrane que les X(k) seront calcules en L frequences : fk = k/L ;
elles seront toujours situees dans [0 ; 1[, mais comme elles sont plus nombreuses, elles seront
plus rapprochees. Cela aura pour vertu de r
ev
eler plus de d
etails invisibles sinon.
La figure 5.4 illustre par exemple quatre analyses de Fourier faites sur une fenetre carree de
taille initiale : N = 8 points. Ces quatre analyses seront effectuees successivement `a laide de
N points, 2N points (donc les N echantillons de la fenetre auxquels on ajoute N zeros), 4N
points (donc il y a 3N zeros) et enfin 8N points.

5.5

Param`
etres dune analyse spectrale

Deux param`etres peuvent etre affines pour ameliorer lanalyse :


N , la longueur de lanalyse (ou T0 ),
le type de fenetre wN (n) `
a appliquer sur le signal.
Cette section illustre ce resultat sur des signaux de type sinusodal.
Soit le signal discret constitue de trois raies
x(n) = cos 2f1 n + cos 2f2 n + 0, 25 cos 2f3 n

(5.10)

avec f1 = 0, 175, f2 = 0, 2 et f3 = 0, 4. Sa TF secrit immediatement




=
X ej2f

1
[(f + 0, 175) + (f 0, 175) + (f + 0, 2) + (f 0, 2)
2
+0, 25 (f + 0, 4) + 0, 25 (f 0, 4)]

(5.11)

60

Analyse spectrale de signaux numeriques

wr[n] (N=8 points)


1
0.5
0

10
5
0
0.5
10

0.4

0.3

0.2

0.1

0.1

0.2

0.3

0.4

0.5

0.4

0.3

0.2

0.1

0.1

0.2

0.3

0.4

0.5

0.4

0.3

0.2

0.1

0.1

0.2

0.3

0.4

0.5

0.4

0.3

0.2

0.1

0.1

0.2

0.3

0.4

0.5

5
0
0.5
10
5
0
0.5
10
5
0
0.5

Figure 5.4 Effet du zero-padding sur lanalyse de Fourier dune fenetre rectangulaire de
N = 8 points.

5.5 Param`etres dune analyse spectrale

61


Le spectre XN ej2f de xN (n) utilisant une fenetre rectangulaire est donc donne par


=
XN ej2f

1h
Wr (ej2(f +0,175) + Wr (ej2(f 0,175) + Wr (ej2(f +0,2) + Wr (ej2(f 0,2)
2
i
+0, 25 Wr (ej2(f +0,4) + 0, 25 Wr (ej2(f 0,4)

(5.12)

Ce resultat est illustre `


a la Figure 5.5. Il est donc clair que dune part la taille de la fenetre
influe sur laptitude de lanalyse de Fourier `a separer deux raies et que dautre part les lobes
secondaires influent necessairement sur laptitude de lanalyse de Fourier `a detecter des raies
de faible amplitude plus ou moins eloignees dune de forte amplitude.
Spectre thorique
1

0.5

0
0.5
1.5

0.4

0.3

0.2

0.1Spectre pour
0
N=210.1

0.2

0.3

0.4

0.5

0.4

0.3

0.2

0.1Spectre pour
0
N=410.1

0.2

0.3

0.4

0.5

0.4

0.3

0.2

0.1
0 N=121
0.1
Spectre pour

0.2

0.3

0.4

0.5

0.4

0.3

0.2

0.1

0.2

0.3

0.4

0.5

1
0.5
0
0.5
1.5
1
0.5
0
0.5
1.5
1
0.5
0
0.5

0.1

Figure 5.5 Spectre (theorique puis utilisant des fenetres rectangulaires de differentes tailles
N ) de trois sinusodes
La relation (5.4) montre clairement que la qualite du resultat de la TF, cest-`
a-dire ladequation avec le resultat theorique que lon aurait sans troncature, depend du type de fenetre
utilise. La section 3.3.1 du chapitre 3 page 36 a resume les principales des fenetres utilisees en
TNS ainsi que leurs caracteristiques. Le tableau 5.1 resume ces caracteristiques. La figure 5.6
represente un exemple de TF dune fonction w(n) de fenetrage et en definit ses param`etres :
largeur du lobe principal : m ,
(s )|
rapport damplitude entre lobe principal et lobe secondaire : = 20 log |W
u s
|W (0)| , o`
est la frequence correspondant au maximum damplitude des lobes secondaires.

Dans une analyse spectrale, on definit deux type de resolution : la resolution en frequence et
la resolution en amplitude.

62

Analyse spectrale de signaux numeriques


Type de fenetre

Rapport damplitude
entre lobe principal
et lobe secondaire

13dB
25dB
31dB
41dB
57dB

Rectangulaire
Bartlett
Hanning
Hamming
Blackman

Largeur du lobe
principal m

4/N
8/N
8/N
8/N
12/N

Table 5.1 Caracteristiques des principales fenetres

W()

m/2
m

f
fe/2

1/NT fs

Figure 5.6 Param`etres dune fenetre w(n)


Spectre thorique
1

0.5

0
0.1
1

0.12

0.14

0.16
0.18 N=128,
0.2fenetre 0.22
0.24
Spectre pour
rectangulaire

0.26

0.28

0.3

0.12

0.14

0.16
0.18 N=128,
0.2fenetre 0.22
0.24
Spectre pour
de Hamming

0.26

0.28

0.3

0.12

0.14

0.16
0.18 N=256,
0.2fenetre 0.22
0.24
Spectre pour
de Hamming

0.26

0.28

0.3

0.12

0.14

0.16

0.26

0.28

0.3

0.5

0
0.1
0.6
0.4
0.2
0
0.1
0.6
0.4
0.2
0
0.1

0.18

0.2

0.22

0.24

Figure 5.7 Spectre (theorique puis utilisant des fenetres rectangulaires et de Hamming de
differentes taille N ) de trois sinusodes

5.6 Conclusion (methodologie)

63

R
esolution en fr
equence : la finesse en frequence est la capacite de lanalyseur `
a
distinguer deux raies spectrales proches lune de lautre. Clairement, ce phenom`ene,
connu aussi sous le nom de masquage frequentiel, depend de la largeur du lobe principal de la reponse frequentielle WN (ej ) de la fenetre (m du tableau 5.1). En effet,
deux raies proches dun espace < m se verront confondues apr`es lanalyse par TFD.
La figure 5.5 illustre ce phenom`ene puisque lanalyse pour N = 21 ne permet pas de
distinguer les raies en f = 0.2 et f = 0.175, tandis que des valeurs de N = 41 ou
N = 121 le permettent.
On definit donc la resolution en frequence comme : m .
Cette resolution peut etre amelioree en augmentant le nombre de points N de lanalyse
et depend du type de fenetre utilisee.
R
esolution en amplitude : la finesse en amplitude est la capacite de lanalyseur `
a
distinguer des raies spectrales de faible amplitude ou `a distinguer une raie spectrale
de faible amplitude proche dune autre plus importante. Dans cas, ce sont les lobes
secondaires de de la reponse frequentielle WN (ej ) de la fenetre qui viennent masquer
une raie de faible amplitude en ajoutant un bruit `a lanalyse. La figure 5.7 illustre ce
phenom`ene puisque lanalyse pour N = 128 par fenetre rectangulaire ne permet pas de
distinguer la raie en f = 0.2 damplitude 0.25 parmi le bruit d
u aux lobes secondaires,
tandis quune fenetre de Hamming et des valeurs de N = 128 ou N = 256 le permettent.
On definit donc la resolution en amplitude comme le rapport damplitude entre lobe
principal et lobe secondaire : .
Cette resolution nest pas fonction du nombre de points N de lanalyse mais depend
fortement du type de fenetre utilisee.

5.6

Conclusion (m
ethodologie)

Lanalyse spectrale de signaux deterministes requiert donc trois etudes prealables importantes :
1. le signal x(t) X(f ) doit etre correctement
echantillonn
e pour obtenir les echantillons x(n) qui seront pris en compte par bloc (segment) de N
echantillons ;
2. ces bloc seront conditionn
es par multiplication par une fen
etre, de taille
N ,w(n), `
a choisir en fonction des performances attendues :
(a) la resolution en amplitude souhaitee choix du type de fenetre,
(b) la resolution en frequence souhaitee m choix de N ;
3. finalement les blocs fenetres, xN (n) sont transformes dans le domaine spectral par TFD
(calculee par lalgorithme FFT). Le resultat (les XN (k)) est une replique correcte du
vrai spectre X(f ) si les erreurs suivantes sont suffisamment faibles :
(a) erreur de recouvrement de spectres (Aliasing error en anglais) (bien choisir la frequence dechantillonnage et utiliser un filtre passe-bas antirepliement) ;

64

Analyse spectrale de signaux numeriques


(b) erreur due `
a la longueur de la fenetre (plus elle est longue et moins cette erreur
est importante, de plus le choix de la fenetre permet de diminuer lerreur due aux
lobes secondaires) ;
(c) erreur de reconstruction du spectre (il faut utiliser le zero-padding pour diminuer
cette erreur).

On peut donc finalement representer facilement lanalyse de Fourier numerique dun signal
analogique deterministe comme indiquee `a la Figure 5.1.
Exemple 5.6.1 : Simulation avec Matlab Dans un script Matlab, redigez un
programme qui permet de :
1. generer et afficher `
a lecran N = 10 points dune sinusode x1 (t) = a cos 2f1 t
de f1 = 100Hz echantillonee `a Fe = 1000Hz et damplitude a = 2 ;
(a) effectuer une analyse de Fourier elementaire (sans zero-padding) de ce
signal et afficher le resultat sur lintervalle principal de frequences normalisees [1/2 ; +1/2[ ;
(b) refaire une analyse de Fourier de ce signal avec divers choix de zeropadding ;
(c) explorer linfluence de divers types de fenetrages effectues sur le signal ;
2. regenerer et afficher `
a lecran le meme signal que precedemment mais cette
fois avec N = 15 points ;
(a) refaire la meme etude que precedemment ;
(b) ajouter une seconde sinusode et rendre compte de la pertinence de lanalyse effectuee en fonction de lecart en frequence des deux composantes
elementaire du signal.
(c) considerer deux sinusodes proches `a la limite de resolution constatee au
point precedent et ajouter une troisi`eme sinusode faible et eloignee des
precedentes ; analysez alors linfluence de differentes fenetres dans cette
situation (resolution des deux sinusodes proches et detection de la sinusode faible eloignee).

Chapitre 6

Syst`
emes multi-cadences
Les syst`emes de TNS utilises jusqualors ne consid`erent quune seule frequence dechantillonnage F e. Les syst`emes multi-cadences changent la frequence dechantillonnage au cours de la
chane de traitement afin quelle soit la plus adaptee aux traitements `a realiser. Par exemple,
il est aise de comprendre quapr`es un filtrage selectif passe-bas il est possible de reduire la
frequence dechantillonnage `
a une valeur equivalente `a deux fois la bande passante du filtre
passe-bas realise, sans pour autant transgresser le theor`eme dechantillonnage de Shannon.
Cette reduction permet de diminuer la complexite du filtrage `a realiser.
Les principaux operateurs utilises en traitement du signal multi-cadences sont la decimation
(reduction dun facteur M de la frequence dechantillonnage) et linterpolation (augmentation
dun facteur M de la frequence dechantillonnage) ou une combinaison des deux.

6.1

R
eduction de la fr
equence d
echantillonnage

La reduction de la frequence dechantillonnage, ou decimation, ou encore sous-echantillonnage,


par un facteur M entier est une operation simple puisquil suffit de ne garder que 1 echantillon
sur M de la sequence dorigine. Soit un signal continu xc (t) echantillonne `a la periode T
represente par la sequence x(n) = xc (nT ), on posera donc le resultat de la decimation de
x(n) dun facteur M par la relation suivante :
xd (n) = x(nM )

(6.1)

La notation graphique utilisee est M (voir figure 6.1). Si la frequence dechantillonnage en


entree du decimateur est F e, alors celle de sortie vaudra F e = F e/M . La periode dechantillonnage en sortie vaudra quant `
a elle T = M T .
Afin que loperation de decimation seffectue sans recouvrement de spectre, il est necessaire
que le spectre du signal xc (t) respecte le theor`eme de Shannon au regard de la frequence
F e. Cela implique que si Xc (j), la TF de xc (n), est `a bande limitee, i.e. Xc (j) = 0 pour
|| 0 , alors xd (n) est une representation exacte de xc (t) si /T = /(M T ) 0 ou encore
2F e = 2F e/M 0 .
Dans le cas o`
u le sous echantillonnage ne pourra seffectuer sans recouvrement de spectre, il
faudra alors en limiter la bande par un filtre passe-bas de frequence de coupure F e/2.
65

66

Syst`emes multi-cadences

x(nT)

xd(nT')

T' = MT
Figure 6.1 Decimation dun signal

Il est utile de chercher une relation entre le spectre de x(n) et celui de xd (n). On peut poser :
X(ej ) =


 

1 X
2k

Xc j
T
T
T

(6.2)

k=

De mani`ere similaire :

 

 

2l
2l

1 X
1 X

=
Xd (e ) =
Xc j
Xc j
T
T
T
MT
MT
MT
j

l=

(6.3)

l=

Afin de trouver la relation entre les equations 6.2 et 6.3 les indices des sommes peuvent etre
exprimes par l = i + kM o`
u 0 i M 1 et lequation 6.3 peut etre reecrite de la mani`ere
suivante :
"
#
 
M
1

X
X
2k
1
1

2i
(6.4)

Xc j
Xd (ej ) =
M
T
MT
T
i=0

k=

On obtient alors la relation


Xd (ej ) =

M 1
1 X
X(ej(/M 2i/M ) )
M

(6.5)

i=0

Le decimation est illustree `


a la figure 6.2. Lequation 6.5 montre que le spectre Xd (ej ) est
compose de M copies de X(ej ) mises `a lechelle par un facteur 1/M et decalees par des
entiers multiples de 2.
Par consequent, un decimateur sera en pratique compose dun filtre passe-bas ideal de frequence de coupure Fc = 1/2T = 1/2T M suivi dun operateur de decimation M comme
represente `
a la figure 6.3.

6.2

Augmentation de la fr
equence d
echantillonnage

Laugmentation de la frequence dechantillonnage, ou interpolation, ou encore sur-echantillonnage,


par un facteur L entier est une operation consistant `a augmenter le nombre dechantillons de
la sequence dorigine dun facteur L. Soit un signal continu xc (t) echantillonne `a la periode T
represente par la sequence
x(n) = xc (nT ),
(6.6)

6.2 Augmentation de la frequence dechantillonnage

67

xc(t)
1

x(nT)

/T

xd(nT')

T'

Xc()

1/T

X(ej)

1/T'

Xd(ej)

/T'

/T

/T'

Figure 6.2 Representation dun signal continu xc (t) et de son echantillonnage `a 2 frequences
differentes et de leurs spectres respectifs

x(nT)

Filtre Passe Bas


Gain = 1
c = /M

v(nT)

y(nT')

Figure 6.3 Decimateur : filtrage passe-bas suivi dune decimation

68

Syst`emes multi-cadences

on posera donc le resultat de linterpolation de x(n) dun facteur L par la relation suivante :
xi (n) = xc (nT ) = xc (nT /L),

(6.7)

avec T = T /L la periode dechantillonnage en sortie de linterpolation ou F e = F e.L la


frequence dechantillonnage en sortie de linterpolation.
` partir des equations 6.6 et 6.7, on peut deduire que :
A
xi (n) = xc (nT /L) = x(n/L),

6.2.1

n = 0, L, 2L, . . .

(6.8)

evateur de fr
El
equence d
echantillonnage

On definit par elevateur de frequence, le syst`eme decrit `a la figure 6.4 consistant en lajout
de L 1 zeros entre deux echantillons successifs de la sequence dentre x(n) defini par :
xe (n) =

x(n/L),
0,

n = 0, L, 2L, . . .
ailleurs

(6.9)

ou de mani`ere equivalente :
xe (n) =

k=

x(k) (n kL)

(6.10)

La notation graphique utilisee est L (voir figure 6.4). Si la frequence dechantillonnage en


entree de l elevateur de frequence est F e, alors celle de sortie vaudra F e = F e.L. La periode
dechantillonnage en sortie vaudra quant `a elle T = T /L.

x(nT)
t

xe(nT')
t

evateur de frequence dun facteur L : ajout de L 1 zeros entre deux echanFigure 6.4 El
tillons

Loperation L peut etre etudiee dans le domaine frequentiel afin de comprendre sont utilite
dans le cadre de linterpolation. La TF de xe (n) sexprime :
jT

Xe (e

) =

xe (nT )ejnT

(6.11)

n=

n=0,L,2L,...

nT
L

ejnT

(6.12)

6.2 Augmentation de la frequence dechantillonnage

69

En posant n = kL, on obtient :

Xe (ejT ) =
=

x(kT )ejkLT

k=

(6.13)

x(kT )ejkT

k=
jT

= X(e

(6.14)

(6.15)

Lajout de zeros na donc aucun effet sur le spectre, si ce nest lecartement de lintervalle de
periodisation dun facteur L. Ceci est illustre `a la figure 6.5. On sapercoit alors quun filtrage
passe-bas ideal de gain L et de frequence de coupure F c = 1/2T permet de retrouver la forme
du spectre correspondant `
a xc (t) echantillonne `a T .

1/T

X(ej)

1/T'

Xe(ej)

/T

/T'

/T

/T

/T

/T'

Figure 6.5 Influence sur le spectre dun signal interpole par des zeros

6.2.2

Interpolation

Un interpolateur (voir figure 6.6) sera donc defini comme la succession dun elevateur de frequence L, suivi dun filtrage passe-bas ideal de gain L et de frequence de coupure F c = 1/2T
(ou c = /L).

x(nT)

xe(nT')

Filtre Passe Bas


Gain = L
c = /L

xi(nT')

Figure 6.6 Principe de linterpolation dun signal

Dautres syst`emes dinterpolation sont connus (interpolation lineaire ou par TFD) mais ne
seront pas detailles ici.

6.2.3

Multiplication de la fr
equence d
echantillonnage par un facteur rationnel

La figure 6.7 represente un schema permettant de multiplier la frequence dechantillonnage


dun syst`eme par un facteur rationnel R = L/M . On aura alors F e = R.F e = L.F e/M ou

70

Syst`emes multi-cadences

encore T = T /R = T.M/L. Pour cela, il suffit deffectuer tout dabord une interpolation par
un facteur L, puis une decimation par un facteur M . Les deux filtres presents dans la
decimation (voir figure 6.3) et dans linterpolation (voir figure 6.6) peuvent alors reunis dans
un seul et meme filtre dont la frequence de coupure Fc dependra des valeurs relatives de L et
M selon :
1
soit R > 1 M < L F e > F e

Fc = 2T
,
1

soit R < 1 M > L F e < F e

Fc = 2T .
On peut egalement ecrire :


1
1
Fc = min
,
(6.16)
2T 2T
ou encore
 
(6.17)
,
c = min
L M
car le filtre passe-bas travaille `
a une frequence dechantillonnage L.F e (ou encore M.F e).
x(nT)

Filtre Passe Bas


Gain = L
c = min(/L, /M)

y(nT')

Figure 6.7 Multiplication de la frequence dechantillonnage par un facteur rationnel R =


L/M

Chapitre 7

Arithm
etique virgule fixe
Alfred S. se rend aupr`es de la societe chaotique de banque afin deffectuer un
placement `
a long terme. Le banquier lui propose le placement suivant : Vous
faites un placement initial de e 1 euros (e = 2.718281459045 . . .). La premi`ere
annee on multiplie votre capital par 1 et on prel`eve 1e de frais. La deuxi`eme annee
on multiplie votre capital par 2 et on prel`eve 1e de frais. La n-i`eme annee on
multiplie votre capital par n et on prel`eve 1e de frais. Vous pouvez retirer largent
apr`es 25 ans. Interessant, nest-ce pas ? La banque realise une simulation sur son
calculateur et obtient au bout de 25 ans +4645987753e. Alfred signe logiquement le
contrat propose. Rentre chez lui, il verifie le calcul sur sa calculatrice de poche et
trouve 140.1012 e ! En realite un calcul symbolique donne un resultat denviron
4 centimes. Cette anecdote prouve quun calcul peut etre instable, meme pour un
petit nombre doperations (ici 25 et 25).
Lobjectif de ce chapitre est de traiter de larithmetique utilisee pour limplantation dapplications de traitement numerique du signal au sein de syst`emes embarques. Dans la premi`ere
partie, les caracteristiques de larithmetique virgule fixe sont presentees. Dans la seconde partie, le processus de codage des donnees en virgule fixe est detaille. Levaluation de la precision
dune specification virgule fixe est presentee dans la troisi`eme partie. Deux exemples sont
enti`erement traites afin dillustrer le processus de conversion en virgule fixe.

7.1
7.1.1
7.1.1.1

Pr
esentation de larithm
etique virgule fixe
Les diff
erents types de codage
Rappels sur le codage dun entier

Repr
esentation non sign
ee
Le codage dun nombre x dans une base B correspond `a la decomposition de ce nombre
suivant les puissances successives de la base :
x=

n1
X
i=0

ai B i ,

71

72

Arithmetique virgule fixe


valeur d
ecimale
A10
0
1
2
3
4
5
6
7
8
...
15

code binaire pur


a3 a2 a1 a0
0000
0001
0010
0011
0100
0101
0110
0111
1000
...
1111

Table 7.1 Representation binaire non signee

ai appartenant `
a lensemble des symboles avec 0 ai B 1.
x est ecrit dans la base B (la notation xB ) sous la forme
an1 an2 . . . a0 .
Les puissances de la base B sont appelees les poids et les ai les coefficients. an1 est le coefficient du poids fort et a0 est le coefficient du poids faible. En base 2, les poids sont couramment
appeles bit (Binary Digit).
Un entier positif non signe x est code en binaire sur b bits par la relation suivante :
x=

b1
X

bi 2i

(7.1)

i=0

Ce codage sur b bits, permet de coder tout les nombres compris entre 0 et 2b 1.

Repr
esentation sign
ee : signe valeur absolue (SVA)
Pour cette representation, la donnee x est composee dun bit de signe S et de b 1 bits
representant le module de x. La valeur de cette donnee est la suivante :
S

x = (1)

b2
X

bi 2i

(7.2)

i=0

Ce codage a deux inconvenients. La valeur 0 a deux representations +0 et 0 et les operations


arithmetiques ne sont pas faciles `
a realiser `a partir du cascadage des operations sur 1 bit. Il
est necessaire davoir deux operateurs differents pour faire une addition suivant le signe relatif
des deux operandes :
si les operandes sont de m
eme signe : il faut ajouter les valeurs absolues et garder le
signe
si les operandes sont de signe diff
erent : il faut faire une soustraction. Ainsi, les deux
operations `
a realiser en fonction du signe sont differentes

7.1 Presentation de larithmetique virgule fixe

73

Repr
esentation sign
ee en compl
ement `
a 2 (CA2)
Le complement `
a deux est le cas special du complement `a la base B. Pour les nombres positifs
le codage binaire pur est conserve. si A 0 et alors A est represente par an1 an2 . . . a0 avec :
A=

n1
X

ai 2i

i=0

Pour loppose de A un codage facilitant les operations arithmetiques est recherche. Soit
A , le nombre code par an1 an2 . . . a0 et correspondant au complement a
` 1 de A code
an1 an2 . . . a0 . Laddition de ces deux nombres permet dobtenir la valeur 2n 1 :
+

an1
an1
1

an2
an2
1

...
...
...

a0
a0
1

2n 1

Soit A , le nombre correspondant au complement a


` 2 de A et defini tel que A = A + 1.
Laddition dun nombre A et de son complement `a 2, A , permet dobtenir la valeur 2n :
A + A = (A + A ) + 1 = (2n 1) + 1 = 2n

En limitant le codage `
a n bits, la valeur est obtenue modulo 2n . Le bit n + 1 nest pas pris en
n
compte et donc 2 = 0.
A + A

=0

Ainsi le complement `
a 2, A , est choisi comme oppose de A puisque A + A = 0 sur n bits
n
(modulo 2 ).
La representation en code complement `a 2 de la donnee x est egale `a :
b1

x = 2

S+

b2
X

bi 2i

(7.3)

i=0

On ecrira egalement que si x > 0 alors x = /x + 1, o`


u /x est le complement de x.
Le domaine de definition D correspond `a lintervalle regroupant lensemble des valeurs representables par le code. Les bornes minimales et maximales de cet intervalle sont respectivement
Xmin et Xmax . Le domaine de definition de ce code nest pas symetrique par rapport `a lorigine, il est compose de 2b1 1 valeurs positives et de 2b1 valeurs negatives :
D = [Xmin ; Xmax ] = [2b1 ; 2b1 1]

(7.4)

La representation en code complement `a 2 est tr`es utilisee car elle poss`ede des proprietes
arithmetiques tr`es interessantes pour laddition et la soustraction. Le resultat dune serie
dadditions sera correct meme si les resultats intermediaires sont en dehors du domaine de
definition du codage, il suffit que le resultat final appartienne au domaine de definition. De
plus limplantation dans les processeurs numeriques des operateurs traditionnels utilisant ce
code est plus simple car elle necessite un operateur unique daddition et de soustraction que

74

Arithmetique virgule fixe

les donnees dentree soient positives ou negatives.


Un nombre reel pourra etre represente par la multiplication dun nombre entier par un coefficient q < 1. On parlera alors de virgule fixe.
7.1.1.2

Codage virgule fixe

Les donnees en virgule fixe sont composees dune partie fractionnaire et dune partie enti`ere
pour lesquelles le nombre de bits alloues reste fige au cours du traitement. Lexposant associe
`a chaque donnee est implicite et fixe. La figure 7.1 represente une donnee en virgule fixe composee dun bit de signe et de b 1 bits repartis en m bits pour la partie enti`ere et n bits pour
la partie fractionnaire. Nous utilisons dans la suite du document la notation (b, m, n) pour
definir le format dune donnee. Nous trouvons aussi dans la litterature la notation Qm.n .

2m-1

2 2

2

2-n

S b b

b

b

b b
b

b

m
Partie entire
(m bits)

Partie fractionnaire
(n bits)

Figure 7.1 Representation des donnees en virgule fixe


Le format dune donnee en virgule fixe est enti`erement defini par la longueur de sa partie
enti`ere et de sa partie fractionnaire et de la representation choisie. Nous presentons dans les
parties suivantes les proprietes des representations signe valeur absolue et complement `a deux
[Ka91].
Repr
esentation signe valeur absolue (SVA)
Pour cette representation, la donnee x est composee dun bit de signe S et de b 1 bits
representant le module de x. La valeur de cette donnee est la suivante :
x = (1)S

m1
X

bi 2i

(7.5)

i=n

Ce type de representation poss`ede deux representations de la valeur zero (10 . . . 0 et 00 . . . 0),


ainsi le nombre de valeurs representables Nc est egal `a 2b 1.
Le domaine de definition D correspond `a lintervalle regroupant lensemble des valeurs representables par le code. Dans le cas dune representation signe valeur absolue nous obtenons un
domaine de definition symetrique par rapport `a lorigine :
DR = [2m + 2n ; 2m 2n ]

(7.6)

7.1 Presentation de larithmetique virgule fixe

75

Repr
esentation

cadrage
`
a gauche

cadrage
`
a droite

conditions

m=0
n=b1

n=0
m= b1

2(b1)

[1 + q; 1 q]

[2b1 + q; 2b1 q]

Table 7.2 Cas particuliers de la representation signe valeur absolue

La dynamique dun code represente la difference entre la valeur minimale et maximale. Pour
la representation SVA, la dynamique est egale `a :
D = Xmax Xmin = 2.(2m 2n )

(7.7)

Le pas de quantification, correspondant `a la distance q entre deux valeurs successives, est


fonction de la dynamique D et du nombre de valeurs representables Nc :
q=

D
= 2n
Nc 1

(7.8)

Le niveau de dynamique correspond au rapport entre les valeurs absolues maximales et minimales representables par le code. Lexpression du niveau de dynamique exprime en dB, est
la suivante :
ND

dB

= 20 log

 max(|x|) 
min(|x|)

20.b. log(2) = 6, 02.b

(7.9)

Deux representations particuli`eres liees `a la position de la virgule sont couramment utilisees.


Lorsque la virgule est cadree `
a droite la valeur codee est enti`ere et lorsque celle-ci est cadree `
a
gauche la donnee est fractionnaire. Les caracteristiques de ces deux representations sont presentees dans le tableau 7.2. Plusieurs exemples de codage SVA sont presents dans le tableau
7.4.

Repr
esentation en compl
ement `
a 2 (CA2)
La representation en code complement `a 2 de la donnee x en virgule fixe est egale `a :
x = 2m S +

m1
X

bi 2i

(7.10)

i=n

Ce code a lavantage de ne posseder quune seule representation de la valeur zero. Le domaine


de definition de ce code nest pas symetrique par rapport `a lorigine, il est compose de 2b1 1
valeurs positives et de 2b1 valeurs negatives :
D = [2m ; 2m 2n ]

(7.11)

76

Arithmetique virgule fixe

Repr
esentation

cadrage
`
a gauche

cadrage
`
a droite

cadrage
`
an

condition

m=0

n=0

n+m= b1

2(b1)

2(n)

[1; 1 q]

[2b1 ; 2b1 q]

[2m ; 2m q]

Table 7.3 Cas particuliers de la representation complement `a 2

cadrage `
a gauche

Valeur
cadrage `
a droite

m=3 n=2

0.96875
0.9375
.
.
.
0.3125
0
0
-0.3125
.
.
.
-0.9375
-0.96875
-1

31
30
.
.
.
1
0
0
-1
.
.
.
-30
-31
-32

7.75
7.5
.
.
.
0.25
0
0
-0.25
.
.
.
-7.5
-7.75
-8

Repr
esentation
C.A.2
S.V.A.

011111
011110
.
.
.
000001
000000
111111
.
.
.
100010
100001
100000

011111
011110
.
.
.
000001
000000
100000
100001
.
.
.
111110
111111
...

Table 7.4 Exemples de codage

Le pas de quantification est identique `a celui de la representation precedente : q = 2n .


Les caracteristiques des representations cadrees `a gauche et cadrees `a droite sont presentees
dans le tableau 7.3. Plusieurs exemples de codage en CA2 sont presents dans le tableau 7.4.
7.1.1.3

Codage virgule flottante

Le codage des donnees en virgule flottante a ete normalisee par lIEEE. Dans cette partie, la
norme IEEE 754 est plus particuli`erement decrite. Pour cette norme, representee `a la figure
7.2, les donnees sont composees dun bit de signe S, dun exposant u et dune mantisse.
Lexposant u permet dobtenir un facteur dechelle explicite et variable au cours du traitement,
celui-ci est une puissance de 2. Ce facteur permet de sadapter `a la valeur `a representer. Afin
de ne coder que des nombres positifs, cet exposant sur E bits est code relativement `a la valeur
2E1 1. La mantisse represente la valeur de la donnee divisee par le facteur dechelle. Afin
deviter toute ambigute, le premier bit de la mantisse represente le coefficient 20 et est fixe
`a 1. La valeur de ce bit restant fixe au cours du traitement, celui-ci nest pas represente dans
le code. La mantisse est comprise dans lintervalle [1; 2[
La valeur de la donnee x est la suivante :
E1
M
1


X
X

di 2i 2E1 1
avec u =
Ci 2iM
x = (1)S .2u . 1 +
i=0

(7.12)

i=0

Dapr`es lequation 7.12 la valeur 0 nest pas representable. Les valeurs 00 . . . 00b et 11 . . . 11b

7.1 Presentation de larithmetique virgule fixe

77

d c

c

Exposant

c

Mantisse

Figure 7.2 Representation des donnees en virgule flottante


Type de repr
esentation

WL (bits)

M (bits)

E (bits)

simple pr
ecision (float)

32

23

double pr
ecision (double)

64

52

11

double pr
ecision
etendue (long double)

80

64

15

Table 7.5 Les differents types associes `a la norme IEEE 754. Les termes WL, M, et E
representent respectivement la largeur de la donnee, de la mantisse et de lexposant.

sont reservees pour coder des valeurs particuli`eres (0, ). Le domaine de definition est compose des deux sous-intervalles suivants :

avec

i
i[h
h
2Kmin ; 2Kmax .(2 2M )
DR = 2Kmax .(2 2M ); 2Kmin


Kmin = 2E1 + 2
Kmax = 2E1 1

(7.13)

(7.14)

Le pas de quantification est fonction


de la valeur representee. Pour les valeurs de x comprises
S
dans lintervalle [2u+1 , 2u ] [2u , 2u+1 ], le pas de quantification est egal `a :
q = 2u .2M

(7.15)

Lexpression 7.16 determine les bornes minimales et maximales du pas de quantification relatif.
Nous pouvons considerer quil est pratiquement constant pour lensemble des valeurs de x.
2(M +1) <

q
< 2M
|x|

(7.16)

Le niveau de dynamique de cette representation est egal `a :


ND = 20 log(2K ) avec K = 2E 1

(7.17)

Les differents types associes `


a cette norme IEEE 754 sont presentes dans le tableau 7.5.

78
7.1.1.4

Arithmetique virgule fixe


Comparaison virgule fixe et flottante

Niveau de dynamique
Le niveau de dynamique exprime en dB est represente ,`a la figure 7.3, en fonction du nombre
de bits utilises pour un codage en virgule fixe et en virgule flottante. Nous avons fixe pour le
codage en virgule flottante la taille de lexposant `a 1/4 de la longueur totale.
Lorsque le nombre de bits est inferieur `a 16, le niveau de dynamique obtenu avec une representation en virgule fixe est superieur `a celui dune representation en virgule flottante. Cette
tendance sinverse pour un nombre de bits superieur `a 16. Pour N=32, la representation en
virgule flottante montre tout son interet, la dynamique disponible permet dutiliser ce codage
dans la majorite des applications sans risque de debordements.
Dynamique virgule fixe/flottante
1500

Codage virgule fixe


Codage virgule flottante

Dynamique en dB

1000

500

10

15

20
Nombre de bits

25

30

Figure 7.3 Dynamique du codage en virgule fixe et en virgule flottante

7.1.2

D
efinition des r`
egles de larithm
etique virgule fixe

Nous considerons dans la suite de ce document que les donnees sont codees en virgule fixe
avec une representation en CA2.

7.1.2.1

Op
erations arithm
etiques

Op
erations arithm
etiques sur un bit Les operations arithmetiques entre 2 operandes
dun bit sont facilement realisables `
a base de portes logiques :
laddition est un OU EXCLUSIF, la retenue pour laddition un ET
la soustraction est un OU EXCLUSIF, la retenue un ET
la multiplication est un ET.

7.1 Presentation de larithmetique virgule fixe

79

Addition soustraction de nombres non sign


es Les operations sur 2 bits avec cascadage
des retenues sont utilisees.

a3
+

a2

a1

a0

b3

b2

b1

b0

s3

s2

s1

s0

r4

r3

r2

r1

r0

a3

a2

a1

a0

b3

b2

b1

b0

d3

d2

d1

d0

r4

r3

r2

r1

r0

Si la retenue du dernier etage est `


a 1, un depassement de capacite est present entrainant un
resultat errone et signifiant que
la somme des deux nombres est superieure `a 2n1 ,
le resultat de la soustraction est negatif
Addition et soustraction de nombres en compl
ement `
a 2 Linteret de la notation
des nombres negatifs en complement `a 2 est que lon na pas `a se preoccuper du signe de A
et B pour realiser loperation A + B ou A B. On realise une addition des deux codes par
cascadage de retenue et on garde le resultat sur n bits.
14
+13

0000 1110
0000 1101

- 14
+13

1111 0010
0000 1101

-14
-13

1111 0010
1111 0011

+27

0001 1011

-1

1111 1111

-27

1110 0101

Les probl`emes de debordement sont plus difficiles `a detecter. On le voit quand le signe du
resultat est non conforme `
a lalg`ebre.
Laddition des nombres reels en virgule fixe est identique aux nombres entiers (absence de
notion de virgule dans les syst`emes numeriques)

80

Arithmetique virgule fixe

7.1.3

Multiplication en binaire `
a base de d
ecalage

La multiplication de deux nombres non signes est representee `a la figure 7.4.

c7

b3 a 3
c6

b2 a3
b3 a2
c5

b1 a3
b2 a2
b3 a1
c4

a3
b3
b0 a 3
b1 a 2
b2 a 1
b3 a 0
c3

a2
b2
b0 a2
b1 a1
b2 a0
0
c2

a1
b1
b0 a1
b1 a0
0
0
c1

a0
b0
b0 a0
0
0
0
c0

Figure 7.4 Multiplication de nombres non signes


La multiplication de deux nombres signes est representee `a la figure 7.5.

c7

b3 a3
c6

b2 a3
b3 a2
c5

b1 a3
b2 a2
b3 a1
c4

a3
b3
b0 a3
b1 a2
b2 a1
b3 a0
c3

a2
b2
b0 a2
b1 a1
b2 a0
0
c2

a1
b1
b0 a1
b1 a0
0
0
c1

a0
b0
b0 a 0
0
0
0
c0

Figure 7.5 Multiplication de nombres signes


Pour eviter davoir `
a faire des soustractions, le bit de signe des deux operandes sur N bits est
etendu sur 2N bits comme represente `a la figure 7.6.

a3
b3
b0 a 3
b1 a 3
b2 a 3
b3 a 3
b3 a3
b3 a2
b3 a1
b3 a0
c7

a3
b3
b0 a 3
b1 a 3
b2 a 3
b3 a 3
b3 a2
b3 a1
b3 a0
0
c6

a3
b3
b0 a 3
b1 a 3
b2 a 3
b3 a 2
b3 a1
b3 a0
0
0
c5

a3
b3
b0 a 3
b1 a 3
b2 a 2
b3 a 1
b3 a0
0
0
0
c4

a3
b3
b0 a 3
b1 a 2
b2 a 1
b3 a 0
0
0
0
0
c3

a2
b2
b0 a 2
b1 a 1
b2 a 0
0
0
0
0
0
c2

a1
b1
b0 a1
b1 a0
0
0
0
0
0
0
c1

a0
b0
b0 a0
0
0
0
0
0
0
0
c0

Figure 7.6 Multiplication de nombres signes en utilisant lextension de signe

7.1.3.1

Addition virgule fixe

Laddition de deux operandes a et b necessite quelles poss`edent un format commun. Le type


de representation, la longueur de la partie enti`ere et la longueur de la partie fractionnaire

7.1 Presentation de larithmetique virgule fixe

81

doivent etre identiques pour les deux operandes. Si cette condition nest pas respectee il est
necessaire de modifier le format des operandes afin dobtenir un format identique (bc , mc , nc ).
Le format commun garantissant labsence de perte dinformation est le suivant :
mc = max(ma , mb )
nc = max(na , nb )
bc = m c + n c + 1

(7.18)

Pour les donnees ayant un format different du format commun, il est necessaire detendre le
nombre de bits des parties enti`eres et fractionnaires en suivant les r`egles suivantes :
partie fractionnaire : les (nc na ) bits supplementaires sont mis `a 0.
partie enti`ere : extension du bit de signe 1 . Dans le cas du complement `a 2 les
(mc ma ) nouveaux bits prennent la valeur du bit de signe.
Le format du resultat de laddition de deux operandes au format (bc , mc , nc ) est presente
a` lexpression 7.19. Nous obtenons un d
ebordement si le resultat de laddition des deux
operandes nappartient pas au domaine de definition Dc = [2mc ; 2mc [. Dans ce cas un bit
supplementaire est necessaire pour coder la partie enti`ere du resultat de laddition. Deux
exemples daddition sont presentes `
a la figure 7.7.

nAdd = nc

mc + 1
mAdd =
mc
"

"

"

"

(7.19)
si a + b 6 Dc
si a + b Dc
"

"

"

"

(7.20)

"

       

x (7.75)

  

      

x (7.75)

  

       

y (0.5)

   !

      

y (-0.5)

   !

       

z (8.25)

  #$

      

z (7.25)

  

Figure 7.7 Exemples daddition en virgule fixe

7.1.3.2

Multiplication

Pour une multiplication, les deux operandes doivent posseder la meme representation mais le
nombre de bits reserves pour chaque partie peut etre different. Neanmoins, il est necessaire
avant deffectuer loperation, detendre le bit de signe. La multiplication de deux nombres en
virgule fixe entrane le doublement du bit de signe, celui-ci peut etre elimine automatiquement
`a laide dun decalage `
a gauche. Pour un code en complement `a 2 nous pouvons considerer
que ce bit de signe redondant appartient `a la partie enti`ere. Le format du resultat de la
multiplication de deux operandes a et b est alors le suivant :
1. Lextension de signe dans le cas dune representation signe valeur absolue est plus complexe, il faut
decaler le bit de signe `
a la position bmc 1 et mettre `
a zero les bits bmc 2 `
a bma 1 .

82

Arithmetique virgule fixe

mM ult = ma + mb + 1
nM ult = na + nb
bM ult = ba + bb

(7.21)

Un exemple de multiplication est presente `a la figure 7.8.


Dans le cas de la virgule fixe cadree `
a gauche, le resultat de la multiplication de deux operandes
a et b appartenant `
a lintervalle [1; 1[ reste dans le meme intervalle. Il ny a donc pas de
debordement mais juste une augmentation de la precision du resultat. Cette propriete est tr`es
interessante car elle elimine le probl`eme du debordement.
BCD

BCE

% % % % % %

& &

x (-0.5)

234567 8 9:;<;=>

& & & & & %

% &

y (0.75)

234567 8 9:;<;=>

z (-0.375)

234567 8 9?;@;A>

& & & & & & & &


G
G
% % % % % & &

. ..
...

% % % % & &
& & & & &

% % % & % &

& &

BCD

BCF

'() *+ ,(-.+
'() *+ ,(-.+ /+*0.*1.)

Figure 7.8 Exemple de multiplication en virgule fixe

Codage virgule fixe en compl


ement `
a2
Definition :
x = 2m S +
[2m ; 2m

Domaine de definition : D =
Pas de quantification : q = 2n

m1
X

i=n

2n ]

bi 2i

7.2 Codage en virgule fixe

7.2

83

Codage en virgule fixe

valuation de
la dynamique
Contrainte
prcision
Dtermination de la
position de la virgule

valuation de
la prcision

Dtermination de la
largeur des donnes

Dtermination de la spcification virgule fixe

Spcification virgule flottante

Spcification virgule fixe

Implantation
matrielle
logicielle

ASIC
FPGA

DSP
C

Figure 7.9 Synoptique du processus dimplantation dune application en virgule fixe

Le synoptique du processus dimplantation dune application en virgule fixe est presente `


a
la figure 7.9. La specification de lapplication en virgule fixe est determinee `a partir dune
representation de lapplication sous la forme dun graphe flot de signal. Ce graphe represente
les differents traitements effectues sur le signal. Les noeuds de ce graphe sont les operations
arithmetiques (addition, soustraction, multiplication, division) et les operations de retard.
Avant de debuter le processus de conversion en virgule fixe, le graphe flot de signal representant lapplication doit etre defini. Ainsi, dans le cadre des filtres numeriques, la structure
dimplantation (cascade, parall`ele, directe, canonique ou transposee) doit etre selectionnee.
Trois etapes sont necessaires pour realiser le codage en virgule fixe. Elles correspondent `
a
levaluation de la dynamique des donnees, `a la determination de la position de la virgule
(definition de la largeur de la partie enti`ere) et `a la determination de la largeur des donnees
(definition de la largeur de la partie fractionnaire). Ensuite, la precision des calculs est evaluee afin de verifier que la specification virgule fixe respecte la contrainte de precision. Si cette
contrainte nest pas verifiee alors, cette specification virgule fixe est modifiee. Lobjectif de
ce processus de conversion est doptimiser limplantation de lapplication en sassurant que
lutilisation de larithmetique virgule fixe ne degrade pas trop les performances de lapplication. Les differentes etapes du processus de conversion en virgule fixe sont presentees dans les
parties suivantes.

84

Arithmetique virgule fixe

h(n )

Figure 7.10 Reponse impulsionnelle du filtre RIF considere

Exemple filtre RIF


Pour illustrer ce processus de conversion, lexemple dun filtre `a reponse impusionnelle finie
(RIF) de taille N = 32, est traite. La reponse impulsionnelle de ce filtre est definie ci-dessous
et representee `
a la figure 7.10 :
h(n) =

N
1
X
i=0

avec

ci .(n i)

(7.22)

3.i
N
1
+
i [0;
1]
5 160
2
nous utilisons un filtre RIF symetrique, ainsi nous obtenons

(7.23)

ci =

N
; N 1]
2
Le graphe flot de signal de cette application est represente `a la figure 7.11.
ci = cN 1i

zzHIHI

x (n )

cJ

cK

i[

zzHIHI

cO N

zzHIHI

cM L

Figure 7.11 Graphe flot de signal du filtre RIF

y (n )

(7.24)

7.2 Codage en virgule fixe

7.2.1

85

D
etermination de la dynamique des donn
ees

Le but de cette premi`ere phase est de determiner le domaine de definition de certaines donnees
de lapplication afin den deduire la position de la virgule par rapport au bit le plus significatif.
Cette position est definie afin de garantir labsence de debordement.
Deux types dapproche peuvent etre utilises pour determiner la valeur absolue maximale dune
donnee. Pour la premi`ere approche, lestimation est effectuee `a partir des valeurs prises par la
donnee et obtenues par simulation de lalgorithme en virgule flottante. La seconde approche
utilise une methode analytique permettant de determiner lexpression de la dynamique dune
donnee `a partir de celle des entrees de lapplication.
7.2.1.1

M
ethode par simulation

Ce type dapproche permet destimer la dynamique dune donnee `a partir de ses caracteristiques determinees lors de la simulation de lalgorithme en virgule flottante. Cependant, ces
approches sont tr`es sensibles au choix des stimuli dentree. Elles garantissent uniquement une
absence de debordement pour des signaux dont les caracteristiques sont proches de celles des
stimuli dentree. Lestimation de la dynamique la plus simple consiste `a prendre la valeur
absolue maximale des echantillons obtenus lors de la simulation. Des methodes plus evoluees
proposent de determiner la dynamique dune donnee `a partir de ses caracteristiques statistiques.

Exemple filtre RIF


Les simulations ont ete realisees avec trois types de signaux :
1 : signal aleatoire correspondant `a un bruit blanc uniformement distribue entre -1 et 1.
2 : signal aleatoire correspondant `a un bruit blanc possedant une distribution gaussienne.
3 : signal de type chirp, signal dont la frequence evolue lineairement au cours du temps
entre 0 et Fe /2.
Les signaux en entree et en sortie du filtre, obtenus `a laide de loutil Matlab, sont presentes
`a la figure 7.12. Pour les trois cas testes, le signal dentree est compris dans lintervalle ]
1; 1[. La dynamique de la sortie y a ete mesuree pour les trois cas. La dynamique obtenue
est respectivement de 3.4, 2.4 et 9.3. Ces resultats montrent que les valeurs obtenues pour
levaluation de la dynamique dependent fortement des signaux utilises en entree.

7.2.1.2

M
ethodes analytiques

Lobjectif des methodes analytiques est de determiner lexpression du domaine de definition


dune donnee `
a partir de la connaissance de la dynamique des entrees. Les methodes analytiques basees sur une estimation dans le pire cas garantissent labsence de debordement
mais lestimation est plus pessimiste. Differentes approches, presentees ci-dessous, peuvent
etre utilisees.

86

Arithmetique virgule fixe


x (n )

PQRST UVWXY RXSijQk\

y (n )

max ( y ( n ) ) = 3.4
g

x (n )

PQRST UVWXY ZWR[[S\X

y (n )

max ( y ( n ) ) = 2.4
g

x (n )

]^SQ_ `a bcdef

y (n )

max ( y ( n ) ) = 9.3
h

Figure 7.12 Representation des signaux en entree et en sortie du filtre pour trois types de
signaux dentree

Larithm
etique dintervalles Larithmetique dintervalles correspond `a une arithmetique
definie sur un ensemble dintervalles au lieu dun ensemble de nombre reels. Un intervalle
est assimile au domaine de definition dune variable x et est caracterise par sa valeur limite
a la valeur minimale de x et sa valeur limite superieure x corresinferieure x correspondant `
pondant `a la valeur maximale de x.
Larithmetique dintervalles definit le domaine de definition des donnees issues des operations
arithmetiques classiques. Considerons la donnee z issue dune operation arithmetique dont
les entrees sont les deux variables x et y. Le domaine de definition de la donnee z pour les
differents operateurs arithmetiques est le suivant :
z =x+y
z =xy
z =xy

[z, z] = [x + y, x + y]
[z, z] = [x y, x y]
[z, z] = [min(xy, xy, xy, xy), max(xy, xy, xy, xy)]

(7.25)

Considerons un syst`eme compose de Ne entrees xi (n). Soit y(n) une donnee quelconque de ce
syst`eme et definie en fonction des entrees de la mani`ere suivante :
y(n) = f (x0 (n), x1 (n), . . . xi (n), . . . xNe 1 (n))

(7.26)

7.2 Codage en virgule fixe

87

Le domaine de definition de la donnee y peut etre obtenu `a partir de celui des entrees en
appliquant `
a la fonction f , les differentes r`egles presentees `a lequation 7.25 :


[y, y] = f [x0 , x0 ], . . . [xi , xi ], . . . [xNe 1 , xNe 1 ]

(7.27)

Cette technique permet de definir le domaine de definition dune donnee qui est fonction
uniquement des entrees du syst`eme. En effet, dans le cas des syst`emes recursifs, certaines
donnees y(n) sont fonction des valeurs precedentes y(n i) de ces donnees. Le domaine de
definition de la donnee y etant fonction de son propre domaine de definition, larithmetique
dintervalles ne permet pas de determiner directement le domaine de definition de ce type de
donnee. Ainsi, cette technique ne peut etre mise en uvre de mani`ere simple que pour les
syst`emes non-recursifs.
Pour determiner la dynamique des donnees dun syst`eme non-recursif, le graphe flot de signal
representant le syst`eme est parcouru des sources (entrees) vers les racines (sorties) et les r`egles
definies `a la relation 7.25 sont appliquees `a chaque operateur. Dans les syst`emes recursifs, le
graphe flot de signal poss`ede des circuits, ainsi, le processus de parcours du graphe des entrees
vers la sortie ne peut pas se terminer.

Exemple filtre RIF


Nous considerons une entree x comprise dans lintervalle ] 1; 1[. Lobjectif de cette etape est
de determiner le domaine de definition de la sortie de la serie daccumulations correspondant
au signal y. Nous propageons le domaine de definition de lentree x au sein du graphe flot
de signal representant lapplication. Pour la sortie du filtre, la valeur absolue maximale est
bornee `a laide de la relation suivante :
ymax = max (|y(n)|) =
n

x (n )

] 1,1[

cn
] ct , ct [

zzlmlm

co

N
1
X
m=0

zzlmlm

cs r

(7.28)

zzlmlm

] cw v , cw v [

] cu , cu[

|cm | = 10.75

cq p

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

] cy x , cy x[

y (n )

Figure 7.13 Determination de la dynamique en sortie du filtre `a laide de larithmetique


dintervalle

88

Arithmetique virgule fixe

Normes pour les syst`


emes lin
eaires Dans cette partie, nous presentons les normes definies pour determiner la dynamique des donnees dans le cadre des syst`emes lineaires invariant
dans le temps. Les expressions des normes sont presentees dans le cas des syst`emes lineaires `
a
mono-entree ou multi-entrees. Pour le syst`eme mono-entree, considerons un syst`eme lineaire
invariant dans le temps de fonction de transfert H(z), dentree x et de sortie y :
y(n) = h(n) x(n) Y (z) = H(z).X(z)

(7.29)

Pour le syst`eme multi-entrees, considerons un syst`eme lineaire invariant dans le temps compose de Ne entrees xi . Soit y, la sortie de ce syst`eme definie de la mani`ere suivante :
y(n) =

NX
e 1
i=0

hi (n) xi (n)

(7.30)

Ces normes permettent de determiner la valeur absolue maximale de la sortie y `a partir de la


valeur absolue maximale des entrees.

Norme L1 Dapr`es la relation 7.29, la valeur absolue de la donnee y est egale `a :



+

X


h(m)x(n m)
|y(n)| =

(7.31)

m=

Sachant que la valeur absolue dune somme de termes est inferieure `a la somme des valeurs
absolues de ces termes et que lentree est bornee par sa valeur absolue maximale lexpression
7.31 peut etre bornee. Ainsi, la relation entre la valeur absolue maximale dune donnee y et
celle de lentree x du syst`eme est la suivante :
ymax = max (|y(n)|) max (|x(n)|)
n

+
X

m=

|h(m)|

(7.32)

Aucune hypoth`ese concernant la nature du signal en entree ayant ete faite pour obtenir lexpression de ymax , la relation 7.32 permet de borner la valeur absolue maximale de la donnee
y pour tous types de signaux au niveau de lentree.
Lextension de la norme L1 pour un syst`eme lineaire `a plusieurs entrees conduit avec la meme
demarche `
a la relation suivante :
ymax = max (|y(n)|)
n

NX
e 1
i=0

max (|xi (n)|)


n

+
X

m=

|hi (m)|

(7.33)

Exemple filtre FIR


Lexpression de la dynamique de la sortie y, obtenue avec la norme L1, est la suivante :
ymax = max (|x(n)|)
n

+
X

m=

|h(m)|

(7.34)

7.2 Codage en virgule fixe

89

Sachant que lentree x est comprise dans lintervalle ] 1; 1[ et en utilisant lexpression de la


reponse impulsionnelle du filtre, lexpression de la dynamique de la sortie y est la suivante :
ymax = 1.

N
1
X
m=0

|cm | = 10.75

(7.35)

Norme de Chebyshev Lestimation de la dynamique dans un syst`eme lineaire base sur


la norme L1 permet de garantir labsence de debordement pour tous les types de signaux au
niveau des entrees. Cette estimation etant relativement pessimiste, dautres normes ont ete
proposees afin de tenir compte de la nature des signaux en entree du syst`eme. La norme de
Chebyshev permet de determiner la valeur absolue maximale dune donnee pour des signaux
dentree `a bande etroite. Dans ce cas, le signal dentree est modelise par une sinusode definie
de la mani`ere suivante :
x(n) = A cos(.n)

avec 0 <

(7.36)

Dapr`es les relations 7.29 et 7.36, lexpression de la valeur absolue de y est egale `a :


|y(n)| = A|.|H(ej )|.| cos .n + arg H(ej )

avec 0 <

(7.37)

Lexpression 7.37 peut etre bornee en utilisant la valeur maximale du module de la reponse
frequentielle de H. Ainsi, pour la norme de Chebyshev, la relation entre la valeur absolue
maximale dune donnee y et celle de lentree du syst`eme est la suivante :

ymax = max (|y(n)|) max (|x(n)|) max |H(ej )|
n

(7.38)

Lextension de la norme de Chebyshev `a un syst`eme lineaire `a plusieurs entrees conduit avec


la meme demarche `
a la relation suivante :
ymax = max (|y(n)|)
n

NX
e 1
i=0


max (|xi (n)|) max |Hi (ej )|
n

(7.39)

Cette norme permet dobtenir des resultats moins pessimistes que la norme L1, mais elle
impose des conditions sur la nature du signal dentree du filtre dun point de vue spectral.
Exemple filtre RIF
Lexpression de la dynamique de la sortie y, obtenue avec la norme de Chebyshev, est la
suivante :

ymax = max (|x(n)|) max |H(ej )|
n

(7.40)

Le module de la reponse frequentielle du filtre H(ej ) est presente `a la figure 7.14. Le maximum de cette fonction est obtenu pour une frequence nulle. Ainsi, lexpression de la dynamique de la sortie y est la suivante :

90

Arithmetique virgule fixe

ymax



1
NX





= H(ej0 ) =
cm z m


m=0

= 10.75

(7.41)

z=1

Nous obtenons les memes resultats que pour la norme L1, car nous sommes dans le cas
particulier ou les differents elements de la reponse impulsionnelle du filtre RIF sont tous
positifs.
Rponse frquentielle

H (e z )

Figure 7.14 Reponse frequentielle du filtre RIF

Structure cascad
ee Pour illustrer les concepts detailles dans cette partie, considerons le
syst`eme presente `
a la figure 7.15. Le syst`eme global H est realise en cascadant trois soussyst`emes H1 , H2 et H3 :
H(z) = H1 (z) H2 (z) H3 (z)

(7.42)

Les normes L1 et de Chebyshev permettent de majorer la valeur maximale en sortie dun


syst`eme. Dans le cas dune structure cascadee, il est necessaire de ne realiser quune seule
majoration en determinant la dynamique dune sortie yi directement en fonction de lentree
x du syst`eme global. La determination de la dynamique de la sortie yi en plusieurs etapes
(utilisation des entrees des sous-syst`emes) realise plusieurs majorations conduisant `a une surestimation de la dynamique.
Pour illustrer cet effet de surestimation, considerons les deux fonctions de transfert H1 (z) et
H2 (z) dont les reponses frequentielles sont presentees `a la figure 7.16. La fonction de transfert
globale est H12 (z).
En appliquant la norme de Chebyshev, la dynamique de la sortie y2 du syst`eme global est
obtenue `a partir de lexpression 7.43. Le maximum est obtenu pour une pulsation 12 = 1.6.

7.2 Codage en virgule fixe

91
H ( z ). H  ( z ). H ~ ( z )
H } ( z ).H | ( z )

H{ ( z )
x(n)

H1(z)

y(n)

y(n)

H2(z)

H3(z)

y(n)

Figure 7.15 Synoptique du syst`eme correspondant `a une structure cascadee



y2max = max (|x(n)|) max |H12 (ej )| = max |H1 .H2 (ej )| = 0, 356
n

(7.43)

( )

( )

( )

( )

Figure 7.16 Reponse frequentielle des sous-syst`emes H1 et H2 et du syst`eme global H12

Si nous determinons la dynamique en plusieurs etapes alors la dynamique de la sortie y2


en fonction de lentree y1 du sous-syst`eme H2 est obtenue `a partir de lexpression 7.44. Le
maximum est obtenu pour une pulsation 2 = 1.8.

y2max = max (|y1 (n)|) max |H2 (ej )|

(7.44)



y2max = max (|x(n)|) max |H1 (ej )| max |H2 (ej )| = 1 1 = 1

(7.45)

En introduisant lexpression de la dynamique de la sortie y1 en fonction de lentree globale


du syst`eme, la dynamique de y2 en fonction de lentree globale x est obtenue `a partir de
lexpression 7.45. Le maximum est obtenu pour une pulsation 1 = 1.4.
n

Cet exemple montre que la seconde evaluation de la dynamique de la sortie y surestime celleci, car les maximums des reponses frequentielles des deux cellules cascadees sont obtenus pour

92

Arithmetique virgule fixe

des pulsations differentes. Ainsi, il est necessaire de toujours considerer la fonction de transfert
globale entre la donnee consideree et lentree du syst`eme.

Evaluation de la dynamique
Methodes basees sur la simulation
Determination des valeurs maximales `a partir de simulations en virgule
flottante.
Estimation precise mais elle ne garantit pas labsence de debordement.
Methodes analytiques
Methodes pessimistes mais garantissant labsence de debordement.
Arithm
etique dintervalle
Propagation de lintervalle de definition des entrees du syst`eme au sein
du graphe (acyclique) de lapplication
R`egles de propagation pour les operateurs arithmetiques :
z =x+y
z =xy
z =xy

[z, z] = [x + y, x + y]
[z, z] = [x y, x y]
[z, z] = [min(xy, xy, xy, xy), max(xy, xy, xy, xy)]

Normes pour les syst`


emes lin
eaires invariant dans le temps :
Norme L1 :
ymax = max (|y(n)|) max (|x(n)|)
n

+
X

m=

|h(m)|

Norme de Chebyshev :

ymax = max (|y(n)|) max (|x(n)|) max |H(ej )|
n

Structure cascadee : il est necessaire de ne realiser quune seule majoration en determinant la dynamique dune sortie yi directement en
fonction de lentree x du syst`eme global.

7.2.2

D
etermination de la position de la virgule

Lobjectif de cette phase est de determiner la position de la virgule de chaque donnee du graphe
flot de signal afin daboutir `
a une specification correcte dun point de vue de larithmetique
virgule fixe. Cette transformation doit garantir labsence de debordement et respecter les
r`egles de larithmetique virgule fixe. La position de la virgule dune donnee specifiee `a travers
son param`etre m doit permettre de representer lensemble des valeurs prises par cette donnee
et deviter la presence de bits non utilises au sein de celle-ci afin de maintenir une precision

7.2 Codage en virgule fixe

93

maximale. Ces deux contraintes permettent dobtenir pour une donnee x linegalite suivante :
2mx 1 xmax < 2mx

(7.46)

Pour une donnee x, la position de sa virgule mx est directement obtenue `a partir de sa


dynamique selon la relation suivante :

k
j
mx = log2 max (|x(n)|) + 1
n

7.2.2.1

(7.47)

R`
egles associ
ees aux op
erateurs arithm
etiques

Multiplication La position de la virgule de la sortie dune multiplication est directement


obtenue `a partir de celle des entrees. En integrant le bit de signe redondant `a la partie enti`ere
du resultat, la position de la virgule en sortie de la multiplication est la suivante :
mz = mx + my + 1

(7.48)

Additionneur sans bit de garde Pour les operations daddition ou de soustraction, il est
necessaire de definir une position de la virgule commune aux entrees afin daligner la position
de leur virgule. La position de la virgule de la sortie correspond `a la position commune au
niveau des entrees. Cette position commune doit garantir labsence de debordement, ainsi
elle est definie `
a partir de la contrainte la plus forte au niveau des entrees. Si loperateur ne
poss`ede pas de bit de garde permettant daccueillir le bit supplementaire issu dun eventuel
debordement il est necessaire dintegrer cette contrainte dans la determination du format
commun. Ainsi, pour un additionneur ne possedant pas de bit de garde, la position de la
virgule commune est definie de la mani`ere suivante :
mc = max (mx , my , mz )

(7.49)

Si la position de la virgule des entrees ou de la sortie nest pas identique `a la position de


la virgule commune `
a ladditionneur, alors il est necessaire dintroduire des operations de
decalage pour aligner la virgule. Les valeurs du decalage `a realiser pour les entrees et la sortie
sont les suivantes :
dx = mc mx
dy = mc my
dz = mc mz

Decalage a` droite de dx bits


Decalage `a droite de dy bits
Decalage `a gauche de dz bits

(7.50)

Pour les entrees, un decalage `


a droite est eventuellement realise afin dajouter des bits supplementaires `
a la partie enti`ere de la donnee. Ces bits sont necessaires pour eviter les debordements lies `
a laccroissement de la dynamique lors de laddition.
Pour la sortie, un decalage `
a gauche est eventuellement realise afin dadapter la position de
la virgule `
a la dynamique reelle de la donnee. Ce decalage elimine quelques bits de poids fort
qui netaient pas utilises.

94

Arithmetique virgule fixe

Additionneur avec bits de garde Pour les additionneurs possedant des bits de garde,
les largeurs des operandes dentree et de sortie sont differentes et les bits les plus significatifs
de ces donnees ne sont plus alignes. Ainsi, les positions des virgules entre les donnees ne sont
plus coherentes et un referentiel commun doit etre utilise pour analyser les contraintes au
niveau des entrees et de la sortie.

Figure 7.17 Specification de la position de la virgule en presence de bits de garde

Un param`etre gx est associe `


a chaque donnee x pour representer le nombre de bits de garde
utilises au sein de la donnee. Soient mx , my , mz , les positions des virgules des donnees
referencees par rapport au bit le plus significatif de lentree dont la largeur est la plus faible.
Ces differents param`etres sont representes `a la figure 7.17. Le passage du referentiel associe
`a chaque donnee au referentiel commun necessite de retrancher aux positions de la virgule
le nombre de bits de garde utilises. Ainsi, les expressions de la position des virgules dans le
referentiel commun sont les suivantes :

mx = mx gx
m = my gy
(7.51)
y
mz = mz gz

Une position de la virgule commune aux entrees et `a la sortie de ladditionneur dans le referentiel commun est definie. Cette position est determinee `a partir de la contrainte maximale
sur les entrees et la sortie. Cependant, le calcul de la contrainte sur la sortie necessite de
connatre le nombre de bits de garde utilises au niveau de la sortie. Cette valeur netant pas
connue avant de determiner le format commun, celle-ci est fixee `a sa valeur maximale Bg , correspondant au nombre de bits de garde disponibles au niveau de ladditionneur. La position
de la virgule commune est definie `
a partir de la relation suivante :

mc = max mx , my , mz = max (mx gx , my gy , mz Bg )

(7.52)

Le nombre de bits de garde reellement utilises par la sortie de ladditionneur est egal `a :

gz = mz mc si mz > mc
(7.53)
gz = 0
si mz mc

En consequence, les positions des virgules des entrees sont egales `a :

7.2 Codage en virgule fixe

95

mx = mc + gx
my = mc + gy

(7.54)

Ainsi, la position de la virgule de la sortie de ladditionneur est egale `a :


mz = mc + gz

(7.55)

Si gz est egal `
a 0, alors aucun bit de garde nest utilise et dans ce cas la position de la virgule
de la sortie correspond `
a celle du format commun. Sinon, la position de la virgule de la sortie
est obtenue `
a partir de la dynamique du resultat de loperation. Si la contrainte la plus forte
au niveau de la relation 7.78 correspond `a celle sur la sortie alors, lensemble des bits de
garde sont utilises pour coder la sortie et la valeur de gz est egale au nombre de bits de garde
disponibles au niveau de ladditionneur.
Le renvoi en memoire du resultat de laddition necessite de repositionner la donnee dans le
registre daccumulation car les bits de garde ne peuvent pas etre envoyes directement en memoire. Ainsi, il est necessaire de faire un decalage `a droite de gz bits.
La relation 7.78 peut etre utilisee pour determiner la position de la virgule commune dans le
cas des additionneurs avec et sans bits de garde. Si ladditionneur ne poss`ede pas de bit de
garde, les param`etres g et Bg sont nuls et nous retrouvons les resultats obtenus `a lequation
7.75.

Exemple du filtre RIF


Les differentes cellules du filtre RIF sont traitees de la meme mani`ere ainsi, le format des
donnees est identique dune cellule a` lautre. En particulier, un format commun est utilise
pour la suite doperations daccumulation. En consequence le graphe flot de signal `a traiter
se reduit `a une cellule telle que presentee `a la figure 7.18.

zz

x(n i )

m
m

y (n )

Figure 7.18 Graphe flot de signal representant une cellule du filtre RIF

Lobjectif de cette phase est de determiner la position de la virgule des differentes donnees `
a
partir des informations obtenues dans la phase precedente de determination de la dynamique.

96

Arithmetique virgule fixe

Sachant que les dynamiques des donnees x et y sont respectivement egales `a 0.999 et 10.75,
alors la position de la virgule de ces donnees est la suivante :
mx = log2 (maxn (|x(n)|)) + 1 = log2 (0.999) + 1 = 0

(7.56)

my = log2 (maxn (|y(n)|)) + 1 = log2 (10.75) + 1 = 3.42 + 1 = 4


Sachant que la valeur absolue maximale des coefficients ci est egale `a 0.48 alors la position de
la virgule des coefficients est la suivante :



mc = log2 max (|ci |)
+ 1 = log2 (0.48) + 1 = 1
(7.57)
i

La position de la virgule de la sortie de la multiplication est calculee directement `a partir de


celle de ses entrees `
a laide de lexpression 7.74 :
mM U LT = mx + mc + 1 = 0 1 + 1 = 0

(7.58)

Pour ladditionneur, il est necessaire de trouver un format commun afin daligner la virgule
des entrees de laddition. La sortie y du filtre est obtenue `a partir de la variable ACC `a la
fin de la suite daccumulations. Le format de la variable ACC est identique pour toutes les
accumulations. Ainsi, la dynamique de la variable ACC est egale `a celle de y. En consequence,
la position de la virgule de la variable ACC correspond `a celle de y.
Additionneur sans bit de garde Dans le cas o`
u larchitecture ne poss`ede pas dadditionneur avec des bits de garde, le format commun associe `a laddition est obtenu `a partir de
lexpression 7.75 :
mADD = max (mM U LT , mACC , mACC ) = max (0, 4, 4)

(7.59)

Pour obtenir ce format commun il est necessaire de modifier la position de la virgule de


certaines donnees et en particulier celle de la donnee issue de la multiplication. La valeur de
ce decalage est la suivante :
dM U LT = mADD mM U LT = 4 0 = 4

(7.60)

Lobjectif de ce decalage est dajouter des bits `a la partie enti`ere de la donnee issue de la
multiplication afin daligner la virgule. Cet ajout de bits est obtenu en realisant un decalage
arithmetique `
a droite (les nouveaux bits de poids fort sont une copie du bit de signe)
Additionneur avec bits de garde Dans le cas o`
u larchitecture poss`ede un additionneur
avec la possibilite dutiliser 8 bits de garde, le format commun associe `a laddition est obtenu
`a partir de lexpression :
mADD = max (mM U LT gM U LT ; mACC Bg ; mACC Bg )
= max (0 0; 4 8; 4 8) = 0

(7.61)

En consequence, les positions des virgules des entrees sont egales `a :


mx = mADD + gx = 0

(7.62)

7.2 Codage en virgule fixe


x(n i )

zz

m = 1

97

m = 0

>> 4

m = 0

m = 4

y (n )

Figure 7.19 Calcul en virgule fixe avec un additionneur sans bit de garde

Le nombre de bits de garde reellement utilises par la sortie de ladditionneur est egal `a :

gACC = mACC mADD = 4 0 = 4

zz

x(n i )

m = 1

m = 0

m = 0

m = 4

(7.63)

y (n )

>> 4

Figure 7.20 Calcul en virgule fixe avec un additionneur possedant 8 bits de garde

Le renvoi en memoire de la sortie du filtre apr`es la serie daccumulations necessite de faire un


decalage `a droite de gACC bits.

98

Arithmetique virgule fixe

D
etermination de la position de la virgule
Position de la virgule dune donnee x `a partir de sa dynamique
j

k
mx = log2 max (|x(n)|) + 1
n

R`egles associees aux operateurs arithmetiques


Multiplieur :
mz = mx + my + 1

(7.73)

(7.74)

Additionneur sans bit de garde :


Format commun pour ladditionneur :
mc = max (mx , my , mz )

(7.75)

Operation de decalage en entree et en sortie :


dx = mc mx
dy = mc my
dz = mc mz

Decalage a` droite de dx bits


Decalage `a droite de dy bits
Decalage `a gauche de dz bits

Additionneur avec bits de garde :


Nouveau referentiel commun :

mx = mx gx
m = my gy
y
mz = mz gz

(7.76)

(7.77)

Format commun pour ladditionneur :



mc = max mx , my , mz = max (mx gx , my gy , mz Bg )
(7.78)
Nombre de bits de garde reellement utilises par la sortie de ladditionneur :

gz = mz mc si mz > mc
(7.79)
gz = 0
si mz mc

Positions des virgules des entrees sont egales `a :



mx = mc + gx
my = mc + gy

(7.80)

Position de la virgule de la sortie de ladditionneur :


mz = mc + gz

(7.81)

7.2 Codage en virgule fixe

7.2.3

99

D
etermination de la largeur des donn
ees

Pour obtenir le format complet de chaque donnee (largeur de la partie enti`ere et de la partie
fractionnaire), la largeur des donnees doit etre determinee.
7.2.3.1

Implantation logicielle

Dans le cas dune implantation logicielle de lapplication au sein dun processeur (DSP, C),
la largeur des donnees depend des types manipules par le processeur. Ces types sont lies aux
differentes instructions disponibles au sein du jeu dinstructions :
Instructions arithm
etiques classiques : elles realisent le traitement dune seule
operation sur un operateur en un ou plusieurs cycles dhorloge. Ces instructions manipulent des operandes de largeur bop .
Instructions multi-pr
ecision : elles permettent de manipuler des donnees de largeur plus importante, obtenues par concatenation de plusieurs donnees de largeur bop .
Une operation utilisant des donnees en multi-precision est decomposee en une suite
doperations manipulant des operandes de largeur bop .
Instructions SWP (Sub-Word Parallelism) : elles permettent de traiter en parall`ele des operandes dont la largeur est inferieure `a la largeur bop . Cette technique
divise un operateur manipulant des donnees de largeur bop afin de pouvoir executer en
parall`ele k operations sur des fractions de mot de largeur bop /k (voir cours EII3)
Pour les processeurs DSP bases sur une architecture traditionnelle de type MAC, les operateurs ne manipulent quun seul type de donnee. Ainsi le processus de determination de la
largeur des donnees est simplifie. Il consiste `a reporter les largeurs des operateurs en entree
et en sortie des operations du graphe flot de lapplication.
Certains processeurs DSP plus recents permettent de manipuler differents types de donnees
(instructions classiques, multi-precision, SWP) il est necessaire de selectionner le type dinstructions permettant de minimiser le temps dexecution du code et de respecter les contraintes
de precision des calculs.
Exemple filtre RIF
Pour le filtre RIF traite en exemple, nous considerons dans un premier temps un DSP base
sur une architecture traditionnelle double precision de type MAC possedant 8 bits de garde.
Le synoptique de la partie operative est presente `a la figure 7.21.a. En reportant la largeur
des operateurs aux operations du graphe flot de signal, nous obtenons le graphe presente `a la
figure 7.22.
Nous considerons dans un second temps un DSP base sur une architecture traditionnelle
double precision de type MAC sans bit de garde. Le synoptique de la partie operative est
presente `a la figure 7.21.b. En reportant la largeur des operateurs aux operations du graphe
flot de signal, nous obtenons le graphe presente `a la figure 7.23.

100

Arithmetique virgule fixe

AA

BB

AA

 

BB

AA

 

BB

 

  

  
  

  

 

+
  

 

  

Accumulateur
Accumulateur

Accumulateur
Accumulateur

Architecture double prcision


avec 8 bits de garde

Architecture double prcision


sans bit de garde

 

Accumulateur
Accumulateur

Architecture simple prcision

Figure 7.21 Architecture de la partie operative du processeur

(16,0,15)

x (n )




 




zz

 




zz

(16,-1,16)

c


zz

(32,0,31)

 

(36,4,31)

 

(16,4,11)

 

Q
 

y (n )

(36,4,31)

Figure 7.22 Graphe flot de signal annote avec le format complet des donnees pour une
architecture double precision possedant 8 bits de garde.

Nous considerons dans un troisi`eme temps une architecture simple precision dont le synoptique
de la partie operative est presente `
a la figure 7.21.c. En reportant la largeur des operateurs
aux operations du graphe flot de signal, nous obtenons le graphe presente `a la figure 7.24.

Code C de lapplication pour une architecture double pr


ecision sans bit de garde

Le type virgule fixe nexistant pas en C, nous devons utiliser les types entiers. Ainsi, pour les
coefficients il est necessaire de coder la valeur enti`ere ayant la meme representation binaire
que la valeur en virgule fixe. Ceci revient `a faire un decalage `a droite de la virgule du nombre
de bits utilises pour la partie fractionnaire :

7.2 Codage en virgule fixe


x (n )

(16,0,15)



"# $%&'




zz

"# $%&'

101




zz

(16,-1,16)

c


c
!

zz

c


(32,0,31)

() $%&'

**
**

**
**

**
**

**
**

(32,4,27)

() $%&'

(16,4,11)

() $%&'

Q
"# $%&'

y (n )

(32,4,27)

Figure 7.23 Graphe flot de signal annote avec le format complet des donnees pour une
architecture double precision sans bit de garde.

x (n )

(16,0,15)
+,
+,

c
-

34 5678

+,
+,

zz

34 5678

(16,-1,16)

c
.

c
2

zz

c
0

(16,0,15)

34 5678

99
99

+,
+,

zz

99
99

99
99

99
99

(16,4,11)

34 56 78

(16,4,11)

34 5678

y (n )

Figure 7.24 Graphe flot de signal annote avec le format complet des donnees pour une
architecture simple precision

Cint = Cf ixed

point

2nc

(7.82)

Declaration des variables et des coefficients :


int input;
int x[N];
int y;
int c[N] =
long acc;

{13107, 14336, 15565, , 13107, 14336} ;

Code pour le calcul de la sortie du filtre


x[0] = Input;
acc = (long)(x[0]*c[0]) >> 4;
for(i=N-1; i>0; i--)
{
acc = acc + ((long)(x[i]*c[i]) >> 4); /* Calcul dune cellule du filtre */

102

Arithmetique virgule fixe


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

/* Vieillissement des variables internes */

}
y[j] = (int)(acc>>16);
Lexpression (long)( ... ) a pour objectif de forcer le compilateur `a conserver les 32 bits
du resultat et ne pas tronquer `
a 16 bits avant de faire laddition.
16; a pour objectif de renvoyer en memoire les bits les plus
Lexpression y = (int) ( )
significatifs du resultat (partie haute de laccumulateur). Pour cela il est necessaire de transferer les bits de la partie haute de laccumulateur vers la partie basse de laccumulateur. En
effet, le compilateur travaille sur des entiers et lors dun passage de 32 `a 16 bits, il ne conserve
que les bits les moins significatifs.
7.2.3.2

Implantation mat
erielle

Dans le cas dune implantation materielle de lapplication au sein dun FPGA ou dun ASIC,
larchitecture du syst`eme est definie par le concepteur. Ainsi, la largeur des operateurs constituant larchitecture est determinee lors du processus de conception. Lobjectif de ce processus
de conception est de limiter la surface de larchitecture afin de reduire les co
uts et la consommation denergie. En consequence, la largeur des operateurs est minimisee tant que la precision
des calculs realises est suffisante pour que les crit`eres de qualite associes `a lapplication soient
respectes.
Si le crit`ere de qualite utilise est le Rapport Signal `a Bruit de Quantification (RSBQ), alors
le processus de determination de la largeur des donnees peut etre modelise par le probl`eme
doptimisation suivant :



min S( b )
avec RSBQ( b ) RSBQmin
(7.83)

Le vecteur b represente la largeur de lensemble des donnees presentes au sein de lapplication. Le terme S represente la surface de larchitecture et est fonction de la largeur des donnees.

Exemple du filtre RIF


Nous avons considere une architecture composee dun seul multiplieur et dun seul additionneur. Ainsi, le probl`eme doptimisation est compose de 2 variables bmult correspondant `a la
largeur des operandes en entree du multiplieur et badd la largeur des operandes de ladditionneur. Les fonctions fsurf ace (bmult , badd ) et fRSBQ (bmult , badd ) fournissant respectivement la
surface et le RSBQ en fonction des largeurs des operateurs sont representees `a la figure 7.25.
Pour une contrainte de rapport signal `a bruit de quantification de 60 dB, la solution optimale
utilise larchitecture suivante :
Multiplieur : 12 12 24 (bits)
Additionneur : 17 + 17 17 (bits)

7.3 Evaluation de la precision

103

Espace de recherche pour la Surface

}z~w

(b

yz{|

,b

wxx

Espace de recherche pour le RSBQ

QRST

(b

MNOP

,b

KLL

Solution : (12,17)
[
v
u

t
s
Y

W
Z
Y

r
q

p
o
n

:;<=
>?@

AB CD

\]^_`a^ b`c def^]gb`c


\]^_`a^ b`c def^]gb`c

bh`gi^f` ba jakilekl`a^

bh`gi^f` ba jakilekl`a^

\]^_`a^ b`c def^]gb`c

GHIJ

EFF

b` kh]bblildgg`a^

\]^_`a^ b`c def^]gb`c

GHIJ

EFF

b` kh]bblildgg`a^

Figure 7.25 Espace de recherche pour la surface et le RSBQ

7.3
7.3.1

Evaluation de la pr
ecision
Processus de quantification et de d
epassement

Soit x une valeur arbitraire appartenant au domaine D et y une valeur du domaine de definition DR du codage choisi. Le domaine DR est borne par les valeurs Xmin et Xmax . Nous
definissons le sous-ensemble DD de D regroupant lensemble des valeurs de D comprises dans
lintervalle [Xmin ; Xmax ]. Le processus de quantification correspond `a loperation de reduction dune valeur arbitraire x `
a une valeur representable y. Ce processus est regi par deux lois
presentees ci-dessous :
Loi de depassement : cette loi permet dassocier `a lensemble des valeurs x de D une valeur x
appartenant au domaine DD . Elle definit plus precisement le comportement pour les valeurs
presentes en dehors du domaine DD . Nous associons `a cette loi une fonction de depassement
definie ci-dessous :

x
x DD
fD (x) =
(7.84)
D(x) x 6 DD
Loi de quantification : cette loi definit les valeurs representables y `a associer `a lensemble des
valeurs x appartenant au domaine DD . La fonction de quantification associee est la suivante :
fQ (x) = Q(x) x DD
Le processus de quantification global peut sexprimer sous la forme suivante :

Q(x) x DD
x fQ (fD (x)) =
D(x) x 6 DD
7.3.1.1

Lois de d
epassement

Arithm
etique de saturation

(7.85)

(7.86)

104

Arithmetique virgule fixe

Cette loi appelee loi de saturation, consiste `a choisir la valeur du domaine DD la plus proche
de la valeur `
a representer x :
D(x) =

Xmin x < Xmin


Xmax x > Xmax

(7.87)

La caracteristique de cette fonction est representee `a la figure 7.26.a. La gestion de cette


loi necessitera des operateurs arithmetiques specifiques. Par contre, son utilisation permet
deviter certains probl`emes et erreurs engendres par lutilisation de la loi modulaire.
Arithm
etique modulaire
Cette loi de depassement modulaire substitue aux valeurs de x nappartenant pas au domaine
DD , x modulo (Xmax Xmin ). La caracteristique de cette loi est presentee `a la figure 7.26.b.
fD(x)

Xmax

Xmax

fD(x)

Xmin

Xmin
Xmax

Xmax

Xmin

Xmin

(a)

(b)

Figure 7.26 Caracteristiques des lois de depassement

7.3.1.2

Lois de quantification

Le domaine representable DR est compose de N valeurs yi avec i = 1, 2, . . . , N et le sousdomaine DD est subdivise en N sous domaines juxtaposes i . La loi de quantification associe
`a tout x appartenant au domaine i la valeur yi :
x i

Q(x) = yi

(7.88)

Soit e lerreur entre la valeur avant quantification, x et la valeur apr`es quantification yi :


e = x yi

(7.89)

Loi de quantification par arrondi


La loi de quantification par arrondi consiste `a choisir la valeur representable la plus proche
de la valeur `
a quantifier en prenant la mediane de chaque intervalle i :
yi =

ui+1 ui
2

= ui +

q
2

x i = [ui ; ui+1 ]

La caracteristique de cette loi est representee `a la figure 7.27.

(7.90)

7.3 Evaluation de la precision

105
fQ(x)
q
2

ui xi ui+1

-q
2

e(x)
xi
ui ui+1

Figure 7.27 Caracteristiques de la loi de quantification par arrondi


Loi de quantification par troncature
Cette loi de quantification consiste `
a tronquer un certain nombre de bits de poids faible. Les
proprietes de cette loi de quantification sont fonctions du choix de la representation (signevaleur absolue ou complement `
a 2).

fQ(x)
e(x)
q

ui ui+1

ui ui+1

x
-q

Figure 7.28 Caracteristiques de la loi de quantification par troncature pour le codage SVA
Representation signe valeur absolue
Pour cette representation la troncature dun certain nombre de bits de poids faible revient
`a choisir la valeur representable la plus proche dont le module est inferieur `a la valeur `
a
quantifier (voir figure 7.28) :

ui x > 0
yi =
(7.91)
ui+1 x <
Representation en complement `
a2
La quantification par troncature dans le cas dune representation en complement `a 2 (voir
figure 7.29) revient `
a prendre la valeur representable immediatement inferieure `a la valeur `
a
quantifier yi = ui .

7.3.2
7.3.2.1

Mod
elisation du bruit
Bruit g
en
er
e par une conversion analogique-num
erique

La conversion analogique numerique (CAN) consiste `a passer dun signal echantillonne damplitude continue x(n) vers une suite de nombre y(n) dont les valeurs appartiennent `a un

106

Arithmetique virgule fixe


fQ(x)
e(x)
q

ui ui+1

ui ui+1

Figure 7.29 Caracteristiques de la loi de quantification par troncature pour le codage CA2
intervalle de valeur (dynamique) et sont quantifiees (amplitude discr`ete). Ces valeurs sont un
multiple entier du pas de quantification q (voir figure 7.30) :
y(n) = Q[x(n)] = k.q

(7.92)

Dans ce cadre, les mod`eles et lois de quantification presentes dans les sections precedentes
peuvent etre utilises.

x(n)

y(n)

3q
2q
q

3q
2q
q

n
e(n)
x(n)

q/2

y (n)

CAN
- q/2

Figure 7.30 Bruit de conversion analogique numerique


Lerreur de quantification e(n) = x(n) y(n) entre la valeur avant quantification x et la
valeur apr`es quantification y, peut etre modelisee par une variable aleatoire stationnaire. Le
processus de quantification peut etre modelise par la somme du signal x(n) et dun bruit de
quantification e(n)
x

Q( )

-e

Figure 7.31 Modelisation du bruit de quantification


Cette variable aleatoire est uniformement distribuee sur son intervalle de definition correspondant `a [0; q] pour la troncature et [q/2; q/2] pour larrondi. La densite de probabilite de

7.3 Evaluation de la precision

107

cette variable aleatoire e est representee `a la figure 7.32 pour le cas dune quantification par
troncature et par arrondi

p (e)

p (e )

Figure 7.32 Densite de probabilite du bruit genere lors de la quantification par troncature
et par arrondi
La variable aleatoire e(n) poss`ede les proprietes suivantes :
e(n) est stationnaire,
le bruit issu de la quantification dun signal x(n) nest pas correle avec ce signal,
les bruits de quantification sont statistiquement independants,
e(n) est un bruit blanc uniformement reparti,
e(n) est bornee par le pas de quantification,
la densite de probabilite de e(n) est uniforme sur lintervalle de quantification,
lergodicite implique que les moyennes temporelles et statistiques sont equivalentes.
Pour une loi de quantification par arrondi, la moyenne et la variance de lerreur de quantification sont les suivantes :
e2 =

e = 0,

q2
12

(7.93)

Pour une loi de quantification par troncature, la moyenne et la variance de lerreur de quantification sont les suivantes :
q
e = ,
2
7.3.2.2

e2 =

q2
12

(7.94)

Bruit g
en
er
e par un changement de format

Mod
elisation du bruit g
en
er
e par la troncature
Lobjectif de cette partie est de modeliser le bruit issu dun changement de format entranant
lelimination dun certain nombre de bits de poids faible. Ce bruit correspond `a la modelisation
de la perte dinformation resultant de lelimination des k bits les moins significatifs lors dun
changement de format. Nous considerons une donnee de depart Xe et la donnee Xs apr`es
changement de format. La representation de ces donnees codees en complement `a 2, est
presente `a la figure 7.33 et les expressions de celles-ci sont les suivantes :
m

Xe = 2 .S +

m1
X
n

bi 2i

(7.95)

108

Arithmetique virgule fixe


Xs = 2m .S +

m1
X

bi 2i

(7.96)

Nous definissons q le pas de quantification de la donnee apr`es changement de format. Celui-ci


est egal `a 2j .
Bits supprims

Bits restants

2m-1

S b

2-j 2-j-1

2-n
b

k
n

Figure 7.33 Representation des donnees lors dune troncature


Lexpression du bruit de quantification correspondant `a la difference entre les deux variables
Xe et Xs , est la suivante :
n
X
bi 2i
(7.97)
e=
i=j1

Lexpression 7.97 montre que le bruit genere sera toujours positif. En effet lors dune troncature en complement `
a 2 la valeur tronquee est toujours inferieure `a la valeur de depart.

Le bruit issu de la troncature ne pouvant prendre quun nombre fini de valeurs, egal `a 2k ,
nous pouvons modeliser le bruit genere par une variable aleatoire discr`ete.
Nous supposons que les valeurs binaires des bits bj1 `a bn sont equiprobables, ainsi les valeurs representant e sont equiprobables. Nous pouvons considerer que la densite de probabilite
p(e) representee `
a la figure 7.34, est uniforme. Son expression est la suivante :
p(e) =

k 1
2X

i=0

2k (e i.2n )

(7.98)

p (e)

e.2

Figure 7.34 Densite de probabilite du bruit genere lors dune troncature


La moyenne de cette variable aleatoire est la suivante :
e =

+
X

i=

yi p(yi ) =

k 1
2X

i=0

i.2n .2k

(7.99)

7.3 Evaluation de la precision

109

soit

q
e = 2j1 (1 2jn ) = (1 2k )
2
La variance de cette variable aleatoire est egale `a :
e2 =

+
X

i=

(7.100)

yi2 p(yi ) 2e

(7.101)

soit

q2
22j
(1 22(jn) ) =
(1 22k )
(7.102)
12
12
Lorsque le nombre de bits tronques est important les resultats tendent vers ceux obtenus dans
le cas de la quantification dun signal `a amplitude continue :
e2 =

e = 2j1 =
e2 =

q
2

(7.103)

q2
1 2j
(2 ) =
12
12

(7.104)

Mod
elisation du bruit g
en
er
e par larrondi
Dans le cas dune quantification par arrondi conventionnel, la donnee correspondant `a la valeur
mediane de lintervalle [kq, (k + 1)q] est codee `a la valeur (k + 1)q. La loi de quantification est
definie de la facon suivante :

si kq x < (k + 21 )q
k.q
(7.105)
Q(x) =
(k + 1).q
si (k + 12 )q < x (k + 1)q

1
(k + 1)q
si x = (k + 2 )q

Lexpression de la densite de probabilite de lerreur de quantification bgac representee `a la


figure 7.35, est la suivante
p(e) =

2k1
X1

i=2k1

2kn (e i.2n )

(7.106)

p (e )

e.2

Figure 7.35 Densite de probabilite du bruit genere lors dun arrondi conventionnel

110

Arithmetique virgule fixe

La moyenne de cette variable aleatoire est egale `a :


bgac =

2k1
X1

i.2n .2k = 2n1 =

i=2k1

q k
(2 )
2

(7.107)

La valeur mediane de chaque intervalle [k.q, (k + 1).q] etant codee systematiquement `a la


valeur superieure, la moyenne de lerreur de quantification nest pas nulle. Cette erreur est
neanmoins nettement plus faible que celle presente lors dune quantification par troncature.
La variance de cette variable aleatoire est egale `a :
b2gac

2k1
X1

i=2k1

(i.2n )2 .2k 2e =

22j
q2
(1 22k ) = (1 22k )
12
12

(7.108)

Afin deliminer le biais, un arrondi convergent peut etre utilise, celui-ci va affecter la valeur
mediane de facon equiprobable `
a la valeur superieure et inferieure :

si k.q x < (k + 12 )q
k.q
(k + 1).q
si (k + 21 )q < x (k + 1)q
(7.109)
Q(x) =

1
k.q ou (k + 1).q
si x = (k + 2 )q



1
1 
avec P Q(x) = kq \ x = (k + )q = P Q(x) = (k + 1)q \ x = (k + )q
2
2
Cette technique garantit lequiprobabilite du codage de la valeur mediane en analysant la
parite de la donnee. Les donnees impaires sont codees `a la valeur superieure et les donnees
paires `a la valeur inferieure. La densite de probabilite associee `a lerreur de quantification
presentee `
a la figure 7.36, est egale `
a:

2k 
(e + 2kn1 ) + (e 2kn1 ) +
p(e) =
2

2k1
X1

i=2k1 +1

2k (e i.2n )

(7.110)

p (e )

e.2

Figure 7.36 Densite de probabilite du bruit genere lors dun arrondi convergent
La moyenne de cette variable aleatoire est la suivante :
k

e = 2



2kn1 2kn1 +

2k1
X1

i.2n .2k = 0

(7.111)

i=2k1 +1

Ce type darrondi permet dobtenir une moyenne de lerreur de quantification nulle. Lexpression de la variance de lerreur de quantification est la suivante :

7.3 Evaluation de la precision

e2

111

k 2(kn1)

=2

2k1
X1

(i.2n )2 .2k

(7.112)

i=2k1 +1

soit
e2 =

7.3.3

q2
22j
(1 22k+1 ) = (1 22k+1 )
12
12

(7.113)

Filtrage du bruit

La quantification dun signal analogique et le changement de format de donnees entranent la


generation dun bruit. Ce bruit se propage au sein du syst`eme. Lobjectif de cette partie est
de determiner linfluence de ce bruit en sortie du syst`eme. Considerons une source de bruit
e(n) traversant un syst`eme lineaire invariant dans le temps de reponse impulsionnelle h(n).
Soit f (n) la sortie du syst`eme :
f (n) = e(n) h(n)

(7.114)

La variable aleatoire e(n), correspondant au bruit de quantification, est un bruit blanc, ainsi,
la moyenne f et la variance f2 du bruit en sortie f (n) sont :
f
f2

= e
=

e2

+
X

h(n) = e H(ej0 )

n=
+
X

2
|h(n)| = e
2
n=
2

(7.115)
|H(ej )|2 d

(7.116)

La puissance dun signal aleatoire correspond au moment dordre 2 de celui-ci :



Pf = E f 2 = 2f + f2

(7.117)

(Pf )dB = 10. log 10 (Pf )

(7.118)

Cette puissance peut etre exprimee en dB :

Exemple filtre RIF


Nous determinons la puissance du bruit en sortie du filtre dans le cas des specifications virgule
fixe presentees aux figures 7.22, 7.23 et 7.24 pour une architecture en simple precision et en
double precision avec et sans bits de garde. Les differentes sources de bruit potentielles au
sein de ce filtre RIF sont representees `a la figure 7.37.
Architecture double pr
ecision avec bits de garde
Dans le cas dune architecture double precision avec bits de garde nous obtenons la specification virgule fixe presente `
a la figure 7.22. Les differentes sources de bruit presentes au sein de
ce filtre sont les suivantes :

112

Arithmetique virgule fixe


b (n )

x (n )

(n)

zz

zz

(n)

zz

(n)

(n)

(n )

y (n )

Figure 7.37 Sources de bruit potentielles dans le filtre RIF


bge : bruit associe `
a lentree. Nous considerons que le signal x est issu dun convertisseur
analogique-numerique. La puissance de ce bruit est la suivante :

b2ge =

22.nx
230
qx2
=
=
101.1 dB
12
12
12

(7.119)

bgbadd : bruit present en sortie du filtre et lie `a lelimination de 20 bits lors du renvoi
de la donnee en memoire sur 16 bits

b2gadd =

qy2
22.ny
222
(1 22.ky ) =
(1 22.ky ) =
(1 240 ) 77 dB
12
12
12

(7.120)

Le bruit lie au renvoi de la donnee en memoire (bgadd ) est directement present en sortie du
filtre. Le bruit en entree bge traverse le filtre h(n). Ainsi, lexpression du bruit en sortie du
filtre est la suivante :
by (n) = bgadd (n) + bge (n) h(n)

(7.121)

Si nous considerons quune loi de quantification par arrondi est utilisee pour chaque changement de format, alors la moyenne du bruit associe `a chaque source est nulle. La moyenne du
bruit en sortie est nulle.
Les differentes sources de bruit ne sont pas correlees entre elles et le bruit en entree est un
bruit blanc. En utilisant lexpression 7.143 pour le bruit bge la variance du bruit en sortie du
filtre est la suivante :
b2y = b2gadd + b2ge

N
1
X
i=0

b2y =

|ci |2

222 230
+
3.95 77 dB
12
12

(7.122)

(7.123)

7.3 Evaluation de la precision

113

Architecture double pr
ecision sans bit de garde
Dans le cas dune architecture double precision sans bit de garde nous obtenons la specification virgule fixe presente `
a la figure 7.23. Les differentes sources de bruit presentes au sein de
ce filtre sont les suivantes :
bge : bruit associe `
a lentree. Nous considerons que le signal x est issu dun convertisseur
analogique-numerique. La puissance de ce bruit est la suivante :
22.nx
230
qx2
=
=
101.1 dB
(7.124)
12
12
12
bgm.i : bruit present en sortie du multiplieur i lie au decalage `a droite avant laddition. La presence dun decalage `a droite avant laccumulation conduit `a une donnee
possedant 27 bits pour la partie fractionnaire. Sachant que 4 bits ont ete elimines, la
puissance de ce bruit est la suivante :
b2ge =

2
qM
22.nM U LT
254
U LT
(1 22.km ) =
(1 22.km ) =
(1 28 ) 173.6 dB
12
12
12
(7.125)
bgbadd : bruit present en sortie du filtre et lie `a lelimination de 16 bits lors du renvoi
de la donnee en memoire sur 16 bits

b2gm.i =

b2gadd =

qy2
22.ny
222
(1 22.ky ) =
(1 22.ky ) =
(1 232 ) 77 dB
12
12
12

(7.126)

Dans cette etude nous prenons en compte les differentes sources de bruit, mais letude peut
etre simplifiee en negligeant les bruits issus du recadrage avant laccumulation car leur contribution est insignifiante.
Les bruits issus du recadrage (bgm.i ) et lies au renvoi de la donnee en memoire (bgadd ) sont
directement presents en sortie du filtre. Le bruit en entree bge traverse le filtre h. Ainsi,
lexpression du bruit en sortie du filtre est la suivante :
by (n) = bgadd (n) +

N
1
X
i=0

bgm.i (n) + bge (n) h(n)

(7.127)

Si nous considerons quune loi de quantification par arrondi est utilisee pour chaque changement de format, alors la moyenne du bruit associe `a chaque source est nulle. La moyenne du
bruit en sortie est nulle.
Les differentes sources de bruit ne sont pas correlees entre elles et le bruit en entree est un
bruit blanc. En utilisant lexpression 7.143 pour le bruit bge la variance du bruit en sortie du
filtre est la suivante :
b2y

b2gadd

N
1
X
i=0

b2gm.i

b2ge

N
1
X
i=0

|ci |2

(7.128)

114

Arithmetique virgule fixe

b2y =

230
222
(1 232 ) +
3.95 77 dB
12
12

(7.129)

Bruit en sortie du filtre RIF pour une architecture simple pr


ecision
Dans le cas dune architecture simple precision nous obtenons la specification virgule fixe
presente `a la figure 7.24. Les differentes sources de bruit presentes au sein de ce filtre sont les
suivantes :
bge : bruit associe `
a lentree. Nous considerons que le signal x est issu dun convertisseur analogique-numerique et est ensuite code sur 16 bits avec 15 bits pour la partie
fractionnaire. La puissance de ce bruit est la suivante :
b2ge =

qx2
22.nx
230
=
=
12
12
12

(7.130)

bgm.i : bruit present en sortie du multiplieur i lie `a lutilisation dun multiplieur simple
precision et au decalage `
a droite avant laddition. Nous regroupons ces deux operations
au sein dune meme source de bruit. Si aucun bit nest elimine, la multiplication fournit
une donnee possedant 31 bits pour la partie fractionnaire. Lutilisation dun multiplieur
travaillant en simple precision et la presence dun decalage `a droite avant laccumulation conduisent `
a une donnee possedant 11 bits pour la partie enti`ere. Sachant que 20
bits ont ete elimines, la puissance de ce bruit est la suivante :

b2gm =

2
qM
22.nM U LT
222
U LT
(1 22.km ) =
(1 22.km ) =
(1 240 )
12
12
12

(7.131)

Les bruits issus du recadrage (bgm.i ) et lies au renvoi de la donnee en memoire (bgadd ) sont
directement presents en sortie du filtre. Le bruit en entree bge traverse le filtre h. Ainsi,
lexpression du bruit en sortie du filtre est la suivante :
by (n) =

N
1
X
i=0

bgm.i (n) + bge (n) h(n)

(7.132)

soit
by (n) =

N
1
X
i=0

bgm.i (n) +

N
1
X
i=0

ci .bge (n i)

(7.133)

Si nous considerons quune loi de quantification par arrondi est utilisee pour chaque changement de format, alors la moyenne du bruit associe `a chaque source est nulle. La moyenne du
bruit en sortie est nulle.
Les differentes sources de bruit ne sont pas correlees entre elles et le bruit en entree est un
bruit blanc. En utilisant lexpression 7.143 pour le bruit bge la variance du bruit en sortie du
filtre est la suivante

7.3 Evaluation de la precision

b2y

N
1
X

115

b2gm.i

i=0

b2y = 32

b2ge

N
1
X
i=0

|ci | =

N.b2gm.i

b2ge

N
1
X
i=0

|ci |2

222
230
(1 240 ) +
3.95 61.96 dB
12
12

(7.134)

(7.135)

116

Arithmetique virgule fixe

Evaluation de la pr
ecision
Modelisation du processus de quantification :
Proprietes de la variable aleatoire e(n) :
e(n) est stationnaire,
le bruit issu de la quantification dun signal x(n) nest pas correle avec
ce signal,
les bruits de quantification sont statistiquement independants,
e(n) est un bruit blanc uniformement reparti,
e(n) est bornee par le pas de quantification,
la densite de probabilite de e(n) est uniforme sur lintervalle de quantification,
lergodicite implique que les moyennes temporelles et statistiques sont
equivalentes.

Q( )

+
-e

Moments de la variable aleatoire e(n) :


Loi de quantification par arrondi :
e2 =

e = 0,

q2
12

(7.140)

q2
12

(7.141)

Loi de quantification par troncature :


e =

q
,
2

e2 =

Filtrage du bruit
Moments du bruit en sortie du filtre h(n) :
f
f2

7.4

= e
=

e2

+
X

n=
+
X

h(n) = e H(ej0 )

2
|h(n)| = e
2
n=
2

(7.142)
|H(ej )|2 d

(7.143)

Exemple

Pour illustrer le processus de conversion en virgule fixe, lexemple dun filtre IIR est traite
dans cette partie.

7.4 Exemple

7.4.1

117

Description de lapplication

Un filtre `a reponse impulsionnelle infinie compose de deux cellules dordre 1 cascadees est
considere. La fonction de transfert de ce syst`eme est la suivante
H(z) = H1 (z).H2 (z)

(7.144)

avec
H1 (z) =

N1 (z)
c1
=
D1 (z)
1 a1 .z 1

et

c2
N2 (z)
=
D2 (z)
1 a2 .z 1

H2 (z) =

(7.145)

Les valeurs des coefficients sont les suivantes :

c1 = 0.35

a1 = 0.8

(7.146)

c2 = 0.48

a2 = 0.6

(7.147)

Le graphe flot de signal de cette application est presente a` la figure 7.38 :


x (n )

y (n)

y (n )

zz

zz

Figure 7.38 Graphe flot de signal du filtre IIR

7.4.2
7.4.2.1

D
etermination de la specification virgule fixe
D
etermination de la dynamique

Pour levaluation de la dynamique, nous utilisons la norme de Chebyshev basee sur lanalyse
de la reponse frequentielle. Nous devons etudier la dynamique des donnees presentes en sortie
de chaque addition ou serie dadditions. Ainsi, nous determinons la dynamique des donnees
y1 et y.

Dynamique de y1 .
La fonction de transfert entre la donnee y1 et lentree globale x est la suivante :
c1
Y1 (z)
= H1 (z) =
X(z)
1 a1 .z 1

Le module de la reponse frequentielle de ce syst`eme est le suivant :

(7.148)

118

Arithmetique virgule fixe



H1 (ej ) =

c1
1+

a21

1/2
2a1 cos()

(7.149)

Les extrema de cette reponse frequentielle sont obtenus pour = 0 et = . Dans notre cas
nous obtenons les valeurs suivantes :
|H(ej0 )| =
|H(j )| =

c1
= 1.75
|1 a1 |
c1
= 0.4375
|1 + a1 |

(7.150)
(7.151)

Le maximum de cette reponse frequentielle est obtenu pour = 0 et cette fonction est
monotone et decroissante sur [0 ] si a1 est positif. Ainsi, la dynamique de la sortie du filtre
H1 est la suivante :

max (|y1 (n)|) = max (|x(n)|) max |H1 (ej )| = 1.75
n

Dynamique de y.

(7.152)

La fonction de transfert entre la donnee y et lentree globale x est la suivante


Y (z)
= H(z) = H1 (z).H2 (z)
X(z)

(7.153)



Pour simplifier la recherche du maximum de la reponse frequentielle de H(ej ) nous utilisons
les caracteristiques de chaque cellule. Chaque cellule correspond `a un filtre IIR dordre 1 et
passe-bas. Les reponses frequentielles de H1 et H2 etant monotones et decroissantes, alors le
maximum est obtenu pour = 0.






c1 c2

H(ej0 ) = H(z)|z=1 =
(7.154)
(1 a1 )(1 a2 ) = 2.1
Ainsi la dynamique de la sortie du filtre H est la suivante :


max (|y(n)|) = max (|x(n)|) max |H(ej )| = 2.1
n

7.4.2.2

(7.155)

D
etermination de la position de la virgule

Les positions de la virgule des donnees x, y1 et y sont les suivantes :


x ] 1; 1[
mx = 0
y1 ] 1.75; 1.75[ my1 = 1
y ] 2.1; 2.1[
my = 2

(7.156)

La position de la virgule des differents coefficients du filtre est la suivante :


c1 = 0.35
a1 = 0.8
c2 = 0.48
a2 = 0.6

mc1 = 1
ma1 = 0
mc2 = 1
ma2 = 0

(7.157)

7.4 Exemple

119

Filtre H1
La position de la virgule en sortie de la multiplication de c1 par x est la suivante :
mzc1 = mx + mc1 + 1 = 0 1 + 1 = 0

(7.158)

La position de la virgule en sortie de la multiplication de a1 par y1 est la suivante :


mza1 = my1 + ma1 + 1 = 1 + 0 + 1 = 2

(7.159)

La position de la virgule commune pour laddition ADD1 est la suivante :


mADD1 = max (mzc1 , mza1 , my1 ) = max (0, 2, 1) = 2

(7.160)

Pour aligner la virgule en entree de ladditionneur, il est necessaire dintroduire un decalage


`a droite de dzc1 bits sur la sortie de la multiplication de c1 par x :
dzc1 = mADD1 mzc1 = 2 0 = 2

(7.161)

En sortie de ladditionneur, pour retrouver le format de la donnee, il est necessaire dintroduire


un decalage `
a gauche de :
dzy1 = mADD1 my1 = 1 0 = 1

(7.162)

Filtre H2
La position de la virgule en sortie de la multiplication de c2 par y1 est la suivante :
mzc2 = my1 + mc2 + 1 = 1 1 + 1 = 1

(7.163)

La position de la virgule en sortie de la multiplication de a2 par y est la suivante :


mza2 = my + ma2 + 1 = 2 + 0 + 1 = 3

(7.164)

La position de la virgule commune pour laddition ADD2 est la suivante :


mADD2 = max (mzc2 , mza2 , my ) = max (1, 3, 2) = 3

(7.165)

Pour aligner la virgule en entree de ladditionneur, il est necessaire dintroduire un decalage


`a droite de dzc2 bits sur la sortie de la multiplication de c2 par y1 :
dzc2 = mADD2 mzc2 = 3 1 = 2

(7.166)

En sortie de ladditionneur, pour retrouver le format de la donnee, il est necessaire dintroduire


un decalage `
a gauche de :
dzy = mADD2 my = 3 2 = 1

(7.167)

Pour limiter le temps dexecution des operations de recadagre, les decalages `a droite en sortie
des multiplications peuvent etre deplaces vers lentree du filtre ou vers les coefficients. Nous
deplacons les decalages `
a droite de deux bits dzc1 et dzc2 vers les coefficients c1 et c2 . Ceci
necessite dintegrer 2 bits supplementaires `a la partie enti`ere de ces deux coefficients.

120

Arithmetique virgule fixe

7.4.2.3

D
etermination de la largeur des donn
ees

Pour implanter ce filtre H, nous utilisons une architecture sur 16 bits et double precision dont
le synoptique est presente `
a la figure 7.21. La specification virgule fixe obtenue est presentee
`a la figure 7.39 avant le deplacement des operations de decalage et `a la figure 7.40 apr`es le
deplacement des operations de decalage.

x (n )

y (n )

zz

zz

Figure 7.39 Graphe flot de signal du filtre IIR avant le deplacement des operations de
decalage

 

x (n )

 





 




  





  

z

  

z


 

y (n )

zz

 




zz

 

Figure 7.40 Graphe flot de signal du filtre IIR apr`es le deplacement des operations de
decalage

7.4.3

Code C de lapplication

Declaration des variables et des coefficients :


int x;
int y1[2];
int y[2];
int
int
int
int

c1
c2
a1
a2

=
=
=
=

22938;
31457;
26214;
19661;

Code pour le calcul de la sortie du filtre


y1[0] = (int)( ( (long)(c1 * x) + (long)(a1 * y1[1]) ) >> 16 );
y1[1] = y1[0];

7.4 Exemple

121

y[0] = (int)( ( (long)(c2 * y1[0]) + (long)(a2 * y[1]) >> 16 );


y[1] = y[0];
Lexpression (long)( ... ) a pour objectif de forcer le compilateur `a conserver les 32 bits
du resultat et ne pas tronquer `
a 16 bits avant de faire laddition.
16; a pour objectif de renvoyer en memoire les bits les plus
Lexpression y = (int) ( )
significatifs du resultat (partie haute de laccumulateur).

7.4.4

Evaluation de la pr
ecision

Pour la specification virgule fixe presentee `a la figure 7.40, les differentes sources de bruit,
representee `
a la figure 7.41, sont les suivantes :
bge : bruit associe `
a lentree. Nous considerons que le signal x est issu dun convertisseur
analogique-numerique et est code sur 16 bits avec 15 bits pour la partie fractionnaire.
La puissance de ce bruit est la suivante :
22.nx
230
qx2
=
=
101.1 dB
(7.168)
12
12
12
bg1 : bruit present en sortie de ladditionneur lie au renvoi en memoire de la donnee y1 .
Il est necessaire de repasser cette donnee sur 16 bits car elle est ensuite utilisee pour
realiser une multiplication. Lors de ce changement de format, 15 bits sont elimines au
niveau de la partie fractionnaire.
b2ge =

b2g1 =

qy21
228
(1 22.ky1 ) =
(1 230 ) 95.1 dB
12
12

(7.169)

bg2 : bruit present en sortie de ladditionneur lie au renvoi en memoire de la donnee


y. Lors de ce changement de format, 15 bits sont elimines au niveau de la partie
fractionnaire.
b2g2 =

qy2
226
(1 22.ky ) =
(1 230 ) 89.1 dB
12
12

b('

b+
x (n )

++

c

+
z$#

b* )

++

(7.170)

zz

c

"

+
z& %

a

y (n )

++

zz

a

Figure 7.41 Graphe flot de signal du filtre IIR integrant les sources de bruit
Lexpression du bruit en sortie du premier filtre est la suivante

122

Arithmetique virgule fixe

by1 (n) = c1 .be (n) + bg1 (n) + a1 .by1 (n 1)

(7.171)

En appliquant la transforme en Z et en utilisant lexpression 7.145 nous obtenons lexpression


suivante
1
(N1 (z).Be (z) + Bg1 (z))
D1 (z)

By1 (z) =

(7.172)

Lexpression du bruit en sortie du second filtre est la suivante


by (n) = c2 .by1 (n) + bg2 (n) + a2 .by (n 1)

(7.173)

En appliquant la transforme en Z et en utilisant lexpression 7.145 nous obtenons lexpression


suivante
By (z) =

1
(N2 (z).By1 (z) + Bg2 (z))
D2 (z)

(7.174)

Lexpression globale du bruit en sortie du syst`eme est la suivante :


By (z) = H1 (z).H2 (z).Be (z) +

H2
1
Bg1 (z) +
.Bg2 (z)
D2 (z)
D1 (z)

(7.175)

Si nous considerons une loi de quantification par arrondi, alors la puissance du bruit en sortie
du filtre est la suivante :

b2y
ou




2
b2g1 Z H2 (ej ) 2
b2g2 Z
b2ge Z
2

1
j
H(e ) d +


d +
d (7.176)
.
.
.
=



j
j
2
2 D1 (e )
2 D2 (e )
b2y

b2ge .

+
X

n=

|h(n)| +

b2g1 .

+
X

n=

|hg1 (n)| +

avec hg1 (n) la reponse impulsionnelle du syst`eme


du syst`eme D21(z) .

H2
D1 (z)

b2g2 .

+
X

n=

|hg2 (n)|2

(7.177)

et hg2 (n) la reponse impulsionnelle

Lapplication numerique conduit `


a:
b2y = 3.06 7.76 1011 + 12 3.1 1010 + 2.5 1.24 109 = 7.06 109 81.5 dB (7.178)

Chapitre 8

Processeurs de traitement du signal


8.1
8.1.1

Introduction
Les solutions architecturales

Dans ce paragraphe, les differentes solutions architecturales pour limplantation des algorithmes de traitement numerique du signal (TNS) sont presentees. Pour chaque solution, les
caracteristiques en termes de co
ut, de consommation denergie, de performances, de flexibilite
et de temps de developpement sont detaillees. De plus, les consequences en termes de strategie
de codage des donnees en virgule fixe sont exposees. Pour illustrer cette analyse, certains des
crit`eres enumeres ci-dessus sont representes `a la figure 8.1.

8.1.1.1

Processeurs `
a usage g
en
eral

Lobjectif des processeurs `


a usage general est de pouvoir implanter une panoplie importante
dalgorithmes. En consequence, leur architecture nest pas specialisee pour un domaine particulier tel que celui du traitement numerique du signal (TNS). Larchitecture homog`ene du
processeur conduit `
a une consommation denergie et un co
ut eleves. Ainsi, les performances
en termes defficacite energetique et de ratio performance co
ut sont relativement faibles pour
les algorithmes de TNS. Dans le cas des processeurs `a usage general destines aux applications
embarquees, des efforts sont realises afin de diminuer la consommation du processeur. De plus,
face `a laccroissement du nombre dalgorithmes de TNS au sein des nouvelles applications,
de nombreux processeurs `
a usage general int`egrent des extensions permettant daccelerer les
traitements associes au domaine du TNS. Cependant, les performances en termes defficacite energetique et de ratio performance co
ut restent inferieures `a celles obtenues avec les
processeurs de traitement du signal.
Larchitecture homog`ene de ce type de processeur permet dobtenir des compilateurs de langage de haut niveau efficaces. Lobtention dun code assembleur de qualite `a partir dune
description en langage de haut niveau permet deviter de longues phases de developpement
de code en assembleur. Ainsi, les temps de developpement de ces applications peuvent etre
relativement reduits.

123

124
8.1.1.2

Processeurs de traitement du signal


Circuits d
edi
es `
a une application

Les circuits dedies (ASIC 1 ) sont concus et optimises pour une application precise. Cette specialisation du circuit `
a lapplication cible permet dobtenir la solution fournissant les meilleures
performances en termes de temps de calcul, defficacite energetique et de ratio co
ut performance. En contrepartie, ces circuits offrent une flexibilite tr`es reduite, voire nulle. La complexite des differentes phases de conception, de validation, de test et de realisation de ces
circuits conduit `
a des co
uts et des temps de developpement eleves. De plus, cette tendance
sest aggravee avec levolution des technologies utilisees au niveau du processus de fabrication
des circuits integres. Pour reduire les co
uts et les temps de developpement de ces circuits, le
concept de reutilisation de blocs existants sest generalise. Le concepteur realise lassemblage
de differents blocs IP (Intellectual Properties) dej`a testes et valides.
La specialisation de larchitecture `
a lapplication est realisee en partie par le dimensionnement
des differents operateurs. Ainsi, le codage des donnees en virgule fixe doit minimiser la surface
du circuit tant que la contrainte de precision souhaitee en sortie de lalgorithme est respectee.

1000
Efficacit nergtique
(MOPS/mW)

ASIC
ASIC

100
Architecture
Architecture
reconfigurable
reconfigurable

10-50 MOPS/mW
e.g. Pleiades, DART

10

ASIP
ASIP
Coeur
Coeurde
deDSP
DSP
DSP
DSP
Processeurs
Processeursembarqus
embarqus

2 V DSP: 3 MOPS/mW

SA110
0.4 MOPS/mW

0.1
Flexibilit

Figure 8.1 Caracteristiques des solutions architecturales en termes defficacite energetique


et de flexibilite [Rab99]

8.1.1.3

Processeurs de traitement du signal

Nous regroupons sous lappellation processeurs de traitement du signal, les processeurs DSP
disponibles sous forme de composant, les curs de DSP et les ASIP 2 dedies aux applications
de TNS.
Les processeurs DSP et les curs de DSP sont concus pour implanter efficacement les algorithmes specifiques au domaine du traitement du signal. Leur architecture est programmable
et regroupe les differents elements necessaires aux operations de TNS. Deux categories de processeurs DSP sont presentes sur le marche. La premi`ere categorie correspond aux processeurs
DSP concus afin dobtenir une efficacite energetique elevee et un co
ut relativement faible. Ces
caracteristiques sont obtenues en specialisant larchitecture du processeur. En contrepartie,
les compilateurs de langage de haut niveau ne permettent pas de fournir un code assembleur
1. Application Specific Integrated Circuit
2. Application Specific Instruction-set Processor

8.1 Introduction

125

de qualite par rapport `


a un code developpe et optimise a` la main. Ainsi, les temps de developpement des applications sont relativement importants en raison du developpement manuel
en assembleur des parties critiques du code. La seconde categorie des processeurs DSP correspond aux processeurs concus afin dobtenir des performances elevees en termes de capacite
de calcul. Pour cela, des architectures homog`enes et integrant de nombreuses unites fonctionnelles pouvant travailler en parall`ele sont mises en uvre. Les compilateurs de langage
de haut niveau permettent dobtenir un code de qualite si ceux-ci exploitent efficacement le
parallelisme offert par larchitecture. En contrepartie, lefficacite energetique et le prix sont
plus eleves par rapport aux processeurs DSP specialises. Des solutions realisant un compromis
entre les deux approches sont egalement proposees.
Les ASIP sont des processeurs programmables dedies `a une classe dapplications composee
de quelques algorithmes. Les ASIP representent un intermediaire entre les processeurs DSP
et les ASIC [Mar95]. Deux familles dASIP correspondant `a deux approches de conception
differentes peuvent etre definies. La premi`ere famille correspond `a des processeurs proches des
ASIC. Ils ont ete developpes afin dobtenir une flexibilite plus importante par rapport aux
ASIC `a travers la possibilite de programmer le circuit. Ces processeurs vont permettre, pour
les quelques applications cibles, dobtenir des performances se rapprochant de celles des ASIC
en termes defficacite energetique et de ratio co
ut performance. La seconde famille dASIP
correspond aux processeurs concus `
a partir dun cur de DSP. Dans ce cas, le cur est parametre en fonction des applications cibles et certains accelerateurs sont integres afin dobtenir
de meilleures performances. La specialisation de larchitecture `a la classe dalgorithmes vises
permet dobtenir des performances en termes defficacite energetique, superieures `a celles des
processeurs DSP. Comme pour les processeurs et les curs de DSP, lefficacite des compilateurs de langage de haut niveau depend de la specialisation du processeur et de ladequation
entre les differentes phases de la generation de code et de larchitecture.
Dans le cadre des DSP, larchitecture etant figee, le processus de codage des donnees en virgule
fixe doit permettre dobtenir le meilleur compromis entre la precision des calculs et differents
param`etres tels que le temps dexecution, la taille du code ou la consommation denergie. De
plus, pour les curs de DSP ou les ASIP dont la largeur du chemin de donnees est parametrable, la methodologie doit explorer les differentes solutions possibles.

8.1.1.4

Architectures reconfigurables

Afin dobtenir des performances elevees et un niveau de flexibilite relativement important,


differents types darchitectures reconfigurables ont ete proposes.
La reconfiguration au niveau logique correspond `a celle presente au niveau des composants
programmables de type FPGA. Cette reconfiguration est realisee au niveau des elements logiques de larchitecture et de leurs interconnexions. Les configurations appliquees `a ce type
darchitecture necessitent un volume dinformation tr`es important, ainsi elles sont maintenues
pendant un nombre de cycles dhorloge eleve et elles ne sont pas modifiees au cours du traitement realise. La reconfiguration au niveau logique permet dadapter les operateurs et leurs
interconnexions `
a lapplication ciblee. Ainsi, les largeurs des differents operateurs peuvent etre
optimisees en fonction de la contrainte de precision. Cependant, cette flexibilite au niveau des
operateurs est obtenue au detriment des performances en termes de temps dexecution et
de consommation denergie de ces operateurs. En effet, lutilisation de cellules standards ne
permet pas doptimiser les operateurs arithmetiques par rapport `a une solution full-custom.

126

Processeurs de traitement du signal

Ainsi, ce type darchitecture est preconise pour les algorithmes manipulant des donnees dont
la largeur est relativement faible. Les methodologies proposees [CCL01] pour le codage des
donnees en virgule fixe sont tr`es proches de celles utilisees pour les ASIC.
La reconfiguration au niveau fonctionnel permet de modifier le flot des donnees au sein de
larchitecture. Les interconnexions entre les ressources et la fonctionnalite de ces ressources
peuvent etre reconfigurees. Ce type de reconfiguration permet dadapter le mod`ele de programmation et les motifs de calcul `
a lapplication ciblee. Si le volume dinformation necessaire
`a la reconfiguration de larchitecture nest pas trop important, alors la reconfiguration peut
etre realisee dynamiquement au cours de lexecution du code.
Comme pour les DSP, la largeur des operateurs est fixe et ne peut prendre que quelques valeurs predefinies. Ainsi, les methodologies de codage des donnees en virgule fixe pour ce type
darchitecture sont relativement proches de celles utilisees pour les DSP. La difference majeure
reside dans le crit`ere `
a optimiser au niveau de larchitecture pour obtenir une implantation
de qualite.

8.1.1.5

Syst`
eme sur puce SoC

Pour repondre aux defis de limplantation des syst`emes complexes tels que les nouveaux
algorithmes destines aux telecommunications de troisi`eme generation, des syst`emes integrant
sur une meme puce differentes solutions heterog`enes sont mis en uvre. Ces syst`emes peuvent
regrouper les differents elements presentes ci-dessus. Lobjectif est dobtenir une plate-forme
relativement flexible et offrant des performances elevees `a travers lintegration daccelerateurs
adaptes aux parties critiques de lapplication. La flexibilite est presente `a travers les parties
programmables ou reconfigurables.
La methodologie de codage des donnees dans le cadre dun syst`eme sur puce necessite de
mettre en uvre une methodologie globale permettant doptimiser plus ou moins en parall`ele
le codage des donnees pour les differentes solutions architecturales.

8.1.2

Domaine dapplication des processeurs de traitement du signal

Le marche des DSP a connu une forte augmentation en termes de volume de production `
a
la fin des annees 90 et representait en 2001 un marche de 4,8 milliards de $ [Str02a]. Cette
forte croissance etait liee `
a lexplosion du principal marche des DSP que represente le domaine
des communications sans fil cellulaires. Ces processeurs sont aussi presents dans le domaine
des modems et du contr
ole moteur pour les disques durs. Apr`es une diminution importante
des ventes en 2001, la croissance moyenne entre 2001 et 2005 est de 17%. Cette evolution est
liee `a la reprise de la croissance au niveau mondial, du marche des communications sans fil
avec les syst`emes de troisi`eme generation (UMTS), le GPRS, le WiFi et le bluetooth et `
a
lemergence de nouveaux marches dans le domaine du multimedia et dinternet (voix sur IP
[Str02b], decodeurs MP3 [Str00], cameras numeriques). La societe Forward Concepts, prevoit
une croissance des ventes de DSP de 25% par an dans les annees `a venir [Str02a] avec le
developpement des syst`emes de communication de troisi`eme generation .
Les ASIP sont utilises pour des applications necessitant des performances superieures aux DSP
en termes de puissance de calcul, de consommation denergie ou de co
ut. Ils sont presents dans
le domaine du multimedia (television numerique, compression audio et video et graphisme 3D)

8.2 Description de lunite de traitement

127

et des telecommunications (communications sans fil et par satellites, ATM) [Pa97].

8.2
8.2.1
8.2.1.1

Description de lunit
e de traitement
Repr
esentation des donn
ees
Processeurs virgule fixe et virgule flottante

Les DSP sont divises en deux grandes categories en fonction du codage des donnees en virgule
fixe ou en virgule flottante. Ces deux categories poss`edent des caracteristiques et des proprietes propres qui les orientent vers des marches differents.

Prix et consommation d
energie Les prix et la consommation des DSP virgule fixe sont
plus faibles que ceux des DSP virgule flottante, car la taille des donnees quils manipulent est
plus faible et lunite de traitement est moins complexe.
La figure 7.3 (voir page 78) montre la dynamique et la precision obtenues pour differentes largeurs de donnees dans le cas de lutilisation dun format en virgule fixe et en virgule flottante.
Lorsque la taille des donnees est relativement faible (16 bits) les caracteristiques en terme de
precision et de dynamique des deux formats sont proches. La representation des donnees en
virgule flottante necessite lutilisation de deux parties la mantisse et lexposant. Ainsi lorsque
le nombre de bits utilises est relativement faible, un compromis entre la dynamique et la precision doit etre effectue et peu de bits peuvent etre utilises pour lexposant. En consequence,
la dynamique obtenue nest pas superieure `a celle des DSP virgule fixe. Pour des largeurs de
donnees relativement faibles, les DSP sont exclusivement realises avec un format en virgule
fixe. Le format virgule flottante ne montre de linteret que pour des largeurs de donnees plus
elevees (32 bits), permettant alors dobtenir dexcellentes performances en terme de precision
et de dynamique de codage. Le prix dun processeur est proportionnel `a sa surface et la majorite de celle-ci est occupee par les bus et la memoire. La largeur des donnees manipulees
par les processeurs virgule fixe etant plus faible que celle des processeurs en virgule flottante,
le co
ut et la consommation du circuit sont moins importants.
Lunite de calcul des processeurs en virgule flottante est plus complexe car elle doit realiser
les operations de calcul sur la mantisse et lexposant. Ceci augmente le co
ut, la consommation
et le temps de latence de ce type dunite de traitement. Dans [Tou99] les experimentations
realisees par lauteur montrent que le temps de latence dun operateur de type additionneur
en virgule flottante est 2,3 fois superieur `a celui dun operateur en virgule fixe et que la surface
occupee est 4 fois superieure.

Temps de d
eveloppement des applications Lors du developpement dapplications pour
des processeurs virgule fixe, le concepteur doit realiser le codage et le cadrage des donnees
presentes au sein de lalgorithme. Il analyse la dynamique de lensemble des donnees, en deduit
le codage et determine les decalages necessaires pour aligner ces donnees lors des operations
daddition ou de soustraction. Le codage et le cadrage des donnees doivent etre optimises afin
de garantir labsence de debordements au sein de lalgorithme tout en maintenant la precision

128

Processeurs de traitement du signal

maximale.
Les processeurs virgule flottante proposent une dynamique elevee qui permet de liberer lutilisateur des t
aches de codage des donnees et danalyse des debordements eventuels. Lalignement des donnees est automatiquement realise par le materiel, au sein de lunite de calcul.
Ainsi le temps de developpement dapplications pour ce type de processeurs est plus faible
par rapport `
a celui des processeurs virgule fixe.

March
es des processeurs Les DSP virgule fixe sont bien adaptes pour les applications
destines au grand public ou le co
ut de revient des composants constituant le syst`eme doit etre
le plus faible possible. Le surco
ut du developpement lie `a la specificite du codage en virgule
fixe est rapidement amorti par les grands volumes de production. La faible consommation
de ce type de composant permet de lutiliser au sein des applications embarquees. Ces DSP
sont tr`es utilises dans les secteurs en forte croissance tels que les telecommunications et le
multimedia.
Les processeurs en virgule flottante sont destines aux applications necessitant une dynamique
importante ou une precision elevee pour lesquelles un processeur en virgule fixe ne peut repondre `a ces exigences. Ces applications sont par exemple presentent dans le domaine de
laudionumerique. Les processeurs en virgule flottante sont utilises pour des applications realisees en petite serie ou le co
ut du developpement represente une part tr`es importante du co
ut
total du produit.
Le marche des processeurs DSP est domine par les processeurs en virgule fixe (95% des DSP
en 1996) et plus particuli`erement par les processeurs dont la largeur des donnees est de 16
bits (95% des DSP virgule fixe en 1996) [Lap96]
8.2.1.2

Format des donn


ees

Largeur naturelle La largeur naturelle des donnees correspond au format des donnees
qui sont manipulees le plus efficacement par le bus et le chemin de donnees du processeur
[LBSL96]. La majorite des operations sur ces donnees est realisee en un cycle.
La largeur naturelle des donnees est un param`etre fondamental au niveau du DSP car elle
influence directement le prix de ce dernier en fixant la largeur minimale des operateurs, des
bus de donnees et de la memoire. Afin dadapter au mieux le DSP `a lapplication souhaitee,
certains fabricants proposent des coeurs de DSP pouvant etre synthetises et dont la largeur
naturelle est parametrable. Ainsi le concepteur va choisir la largeur minimale repondant aux
crit`eres de precision souhaites.
Extension de la pr
ecision Les DSP permettent dutiliser au sein de lunite de traitement
un format de donnees etendu. La largeur des bus dinterconnexion entre les differentes unites
fonctionnelles du chemin de donnees est superieure `a la largeur naturelle des donnees afin de
conserver lensemble des bits issus des operateurs. Ceci permet de maintenir une precision
plus elevee sur une suite doperations dont les operandes restent dans lunite de traitement et
ne sont pas renvoyees en memoire. Lefficacite de cette methode est fortement liee au nombre

8.2 Description de lunite de traitement

129

dunites de stockage (registres) disponibles au sein du chemin de donnees.


Larithmetique multi-precision permet de manipuler des donnees de largeur plus importante,
obtenues par concatenation de plusieurs donnees au format naturel. Une donnee x en double
precision pour un processeur 16 bits est representee `a la figure 8.2.a. Cette donnee de largeur
32 bits est composee dune donnee 16 bits signee xH et dune donnee 16 bits non signee xL .
>,-./
0122345 6 7 8 ,-./ 9:;5

x=

x<

,-./

(b)
(a)

,-./

8,-./

x=

LEMJNO JIJ LEMJNO

x= y<

LEMJNO JIJ LEMJNO

y= x<

x<

+
y=

y<

x= +y=

x< + y<

PQIFHMHDEIJ RO CH QODOJBO

LEMJNO LEMJNO

(c)

x<

y=

y<
y< x<

ABCDEFCEGHDEIJ K JIJ LEMJNO JIJ LEMJNO


8 ,-./

x=

+
+
+

y= x=
(y x)?

(y x)@

8 ,-./

8,-./

Figure 8.2 Arithmetique double precision


Une operation utilisant des donnees en multi precision est decomposee en une suite doperations manipulant des operandes au format naturel. La figure 8.2.b represente les differentes
operations `
a realiser pour effectuer une multiplication. Afin de pouvoir implanter ce type de
format le processeur doit posseder des operateurs capables de travailler sur des donnees signees et non signees et permettre de conserver la retenue dune operation afin de linjecter
dans la suivante.

Etant
donne le nombre doperations a` realiser pour le calcul dune operation de base en double
precision, le temps dexecution de celle-ci est fortement augmente par rapport `a une arithmetique simple precision. Ceci limite lutilisation de cette arithmetique `a des portions de code
critiques en terme de precision.

8.2.2

Pr
esentation des diff
erents
el
ements du chemin de donn
ees

Dans une premi`ere partie nous presentons lensemble des elements constituant les unites de
traitement et explicitons leurs caracteristiques, nous analysons ensuite les differents types
darchitecture des unites de traitement.
8.2.2.1

Multiplieur

Les DSP poss`edent un multiplieur c


able permettant de realiser une multiplication par cycle.
Le temps de latence entre la lecture des donnees et la disponibilite des resultats de certains

130

Processeurs de traitement du signal

multiplieurs etant superieur `


a 1 cycle, lobtention dune multiplication par cycle est realisee
`a laide du pipeline interne.
La majorite des DSP poss`ede un multiplieur dont la largeur des donnees dentree est egale `
a
la largeur naturelle et permet dutiliser des donnees signees et non signees afin de supporter
larithmetique multi-precision. La multiplication de deux nombres de taille N gen`ere une donnee de taille 2N , la plupart des DSP poss`ede un multiplieur fournissant lensemble des 2N bits.
Lorsque nous sommes en arithmetique fractionnaire, la multiplication entrane le doublement
du bit de signe. Certains DSP permettent deliminer automatiquement le bit redondant en
realisant un decalage `
a gauche dun bit. Si les donnees dentree sont codees en virgule fixe
cadree `a gauche, cette technique permet davoir un format du resultat identique au format en
entree.
8.2.2.2

Unit
e Arithm
etique et Logique : UAL

Lunite arithmetique et logique permet de realiser les differentes fonctionnalites decrites cidessous avec un 1 cycle :
operations logiques : AND, OR, NOT ;
operations arithmetiques : addition, soustraction, incrementation, decrementation, valeur absolue. Certaines UAL permettent de realiser une division en plusieurs cycles.
Les UAL sont concues pour travailler sur des donnees dont le format est identique `a celui
de laccumulateur, mais certains DSP tels que le ADSP21xx [Ana95] poss`edent une UAL ne
pouvant manipuler que des donnees au format naturel. Dans ce cas une operation sur un
registre daccumulation necessite plusieurs cycles.
8.2.2.3

Registres

Structure des registres Avant de presenter les structures des registres utilisees dans les
unites de traitement nous definissons les deux termes suivants :
jeu de registres : ensemble des registres presents dans le chemin de donnees et destines
`a stocker les operandes et les resultats intermediaires.
classe de registres : sous-ensemble de registres du jeu de registres possedant les memes
fonctionnalites
Dans les processeurs, deux types de structure du jeu de registres sont presentes. La premi`ere
consiste `a utiliser un jeu de registres homog`ene dont tous les registres le composant sont
interchangeables. Cette technique necessite dutiliser un banc de registres integrant plusieurs
ports de communication permettant dacceder en lecture et en ecriture aux differents registres
en parall`ele. Si un operateur utilise deux operandes issues dune file de registres alors cette
derni`ere doit posseder 5 ports (2 pour la lecture des operandes par loperateur, 2 pour lecriture des operandes issues de la memoire et 1 pour lecriture du resultat). Cette solution est
tr`es co
uteuse en terme de surface de silicium, mais garantit lhomogeneite de la structure de
registres. Le DSP TMS320C62xx [Tex99b] est compose de deux files de 16 registres de 32
bits. Les deux files de registres poss`edent 9 ports de lecture (32 bits) et 6 ports decriture

8.2 Description de lunite de traitement

131

(32bits). Cette approche est utilisee dans les processeurs generaux de type RISC, les DSP
virgule flottante et les nouveaux DSP virgule fixe.
La seconde approche consiste `
a specialiser les registres et `a les relier directement aux unites fonctionnelles, afin de reduire le nombre et la complexite des connexions. Une classe de
registres est utilisee pour chaque operande et le resultat de loperation est stocke dans une
troisi`eme classe de registres. Cette specialisation de la structure des registres permet de diminuer les co
uts et daugmenter la rapidite des transferts entre les differentes unites. Le jeu
dinstructions associe `
a cette architecture est specialise car chaque instruction utilisant un
operateur, specifie precisement le ou les registres qui peuvent etre utilises. Les DSP de premi`ere et de seconde generation [Lap96] utilisent ce type dapproche afin doptimiser le co
ut.
Ces DSP poss`edent de nombreuses classes de registres (2 `a 8) composees de peu de registres
(1 `a 8).
Il est possible de quantifier lhomogeneite du jeu de registres en calculant le rapport entre le
nombre de classes de registres et le nombre total de registres. Pour un jeu de registres homog`ene cette metrique va tendre vers 0, et dans le cas de registres heterog`enes cette metrique
tendra vers 1. Lhomogeneite des registres a une influence importante sur la qualite du code
genere par les compilateurs de langage de haut niveau.

Registres daccumulation Ces registres recoivent les valeurs intermediaires issues des differents calculs realises dans lunite de traitement. La taille de ces registres est determinee afin
de pouvoir stocker, avec le maximum de precision, les resultats intermediaires des operations
de type multiplication accumulation (MAC) :

yACC =

M
X

x[i]y[i]

(8.1)

i=1

La multiplication de deux operandes au format naturel fournit un resultat dont la largeur


est egale au double de la largeur naturelle. Les accumulations successives doperandes issues
du multiplieur augmentent la dynamique du resultat intermediaire et necessitent des bits
supplementaires pour le coder. Dans certains DSP les registres daccumulation poss`edent des
bits de garde qui permettent de realiser une suite de plusieurs accumulations sans provoquer
de debordements. La taille de ce registre daccumulation est egale `a :
NACC = 2Nn + Ng

(8.2)

Ces Ng bits de garde vont permettre de stocker le resultat dau moins NAdd = 2Ng additions
sans necessiter de recadrer les donnees. Pour les processeurs possedant un jeu de registres
heterog`ene, le nombre de registres daccumulation influence la qualite du code et la souplesse
de programmation du processeur. La presence dun faible nombre de registres daccumulation
necessite de renvoyer les resultats intermediaires en memoire. Ceci ralentit lexecution du
programme, augmente la taille du code et diminue la precision du calcul.

132
8.2.2.4

Processeurs de traitement du signal


Registres `
a d
ecalage

Le codage des donnees en virgule fixe necessite de realiser de nombreux decalages afin daligner les donnees. Nous trouvons au sein des unites de traitement des DSP, deux types de
registres `a decalage. La premi`ere categorie correspond aux registres `a decalage specialises qui
ne peuvent realiser que quelques decalages predefinis. Ces decalages sont realises en parall`ele
`a lexecution des autres operations et ne necessitent pas de cycles dhorloge supplementaires.
Ces registres sont affectes `
a la sortie ou `a lentree dun operateur precis afin de fournir une
plus grande flexibilite pour le cadrage des donnees. Ces registres sont commandes dans la
plupart des cas par des bits de mode. Cette specialisation a ete realisee afin de minimiser la
complexite du registre tout en permettant dutiliser plusieurs formats. Ce type de registres est
par exemple present en sortie des multiplieurs afin de pouvoir eliminer le second bit de signe
present avec une arithmetique fractionnaire et dans certains cas, pour modifier la position de
la virgule afin deviter les debordements lors des accumulations realisees par la suite.
La seconde categorie correspond aux registres en barillet, ils poss`edent la capacite de realiser
lensemble des decalages `
a droite et `a gauche possibles sur une donnee avec un temps de
latence qui ne depasse pas un cycle. Ils sont integres au sein dune UAL ou constituent une
unite specifique en parall`ele. Ce type de registres apporte une tr`es grande souplesse dans le
cadrage des donnees, et permet de modifier le format de celles-ci avec un surco
ut maximal
dun cycle. Labsence de ce type de registres dans un DSP est un handicap important pour
lobtention dun code optimise. Le DSP56000 [Mot94] ne poss`ede que des registres permettant
de realiser le decalage de 1 bit `
a droite ou `a gauche par cycle. Dans ce cas la minimisation
du nombre de decalages est un facteur primordial dans lobtention dun code efficace sachant
quun decalage de N bits necessite N cycles.
8.2.2.5

Implantation des lois de quantification et de d


ebordement

Implantation de la loi de d
epassement Les debordements peuvent se produire lors de
differentes operations arithmetiques au sein de lunite de traitement ou lors dun changement
de format. Les architectures des DSP permettent dutiliser une loi de depassement modulaire
et une loi de saturation.
Lapproche la plus simple en cas de debordement est de ne conserver que les N bits disponibles pour representer le format et deliminer les bits les plus significatifs supplementaires.
Cette loi de depassement modulaire poss`ede des proprietes concernant lerreur de codage
peu interessante, ainsi de nombreux DSP poss`edent des unites permettant dimplanter une
loi de saturation. Elle permet dobtenir une erreur de codage plus faible et de conserver le
signe de la donnee `
a coder. Les unites de saturation detectent la presence dun debordement
et substituent la donnee par celle representant la valeur minimale ou maximale la plus proche.
Ce type dunites est present en sortie des accumulateurs afin de saturer la valeur de ceuxci avant le transfert de leur contenu en memoire. Certains DSP [Tex99b] [Bie97] [MWK98]
poss`edent en sortie de ladditionneur ou de lUAL une unite de saturation permettant de
gerer les debordements lors des calculs intermediaires. Une unite de saturation est presente
au sein de quelques processeurs [Bie97] [Tex99a] pour saturer le resultat de la multiplication.
Dans le code complement `
a 2, lorsque les deux operandes sont egales `a la valeur minimale

8.2 Description de lunite de traitement

133

representable, le resultat de la multiplication ne fait pas partie du domaine de definition du


code. Dans ce cas, la sortie du multiplieur est saturee `a la valeur maximale representable.
Lutilisation des unites de saturation est specifiee au sein de linstruction [Tex99b] ou `a laide
de bits de mode stockes au sein de registres de contr
ole [Bie97] [Luc] . Dans ces deux cas la
saturation des donnees ne necessite pas de cycles supplementaires. Certains DSP proposent
des instructions realisant explicitement la saturation de laccumulateur et necessitant un cycle
dhorloge [Tex99a] [Ana95].
Cependant lutilisation dunites de saturation modifie les valeurs des donnees et introduit des
non linearites au sein du signal. Ainsi la solution la plus efficace pour gerer les probl`emes de
debordements est de les eviter en realisant un cadrage correct de lensemble des donnees.

Implantation de la loi de quantification Le processus de quantification intervient d`es


quune donnee est transferee vers un registre ou un emplacement dont le format est different
de celui dorigine. De nombreux DSP permettent de choisir entre une loi de quantification par
arrondi ou par troncature.
La troncature consiste `
a eliminer les bits de poids faible qui ne peuvent etre conserves dans
le nouveau format. Cette quantification peut etre facilement implantee car elle consiste `a selectionner les bits les plus significatifs et `a les affecter `a la nouvelle donnee. En contrepartie
ce procede entrane un biais entre la valeur reelle et celle codee.
Afin dobtenir une moyenne de lerreur de quantification nulle, il est possible dutiliser une loi
de quantification par arrondi, celle-ci consiste `a coder la donnee avec la valeur la plus proche
appartenant au nouveau format. Nous trouvons au sein des DSP deux types darrondi.
Dans le cas dune quantification par arrondi conventionnel, lorsque la donnee est egale `a la
valeur mediane de lintervalle [k, (k + 1)], la valeur representable la plus proche est choisie
de la mani`ere suivante :

k
(k + 1)
Q(x) =

(k + 1)

si k x < (k + 12 )
si (k + 12 ) < x (k + 1)
si x = (k + 21 )

(8.3)

La valeur mediane de chaque intervalle [k, (k+1)] etant codee systematiquement `a la valeur
superieure, lerreur de quantification nest pas nulle. Cette erreur est neanmoins nettement
plus faible que celle presente lors dune quantification par troncature.
Pour realiser un arrondi sur le ke`me bit de la donnee nous additionnons 2k1 `a la valeur `
a
e
`
me
arrondir et nous realisons ensuite une troncature au niveau du k
bit. Certains processeurs [Ana95] [Mot94] [Tex99a] poss`edent une instruction ou un mode qui supporte larrondi
conventionnel et qui realise automatiquement les operations decrites ci dessus. Sinon il faut
explicitement charger la valeur 2k1 dans laccumulateur avant de debuter les calculs. Ce
type darrondi est le plus utilise car son implantation est plus simple que celle de larrondi
convergent presente ci-apr`es.

134

Processeurs de traitement du signal

Afin deliminer le biais un arrondi convergent peut etre utilise [LBSL96]. Il affecte la valeur
mediane de facon equiprobable `
a la valeur superieure et inferieure :

si k x < (k + 21 )
k
(k + 1)
si (k + 21 ) < x (k + 1)
(8.4)
Q(x) =

1
(k) ou (k + 1)
si x = (k + 2 )



1 
1
avec P Q(x) = k \ x = (k + ) = P Q(x) = (k + 1) \ x = (k + )
2
2
Cette technique permet de coder la valeur mediane de mani`ere equiprobable `a laide de lanalyse de la parite de la donnee. Les donnees impaires sont codees `a la valeur superieure et les
donnees paires `
a la valeur inferieure. Pour realiser ceci, le DSP DSP56000 [Mot94] teste le
e
`
me
k
bit et ne realise laddition de cette donnee avec 2k1 que si le bit est egal `a 1. Pour sa
part, le DSP ADSP21xx [Ana95] realise dabord laddition et ensuite met `a 0 le ke`me bit.
Ce type darrondi permet dobtenir une moyenne de lerreur de quantification nulle, mais il
est present que dans quelques DSP [Luc99] [Mot94] [Ana95], car son implantation est plus
complexe.
8.2.2.6

Unit
es sp
ecifiques

Afin daccelerer lexecution dalgorithmes frequemment utilises dans certains domaines dapplication, les DSP fournissent des unites specifiques permettant dimplanter plus efficacement
ces algorithmes :
Unite de gestion du codage en virgule flottante par bloc
Unite dacceleration du decodage de Viterbi

8.2.3

Architecture des chemins de donn


ees

Les premi`eres generations de DSP possedaient une architecture du chemin de donnees basee
sur une structure de type MAC [Lap96]. Pour faire face `a la demande croissante en puissance
de calcul necessaire pour les nouvelles applications de telecommunications et de multimedia,
les concepteurs de DSP ont propose deux types darchitectures [EB00]. La premi`ere est une
extension de larchitecture MAC traditionnelle et la seconde est une architecture orthogonale
sinspirant des processeurs RISC et basee sur la mise en parall`ele dunites fonctionnelles au
sein du processeur. Ces deux derni`eres architectures seront etudiees en 3e`me annee.
8.2.3.1

Architecture traditionnelle : MAC

Les premi`eres generations de DSP ont ete concues afin dimplanter efficacement les operations
de type MAC correspondant `
a la structure de base de nombreux algorithmes tels que les filtres
(FIR, IIR). La structure dun filtre FIR est representee `a la figure 8.3, celui-ci est constitue
de cellules elementaires juxtaposees realisant une operation de multiplication accumulation :
le resultat en sortie de la cellule est egal `a la somme du resultat precedent et celui de la
multiplication du coefficient hn et de loperande xkn issue de la ligne `a retard. Les DSP
poss`edent une architecture permettant de calculer la sortie dune cellule elementaire par cycle.
Le schema dune architecture traditionnelle de type MAC est presente `a la figure 8.4, les
operandes sont soit situees dans les registres Rx et Ry ou directement en memoire.

8.2 Description de lunite de traitement


xZXUVW

zST
hUXW

xZXU

135

zST

zST

hU

zST

hUVW

hUVY

Figure 8.3 Structure du filtre FIR

RR]]

RR^^

befg

befg

2.befg

+
2.befg+bh

[\\
[\\

_`a bcdd

bh : jklmdn on
mpaq on r`don

Figure 8.4 Architecture traditionnelle de type MAC

Deux variantes de la structure MAC sont utilisees dans les DSP. La premi`ere realise les operations de multiplication accumulation de facon pipelinee, le multiplieur realise la multiplication
des operandes de la ke`me cellule et stocke le resultat dans un registre intermediaire (P), en
parall`ele laccumulateur realise laccumulation associee `a la cellule precedente. Cette structure
est presente dans les DSP tels que le TMS320C5x [Tex98], DSP16xx [Luc].
Dans la seconde variante, loperation de multiplication est dabord realisee et le resultat est
transmis `a laccumulateur afin deffectuer laddition. Ces deux operations etant realisees de
mani`ere sequentielle au cours dun meme cycle, les temps de latence du multiplieur et de
laccumulateur doivent etre plus faibles par rapport `a la solution precedente.
Les premi`eres generations de DSP possedaient peu dunites fonctionnelles, ainsi lUAL du
DSP etait utilisee pour realiser loperation daccumulation au sein du MAC. Les generations
actuelles de DSP int`egrent plus dunites en parall`ele et permettent dutiliser un additionneur/soustracteur pour lunite MAC, independant de lUAL. De plus ces DSP incorporent
des unites de manipulation de bits incluant un registre en barillet.

136

Processeurs de traitement du signal

8.3

Description de lunit
e m
emoire

Les applications de TNS requi`erent la lecture de nombreuses donnees stockees en memoire et


lecriture des resultats dans cette derni`ere. Cette contrainte necessite de posseder une structure de memoire efficace permettant davoir une bande passante de communication entre les
unites de calcul et la memoire elevee afin de ne pas ralentir lexecution des instructions. Les
facteurs importants pour obtenir une architecture efficace sont lorganisation de la memoire
et linterconnexion entre la memoire et le chemin de donnees.
Lexemple le plus souvent utilise pour montrer limportance de larchitecture de la memoire
dans un processeur de traitement du signal est le filtre FIR. Celui-ci est constitue de cellules
de type MAC et dune ligne `
a retards. Cette operation MAC etant realisee en 1 cycle dans la
majorite des DSP, larchitecture memoire doit permettre deffectuer lensemble des communications necessaires entre lunite de calcul et la memoire en 1 cycle, afin de ne pas ralentir
le traitement des donnees. Les differents acc`es `a la memoire sont les suivants :

recherche de linstruction
lecture de la donnee xnk
lecture du coefficient hk
vieillissement des donnees xnk1 = xnk

Afin deliminer le dernier acc`es les processeurs utilisent un mode dadressage particulier qui
permet de vieillir automatiquement les donnees, ceci permet de reduire le nombre dacc`es par
cycle `a 3.
Larchitecture traditionnelle des processeurs generaux est basee sur le mod`ele de Von Neuman
pour lequel une memoire unique est utilisee pour stocker les donnees et le programme. Pour
obtenir des performances acceptables ces processeurs utilisent des memoires caches.
Larchitecture des PTS est basee sur le mod`ele Harvard dont le principe est la separation de
la memoire pour les donnees et le programme. Les deux espaces memoire sont totalement independants, ils poss`edent leurs propres bus de donnees et dadresses et leur propre generateur
dadresses.
Differentes variantes du mod`ele Harvard ont ete proposees afin daugmenter le nombre dechanges
simultanes entre la memoire et les unites de calcul. Ces variantes sont presentees `a la figure
8.5 [Lee88]. Le choix des diverses variantes est fonction de la structure de localisation des
operandes [Ara97] utilisee dans le PTS.

8.3.1
8.3.1.1

Mod`
eles de localisation des op
erandes
Mod`
ele registre m
emoire

Les architectures basees sur le mod`ele registre-memoire, utilisent une operande presente en
memoire et une operande stockee dans un registre [Ara97]. Au cours dun cycle, une seule
lecture doperande en memoire est realisee, ainsi il est possible dutiliser la structure Harvard de base et sa premi`ere declinaison qui poss`ede une seule memoire pour les donnees. Le

8.3 Description de lunite memoire

137

DP
DP

IP

DP

IP

IP
1-vers-2

IM - DM

DM

a) Architecture Von Neuman

DP

IM

DM

b) Architecture Harvard

IP

DP

IM/DM

c) Dclinaison 1

IP

1-vers-2

DM

IM

d) Dclinaison 2

DM 1

DM 2

IM

e) Dclinaison 3

Figure 8.5 Architecture Harvard et ses declinaisons


temps dexecution dune instruction est fonction du temps dacc`es `a la memoire et du temps
dexecution de loperation :
tinst = tacc + texec
(8.5)
Le challenge pour ce type darchitecture est de minimiser le temps dacc`es `a la memoire interne. Pour cela les DSP utilisent des memoires statiques car elles sont plus rapides que les
memoires dynamiques. Le temps dacc`es est aussi diminue en minimisant la taille des blocs
adresses `a laide dune memoire paginee. Le type dadressage associe est presente dans le paragraphe 8.3.3.2. De nombreux DSP concus par Texas Instruments poss`edent cette architecture
memoire : TMS320C25/50/54x [Tex98] [Tex99a].

8.3.1.2

Mod`
ele registre-registre ou load/store

Afin de saffranchir du temps dacc`es `a la memoire une structure evitant la lecture directe
dune operande en memoire est utilisee. Les deux operandes sont stockees dans des registres
et le chargement de ceux-ci est effectue en parall`ele avec lexecution dune operation dans
lunite de calcul. Afin de respecter les contraintes de dependance des donnees, loperation
courante seffectue en meme temps que le chargement des operandes de linstruction suivante.
Linstruction specifie les deux registres des operandes sources et le registre de stockage du
resultat, ainsi que ladresse des 2 operandes `a charger pour linstruction suivante. Ce type de
structure permet de diminuer le temps dexecution de linstruction par rapport `a la structure
precedente, en le rendant independant du temps dacc`es `a la memoire :
tinst = texec

si tacc < tinst

(8.6)

138

Processeurs de traitement du signal

Ce mod`ele de localisation des operandes necessite pour un operateur de lire deux donnees par
cycle. Deux approches sont utilisees afin de realiser ces deux lectures.

Utilisation dune m
emoire multi-ports Cette structure est composee dune memoire
multi-ports permettant de lire plusieurs donnees en parall`ele au cours dun meme cycle. Dans
ce cas la majorite des architectures memoire correspond a` la seconde declinaison. Elle est
composee dune memoire programme mono port et dune memoire donnees double ports permettant de lire deux donnees en parall`ele. Laspect multi-ports de la memoire va augmenter
la surface et le co
ut du circuit. Cette structure est tr`es utilisee dans les processeurs de type
VLIW comme le TMS320C62x [Tex99b] [TH97]. Lassociation de ce mod`ele memoire et dune
file de registres permet de garantir lhomogeneite de larchitecture.

Utilisation de deux bancs de m


emoires La seconde approche correspond `a la troisi`eme
declinaison, elle comprend deux bancs de memoires X et Y possedant chacun ses propres bus
de donnees (XDB et YDB) et dadresses et sa propre unite de generation dadresses. Cette
structure permet de lire deux donnees en parall`ele au cours dun cycle sans utiliser de memoires multi-ports.
Cette solution est moins co
uteuse en terme de surface de silicium par rapport `a des memoires
multi-ports. Mais ce type darchitecture ne permet de lire quune seule donnee par banc de
memoire et par cycle, ainsi il est necessaire de repartir efficacement les donnees dans les deux
bancs de memoires afin de pouvoir charger le maximum de donnees en parall`ele.

8.3.2

Sp
ecificit
e des DSP

Comme nous lavons vu precedemment le temps dacc`es `a la memoire est un facteur essentiel
pour lobtention de performances elevees, ainsi pour les ASIP ou syst`eme sur une puce la taille
de la memoire ROM et RAM est ajustee afin de pouvoir contenir lensemble du programme et
des donnees necessaires `
a lapplication. Ceci permet de ne pas utiliser de memoires externes
et ainsi de ne pas augmenter le temps dacc`es `a la memoire, le nombre de broches, la surface
du syst`eme et la consommation.
Dans le cadre des DSP lapplication netant pas connue `a priori, il est possible dutiliser de la
memoire externe pour augmenter la taille de lespace memoire, mais ceci est tr`es penalisant
en terme de co
ut (necessite dune memoire externe rapide), et de consommation.

8.3.3

Mode dadressage

Afin de respecter les performances souhaitees au niveau de la bande passante de communication avec la memoire, il est necessaire davoir des unites specialisees (unite de generation
dadresses) permettant de calculer les adresses des donnees rapidement et en parall`ele avec
lexecution des autres operations. En effet la charge de calcul concernant les adresses est
proche de celle des donnees [Peg99].

8.3 Description de lunite memoire

139

Les algorithmes de TNS sont caracterises par des acc`es reguliers et sequentiels `a la memoire.
Les unites de generation dadresses vont exploiter ces proprietes afin doptimiser le calcul
des adresses en proposant des solutions cablees permettant dimplanter les modes dacc`es les
plus couramment utilises. Ceux-ci sont associes `a la structure somme de produits. Les DSP
permettent dutiliser de nombreux modes dadressage afin doptimiser le calcul des adresses
pour les diverses applications de traitement du signal. Nous allons presenter differents modes
dadressage [LBSL96] et plus particuli`erement le mode dadressage indirect par registres qui
est le plus adapte aux applications de TNS.
8.3.3.1

Mode dadressage imm


ediat

Dans le mode dadressage immediat, la valeur de la donnee est directement codee dans linstruction, ceci est utilise pour initialiser les registres dadresses ou pour stocker une constante
utilisee dans une operation arithmetique. Lorsque la taille de la donnee est faible il est possible
de coder linstruction en un seul mot compose de loperation `a realiser et de la valeur de la
donnee. Mais pour une donnee de valeur elevee, il est necessaire dutiliser 2 mots pour coder
linstruction, ceci est penalisant en terme de densite de code et de temps dexecution.

8.3.3.2

Mode dadressage direct

Dans le mode dadressage direct, ladresse de la donnee est codee directement dans linstruction, si lensemble de ladresse est specifie il est necessaire dajouter un second mot pour coder
linstruction.
Afin dencoder partiellement ladresse, un syst`eme de memoire paginee peut etre utilise.
Ladresse de la donnee est composee dun numero de page stocke dans un registre (pointeur de page) et dun deplacement dans la page qui sera stocke dans linstruction. La taille du
deplacement est fonction de la longueur de la page et doit etre relativement faible. Le choix
de la taille de la page resulte dun compromis entre le nombre de pages qui ne doit pas etre
trop eleve afin de minimiser le nombre de modifications du pointeur de page et la longueur de
la page qui doit rester faible afin dencoder le deplacement avec un minimum de bits. Dans
le cas du TMS320C54x la taille dune page est de 128 mots, ainsi ladresse de la donnee est
codee dans linstruction sur 7 bits. Ce type dadressage est interessant si le programme acc`ede
de mani`ere sequentielle `
a des donnees regroupees dans des pages identiques. Des techniques
doptimisations existent pour minimiser le surco
ut associe aux diverses initialisations du pointeur de page [Sud98]

8.3.3.3

Mode dadressage indirect

Dans le mode dadressage indirect, la donnee est pointee en memoire via un registre dadresse.
Ceci permet de specifier dans linstruction le registre `a utiliser et non ladresse de la donnee
et ainsi de reduire fortement le nombre de bits necessaires pour encoder la localisation de la
donnee. Le nombre de registres dadresses est limite afin de ne pas utiliser trop de bits dans
linstruction pour le specifier. Ce mode dadressage est le plus utilise dans les algorithmes de
TNS pour les raisons suivantes :
encodage efficace de ladresse dans linstruction ;
mode dadressage naturel des tableaux (adressage par pointeur) ;

140

Processeurs de traitement du signal


possibilite de calculer ladresse de linstruction suivante en parall`ele avec lexecution
de linstruction courante.

Les unites de generation dadresses permettent dutiliser 4 types dadressage specifiques afin
de repondre aux contraintes dadressage des donnees de certains algorithmes, sans ajouter
dinstructions supplementaires.

Adressage lin
eaire Afin de pouvoir se deplacer rapidement dans un tableau des possibilites
de post-modifications sont disponibles. Ceci permet dincrementer ou decrementer la valeur
du registre dadresse en parall`ele `
a lexecution dune operation. Il est possible de se deplacer de facon non contigue en ajoutant un offset `a ladresse. Cet offset est soit stocke dans un
registre quelconque specifie dans linstruction ou dans un registre dedie appele registre doffset.

Indexage La valeur de ladresse est obtenue `a partir de laddition de deux registres dadresses
ou dun registre dadresse et dune constante codee dans linstruction. La premi`ere partie de
ladresse represente ladresse de base du bloc de donnees et nest pas modifiee lors de lacc`es
`a ce bloc et la seconde partie represente le deplacement par rapport `a ladresse de base.
Ce mode dadressage est utilise lorsque le code doit acceder `a des blocs de donnees de structure
identique et dont ladresse de base est differente. Il est utilise pour le passage de param`etres
lors de lappel de routines et pour la gestion de la pile.

Modulo Ce mode dadressage permet de gerer des buffers circulaires utilises dans les algorithmes de filtrage. La gestion de ce type de buffers necessite de verifier apr`es chaque incrementation (decrementation) du registre dadresse, si celui-ci pointe sur la derni`ere (premi`ere)
valeur du tableau. Dans ce cas, il faut rediriger le pointeur sur le debut (fin) du tableau.
Deux methodes sont utilisees au niveau des generateurs dadresses pour realiser ce type
dadressage. La premi`ere methode utilise 2 registres pour stocker ladresse de debut et de
fin du buffer circulaire afin de pouvoir detecter lacc`es `a la derni`ere ou `a la premi`ere valeur
du tableau. Dans le second cas, le DSP stocke dans un registre uniquement la taille du buffer
circulaire et impose une contrainte sur ladresse de depart du buffer : celle-ci doit etre un
multiple de 2k relie `
a la taille N du buffer par lexpression suivante :
2k > N

(8.7)

Bit invers
e Ce mode dadressage est utilise pour ladressage des donnees en entree ou
en sortie de lalgorithme de la transformee de Fourier rapide (FFT). Ladressage bit inverse
consiste `a inverser lordre des N derniers bits dun registre dadresse pour une FFT de taille
N
2 . Lunite de generation dadresses realise cette operation en inversant directement les bits
du registre dadresse ou en propageant la retenue en ordre inverse lors des calculs arithmetiques sur ce registre dadresse.

8.4 Description de lunite de contr


ole

8.4
8.4.1
8.4.1.1

141

Description de lunit
e de contr
ole
Type de code et Pipeline
Pr
esentation du pipeline

Lefficacite dun PTS reside dans sa capacite `a realiser une instruction par cycle. Chaque
instruction etant composee dune sequence doperations, il est necessaire dexecuter ces operations en parall`ele. La technique du pipeline permet de decomposer les differentes phases
dune instruction et de les realiser en parall`ele [Lee89]. Une instruction classique est composee des 5 phases suivantes :
Pipeline sur les instructions
1. Recherche de linstruction
2. Decodage de linstruction
Pipeline sur les donnees
3. Lecture des operandes
4. Execution de linstruction

5. Ecriture
du resultat
A chaque cycle le pipeline realise une operation sur des instructions differentes. Au cours du
meme cycle le pipeline realise le decodage de linstruction Instn , la recherche en memoire de
linstruction suivante Instn+1 et la lecture des operandes de linstruction precedente Instn1
La profondeur du pipeline (nombre detages) est un compromis entre la facilite de programmer et de contr
oler celui-ci et la rapidite du processeur. Les processeurs traditionnels utilisent
un pipeline dont la longueur varie entre 3 et 5 etages. Dans des processeurs de type VLIW, la
longueur du pipeline est plus importante, ceci permet de simplifier chaque operation `a realiser
dans celui-ci et ainsi dutiliser des horloges de frequence plus elevee, le TMS3320C62x poss`ede
un pipeline de 11 etages et permet dutiliser une frequence dhorloge de 200 MHz [Tex99b].
La mise en parall`ele des differentes phases dune instruction peut entraner les aleas de fonctionnement suivants [HP96] [Yar99] :
aleas de ressource : cette situation se produit lorsque le processeur ne peut accepter
une combinaison dinstructions utilisant les memes ressources en meme temps ;
aleas de donnees : ce cas se presente lorsque les donnees dune instruction dependent
du resultat dune instruction precedente qui nest pas encore terminee ;
aleas de contr
ole : ceci correspond `a la rupture du flot de contr
ole du programme lors
dun branchement, dun appel ou dun retour de sous routines ou dinterruption. Lorsquune instruction de branchement est detectee une ou plusieurs instructions consecutives sont dej`a rentrees dans le pipeline, il est alors necessaire de les eliminer du
pipeline afin de respecter le flot de contr
ole du programme.

8.4.1.2

Type de codage des instructions

Dans cette partie nous presentons les deux types de codage dinstructions [Ga97] [Ga96] utilises pour programmer les processeurs utilisant un pipeline, nous presentons les deux categories

142

Processeurs de traitement du signal

de processeurs lies aux types de codage et les mecanismes associes pour gerer les aleas de donnees et de ressources.

Codage des instructions stationnaire dans le temps Chaque instruction du jeu dinstructions definit lensemble des operations `a realiser pour chaque unite fonctionnelle, au cours
du cycle [Lee89]. Dans le cas de larchitecture de la figure 8.4, trois actions sont `a realiser, la
premi`ere correspond `
a loperation `
a executer et les deux derni`eres au chargement des deux
registres avec les operandes presentes en memoire. Le schema du pipeline pour ce type de
code est presente `
a la figure 8.6. Un exemple dinstruction utilisant ce principe est presente
ci dessous :
MPY Rx,Ry,P

ADD ACC,ACC,P

LD Rx,*(ARx++)

LD Ry,*(ARy++)

Figure 8.6 Synoptique du pipeline sur les donnees pour un codage stationnaire dans le
temps
Linstruction specifie lensemble des operations `a realiser sur les donnees presentes dans les
differentes parties du chemin de donnees. Le programmeur doit assurer lalimentation du pipeline et est responsable de la gestion des aleas lies `a la dependance des donnees, ceux-ci sont
analyses `a partir dune table de reservation qui permet de visualiser lutilisation des ressources
et des donnees.

Codage des instructions stationnaire au niveau des donn


ees Dans ce cas linstruction specifie une sequence compl`ete doperations `a realiser sur un ensemble de donnees. Les
differentes operations necessitent plusieurs cycles, ainsi le resultat nest pas immediatement
disponible. Le schema du pipeline pour ce type de code est presente `a la figure 8.7. Un exemple
dinstruction utilisant ce type de codage est presente ci dessous :
MAC *(ARx++),*(ARy++),ACC
Ce type de codage permet dobtenir un code plus lisible et facilite la programmation. Lutilisateur ne doit pas specifier lensemble des actions `a realiser au cours dun cycle mais les
operations `
a effectuer sur les donnees. Cette approche est plus proche de lalgorithme `a coder.

8.4 Description de lunite de contr


ole

143

Figure 8.7 Synoptique du pipeline sur les donnees pour un codage stationnaire au niveau
des donnees

8.4.2

Format du jeu dinstructions

Deux categories de format dinstructions sont possibles [Ga97] [Ga96], le choix de lune ou
lautre sera fonction du domaine dapplications du processeur.

8.4.2.1

Format encod
e

Le challenge pour les processeurs embarques, est de minimiser la taille de la puce afin de
reduire les co
uts, tout en maintenant des performances en terme de puissance de calcul elevees. Ainsi le nombre dinstructions pour realiser une operation et la largeur des instructions
doivent etre minimises afin de diminuer la taille de la memoire programme [Peg99]. Pour
obtenir des performances elevees, linstruction doit encoder le maximum de parallelisme.
Le second facteur important dans les applications embarquees est la consommation du circuit.
Elle est proportionnelle `
a la taille des bus et de la memoire. La minimisation de la taille des
instructions va permettre de diminuer la consommation liee `a la memoire programme.
Le choix du format des instructions resulte dun compromis entre le parallelisme offert par
linstruction et sa taille. Elle doit etre compacte afin de minimiser la taille de la memoire programme et elle doit offrir le maximum de parallelisme pour utiliser efficacement les ressources
du processeur. Ce jeu dinstructions est construit `a partir des statistiques obtenues sur des
applications representatives (benchmarks) qui permettent de determiner les instructions et
les unites les plus utilisees et de reveler les opportunites de parallelisme [Za96]. La diversite
des algorithmes retenus pour realiser les statistiques, est un facteur primordial dans le degre
de specialisation dun DSP `
a un domaine dapplications donne.
Cette minimisation du nombre de bits est realisee `a laide des concepts suivants [LBSL96] :
reduction du nombre doperations disponibles au sein du jeu dinstructions ;
reduction du nombre de modes dadressage et des possibilites de mise `a jour des registres dadresses ;
restrictions sur les operandes sources et destinations des instructions (specialisation
des registres) ;
utilisation de bits de mode.
Ce type de restriction va sacrifier une partie du parallelisme disponible et rendre la structure
du jeu dinstructions heterog`ene en specialisant les registres sources et de destination des

144

Processeurs de traitement du signal

operateurs et en limitant les modes dadressage disponibles.


Ce format etant encode la signification des differents bits de linstruction est fonction de linstruction. Ainsi lunite de decodage destinee `a transformer les differents bits de linstruction
en signaux de contr
ole pour les unites fonctionnelles, est relativement complexe.
Ce type de codage est utilise pour les processeurs destines aux applications pour le grand
public et en particulier dans le domaine des telecommunications (telephone portable, pager)
ou les facteurs prix et consommation sont primordiaux.

8.4.3
8.4.3.1

Structure de contr
ole
Boucles mat
erielles

Les structures de boucle representent lune des structures de contr


ole les plus couramment
utilisees dans les algorithmes de TNS. Dans la plupart des cas, ces boucles permettent dimplanter un calcul numerique repetitif sur les elements dun vecteur, ainsi le nombre diterations
est connu `
a priori. Le nombre dinstructions presentes dans le corps de la boucle pouvant etre
relativement faible, il est indispensable dimplanter efficacement ce type de structure et de
minimiser le surco
ut lie au contr
ole de celle-ci.
La plupart des PTS poss`ede une unite de contr
ole appelee boucle materielle qui permet de
coder la structure de boucle en une seule instruction et de ne pas utiliser de cycles supplementaires pour realiser le test de la valeur du compteur diterations, le branchement conditionnel
et la decrementation de ce compteur. Lunite de contr
ole poss`ede un premier registre pour
stocker le nombre diterations et un second pour specifier ladresse de fin de la boucle. Ces
deux param`etres sont initialises dans linstruction de description de la boucle. Certains DSP
proposent plusieurs supports de boucle materielle afin de pouvoir imbriquer plusieurs boucles.

8.4.3.2

Instructions de branchement

Comme nous lavons vu dans le paragraphe 8.4.1.1, la presence dinstructions de branchement au sein du code introduit des aleas de fonctionnement du pipeline. La premi`ere solution
pour gerer ces aleas, est de vider le pipeline des instructions ne correspondant pas au flot de
contr
ole et de ne pas executer doperations entre lexecution du branchement et la premi`ere
instruction pointee par ce branchement. Cette technique appelee branchement multi cycles,
augmente le temps dexecution lie `
a la gestion du branchement. Ce temps est fonction de la
profondeur du pipeline.
Pour diminuer les penalites liees aux traitements des branchements les techniques de branchements retardes sont utilisees dans les DSP. Plusieurs instructions devant etre executees avant
le branchement sont placees, apr`es celui-ci. Ces instructions seront executees entre linstruction de branchement et la premi`ere instruction pointee par celui ci.

8.4 Description de lunite de contr


ole
8.4.3.3

145

Instructions de mode

Les DSP poss`edent des registres detat ou de mode afin dimplanter un contr
ole `a laide de
ce registre et non au sein de linstruction. Ces registres de mode sont utilises pour contr
oler
les parties du chemin de donnees qui varient peu au cours dune sequence dinstructions. Ces
registres sont initialises ou modifies `a laide dinstructions specifiques, avant lutilisation de
lunite fonctionnelle.

8.4.3.4

Instructions `
a pr
edicat

Les instructions `
a predicat sont des instructions conditionnelles du type : si condition alors
executer operation. Cette structure permet de minimiser le nombre dinstructions pour coder
une structure conditionnelle du type If Then Else en eliminant les differentes instructions
de branchement. Ceci est illustre `
a la figure 8.8. Le TMS320C62x [Tex99b] permet de rendre
lensemble de ces instructions conditionnelles `a laide des predicats.

Figure 8.8 Instructions `a predicat

146

Processeurs de traitement du signal

Annexe A

Tables des transform


ees
A.1

Transform
ees en Z
Type

Xi (z)

polynomial en z
p
ole reel simple

k
k ck
1
1pz 1
pz 1
(1pz 1 )2
1
(1pz 1 )2
p2 z 1
(1pz 1 )3
r sin(0 )z
(zrei0 )(zrei0 )

p
ole reel double
p
ole reel double
p
ole reel triple
p
ole complexe conjugue

xi (n)
P

k ck (n
pn u(n)

npn u(n)
(n + 1)pn u(n)

n(n1) n
p u(n)
2
r n sin(0 n)u(n)

Table A.1 Tables des transformees en z

147

k)

148

Tables des transformees

x(t)

x(n)

X(z)

(n)

(n k) z k
z
u(t)
u(n)
z1
Tz
t
n
(z 1)2
T 2 z(z + 1)
1 2 1
2
(nT
)
t
2
2
2(z 1)3
t
z
an
aT
za

A.2

Transform
ees de Fourier

A.2 Transformees de Fourier

149

x(t)

x(n)

eat

eanT

sin 0 t

sin 0 nT

cos 0 t

cos 0 nT

eat sin 0 t

eat sin 0 nT

eat cos 0 t

eat cos 0 nT

X(z)
z
z eaT
z sin 0 T
2
z 2z cos 0 T + 1
z(z cos 0 T )
2
z 2z cos 0 T + 1
zeaT sin 0 T
z 2 2zeaT cos 0 T + e2aT
z 2 zeaT cos 0 T
z 2 2zeaT cos 0 T + e2aT

ax1 (t) + bx2 (t) ax1 (n) + bx2 (n) aX1 (z) + bX2 (z)
x(t kT )

x(n k)

z k X(z)

Table A.2 Tables des transformees en Z de fonctions usuelles. T est la periode dechantillonnage du signal transforme dans lequel on a pose t = nT .

150

Tables des transformees

x(n)

X(ej )

(n)

(n n0 )
1

ejn0

X
2( + 2k)
k=

u(n)

X
1
( + 2k)
+
1 ej
k=

an u(n) (|a| < 1)


(n + 1)an u(n) (|a| < 1)

1 si 0 n N
x(n) =
0 ailleurs
sin c n
n

ej0 n
cos(0 n + )
sin(0 n + )

1
1 aej
1
(1 aej )2
sin ((N + 1)/2) jN/2
e
sin(/2)

1 si || < c
X(ej ) =
0 si c < || <

X
2( 0 + 2k)

k=

[ej ( + 0 + 2k) + ej ( 0 + 2k)]

k=

[ej ( + 0 + 2k) ej ( 0 + 2k)]

k=

Table A.3 Tables des principales transformees de Fourier

Annexe B

Abaques de filtrage analogique


B.1

Filtres de Butterworth

Les coefficients des filtres prototypes de Butterworth sont donnes dans la deuxi`eme colonne du
tableau B.1 pour des filtres dordre 2 `a 8. Les coefficients donnes sont ceux du denominateur
de la fonction de transfert H(p) du filtre analogique.
Les reponses frequentielles de ces filtres sont donnees figure B.1. Leur frequence de coupure
est normalisee `
a = 1. Ces courbes permettent de determiner lordre du filtre.
Le programme Matlab ci dessous permet de determiner lordre dun filtre de Butterworth, puis
de creer un polynome le representant. Dans le cas du filtre passe-bas prototype, on posera
Wn= 1.
[N, Wn] = BUTTORD(Wp, Ws, Rp, Rs);
% Wp and Ws are the passband and stopband edge frequencies, normalized from 0 to 1
% where 1 corresponds to pi radians/sample
% Rp (dB) and Rs (dB) are the passband ripple and stopband attenuation
% Wn is the Butterworth natural frequency or 3 dB frequency
% N is the filter order
[b,a] = BUTTER(N,Wn,s);
% Designs an Nth order lowpass digital
% Butterworth filter and returns the filter coefficients in length
% N+1 vectors B (numerator) and A (denominator)

B.2

Filtres de Bessel

Les coefficients des filtres prototypes de Bessel sont donnes dans la troisi`eme colonne du
tableau B.1 pour des filtres dordre 2 `a 8. Les coefficients donnes sont ceux du denominateur
de la fonction de transfert H(p) du filtre analogique.
Les reponses frequentielles de ces filtres sont donnees figure B.2. Leur frequence de coupure
est normalisee `
a = 1. Ces courbes permettent de determiner lordre du filtre.
Le programme Matlab ci dessous permet de creer un polynome de Bessel.
151

152

Abaques de filtrage analogique


Abaques Butterworth

Abaques Butterworth

10

2
0.5

3
20
4

9
1

30

40

Gain (dB)

Gain (dB)

6
7

6
1.5
5

50
9

60
2
2.5

70

80

0.5

1.5

2
1/s

2.5

3.5

0.1

0.2

0.3

0.4

0.5
1/s

0.6

0.7

0.8

0.9

0.7

0.8

0.9

Figure B.1 Reponse en frequence des filtres de Butterworth


[b,a] = BESSELF(N,Wn);
% Designs an Nth order lowpass digital
% Bessel filter and returns the filter coefficients in length
% N+1 vectors B (numerator) and A (denominator)
Abaques des filtres de Bessel

Abaques des filtres de Bessel

10
2

0.5

20

3
Gain (dB)

Gain (dB)

30

6
40
7

4
1.5

5
6

50

60

8
2.5

70

80

0.5

1.5

2
1/s

2.5

3.5

0.1

0.2

0.3

0.4

0.5
1/s

Figure B.2 Reponse en frequence des filtres de Bessel

0.6

B.2 Filtres de Bessel

153

Cellule

Butterworth

Bessel

1
1
2
1
2
1
2
3
1
2
3
1
2
3
4
1
2
3
4

p2 + 1.4142p + 1
p2 + 1.0000p + 1
p+1
p2 + 1.8477p + 1
p2 + 0.7853p + 1
p2 + 1.6180p + 1
p2 + 0.6180p + 1
p+1
p2 + 1.9318p + 1
p2 + 1.4142p + 1
p2 + 0.5176p + 1
p2 + 1.8019p + 1
p2 + 1.2469p + 1
p2 + 0.4450p + 1
p+1
p2 + 1.9615p + 1
p2 + 1.6629p + 1
p2 + 1.1111p + 1
p2 + 0.3901p + 1

0.618p2 + 1.3616p + 1
0.4771p2 + 0.9996p + 1
0.756p + 1
0.3889p2 + 0.7742p + 1
0.4889p2 + 1.3396p + 1
0.4128p2 + 1.1401p + 1
0.3245p2 + 0.6215p + 1
0.665p + 1
0.3887p2 + 1.2217p + 1
0.3504p2 + 0.9686p + 1
0.2756p2 + 0.513p + 1
0.3394p2 + 1.0944p + 1
0.301p2 + 0.8303p + 1
0.238p2 + 0.4332p + 1
0.593p + 1
0.3161p2 + 0.1112p + 1
0.2979p2 + 0.9753p + 1
0.2621p2 + 0.7202p + 1
0.208p2 + 0.3727p + 1

Chebyshev 0.1dB
`a 0.1dB en BP
0.3017p2 + 0.7158p + 1
0.5918p2 + 0.5736p + 1
1.031p + 1
0.7518p2 + 0.3972p + 1
1.6053p2 + 2.0475p + 1
0.8368p2 + 0.2787p + 1
1.5725p2 + 1.3712p + 1
1.855p + 1
3.797p2 + 3.2506p + 1
0.8854p2 + 0.2031p + 1
1.4360p2 + 0.8999p + 1
0.9153p2 + 0.1534p + 1
3.0283p2 + 2.056p + 1
1.3276p2 + 0.6237p + 1
2.654p + 1
6.8675p2 + 4.4178p + 1
0.935p2 + 0.1196p + 1
1.2517p2 + 0.4561p + 1
2.4026p2 + 1.3103p + 1

Table B.1 Coefficients des filtres prototypes. Les filtres sont donnees en cascade de cellules
du second ordre et correspondent `
a 1/H(p)

154

Abaques de filtrage analogique

B.3

Filtres de Chebyshev

Les coefficients des filtres prototypes de Chebyshev dondulation 0.1dB dans la bande passante
sont donnes dans la quatri`eme colonne du tableau B.1 pour des filtres dordre 2 `a 8. Les
coefficients donnes sont ceux du denominateur de la fonction de transfert H(p) du filtre
analogique.
Les reponses frequentielles des filtres prototypes de Chebyshev dondulation 0.1dB et 1dB
dans la bande passante sont donnees figures B.3 et B.4. Leur frequence de coupure est normalisee `a = 1. Ces courbes permettent de determiner lordre du filtre.
Le programme Matlab ci dessous permet de determiner lordre dun filtre de Chebyshev
dondulation 0.1dB, puis de creer un polynome le representant. Dans le cas du filtre passe-bas
prototype, on posera Wn= 1.
[N, Wn] = CHEB1ORD(Wp, Ws, Rp, Rs);
% Wp and Ws are the passband and stopband edge frequencies, normalized from 0 to 1
% where 1 corresponds to pi radians/sample
% Rp (dB) and Rs (dB) are the passband ripple and stopband attenuation
% Wn is the Chebyshev natural frequency or 3 dB frequency
% N is the filter order
[b,a] = CHEBY1(N,0.1,Wn,s)
% Designs an Nth order lowpass digital Chebyshev filter
% with 0.1dB of passband ripple and returns the filter coefficients in length
% N+1 vectors B (numerator) and A (denominator)

Abaques des filtres de Chebyshev Type I (0.1dB)

Abaques des filtres de Chebyshev Type I (0.1dB)

2
10

0.01

0.02

20
4
0.03
2
0.04

5
Gain (dB)

Gain (dB)

30

40
6

0.05

0.06

50

0.07

7
60

0.08

70

0.09

80

0.5

1.5

9
2
1/s

2.5

3.5

0.1

3
0

0.1

0.2

0.3

0.4

0.5
1/s

0.6

0.7

0.8

Figure B.3 Reponse en frequence des filtres de Chebyshev `a 0.1dB dondulation en bande
passante

0.9

B.4 Filtres elliptiques de Cauer

155

Abaques des filtres de Chebyshev Type I (1dB)


0
Abaques des filtres de Chebyshev Type I (1dB)
0

10

2
0.1

20

0.2

0.3

30

2
0.4

40

Gain (dB)

Gain (dB)

5
50

0.5
5
0.6

6
60

0.7

0.8

70

80

0.5

1.5

8
2
1/s

0.9

2.5

3.5

3
0

0.1

0.2

0.3

0.4

0.5
1/s

0.6

0.7

0.8

Figure B.4 Reponse en frequence des filtres de Chebyshev `a 1dB dondulation en bande
passante

B.4

Filtres elliptiques de Cauer

Les reponses frequentielles des filtres prototypes de Cauer (elliptiques) dondulation 0.1dB
et 1dB dans la bande passante, et dattenuation en bande attenuee de 30dB et 50dB, sont
donnees figures B.5 et B.6. Leur frequence de coupure est normalisee `a = 1. Ces courbes
permettent de determiner lordre du filtre.

0.9

156

Abaques de filtrage analogique

Abaques des filtres elliptiques de Cauer (0.1dB/30dB)


0

Abaques des filtres elliptiques de Cauer (0.1dB/30dB)


4

0.01

10
3

0.02

20
0.03

4
6
8
9
7

2
0.04

Gain (dB)

Gain (dB)

30

40

0.05

0.06

50

0.07

60
0.08

70
0.09

80

0.5

1.5

2
1/s

2.5

3.5

0.1

5
3
0

0.1

0.2

0.3

0.4

0.5
1/s

0.6

0.7

0.8

0.9

0.9

Figure B.5 Reponse en frequence des filtres elliptiques de Cauer `a 0.1dB dondulation en
bande passante et 30dB dattenuation en bande attenuee

Abaques des filtres elliptiques de Cauer (1dB/50dB)

Abaques des filtres elliptiques de Cauer (1dB/50dB)

0
4
0.1

10

2
0.2

20
3

0.3

30

Gain (dB)

Gain (dB)

0.4

40

50

6
8

60

9
5
4
7

0.5

0.6

0.7

0.8

70

0.9
3

80

0.5

1.5

2
1/s

2.5

3.5

0.1

0.2

0.3

0.4

0.5
1/s

0.6

0.7

0.8

Figure B.6 Reponse en frequence des filtres elliptiques de Cauer `a 1dB dondulation en
bande passante et 50dB dattenuation en bande attenuee

Bibliographie
[Ana95] Analog Device. ADSP-2100 Family Users Manual, 3 edition, September 1995.
[Ara97]

G. Araujo. Code Generation Algorithms for Digital Signal Processors. PhD thesis,
Princeton University Department of EE, Princeton, May 1997.

[Bie97]

J. Bier. DSP16xxx Targets Communications Apps. Microprocessor Report, 11(12),


September 1997.

[CCL01] G. Constantinides, P. Cheung, and W. Luk. Heuristic Datapath Allocation for


Multiple Wordlength Systems. In Design Automation and Test in Europe (DATE
01), pages 791796, March 2001.
[EB00]

J. Eyre and J. Bier. The Evolution of DSP Processors. IEEE Signal Processing
Magazine, 17(2) :4451, March 2000.

[Ga96]

G. Goossens and al. Programmable Chips in Consumer Electronics and Telecommunications. In G. De Micheli and M SAmi, editors, Hardware Software Co-Design,
pages 135164. Kluwer Academic Publishers, 1996.

[Ga97]

G. Goossens and al. Embedded Software in Real-Time Signal Processing Systems :


Design Technologies. Proceedings of the IEEE, 85(3) :436453, March 1997.

[HP96]

J. L. Hennessy and D. A. Patterson. Achitecture des Ordinnateurs - Une approche


quantitative. Morgan Kaufmann Publishers, San Francisco, 2 edition, 1996.

[Ka91]

M. Kunt and al. Techniques modernes de Traitement Numerique du Signal. Collection CNET-ENST, Presses Romandes, Masson, 1991.

[Lap96] P. Lapsley. Fixed-Point DSP Processors : History and Trends. In U.C. Berkeley
(VLSI Signal Processing), April 1996.
[LBSL96] P. Lapsley, J. Bier, A. Shoham, and E. A. Lee. DSP Processor Fundamentals :
Architectures and Features. Berkeley Design Technology, Inc, Fremont, CA, 1996.
[Lee88]

E. Lee. Programmable DSP Architectures : Part I. IEEE ASSP Magazine, pages


414, Oct. 1988.

[Lee89]

E. Lee. Programmable DSP Architectures : Part II. IEEE ASSP Magazine, pages
414, Janv. 1989.

[Luc]

Lucent Technologies. DSP16xx. Lucent Technologies.

[Luc99]

Lucent Technologies, Motorola. SC140 DSP Core Reference Manual. Lucent Technologies, December 1999.

[Mar95] P. Marwedel. Code Generation for Embedded Processors : an Introduction. In


P. Marwedel and G. Goossens, editors, Code Generation for Embedded Processors.
KluwerAcademic Publishers, 1995.
157

158

BIBLIOGRAPHIE

[Mot94] Motorola. DSP56000 24-Bit Digital Signal Processor UserS Manual. Motorola,
1994.
[MWK98] C. Moerman, R. Woudsma, and P. Kievits. Embedded DSP Technologies in Consumer applications. In 9th International Conference on Signal Processing Applications
and Technology (ICSPAT 98), Toronto, September 1998. Miller Freeman.
[OS75]

A. V. Oppenheim and R. W. Schafer. Digital Signal Processing. Prentice-Hall, 1975.

[OS99]

A. V. Oppenheim and R. W. Schafer. Discrete-Time Signal Processing, second


edition. Prentice-Hall, 1999.

[Pa97]

P. Paulin and al. Embedded Software in Real-Time Signal Processing Systems :


Application and Architecture Trends. Proceedings of the IEEE, 85(3) :419435,
March 1997.

[Peg99]

A. Pegatoquet. Methode destimation de performance logicielle : application au developpement rapide de code optimise pour une classe de DSP. PhD thesis, Universite
de Nice Sophia Antipolis, 1999.

[PM73]

T.W. Parks and J.H. McClellan. A unified approach to the design of optimum linear
phase digital filters. IEEE Transactions on Circuit Theory, 20 :697701, Nov. 1973.

[Rab99] J.M. Rabaey. Managing Power Dissipation in the Generation after Next Wireless
Systems. In 2`eme journees francophones detudes Faible Tension Faible Consommation FTFC99, Paris, France, 26-28 mai 1999.
[Str00]

W. Strauss. Internet Audio-Beyond Mp3. Technical Report 1030, Foward Concepts,


Tempe, Arizona, USA, May 2000.

[Str02a] W. Strauss. Forward Concepts Dsp Market Bulletin. Technical report, Foward
Concepts, Tempe, Arizona, USA, March 2002.
[Str02b] W. Strauss. VoIP and Packet Voice DSP Markets. Technical Report 2201, Foward
Concepts, Tempe, Arizona, USA, April 2002.
[Sud98] A. Sudarsanam. Code Optimization Libraries for Retargetable Compilation for Embedded Digital Signal Processors. PhD thesis, Princeton University Department of
EE, Princeton, May 1998.
[Tex98]

Texas Instruments. TMS320C5X Users Guide. Texas Instruments, June 1998.

[Tex99a] Texas Instruments. TMS320C54X Dsp Cpu And Peripherals Reference Set Volume
I. Texas Instruments, Dallas, January 1999.
[Tex99b] Texas Instruments. TMS320C6000 Cpu And Instruction Set Reference Guide. Texas
Instruments, Dallas, Sept 1999.
[TH97]

J. Turley and H. Hakkarainen. TIs New C6x DSP Screams at 1,600 MIPS. Microprocessor Report, 11(2), Frebruary 1997.

[Tou99] J.M. Toureilles. Conception darchitectures pour le traitement du signal en precision


finie. PhD thesis, Universite de Rennes I, Janvier 1999.
[Yar99]

K. Yarlagadda. Programmable DSP Architectures. In DSP World, Orlando, Florida,


Nov. 1999. Miller Freeman.

[Za96]

V. Zivojnovic and al. DSP Processor/Compiler Co-Design : A Quantitative Approach. In Proceedings of the 9th International Symposium on System Synthesis
(ISSS 96), La Jolla, November 1996.

Vous aimerez peut-être aussi