Académique Documents
Professionnel Documents
Culture Documents
=
=
1
0
) ( ) ( ) (
P
i
i n x i b n y
8
Filtres rponse impulsionelle infinie (RII):
=
=
=
1
1
1
0
) ( ) ( ) ( ) ( ) (
Q
j
P
i
j n y j a i n x i b n y
Oprations classiques en TNS
MAC
Filtrage (convolution)
Correlation Correlation
Produit scalaire
FFT
Analyse spectrale
DCT
Compression dimages
Compare Select and Store Compare Select and Store
Algorithme de Viterbi (Com. num.)
Gnration de formes dondes
Communications numriques
9
Applications des processeurs DSP
60,0%
80,0%
source : Will Strauss, Forward Concepts,
publi dans Programmable Logic 2007
0,0%
20,0%
40,0%
60,0%
Wireless Multipurpose
Consumer
electronics
Wireline Computer Automotive
10
72,5% 8,4% 8,2% 4,7% 3,3% 2,5%
Parts de march vente DSP programmables (2006)
Rmq: Les SoCs, et ASIC sont galement trs utiliss pour des
applications similaires, mais ne sont pas comptabiliss ici.
Applications
Communications
Software Defined Radio
Sans fil (cellulaires, tlvision
Image / vido
Compression/Codage
Sans fil (cellulaires, tlvision
numrique, radio numrique)
Filaire (DSL, cable)
Modem
Cryptage
Audio
Mixage et dition
Compression/Codage
Composition
Traitement
Militaire
Imagerie
radar, sonar
Cryptographie
Mixage et dition
Effets
Suppression de bruit
Annuleur decho
Cryptographie
Guidage de missiles
Navigation
11
Applications
Biomdical
Equipements de monitoring
Signaux biophysiques
Automatisation
Commande de machines
Contrle de moteurs
Signaux biophysiques
ElectroEncphaloGramme
(EEG)
ElectroCardioGramme (ECG)
Radiographie
Instrumentation
Analyseurs de spectre
Gnrations de fonctions
Contrle de moteurs
Robots
Servomcanismes
Electronique Automobile
Contrle du moteur
Assistance au freinage
Aide la navigation
Gnrations de fonctions
Analyseurs de rgimes
transitoires
Aide la navigation
Commandes vocales
12
Constructeurs de processeurs DSP
50%
60%
70%
Chiffres 2007
Source : Forward Concepts
Wireless/DSP Market Bulletin, 4 Fevrier 2008
0%
10%
20%
30%
40%
50%
65% 12% 7% 3% 13%
Texas
Instruments
Freescale (Agere)
Analog
Devices
Autres (NXP,
NEC,
13
dspvillage.ti.com
www.freescale.com
Agere -> LSI, Infineon
www.analog.com
March de 7.8 Milliards de $ en 2007
2006-2007: -6.7%
2007-2008:+7% (prvision)
Parts de march vente DSP programmables (2007)
Source: http://www.fwdconcepts.com/DSPBulletin_2408.pdf
Famille TMS320 Texas Instruments
C2000 C5000
C6000
Lowest Cost
Control Systems
Motor Control
Storage
Digital Ctrl Systems
Efficiency
Best MIPS per
Watt / Dollar / Size
Wireless phones
Internet audio players
Digital still cameras
Modems
Multi Channel and
Multi Function App's
Comm Infrastructure
Wireless Base-stations
DSL
Performance &
Best Ease-of-Use
virgule fixe 16 bits
14
Modems
Telephony
VoIP
DSL
Imaging
Multi-media Servers
Video
virgule fixe 16 bits
virgule fixe et flottante, 32 bits
Clients mobiles Infrastructure
15
Famille DSP Analog Devices
16
TigerSHARC : virgule flottante 24 bits, hautes performances
ADSPBFxx (Blackfin) : virgule fixe 16 bits, hautes performances
SHARC : virgule fixe ou flottante 32 bits
ADSP21xx : virgule fixe 16 bits
Traitement numrique vs. analogique
En quoi le passage par le numrique est-il intressant,
mme lorsque lentre et la sortie sont analogiques ?
Signal
analogique
Signal
analogique
Circuit lectronique
composants
analogiques
17
DSP CAN CNA
Signal
analogique
Signal
analogique
Signal
numrique
Signal
numrique
Traitement Numrique vs. Analogique
Numrique Analogique
Fixes et connus l'avance
Dpend de la qualit des
Prcision / RSB
Fixes et connus l'avance
Lis la taille des mots
mmoire (16/24/32 bits)
Dpend de la qualit des
composants
Sources de bruit
Echantillonnage
Quantification
Bruit lectromagntique,
temprature, humidit,
vieillissement
Reconfigurabilit Changer le logiciel
Matriel
Calibration ncessaire
(Arrive rcente de puces reprogrammables (Arrive rcente de puces reprogrammables
incluant des composants analogiques)
Largeur de bande
utilisable
Limite par l'chantillonnage
Peut travailler trs haute
frquence
18
Un exemple: la radio logicielle
(Software Defined Radio : SDR)
Complexit accrue des traitements sur le signal
Modulation large bande, multi-utilisateurs (CDMA, OFDMA) et adaptative
Egalisation, estimation de canal
Codes correcteurs derreurs (Turbo-codes) Codes correcteurs derreurs (Turbo-codes)
Multiplicit des protocoles de communication
Reconfigurabilit logicielle du protocole utilis
19
Image: Agilent Technologie, http://www.soccentral.com/results.asp?CatID=488&EntryID=24811
SDR Development Platform
(www.lyrtech.com)
TMS320DM6446 SoC ARM+DSP
Virtex-4 SX35 FPGA
DAC/ADC
RF Module
Plateformes matrielles pour le Plateformes matrielles pour le
traitement numrique du signal
20
Solutions matrielles pour le TNS
Processeur
Processeur dusage gnral
Microcontrleur
Architecture
processeur
Microcontrleur
DSP (Digital Signal Processor)
Multiprocesseurs
GPU (Graphics Processing Unit)
Architectures reconfigurables
FPGA (Field-Programmable Gate Array)
processeur
FPGA (Field-Programmable Gate Array)
Architectures figes
ASSP (Application Specific Standard Product)
ASIC (Application-Specific Integrated Circuit)
21
Architecture
spcialise
Exemple d'un filtre RIF
Architecture ddie (FPGA / ASIC)
x(n)
p
=
=
1
0
) ( ) ( ) (
P
i
i n x i b n y
b(0) b(1) b(2) b(3) b(4) b(5)
log
2
(p)
22
y(n)
log
2
(p)
Architecture systolique ddie
Traitement fortement parallle
Efficace pour le RIF, mais peu flexible
Exemple d'un filtre RIF
Architecture processeur
=
=
1
0
) ( ) ( ) (
P
i
i n x i b n y
Mmoire
E/S
b x
programme
y
CPU
units de
calcul
registres
23
Architecture de type processeur
Traitement squentiel
Programme stock en mmoire : facile modifier
Microprocesseur dusage gnral
(General Purpose Processor, GPP)
Intel Pentium
Motorola PowerPC, 68000
Digital Alpha Chip
Nombreuses fonctionnalits pas
toujours utiles
Augmente le cot et la
Digital Alpha Chip
Sun SPARC
PXA250 (RISC)
Formats de donnes varis
sur 32 ou 64 bits
Adapts aux langages volus
Bonnes performances en calcul
numrique
Augmente le cot et la
consommation lectrique
Gestion matrielle de la mmoire
virtuelle
Ncessaire pour lutilisation de
systmes dexploitation avancs
Fonctionnalits dynamiques qui
compliquent la garantie temps
rel
Cache de donnes
Bonnes performances en calcul
numrique
Instructions spcifiques (MMX,
SSE)
Tendance aux volutions multi-
coeurs
Cache de donnes
24
Microcontrleur
Motorola 68HC11
Intel 8751
Peu adapt aux signaux
numriques
Intel 8751
MicroChip PIC16/17
Cypress PsoC
Faible cot
Faible consommation
lectrique
Priphriques faible dbit
Donnes sur 8 ou 16 bits
Adapts aux tches de
contrle
Embarqu, temps rel
Calculs logiques
lectrique
Mmoire limite
Utile pour calculs peu
complexes
25
Processeur DSP
Texas Instrument
TMS320Cxxxx,
Processeur
Programme en mmoire
Excution squentielle
Freescale 56000, 96000
Analog Devices ADSPxxxx,
SHARC, Blackfin
Architecture spcialise
pour les traitements
numriques
Excution squentielle
Jeu d'instruction spcialis
Calculs numriques
Addition, Multiplication
Units de calcul spcialises
(filtrage, FFT)
Entre-sortie de donnes
Grand dbit
numriques
Cot, encombrement et
consommation au plus juste
Grand dbit
Priphriques intgrs
26
DSP et processeur dusage gnral
Un processeur DSP est prfrable pour:
Minimiser la taille
Minimiser la consommation Minimiser la consommation
Traitement temps-rel grand dbit
Un processeur dusage gnral est prfrable pour:
Disposer dune grande quantit de mmoire
Dvelopper sous un systme dexploitation avanc
Ncessit de mixer calcul numrique et autres tches Ncessit de mixer calcul numrique et autres tches
27
Exemple : TMS320C6200 vs. Pentium
Pr ocessor Pea k
MIPS
ISR
l a t ency
Power Uni t
Pr i ce
Ar ea Vol ume
Pent ium
III 1200
2400
1.14 s
4.25 W $29 5.5 x 2.5 8.789 in
3
C6200
200 MHz
1600
0.09 s
1.94 W $25 1.3 x 1.3 0.118 in
3
C6200
300 MHz
2400
0.06 s
$96 1.3 x 1.3 0.118 in
3
28
BDTImarks: Berkeley Design Technology Inc. DSP benchmark
results (larger means better) http://www.bdti.com/bdtimark/results.htm
Source: http://www.ece.utexas.edu/~bevans/courses/ee382c/lectures/processors.html
GPU (Graphics Processing Unit)
Nombreuses units de calcul indpendantes en parallle
Streaming Processor (SP)
Texture Filtering Unit (TF)
Programmation spcifique (CUDA, OpenCL)
NVIDIA
ATI
Programmation spcifique (CUDA, OpenCL)
Trs efficace si GPU disponible (calcul scientifique, traitement dimage)
Risqu si contraintes de prennit et de certification (aronautique)
SP
TF
29
Nvidia GeForce 8800 Series GPU Block Diagram
FPGA (Field-Programmable Gate Array)
Altera
Xilinx
Logique reconfigurable
VHDL compil puis charg sur
la puce
Facile reconfigurer (mais
pas en cours de
fonctionnement)
Produits rcents intgrent
des blocs DSP
Produits rcents intgrent
des blocs DSP
Units arithmtiques simples
Adapt si calculs fortement
paralllisables
30
Exemple darchitecture:
Altera Stratix
ASSP (Application Specific Standard Product)
Puce spcialise pour une application spcifique
Peut tre programmable ou pas
Dcodage analogique, dmultiplexage,
dcryptage, dcodage MPEG2, interface
vers sortie vido ou numrique, tltexte
Exemple: Micronas MDE9500 Single-chip DigitalTV mixed-signal decoder
Fonctionnalits ncessaires pour un poste de tl numrique
31
ASIC (Application-Specific Integrated Circuit)
Puce conue entirement
pour l'application vise
Parfaitement adapt
Conception prend du temps
Dveloppement d'un circuit
Parfaitement adapt
lapplication
Meilleures performances
Calcul et vitesse
Consommation
Passage par un fondeur
Cots de dveloppement
levs
Dveloppement d'un circuit
complet en VHDL
Curs licenciables
Intgration dIP
curs DSP
modules dE/S
Permet la rutilisation de
conceptions prouves
levs
Peu flexible
conceptions prouves
Personnalisation possible de
larchitecture
32
Compromis pour limplantation
dalgorithmes de traitement du signal
ASIC ASSP GPP DSP FPGA
Matriel ddi Matriel gnrique
Complexit dans le logiciel
Performance pour une application spcifique
Contraintes temps rel
Flexibilit
33
Contraintes temps rel
Contraintes de consommation
Flexibilit
Dlai de mise sur le march
Cot de dveloppement plus faible
Architecture dun Architecture dun
processeur DSP
Accs mmoire et E/S Accs mmoire et E/S
Units du CPU
Pipelining
34
Architecture gnrale dun processeur
Processeur
CPU
Unit de
contrle
Units de
traitement
Bus internes
CPU
35
Mmoire
interne
Unit de
Communication
Priphriques
et mmoire externes
Accs la mmoire
36
Rappels : Bus
Le CPU est le matre du bus
Il est le seul crire sur les
bus adresse et contrle
Priphrique CPU
BUS
bus adresse et contrle
Le priphrique obtempre
sur le bus donnes
Lecture: il fournit la donne
demande
Ecriture : il rcupre la
donne fournie par le CPU
Haute impdance: il se
Priphrique CPU
adresses
donnes
contrle
37
Haute impdance: il se
dconnecte du bus
Contrle : lire / crire / haute impdance
Adresses : slection du priphrique
et dune donne en son sein
Donnes : valeur de la donne changer
Etapes dune opration de calcul
1 1
3 3
2 2
(1) Charger une instruction (Fetch)
(2) Dcoder linstruction (Decode)
Mmoire CPU
3 3
4 4
5 5
(2) Dcoder linstruction (Decode)
(3) Charger les oprandes (Read)
(4) Effectuer les calculs (Execute)
(5) Stocker le rsultat
38
Architecture Von Neuman
Mmoire
Un seul chemin d'accs la mmoire
Architecture des processeurs dusage gnral (Pentium, 68000)
CPU
BUS
Mmoire
Programme
+ Donnes
Architecture des processeurs dusage gnral (Pentium, 68000)
Goulot d'tranglement pour l'accs la mmoire
Pas de scurisation matrielle du programme
Responsabilit dvolue au systme dexploitation (logiciel)
39
Architecture Harvard
Mmoire Programme
Sparation des mmoires programme et donnes
Moins de risque de corruption du programme
Mmoire Donnes
CPU
Moins de risque de corruption du programme
Meilleure utilisation du CPU
Chargement du programme et des donnes en parallle
40
Architecture Harvard modifie
Mmoire Programme
Mmoire Programme
+ Donnes
Mmoire programme contient des donnes
Possibilit de charger 2 donnes en un cycle
CPU
+ Donnes
Mmoire Donnes
Utilisation classique en TNS
Mmoire Programme+Donnes coefficients des filtres
Mmoire Donnes chantillons dentre
41
Accs mmoire multi-port
Mmoire Programme
+ Donnes
Plusieurs bus de donnes
Accs simultan plusieurs donnes
Ncessite une mmoire multi-accs ou multi-blocs
CPU
+ Donnes
Mmoire Donnes
Ncessite une mmoire multi-accs ou multi-blocs
Exemple du TMS320C54xx :
1 bus programme (P)
2 bus de lecture des donnes (C et D)
1 bus dcriture des donnes (E)
42
Exemple
CPU
Mmoire Donnes
b[0]b[N-1]
x[0]x[N-1]
Bus C
x[0]x[N-1]
Bus D
Pour lopration
y[n] b[n] * x[n]
On souhaite rcuprer b[n] et x[n]
Chaque bus est capable de transmettre 1 donne par cycle
43
Chaque bus est capable de transmettre 1 donne par cycle
La limite est impose par les capacits de la mmoire:
- Mmoire Simple Accs (SARAM) => 2 cycles
- Mmoire Double Accs (DARAM) => 1 cycle
- Mmoire externe => temps de latence dpend de la qualit de la mmoire
Multiplexage spatial
(Mmoire multi-blocs)
Dcoupage en blocs indpendants
Accs simultan deux blocs distincts
Exemple
CPU
b[0]b[N-1]
Bus C
Bus D
x[0]x[N-1]
Exemple
b[n] stocks dans le bloc 1, x[n] stocks dans le bloc 2
Bus C
Utilisation des
ressources
Adresses
@b[0] sur bus C
@x[0] sur bus D
b[0] et x[0]
lus par le CPU
Adresses
@b[1] sur bus C
@x[1] sur bus D
b[1] et x[1]
lus par le CPU
Adresses
@b[2] sur bus C
@x[2] sur bus D
44
Bus D
Bloc 1
Bloc 2
1 cycle
b[0]
x[0] x[1]
b[1]
temps
Traitement simultan des
requtes des deux bus
Multiplexage temporel
(Mmoire multi-accs)
Plusieurs accs la mme mmoire en un cycle
Le CPU rcupre cependant une donne par cycle et par bus
CPU
Mmoire Donnes
b[0]b[N-1]
x[0]x[N-1]
Bus C
Bus D
DARAM fonctionne 2f
0
Frquence de
cycle f
0
Le CPU rcupre cependant une donne par cycle et par bus
Bus C
Utilisation des
ressources
Adresses
@b[0] sur bus C
@x[0] sur bus D
b[0] et x[0]
lus par le CPU
Adresses
@b[1] sur bus C
@x[1] sur bus D
b[1] et x[1]
lus par le CPU
Adresses
@b[2] sur bus C
@x[2] sur bus D
45
Bus C
Bus D
Mmoire
1 cycle
b[0] x[0] x[1] b[1]
temps
Ordonnancement des
requtes des deux bus
Mmoire interne sur les processeurs C54x
Capacit en mmoire interne de diffrents modles C54x
Dcoupage en blocs
Plusieurs types de RAM incluse sur le chip
Single access (SARAM) : un accs par cycle
Dual access (DARAM) : deux accs par cycle
Two-way shared : deux accs par cycle mme depuis l'extrieur
DARAM dcoupe en blocs
Accs simultan deux blocs de mmoire diffrents
2x2=4 accs par cycle en thorie (en ralit limit par le reste de l'architecture)
46
sources : "TMS320C54x DSP Functional Overview", SPRU307A, Texas Instrument
"TMS320VC5416 DSK Reference Technical", Spectrum Digital
Cache d'instructions
DSP
Mmoire Programme
+ Donnes
cache
dinstructions
Cache = mmoire associative rapide
Contient les dernires instructions excutes
Utile en cas de boucle
+ Donnes
Mmoire Donnes
CPU
Utile en cas de boucle
Accs aux instructions sans accs la mmoire programme
Libre le bus pour des donnes, ou pour un gain en consommation
Cache pour les donnes
Peu utilis sur DSP classiques
De plus en plus utilis sur les DSP hautes-performances
Peut poser des problmes pour la validation du temps rel
47
Bus externe
dans une architecture Harvard
DSP
Mmoire Programme
+ Donnes
Transfert entre les bus
MUX
CPU
+ Donnes
Mmoire Donnes
48
Transfert entre les bus
internes et externe par
multiplexage temporel
Limitation du nombre de broches
Rduction des cots
Diminution des performances lors
des accs au bus externe
Accs Direct la Mmoire
(DMA : Direct Memory Access)
Mouvements de donnes
E/S direct entre
priphrique et mmoire priphrique et mmoire
interne
Dplacements au sein de la
mmoire interne
Indpendant du CPU
Configuration par le CPU
une fois pour toutes
CPU prvenu du
droulement par
interruptions
DMA
CPU Mmoire Interne
interruptions
configuration
interruptions
Buffer plein (en rception)
/ Buffer vide (en mission)
Buffer demi-plein
49
configuration
E/S
Priphriques
(Port Srie, Mmoire externe)
DMA et buffer ping-pong
pour le traitement par blocs
CAN
McBSP2 McBSP2
CNA
DSP
CAN
DRR DXR
CNA
DMA4 DMA5
PING
IN
PONG
PING
OUT
PONG
Traitement
PING
IN
1
PING
OUT
1
PONG
PING
IN
3
PONG
50
PONG
IN
PONG
OUT
Traitement
Source: Texas Instruments C5000 DSP Teaching Kit
Buffers en mmoire Buffers en mmoire
PONG
IN
2
PONG
OUT
2
Chronogramme des changes de donnes
temps
Entre CAN => BSP x[0]
x[N-1]
x[4N]
x[N]
x[2N-1]
x[2N]
x[3N-1]
BSP => PING IN
Traitement PING
BSP => PONG IN
Traitement PONG
Interruption
buffer mi-plein
Interruption
buffer plein
Interruption
buffer mi-plein
51
PING OUT => BSP
PONG OUT => BSP
BSP => Sortie CNA
y[0]
y[N-1]
y[2N]
y[2N-1]
Latence de 2 blocs
Architecture interne du CPU
52
Schma de principe des changes
Squenceur
Gnration Gnration
Registres et
Units de
CPU
pilotage
addr
data
ctrl
Squenceur
B
u
s
p
r
o
g
r
a
m
m
e
Gnration
adresses P
Gnration
adresses D
Units de
calcul
53
addr
data
ctrl
p
r
o
g
r
a
m
m
e
B
u
s
d
o
n
n
e
s
Mmoire P Mmoire D priphriques
Dtail des units
Squenceur
Dcodage des instructions
Pilotage les autres units Pilotage les autres units
Unit de gnration dadresse programme
Compteur de programme (PC)
Gestion matrielle des boucles
Unit de gnration dadresses donnes
Adressage indirect efficace (*p++)
Adressage circulaire, bit-reverse Adressage circulaire, bit-reverse
Units de traitement
Effectuent les calculs
Registres pour rsultats intermdiaires
54
Fetch (lecture instruction)
Squenceur
Gnration Gnration Units de
addr
data
ctrl
Squenceur
B
u
s
p
r
o
g
r
a
m
m
e
Gnration
adresses P
Gnration
adresses D
Units de
calcul
PC
Instruction
55
addr
data
ctrl
p
r
o
g
r
a
m
m
e
B
u
s
d
o
n
n
e
s
Mmoire P Mmoire D
Read/Write (lecture/criture donne)
Squenceur
Gnration Gnration Units de
Squenceur
Gnration
adresses P
Gnration
adresses D
Units de
calcul
addr
data
ctrl
B
u
s
p
r
o
g
r
a
m
m
e
ARi
Donne
56
Mmoire P Mmoire D
addr
data
ctrl
p
r
o
g
r
a
m
m
e
B
u
s
d
o
n
n
e
s
Diagramme bloc du TMS320C5416
D(15-0)
Program/Data RAM
128K Words
Program/Data ROM
16K Words
Mmoire
interne
JTAG Test/
Emulation
Control
Bus externe
Muxed GP I/O
A(23-0)
Program/Data Buses
Timer
Ch 0
Ch 1
Ch 2
Ch 3
Ch 4
Ch 5
DMA
8/16-bit Host Port
Interface (HPI)
P
e
r
i
p
h
e
r
a
l
B
u
s
RND, SAT
17 x 17 MPY
40-Bit Adder
MAC
Shifter
40-Bit Barrel
(-16, 31)
EXP Encoder
40-Bit ALU
CMPS Operator
(VITERBI)
ALU
Accumulators
40-Bit ACC A
40-Bit ACC B
Multichannel Buffered
Serial Port (McBSP)
Multichannel Buffered
Serial Port (McBSP)
Units de
calcul
Control
M
U
X
57
Ch 5
40-Bit ACC B
8 Auxiliary Registers
2 Addressing Units
Addressing Unit
Multichannel Buffered
Serial Port (McBSP)
PLL Clock
Generator
S/W Waitstate
Generator
Power Management
Gnration
dadresses
Entres
Sorties
CPU
Structure interne du
TMS320C54x
58
Source : Texas Instruments
TMS320C54x DSP
Reference Set
Vol 1 : CPU and Peripherals
Unit de controle
Gnration
d'adresses
programme
Gnration
d'adresses
donnes
Zero overhead looping
Adressage indirect :
Pr- et post-incrmentation
automatique
Bus P
programme
Bus C / D
lecture
59
lecture
donnes
Bus E
criture
donnes
4 bus : Accs simultan 1 instruction + 2 oprandes + 1 criture
ALU
Shifter
Viterbi
Registres
60
MAC
Viterbi
Calcul MAC en un cycle Multiplication par 2
k
en un cycle
Architectures des units de traitement
Architecture accumulateur
Couplage accs mmoire et calcul Accs mmoire et calcul dcoupls
Architecture Load/Store
Architecture
registres et mmoire
ACC
RAM
R0
RAM
R1
R2
R3 registres et mmoire
61
R0
RAM
R1
R2
R3
R3
Calcul dun filtre RIF en N+2 cycles
( ) ( )
=
=
1
0
) (
N
i
i n x i b n y
Gestion matrielle des boucles :
Unit de gnration dadresses programme
A=0;
for (i=0; i<N; ++i) {
=0 i
B[i]
X[i] Y
Unit de gnration dadresses programme
Unit MAC matrielle
+ Chargement simultan
de linstruction et des
oprandes
SSBX FRCT
STM #B, AR2
62
for (i=0; i<N; ++i) {
A = A + B[i] * X[i];
}
Y = A >> 15;
Unit de gnration
dadresses donnes
STM #X, AR3
STM #Y, AR4
RPTZ A, #N-1 (x1)
MAC *AR2+,*AR3+, A (xN)
STH A, *AR4 (x1)
Equivalent ASM Code C
Boucles matrielles / Zero overhead looping
Rptition dune Instruction (N) fois
RPTZ A, #54 ;A 0 et RC 54
RC N - 1
Instructions RPT et RPTZ
Rptition dun Bloc dInstructions (N) fois
BRC
N - 1
RPTZ A, #54 ;A 0 et RC 54
MAC *AR2+, *AR3+, A ;La valeur pointe par
;AR2 est additionne la
;valeur pointe par AR3,
;55 fois
STM #54, BRC ;Rptition 55 fois
RPTB fin-1 ;RSA charg avec PC+2
;REA charg avec endblk-1
63
RSA
Premire
Adresse
REA
Dernire
Adresse
Instructions RPTB et RPTBD
;REA charg avec endblk-1
MPY *AR2+0%, A
LMS *AR3, *AR2
ST A, *AR3+
fin :
STH A, *AR3
RSA
REA
Utilisation de ladressage indirect
; A accumulateur
; X=@X[0], Y=@Y[0]
long A;
int X[100],Y[100];
int *px, *py;
Produit scalaire entre deux vecteur
LD #X, AR2
LD #Y, AR3
RPTZ A, #99
MAC *AR2+, *AR3+, A
int *px, *py;
px=X;
py=Y;
A=0;
for (i=0; i<100; ++i)
A = A + (long)(*px++)*(*py++);
Y[i] X[i]
64
; AR3=@Y[idx] dj assign
LD #X, AR2
STM #N,BK
RPTZ A, #99
MAC *AR2+, *AR3+%, A
A=0;
for (i=0; i<=99; ++i) {
idd = idx + i;
A = A + (long)X[i] * Y[idd%N];
}
Filtre RIF avec buffer circulaire (voir chapitre Mise en uvre de filtres RIF et RII )
Adressage indirect bit-reverse
Ordre des donnes pour la FFT
x(0)
x(1)
x(2)
x(3)
x(4)
x(5)
65
Ordre
bit-reverse
Ordre
naturel
Implmentation rcursive de la FFT
X(k) = TFD( x(n) )
Ordre
naturel
x(6)
x(7)
Rorganisation des
donnes
Unit dadressage indirect
(Gnration dadresses donnes)
Registres d'adressage
Units de calcul spcialises
Ecriture sur les bus
d'adresse des bus C, D et E
66
Optimisation de la part du compilateur C
813D toto
813D PSHM 11h Sauvegarde AR1 (save-on-entry)
813E FRAME -1
813F SSBX SXM Manipulation de nombres signs
8140 LD #100h,0,A A <= 256 (100h)
#define N 256
short in[N];
short out[N];
Code C
Pas doptimisation
8140 LD #100h,0,A A <= 256 (100h)
8142 ST #0h,0h Met la valeur initiale 0 de i dans pile[0h]
8144 SUB 0h,A A <= A - pile[0h]
8145 BC 8154h,ALEQ Si A<=0, alors aller fin:
debut :
8147 MVDK 0h,11h Copie pile[0h] dans AR1
8149 LD *AR1(817),A Charge in[AR1] dans A
814B STL A,*AR1(1073) Stocke A dans out[AR1]
814D LD #100h,0,A A <= 256 (100h)
814F ADDM 1h,0h pile[0h] <= pile[0h] + 1
8151 SUB 0h,A A <= A - pile[0h]
8152 BC 8147h,AGT Si A>0 alors reboucler sur debut:
fin:
8154 FRAME 1
void toto()
{
int i;
for (i=0; i<N; i++)
{
out[i]=in[i];
}
}
Adresses des tableaux
67
8033 toto
8033 STM 431h,13h AR3 <= @out
8035 STM 331h,12h AR2 <= @in
8037 RPT #0ffh Rpter 256=255+1 fois
8038 MVDD *AR2+,*AR3+ *AR3 <= *AR2
8039 NOP
803A NOP
803B FRET
8154 FRAME 1
8155 POPM 11h Restaure de AR1
8156 FRET Retour de la fonction
Optimisation au niveau fonction (-o2)
_inputData = 331h = 817
_outputData = 431h = 1073
Adresses des tableaux
Prise en compte des
capacits matrielles du DSP
Pipelining
68
Pipelining
Instructions segmentes en
tages
Excution entrelace de plusieurs
instructions
Exemple du TMS320C54xx :
pipeline 6 tages
Prefetch (P)
Incrmentation du PC
instructions
Chacune une tage diffrent
Augmentation de la frquence
d'horloge
Etages plus simples donc plus
rapides
Gr par le squenceur
Incrmentation du PC
(Program Counter)
Fetch (F)
Lecture de linstruction en
mmoire
Decode (D)
Dcodage de linstruction
Access (A)
Calcul des adresses des
oprandes oprandes
Read (R)
Lecture des oprandes en
mmoire
Calcul de ladresse du rsultat
Execute (X)
Excution du calcul
Ecriture en mmoire
69
Squentiel vs pipeline
t1 t2 t3 t4 t5 t6 t7 t8
Instruction Instruction 1 Instruction 2
Fetch F1 F2
-
-
MemP
D1
F1
t1 t2 t3 t4 t5 t6 t7 t8
Fetch F1 F2 F3 F4 F5
Fetch F1 F2
Decode D1 D2
Read R1 R2
Execute X1 X2
Excution squentielle
F4
MemP
F5
-
-
-
MemD
MemD
C
P
U
D1
R1
X1
Fetch F1 F2 F3 F4 F5
Decode D1 D2 D3 D4 D5
Read R1 R2 R3 R4 R5
Execute X1 X2 X3 X4 X5
70
Amorage du pipeline
Excution avec pipeline : entrelacement des instructions
D3
R2
X1
MemD
MemD
C
P
U
D4
R3
X2
Retards dans le pipeline
Le pipeline atteint son plein rendement une fois quil
est amorc
Une retard peut se produire Une retard peut se produire
en cas de rupture de squence (vidange du pipeline)
branchement mal prdit
appel de sous-programme
interruption
sil existe un conflit de ressources (retard ponctuel, bulle sil existe un conflit de ressources (retard ponctuel, bulle
dans le pipeline)
accs la mmoire
utilisation des bus
71
Exemple de rupture de squence
Code excuter :
1: Instr1
2: Si B==1 Alors GOTO 10:
3: Instr3
10: Instr10
11: Instr11
t1 t2 t3 t4 t5 t6 t7 t8
F F1 F2 F3 F4 F5 F10 F11 F12
3: Instr3
4: Instr4
5: Instr5
6: Instr6
t1 t2 t3 t4 t5 t6 t7 t8
F F1 F2 F3 F4 F5 F6
Si prdiction incorrecte (B=1)
Si prdiction correcte (B1)
11: Instr11
12: Instr12
C 1
Watch Window
A 1 ???
B 1
C 1
Watch Window
A 2 !!!
t1 t2 t3 t4 t5 t6 t7 t8
F F10 F11 F12 F13 F14
Plusieurs cycles sont ncessaires
avant que la variable soit modifie :
Cela nintervient qu ltape X
(excution)
74
A 2 !!!
B 1
C 1
D D10 D11 D12 D13 D14
R R10 R11 R12 R13 R14
X A=2 B=2 C=2 D=2 E=2
Watch Window
A 2
B 2
C 1
Rsum caractristiques des DSP
Cblage des oprations les plus critiques
Units de calculs spcialises
Opration MAC cable
Modes dadressages spcialiss
Accs en mmoire selon des schma prdfinis
Boucle matrielle
Pas de perte de temps pour les instructions rptes
Gestion des entres/sorties intgre Gestion des entres/sorties intgre
Mmoire, DMA, timers
Interfaces srie / parallle
Interruptions faible latence
75
Rsum caractristiques des DSP (2)
Augmentation du paralllisme
Calculs
Units de calcul en parallle Units de calcul en parallle
Mmoire accs multiples
Lecture/criture de plusieurs donnes simultanment
Augmentation de la frquence dhorloge
Pipelining
Dcoupage des instructions de faon les excuter intervalles Dcoupage des instructions de faon les excuter intervalles
plus rapprochs
76
Mesures des performances
MFLOPS
Million FloatingPoint
Operation Per Second
Mesure le nombre doprations
arithmtiques virgule flottante que le
DSP virgule flottante peut raliser
en une seconde en une seconde
MOPS
Million Operation
Per Second
Mesure le nombre total doprations
(calcul, accs DMA, transferts, etc.) que
le DSP peut raliser en une seconde
MIPS
Million Instructions
Per Second
Mesure le nombre de codes machine
(instructions) que le DSP peut raliser
en une seconde
MMACS
Million of MAC
Mesure le nombre doprations MAC
(Multiply+Accumulate) que le DSP peut
77
MBPS
Mega-Bytes
Per Second
Mesure la bande passante dun bus
particulier ou dun dispositif dE/S
MMACS
per Second
(Multiply+Accumulate) que le DSP peut
raliser en une seconde
Performances pour une application
(benchmarking)
Pour avoir une ide des performances concrtes des DSP, seul
reste le benchmarking
Benchmarks effectus par des socits de conseil telles que
Berkeley Design Technology Inc. (www.bdti.com) Berkeley Design Technology Inc. (www.bdti.com)
Embedded Microproc. Benchmark Consortium (www.eembc.org)
Spcifications gnrales des benchmarks:
SPEC95: couvre plusieurs domaines tels que les vocodeurs, les
modems,
les applications multimdia
Algorithme Standard
78
de Traitement du Signal
Temps dexcution
Consommation lectrique
Les volutions rcentes dans
SIMD
Les volutions rcentes dans
larchitecture des DSP
SIMD
MIMD / VLIW
Puces multi-curs
79
Perspective historique
1970
1971: Intel 4004
1972: Intel 8008
1974: 1er microcontrleur : TMS1000
1er ordinateur personnel (8008)
1980
1990
1er ordinateur personnel (8008)
1979: 1er DSP single-chip : Bell Labs Mac 4
Intel 8086
1980: 1er DSP autonome : NEC PD7710
1981: IBM PC (8088)
1983: 1er succs commercial pour un DSP : TMS320C10
1986: MIPS -> R2000, premier microprocesseur RISC commercial
1989: Intel 486 (Utilisation dun pipeline)
1993: Intel Pentium, PowerPC 601
1996: 1er DSP VLIW : TMS320C62xx
80
2000
1996: 1er DSP VLIW : TMS320C62xx
1997: Jeux dinstruction MMX, 3DNow!, Altivec
1999: Pentium III (Jeu dinstruction SSE)
2000: Pentium 4
2004: Jeu dinstruction SSE3
2005: Cell processor
2006: Pentium Core Duo
2007: TMS320DM6467 (SoC DSP+ARM Traitement Vido)
Historique des DSP
1
e
gnration 1979
Architecture Harvard
4
e
gnration 1992
Image et vido
Processeurs faible
Architecture Harvard
Multiplieur cabl
2
e
gnration 1985
Paralllisme
Bus multiples
Mmoire sur la puce
3
e
gnration 1988
Processeurs faible
consommation
5
e
gnration 1996
SIMD
VLIW
Plus rcemment
SoC DSP
3
e
gnration 1988
Virgule flottante
Homognes (Multi-DSP)
Hybrides (RISC+DSP)
Co-design hardware-software
81
Limites des architectures conventionnelles
Processeur DSP conventionnel
= Harvard + Cblage des oprations critiques
Performances bornes
Limite physique laugmentation des frquences dhorloge
Architecture trs spcialise
Jeux dinstructions CISC irrguliers
Peu de portabilit
Inefficacit des optimisation automatiques du compilateur Inefficacit des optimisation automatiques du compilateur
Loptimisation ncessite du savoir-faire
Peu de paralllisme
ou alors trs limit
Exemple: MACD = ADD + MPY + MOV
82
Vers plus de paralllisme
SISD = Single Instruction, Single Data
SIMD = Single Instruction, Multiple Data SIMD = Single Instruction, Multiple Data
MIMD = Multiple Instruction, Multiple Data
A1 B1 A2 B2
Instruction 1
ADD
Donnes 1 Donnes 2
Instruction 2
MUL
MIMD
Instruction
ADD
Donnes 1 Donnes 2
SIMD
Instruction
ADD
Donnes 1
SISD
83
ALU1 ALU2
A1 B1 A2
R1 = A1 + B1
B2
R2 = A2 B2
ALU1 ALU2
A1 B1 A2
R1 = A1 + B1
B2
R2 = A2 + B2
ALU1
A B
R = A + B
Lapproche SIMD
SIMD = Single Instruction Multiple Data
Introduit sur les processeurs dusage gnral Introduit sur les processeurs dusage gnral
MMX (Intel), 3DNow! (AMD)
SSE (x86), Altivec (PowerPC, Cell)
Instruction
ADD
Donnes 1 Donnes 2
SIMD par units parallles
A [A1,A2]
B [B1,B2]
Instruction
packet_add
Donnes
SIMD par partage dunit
84
ALU1 ALU2
A1 B1 A2
R1 = A1 + B1
B2
R2 = A2 + B2
Donnes 1 Donnes 2
ALU
B [B1,B2]
B
R = packed_add(A,B)
Donnes
A
R [A1 + B1, A2 + B2]
Empaquetage des donnes
Dpaquetage des donnes
SIMD : exemple de lextension SSE
Addition de deux vecteurs
Code C squentiel
Code C vectoris
SSE=Streaming SIMD Extensions
r a + b
/* Dclaration de 4 vecteurs 32 bits */
float a[4], b[4], r[4];
/* Addition case par case */
On note pa, pb, pr les addresses respectives de
a, b et r en mmoire.
/* Copie de a[0..3] dans le registre XMM */
movaps xmm0,pa
/* Addition SSE SIMD (packed_add 128 bits) */
addps xmm0,pb
for (i=0; i<4; ++i)
r[i] = a[i] + b[i];
addps xmm0,pb
/* Copie du rsultat en mmoire r[0..3] */
movaps pr,xmm0
85
http://www.cs.utk.edu/~vose/Intel/IntelArchitectureOptimization.pdf
La recopie des donnes de/vers les registres vectoriss XMM prend du temps
=> limiter au maximum les transferts entre registres XMM et mmoire RAM
SIMD: implications architecturales
(exemple du TMS320C54x et du C55x)
2 bus de lecture : C+D
x y
x1 y x2 y
3 bus de lecture : B+C+D
2 Registres
A, B
MAC
1 bus dcriture : E
MAC1 MAC2
4 Registres
AC0,AC3
x y
x1 y x2 y
2 bus dcriture : E+F
C54x C55x
86
Daprs: http://focus.ti.com/lit/ug/spru307a/spru307a.pdf Daprs: http://focus.ti.com/lit/ug/spru393/spru393.pdf
Opration MAC SIMD:
MAC *AR2+, *CDP+, AC0
:: MAC *AR3+, *CDP+, AC1
Opration MAC SISD:
MAC *AR2+, *AR4+, A
y est partag par les deux oprations MAC
=> Coefficient commun
(sinon, 4 bus de lecture auraient t ncessaires)
2 bus dcriture : E+F
SIMD: granularit du paralllisme
(exemple du TigerSHARC)
Le TigerSHARC d Analog Devices met en uvre deux types de SIMD :
- SIMD par units parallles (exemple TMS320C55x par rapport au C54x)
- SIMD par partage de chaque unit de traitement (comme MMX)
MAC ALU Shift MAC ALU Shift
Instruction MAC SIMD
Unit de
calcul n1
Unit de
calcul n2
SIMD par units parallles 64 bits
- SIMD par partage de chaque unit de traitement (comme MMX)
87
4 multiplications 16 bits
au lieu de
1 multiplication 64 bits
4 multiplications 16 bits
au lieu de
1 multiplication 64 bits
SIMD par partage de
l unit de traitement
(split-MAC)
Lapproche MIMD (architecture VLIW)
Plusieurs units de calcul en parallle
Units indpendantes (en gnral distinctes) Units indpendantes (en gnral distinctes)
Augmentation forte du paralllisme
VLIW = Very Long Instruction Word
Notion de super-instruction (bundle)
dcoupe en sous-instructions destines des units
distinctes (slots) distinctes (slots)
1 Instruction Word = 1 bundle compos de N slots
Taille du code machine fortement augmente
Bande passante depuis la mmoire importante
88
Exemple de VLIW RISC
(TMS320C62x, Texas Instruments)
MIMD de type VLIW
4 units de calcul en parallle
par data-path (4 slots)
Opration MAC
dcompose en oprations
lmentaires
par data-path (4 slots)
Archi. Load/Store 16
registres
Jeu dinstruction RISC
L : Logique et Arithmtique
S : Dcalage (ALU et Shifter)
M : Multiplication
D : Donnes (Mouvement de
lmentaires
Load (Unit D)
Multiply (Unit M)
Add (Unit L)
Data Path 1
Register File A
D : Donnes (Mouvement de
donnes de/vers la mmoire)
Optimisation fige la
compilation
89
RAM
L1
Register File A
S1
A15-A0
+
+
M1
x
D1
+ +
Exemple de VLIW RISC (2)
(TMS320C62x, Texas Instruments)
2 chemins de donnes (data-path)
4 units de calcul en parallle par
data-path
C62x/C67x CPU
Instruction Fetch
Control
Registers
I
n
t
e
r
r
u
p
t
C
o
n
t
r
o
l
data-path
En tout
8 slots
Mot instruction de 256 bits = 8*32bit
Bilan :
Augmentation du paralllisme et des
frquences dhorloge (car units RISC
plus simples)
Data Path 2 Data Path 1
L1
Register File A
M2 D2 S2 L2
Instruction Decode
Instruction Dispatch
Registers
I
n
t
e
r
r
u
p
t
C
o
n
t
r
o
l
Emulation
S1
A15-A0
+ + +
x
+
M1
x
D1
+
Register File B
B15-B0
+
plus simples)
Taille du code beaucoup plus grande
90
+
+ +
+
+
x
+
x
+ +
Dual 32-Bit Load/Store Path
(Dual 64-Bit Load Path - C67x only)
Exemple de VLIW CISC
(Jazz D4, Improv Systems)
MIMD 4 slots VLIW
Registres
locaux
Registres
locaux
Registres
locaux
Registres
locaux
MIMD 4 slots VLIW
Registres locaux chaque unit
Units peuvent tre htrognes
Jeu dinstruction CISC/DSP
Prsence dunits MAC
Design matriel reconfigurable / SoC
Processeur 16 ou 32 bits
1 4 slots VLIW
Bus dinterconnection
Unit2
(ALU, MAC,
Shift)
Unit3
(ALU, MAC)
Unit4
(ALU, MAC)
Unit1
(ALU, MAC,
Shift)
Mmoire
t
e
s
125
Discrtisation
en amplitude
V
a
l
e
u
r
s
d
i
s
c
r
t
e
s
Lchantillonnage
126
Caractristiques du signal chantillonn
Spectre de Frquence du Signal Analogique Spectre de Frquence du Signal Analogique
| X(f) |
fc
fs 2fs 3fs 0
Spectre de Frquence du Signal dEchantillonage Spectre de Frquence du Signal dEchantillonage
127
fc
fs 2fs 3fs
0
Spectre de Frquence du Signal Echantillon Spectre de Frquence du Signal Echantillon
| X
e
(f) |
Thorme de Shannon
Fs > 2Fc Fs > 2Fc
| X
e
(f) |
fc
fs 2fs 3fs 0 4fs
fc
fs 2fs 3fs 0 4fs 5fs
Fs = 2Fc Fs = 2Fc
| X
e
(f) |
128
fc fs 2fs 3fs 0 4fs 5fs 6fs 7fs
Fs < 2Fc Fs < 2Fc
Repliement de spectre
| X
e
(f) |
Effets du repliement de spectre
Amplitude Amplitude
Signal chantillon Signal chantillon
fs > 2fc fs > 2fc
Temps Temps
129
Temps Temps
Signal Signal chantillon chantillon
fs fs < 2fc < 2fc
La quantification
Uniforme
130
Logarithmique
Quantification Uniforme
Pour un pas de quantification q :
|
\
|
=
q
x
X round
Entier X associ au rel x
x x e =
\
=
q
X round
Valeur approche du rel x aprs quantification
q
e
131
Erreur de granulation Erreur de granulation Erreur de granulation Erreur de granulation Erreur de saturation Erreur de saturation Erreur de saturation Erreur de saturation
Lie la prcision q Lie la dynamique [x
min
, x
max
]
0 1 2 3 4 5 6 7 8
Temps
0
9
q
0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8
Temps
xmax
9 9
e
e
RSB de la quantification uniforme
N bits signs
|
|
\
|
= =
e
x
dB
e
dB
x dB
P
P
P P RSB log 10
Rapport signal sur bruit
relatif la quantification
q
) ( log 20 77 . 4 02 . 6
max 10
x P N RSB
dB
x dB
+ +
Le RSB de la quantification uniforme de la quantification uniforme de la quantification uniforme de la quantification uniforme est donc, en labsence de saturation :
2
q
e
12
2
q
P
e
=
On peut alors montrer que la puissance de lerreur est
Si arrondi au plus proche voisin
Pour un codage N bits sign , on a q=(2x
max
)2
-N
132
max 10 x dB
En introduisant le facteur de charge facteur de charge facteur de charge facteur de charge ,
qui indique quelle est la dynamique utilisable
par rapport la puissance du signal
x
x
max
=
( ) +
10
log 20 77 . 4 02 . 6 N RSB
dB
Seuil dapparition de la saturation
La saturation se produit lorsque lamplitude du signal convertir
dpasse x
max
ou x
min
Le RSB se dgrade trs rapidement ds quil y a saturation
Soit a lamplitude du signal il y a saturation pour a>x
max
Pour un signal carr: P
x
=a
2
saturation 0 dB
Pour un signal sinusodal: P
x
=a
2
/2 saturation -3.01 dB
Pour un signal uniforme sur [-a, a] : P
x
=a
2
/3 saturation -4.77 dB
Pour un signal gaussien moyenne nulle :
133
Dynamiques typiques :
X sur N bits non signs => x
min
=0 et x
max
=q(2
N
-1)
X sur N bits signs en C2 => x
min
=-q2
N-1
et x
max
=q(2
N-1
-1)
a 3
x
(rgle des 3 sigmas) do P
x
a
2
/9 saturation -9.54 dB
Quantification uniforme et RSB
120
Quantification uniforme 16 bits sur [-1,1]
bruit blanc gaussien
bruit blanc uniforme
saturation
dB
x
P x = = ) ( log 20 1
10 max
Quantification uniforme 16 bits signs sur [-1,1]
40
60
80
100
R
S
B
(
d
B
)
bruit blanc uniforme
signal sinusoidal
signal carr
dB
x dB
P N RSB + + 77 . 4 02 . 6
Seuil dapparition de la
saturation
Carr: 0 dB
Sinus: -3.01 dB
RSB en labsence de saturation:
134
-60 -50 -40 -30 -20 -10 0 10
0
20
puissance du signal (dB)
erreur de granulation
Sinus: -3.01 dB
Uniforme : -4.77 dB
Gaussien : -9.54 dB
Quantification Logarithmique
Trs utilise pour la transmission de signaux audio
Permet dobtenir un RSB peu prs constant, quelle que soit la puissance du
signal signal
Deux lois logarithmiques sont actuellement utilises
la loi A est utilise en Europe
la loi aux Etas Unis et au Japon
Peut tre exprime laide dune quantification uniforme aprs
compression damplitude
y
y
x Q x =
135
y
)
1
y C x
=
x
Compression
dAmplitude
Quantification
Uniforme
Expansion
dAmplitude
) (x C y = ) (
y Q y
u
=
) (
log
x Q x =
( ) ( ) ) ( ) (
1
log
x C Q C x Q
u
=
Quantification uniforme vs logarithmique
0.5
1
Signal original x
x1
x2
0.5
1
Signal original x
0.5
1
Signal compress y=C(x)
0 0.5 1
-1
-0.5
0
0.5
1
Signal quantifi x
q
=Q(x)
x2
x3
0 0.5 1
-1
-0.5
0
0 0.5 1
-1
-0.5
0
0.5
1
Signal quantifi y
q
=Q(y)
0.5
1
Signal quantifi x
q
=C
-1
(y
q
)
136
0 0.5 1
-1
-0.5
0
0.5
quantif. uniforme
domaine linaire
quantif. logarithmique
domaine linaire
quantif. uniforme
domaine compress
0 0.5 1
-1
-0.5
0
0.5
0 0.5 1
-1
-0.5
0
0.5
Loi A
0.8
0.9
1
loi de compression A
Pente leve bonne prcision
Pente faible augmente la dynamique
0.2
0.25
0.3
0.35
0.4
0.1
0.2
0.3
0.4
0.5
0.6
0.7
C
(
x
)
Compression logarithmique
( )
( )
( )
( ) 1
1
;
ln 1
/ ln 1
max
max
max
+
+
=
x
x
A
pour x sign
A
x x A
x x C
A=87.56
Pente leve bonne prcision
C(x)
137
0 0.01 0.02 0.03
0
0.05
0.1
0.15
0.2
Compression linaire
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
0
x
( )
( )
( )
A x
x
pour x sign
A
x A
x C
1
0 ;
ln 1
max
+
=
x
Pour les signaux de trs faible amplitude,
quivalent une quantification uniforme de pas
u log
ln 1
q
A
A
q
+
=
Quantification Uniforme 8 bits
vs. Logarithmique 8 bits
Loi A
La compression limite les effets
de la granulation
50
Quantif ication 16 bi ts sur [-1,1]
Loi A sur 8 bits Uniforme sur 8 bits
RSB pour une sinusode
de la granulation
RSB peu prs constant sur
une plage de 30 dB
Quantification uniforme
Meilleur que loi A seulement
10
15
20
25
30
35
40
45
R
S
B
(
d
B
)
Loi A
Uni forme
( ) A N RSB
dB
ln 1 log 20 77 . 4 02 . 6
10
+ +
Meilleur que loi A seulement
pour premiers 10dB
Leffet de granulation est
linaire par rapport la
puissance du signal
138
-60 -50 -40 -30 -20 -10 0 10
0
5
10
puissance du signal (dB)
x1 x2 x3
Quantification uniforme
meilleur RSB
Quantification logarithmique
meilleur RSB
( ) +
10
log 20 77 . 4 02 . 6 N RSB
dB
Quantification Uniforme 12 bits
vs. Logarithmique 8 bits
60
70
Pour les calculs, on reviendra
toujours en quantification
uniforme
RSB pour un bruit gaussien centr
-60 -50 -40 -30 -20 -10 0 10
0
10
20
30
40
50
puissance du signal (dB)
R
S
B
(
d
B
)
uniforme
Pour viter une augmentation du
RSB,
le nombre de bits
supplmentaires dpend de A
uniquement
Loi A sur 8 bits
| |
A 1
log
u
dB dB
RSB RSB
139
( ) +
10
log 20 77 . 4 02 . 6 N RSB
u
dB
( )
|
\
|
+
+ +
10 10
log
log 20
ln 1
log 20 77 . 4 02 . 6
A
A
N RSB
dB
|
\
|
+
+
A
A
N N
u
ln 1
log 20
02 . 6
1
10 log
bits 4
log
+ = N N
u
Lorsque A=87.56 :
Le codage des entiers
140
Reprsentation dentiers non signs
Reprsentation binaire
non-signe sur bits
=
1
2
N
i
i
b X
b
i
= 0 ou 1
Reprsentation binaire
non-signe sur N bits
=
=
0
2
i
i
b X
b
i
= 0 ou 1
dynamique de X : 0..(2
N
-1)
141
Exemple: entier en dcimal, binaire et hexadcimal
0 1 0 1 2 3 4 0 1
16 2 10
16 10 16 1 2 0 2 1 2 0 2 1 2 1 10 6 10 2
1A 11010 26
+ = + + + + = +
= =
Entiers signs : binaire dcal
Binaire Dcal Binaire Dcal Binaire Dcal Binaire Dcal
Entier x cod par
Le dcalage d est gnralement gal
d = -2
N-1
Entier x cod par
la reprsentation binaire pure de
lentier positif
y=x+d
1
1
0
0
1
1
0 0 -2
1 0 -1
0 1 0
1 1 1
0 1 2
1 1 3
Nombre Codage
2
3
4
5
6
7
y
1 2
1
N
D
y
n
a
m
i
q
u
e
142
0
0
1
0 0 -4
1 0 -3
0 0 -2
0
1
2
N=3
1
2
N
Entiers signs : signe et valeur absolue
Format signe et valeur absolue Format signe et valeur absolue Format signe et valeur absolue Format signe et valeur absolue
Le bit de poids fort reprsente le signe
Les autre bits, la valeur absolue de lentier
Le bit de poids fort reprsente le signe
Les autre bits, la valeur absolue de lentier
0
0
1
1
0 0 0
1 0 1
0 0 2
1 0 3
Nombre Codage
1 2
1
N
Deux codes
143
1
1
0
0
0
1 1 -3
0 1 -2
1 1 -1
0 1 -0
0 0 0
Signe
) 1 2 (
1
N
Deux codes
pour le zro
Entiers signs : format complment 1
Format complment 1 Format complment 1 Format complment 1 Format complment 1
Le bit de poids fort reprsente le signe
Nombre positif : cod comme un non-sign
ATTENTION : ne pas confondre
Format C1 et C1 dun entier
Nombre positif : cod comme un non-sign
Nombre ngatif : cod comme le C1 de son oppos
1 2
1
N
Deux codes
C1(x) = (2
N
-1) x
avec
0
0
1
1
0 0 0
1 0 1
0 0 2
1 0 3
Sign C1
Codage
Complment 1 de x:
0
1
2
3
Non sign
associ
144
Signe
Deux codes
pour le zro
Implantation efficace : Implantation efficace : Implantation efficace : Implantation efficace :
inversion des bits inversion des bits inversion des bits inversion des bits
avec
N fois 1
2
N
-1 = 111111
2
) 1 2 (
1
N
0
0
1
1
0
0 1 -3
1 1 -2
0 1 -1
1 1 -0
0 0 0
4
5
6
7
0
Entiers signs : format complment 2
Format complment 2 Format complment 2 Format complment 2 Format complment 2
Le bit de poids fort reprsente le signe
Nombre positif : cod comme un non-sign
ATTENTION : ne pas confondre
Format C2 et C2 dun entier
Format le plus utilis
Nombre positif : cod comme un non-sign
Nombre ngatif : cod comme le C2 de son oppos
1 2
1
N
C2(x) = 2
N
x
Implantation efficace de loppos
Inversion des bits puis ajout de 1
Format le plus utilis
en arithmtique binaire
Complment 2 de x :
D
y
n
a
m
i
q
u
e
0
0
1
1
0 0 0
1 0 1
0 0 2
1 0 3
Sign C2
Codage
0
1
2
3
Non sign
associ
145
Signe
Inversion des bits puis ajout de 1
1
2
N
C2(x) = C1(x) + 1
D
y
n
a
m
i
q
u
e
0
0
1
1
0
0 1 - -- -4 44 4
1 1 -3
0 1 -2
1 1 -1
0 0 0
4
5
6
7
0
Lien entre non-sign et sign C2
Pour une mme reprsentation
binaire
] , , , , [
0 1 2 1
b b b b
N N
L
0
1
2 -2
-1
0
X entier sign C2
Y entier non-sign
+ =
2
0
1
1
2 2
N
i
i
i
N
N
b b X
] , , , , [
0 1 2 1
b b b b
N N
L
2
3
4
5
6
7 -7
-6
-5
-4
-3
-2 0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
pour N=4 bits
Y entier non-sign
146
=
=
1
0
2
N
i
i
i
b Y
N
Y X 2 =
7
-8
-7
0 X
1
2
<
N
Y
1
2
N
Y
0 < X
Y X =
Proprits de la saturation
Modes de saturation
Exercice:
Montrer quen mode C2 pur sur 8 bits signs le calcul
C2 pur C2 avec saturation
Montrer quen mode C2 pur sur 8 bits signs le calcul
suivant conduit un rsultat correct, mais pas en mode de
saturation
A=((100+70)+30)-150
147
Le codage des rels en virgule fixe
148
Reprsentation de nombres rels
Deux exigences contradictoires:
Prcision: intervalle entre deux valeurs codes Prcision: intervalle entre deux valeurs codes
doit tre le plus petit possible
Dynamique: intervalle entre les valeurs min et max
doit tre le plus tendu possible
Les units de calcul des DSP travaillent Les units de calcul des DSP travaillent
soit en format fixe (notation dcimale)
soit en format flottant (notation scientifique)
149
Format virgule fixe : le format Q
k
Dfinition : Dfinition : Dfinition : Dfinition :
La reprsentation Q
k
du rel x est l'entier X dfini par La reprsentation Q
k
du rel x est l'entier X dfini par
) 2 round( x X
k
=
Q
0
dsigne le cas du codage lentier le plus proche (X=round(x))
Cela correspond une quantification uniforme de pas q=2
-k
150
On peut utiliser le format Q
k
en sign et non-sign
Le format Q
k
peut galement tre not Q.k
Dynamique et prcision du format Q
k
Prcision: quantification uniforme de pas q
k
q
= 2
En pratique, on peut approximer les dynamiques par des intervalles
Dynamique:
non-sign:
sign C2:
| |
k k N k N
2 2 , 2
1 1
| |
k k N
2 2 , 0
q = 2
151
En pratique, on peut approximer les dynamiques par des intervalles
semi-ouverts: et
Do les formats classiques:
Dynamique sur [-1, 1[ format Q
N-1
sur sur sur sur N bits signs bits signs bits signs bits signs
Dynamique sur [0, 1[ format Q
N
sur sur sur sur N bits non bits non bits non bits non- -- -signs signs signs signs
| |
k N
2 , 0 | |
1 1
2 , 2
k N k N
Reprsentation Qk sur 16 bits
k
Prcision
q
Dynamique pour
16 bits signs
Dynamique pour
16 bits non signs
-1 2 [-65536, 65535] [0, 2
16
-1] -1 2 [-65536, 65535] [0, 2
16
-1]
0 1 [-32768, 32767] [0, 65535]
1 1/2 [-16384, 16383] [0, 32767]
14 2
-14
[-2, 2[ [0, 4[
Entiers Q0
[-1 1[ Q15 sur 16 bits signs
15 2
-15
[-1, 1[ [0, 2[
16 2
-16
[-0.5, 0.5[ [0, 1[
17 2
-17
[-0.25, 0.25[ [0, 0.5[
152
[-1 1[ Q15 sur 16 bits signs
[0 1[ Q16 sur 16 bits non-signs
Quantification uniforme
Attention lambigit entre et
x
X
x
|
|
|
=
x
X round
x
Valeur relle exacte
exact
quantifi
q x /
Valeur relle exacte normalise
qX x =
Quantification
de pas q
Arrondi entier
153
x
\
=
q
X round
Valeur relle quantifie
Reprsentation entire
qX x =
0
=
=
x
X
Format Q sur 8 bits non signs
13 = X
Format Q
12
sur 8 bit
= Saturation
154
Format Q
10
sur 8 bits non signs
0 1 1 0 0 1 1 0
2
-10
5 0.09960937
102
=
=
x
X
0 0 0 0 1 1 0
,
0
2
-7 Format Q
7
sur 8 bits non signs
1015625 . 0
13
=
=
x
X
Choix du format Q
k
Pour le codage d'un ensemble de valeurs x en virgule fixe sur N bits
signs, la mthode est la suivante:
1) Expliciter la dynamique prvue pour les valeurs de x
2) Estimer k
max
, le k maximum permettant d'viter la saturation viter la saturation viter la saturation viter la saturation, c'est dire
vrifiant:
3) Toutes les valeurs k infrieures k permettent d'viter la saturation. On
max
x x
1
max
max
2
k N
x
1 ) ( log
max 2 max
+ = N x k
155
3) Toutes les valeurs k infrieures k
max
permettent d'viter la saturation. On
choisit la valeur permettant la plus grande prcision, c'est dire k
max
.
4) Le pas de quantification est alors:
Dans le cas non sign, on a:
max
2
k
q
=
max
2
max
k N
x
N x k + = ) ( log
max 2 max
Quantification et prcision dcimale
A titre purement indicatif A titre purement indicatif A titre purement indicatif A titre purement indicatif, il est possible de dterminer le nombre de
chiffres dcimaux significatifs associ un pas de quantification.
D k
q
= 10 2
( )
D k
D k
3 . 3
10 log
2
Notons
- k le nombre de bits aprs la virgule (format Q
k
),
- D le nombre de chiffres dcimaux significatifs aprs la virgule,
- q le pas de quantification
-On a l'quivalence suivante:
156
En particulier, le format Q
15
a une prcision approximative de 4 chiffres
dcimaux aprs la virgule
Ceci est un calcul approximatif,
ne pas utiliser pour justifier le choix dun format Q
k
Oprations arithmtiques virgule fixe
157
Influence des oprations sur le format Q
k
Addition:
Si A, B reprsentations Q
k
de a et b,
alors A+B est la reprsentation Q
k
de a+b.
A + B
Q
k
Q
k
Q
k
A + B
Q
k
Q
l
kl
A+B Q
k
a+b.
Multiplication
Si A reprsentations Q
k
de a
et B reprsentations Q
l
de b,
alors A*B est la reprsentation Q
k+l
de ab.
Dcalage
Si A reprsentations Q
k
de a
alors A<<2=2
n
A est la reprsentation Q
k+n
de a.
Q
k
A * B
Q
k
Q
l
Q
k+l
A >> n
Q
k
A << n
Q
k
kl
alors A<<2=2
n
A est la reprsentation Q
k+n
de a.
et A>>2=2
-n
A est la reprsentation Q
k-n
de a.
Transtypage
Changer le nombre de bits sur lequel est cod un
nombre ne change pas le format Q
k.
158
Q
k-n
Q
k+n
(int)L
Q
k
Q
k
(long)I
Q
k
Q
k
Multiplication entire sur le C54x
Multiplication entiers 16 bits
; AR2 = @X
; AR3 = @Y
Int16 X,Y,R;
Int32 A;
; AR3 = @Y
; AR4 = @R
MPY *AR2,*AR3,A
STL A,*AR4
Int32 A;
A = (Int32)X * Y;
R = (Int16)A;
s s
0
15 16
29 31 30
X*Y sur 32 bits
159
s s
s
Rduction 16 bits
Partie basse de laccumulateur :
STL = Store Low
R: Rsultat sur 16 bits
X*Y
Multiplication virgule fixe Q15
RSBX FRCT ; FRCT0
MPY *AR2,*AR3,A
Multiplication format Q
15
sur 16 bits
A = (Int32)X * Y;
S
a
n
s
F
R
C
T
SSBX FRCT ; FRCT1
MPY *AR2,*AR3,A
STH A,*AR4
MPY *AR2,*AR3,A
STH A,-1,*AR4
A = (Int32)X * Y;
R = (Int16)(A>>(16-1));
0
15 14
29 31 30
A = ((Int32)X * Y)<<1;
R = (Int16)(A>>16);
A
v
e
c
F
R
C
T
S
a
n
s
F
R
C
T
160
s s
0
15 14
Partie haute de lacc.
(STH=Store High)
Rduction 16 bits
s
Dcalage gauche
automatique si FRCT=1
0
s
X*Y sur 32 bits
Q30
Q31
Q15
>>16 (STH)
<<1
R: Rsultat sur 16 bits
Accumulateurs sur le C54x
15-0
AL AH AG Accumulateur A
31-16
Bits de
Garde
39-32
Bits de
poids fort
Bits de poids
faible Garde poids fort faible
- Sur le C54X, deux accumulateurs 40 bits : A et B
- Peuvent servir de source et de destination pour lALU et pour le MAC
- Sont mapps en mmoire (MMR)
; A accumulateur 40 bits
; AR2=@X[0], AR3=@Y[0]
; AR4=@R
; 55 rptitions
Int32 A;
Int16 X[],Y[];
Int16 R;
A=0;
161
RPTZ A, #54
MAC *AR2+, *AR3+, A
STH A,-1,*AR4
A=0;
for (i=0; i<=54; ++i)
A = A + (Int32)X[i]*Y[i];
R = (Int16)(A >> 15);
Accumulateur de 40 bits
non accessible depuis le langage C:
Dgradation ds quun rsultat
intermdiaire dpasse 32 bits.
Si le rsultat final R tient sur 16 bits,
possibilit de rsultats intermdiaires
jusqu 40 bits sans saturation.
Arithmtique et prcision
Divisions et dcalages entranent une erreur lie la perte de prcision
Int16 X[4]={15, 23, 7, 2};
x(0)=15 x(1)=23 x(2)=7 x(3)=2
a = (x(0) + x(1) + x(2) + x(3))/4 A = ((Int32)X[0]+X[1]+X[2]+X[3])>>2;
Equivalence
sur les rels
Pas dquivalence
en virgule fixe
A = floor(47/4) = 11 erreur 0e<1
Int16 X[4]={15, 23, 7, 2};
Int16 A;
e
e e
x(0)=15 x(1)=23 x(2)=7 x(3)=2
a = 47/4 = 11.75
162
A = (X[0]>>2) + (X[1]>>2)
+ (X[2]>>2) + (X[3]>>2);
a = x(0)/4 + x(1)/4 + x(2)/4 + x(3)/4
sur les rels
A = 3 + 5 + 1 + 0 = 9 erreur 0e<4
a = 15/4 + 23/4 + 7/4 + 2/4 = 11.75
e
0
e
1
e
2
e
3
Accumulation et saturation
Exercice:
1) Quelle est la dynamique de laddition de Mentiers non-signs n bits ?
2) En dduire le nombre de bits minimum N de laccumulateur pour viter la saturation.
1 et 2) Mme questions en sign.
Problme:
On dsire calculer le produit scalaire a
M
entre deux vecteurs x et h de taille m, dont toutes
les valeurs sont lintervalle ]-1, 1[. Les valeurs sont codes au format Q15 sur 16 bits signs
(Int16).
On note a
m
les accumulations intermdiaires :
1) Quelle est la dynamique des rsultats intermdiaires a
m
?
=
=
1
0
) ( ) (
m
i
m
i h i x a
1) Quelle est la dynamique des rsultats intermdiaires a
m
?
2) En dduire le nombre de bits ncessaires pour pouvoir calculer a
M
exactement.
3) Supposons que lon soit contraint dutiliser uniquement les types Int16 et Int32. A
quel format Qk faut-il stocker les rsultats intermdiaires pour viter la saturation ?
4) On suppose de plus que a
M
]-1, 1[, mais sans aucune garantie sur les a
m
intermdiaires.
Ecrire le code C permettant de calculer a
M
en Q15 sur 16 bits signs avec la meilleure
prcision possible sans saturation. (oprations: +, *, >>, (Int16), (Int32))
163
Le codage des rels en virgule flottante
164
Reprsentation en virgule flottante
E S
M x 2 ) 1 ( =
Le signe signe signe signe S : 1 bit (0 ou 1)
La mantisse mantisse mantisse mantisse M : rel positif cod sur m bits
Lexposant exposant exposant exposant E : entier sign sur e bits
N e m = + + 1
Opration de normalisation normalisation normalisation normalisation:
nombre de chiffres
significatifs
dynamique
165
Opration de normalisation normalisation normalisation normalisation:
Pour rendre la reprsentation unique,
M doit satisfaire en outre:
et peut donc tre cod uniquement par sa
partie fractionnaire F, son bit de poids fort
tant implicitement 1:
2 1 < M
4 4 3 4 4 2 1
K
F
m m
b b b b M
0 1 2 1
, 1
=
Format virgule flottante IEEE 754
Simple prcision (N=32 bits) : float
Double prcision (N=64 bits) : double
E S
M x 2 ) 1 ( =
Signe S (1 bit)
Exposant E (8 bits)
en binaire dcal (cod par le non-sign E+127)
Fraction F (23 bits), partie fractionnaire de la mantisse
=Mantisse M sur 24 bits non-signs
Double prcision (N=64 bits) : double
float double
Signe S (1 bit)
Exposant E (11 bits)
cod par E+1023
Fraction F (52 bits)
= M sur 53 bits
166
=Mantisse M sur 24 bits non-signs
Cas spciaux
Zro: tous les bits 0
Underflow: exposant = 0000
2
Overflow: exposant = 1111
2
= M sur 53 bits
Dynamique en format flottant
Pour le codage en virgule flottante
la dynamique est conditionne par le nombre de bits de lexposant:
( ) ( ) { } 1 1 log log 1 1 log 2
max 2 2 max 2
+ + + + x e x
e
1 2
) 1 2 (
max
=
e
x
Do la condition :
( ) ( ) { } 1 1 log log 1 1 log 2
max 2 2 max 2
+ + + + x e x
167
En pratique, la dynamique est beaucoup moins contraignante en virgule
flottante quen virgule fixe, et requiert donc moins dattention.
Virgule flottante par bloc
Simulation de la reprsentation
virgule flottante avec un DSP
virgule fixe
; Laccumulateur A contient
; une valeur sur 40 bits
E
M x 2 =
virgule fixe
La mantisse Mest un rel sign
de [-1, 1]
cod au format Q
m-1
sur m bits
Un autre contient lexposant E
Lexposant est constant pour un
bloc de donnes
Les calculs se font sur les
mantisses, puis les rsultats sont
; Calcule lexposant de A
; et le stocke dans T
EXP A
; Normalise A
; en fonction de T
NORM A
; Stocke:
mantisses, puis les rsultats sont
mis lchelle en fonction de
l exposant
Dans ce cas, la normalisation est
plutt
168
; - la mantisse dans *AR3
STL A,*AR3
; - lexposant dans *AR4
ST T,*AR4
Passage de la virgule fixe la virgule
flottante simule sur deux entiers
(ASM C54x)
1 5 . 0 < M
Mise en uvre Mise en uvre
de filtres numriques
Mthodologie dimplmentation Mthodologie dimplmentation
Lookup table (LUT)
Structures de filtres RIF et RII
Problmes lis la quantification et la
saturation
169
Mthodologie d'implantation d'un filtre
numrique
170
Mthodologie d'implantation d'un filtre
tape 0 : Conception du filtre
Choix du filtre et calcul des coefficients
tape 1 : Choix de structure
Choix d'un schma d'implantation
criture des quations correspondantes
tape 2 : Choix algorithmiques
Choix de l'implantation mmoire et des variables
criture de l'algorithme en virgule flottante
tape 3 : Choix numriques
Choix du format Q
kk
criture du programme en virgule fixe
tape 4 : Validation
Dfinir un protocole de test et l'appliquer
Etape 5 : Optimisation
171
Etape 0 : Conception du filtre
Outils de conception de filtres numriques
Par exemple, sous Matlab: Signal Processing Toolbox, outil fdatool
172
Etape 0 : Conception du filtre (2)
Conception de filtres RIF
cfirpm Complex and nonlinear-phase equiripple FIR filter design
fir1 Window-based finite impulse response filter design
fir2 Frequency sampling-based finite impulse response filter design
fircls Constrained least square FIR multiband filter design fircls Constrained least square FIR multiband filter design
fircls1 Constrained least square, lowpass and highpass, linear phase, FIR filter desig
firls Least square linear-phase FIR filter design
firpm Parks-McClellan optimal FIR filter design
firpmord Parks-McClellan optimal FIR filter order estimation
firrcos Raised cosine FIR filter design
gaussfir Gaussian FIR pulse-shaping filter design
intfilt Interpolation FIR filter design
kaiserord Kaiser window FIR filter design estimation parameters
sgolay Savitzky-Golay filter design
Conception de filtres RII
buttord Butterworth filter order and cutoff frequency
Analyse des caractristiques des filtres
filternorm 2-normor infinity-normof a digital filter
buttord Butterworth filter order and cutoff frequency
butter Butterworth analog and digital filter design
cheb1ord Chebyshev Type I filter order
cheby1 Chebyshev Type I filter design (passband ripple)
cheb2ord Chebyshev Type II filter order
cheby2 Chebyshev Type II filter design (stopband ripple)
ellipord Minimum order for elliptic filters
ellip Elliptic (Cauer) filter design
maxflat Generalized digital Butterworth filter design
yulewalk Recursive digital filter design
173
filternorm 2-normor infinity-normof a digital filter
freqz Frequency response of digital filters
fvtool Filter Visualization Tool
grpdelay Average filter delay (group delay)
impz Impulse response of digital filters
phasedelay Phase delay response of digital filters
phasez Phase response of digital filters
stepz Step response of digital filters
zerophase Zero-phase reponse of digital filters
zplane Zero-pole plot
tape 1 : Schma et quations
Exemple sur une cellule RII du 2e ordre
b
1
b
0
-a
1
y
n
x
n
w
n
s
2 2 1 1
+ + =
=
n n n n
w b w b w b y
w a w a sx w
w
n-1
z
-1
174
b
2
-a
2
2 2 1 1 0
+ + =
n n n n
w b w b w b y
w
n-2
z
-1
Forme directe II
quations correspondantes
tape 2 : Variables et algorithme
s
coefs
w
n-1
w(n-1)
dbuffer
Entres :
x (contient x
n
)
dbuffer (contient w
n-1
et w
n-2
)
coefs (contient les coefficients)
0
0
a
1
a
2
b
2
b
1
b
0
w
n-2
w(n-2)
tableau des
coefficients
tableau des
retards
Variable temporaire :
w (recevra w
n
)
Calcul
w
n
s * x
n
a
1
* w(n-1) a
2
* w(n-2)
y b
0
* w
n
+ b
1
* w(n-1) + b
2
* w(n-2)
Mise jour retards
x
n
? puis y
n
x
y
coefs (contient les coefficients)
1
2
3
4
5
1
175
coefficients
w(n-2) w(n-1)
w(n-1) w
n
? puis y
n y
? puis w
n w
variables
temporaires
tat de la mmoire
lors de l'appel de la fonction
Sorties :
y (reoit y
n
)
dbuffer (contient w
n'-1
et w
n'-2
pour n'=n+1)
tape 3 : Format Q
k
et programme C
x(n) Q15
s Q15
int cellule(int x) {
int w;
int coefs[6];
int dbuffer[2];
a
i
Q15
b
i
Q15
w
k
Q15
/* Calcul */
w=((long)coefs[0]*x
-(long)coefs[1]*dbuffer[0]
(long)coefs[2]*dbuffer[1]) >> 15;
y=((long)coefs[5]*w
+(long)coefs[4]*dbuffer[1]
+(long)coefs[3]*dbuffer[0]) >> 15;
/* Mise jour retards */
int cellule(int x) {
int w;
int y;
Conversion algorithme (calcul sur des rels)
vers programme (calcul en format Q
k
)
176
/* Mise jour retards */
dbuffer[1]=dbuffer[0];
dbuffer[0]=w;
/* Sortie */
return y;
}
s * x
devient
(coefs[0]*x)>>15
pour un rsultat en Q15
Aller-retour tapes 1-2-3:
correction derreurs, volution des objectifs
coefs
w (n-1)
dbuffer
0
Exemple: extension de lalgorithme des cellules en cascade.
Limplantation mmoire ncessite une phase de conception
s
a
11
a
12
b
12
b
11
b
10
w
1
(n-1)
w
1
(n-2)
w
2
(n-1)
w
2
(n-2)
cellule 1
cellule 2
cellule 1
0
1
2
5
0
1
2+1
2+2
177
a
21
a
22
b
22
b
21
b
20
cellule 2
5+1
5+2
H
1
(z) H
2
(z)
s
x(n)
(triangle, hamming)
Approximation
Quantification des valeurs
dentre x
179
avec x
m
= x
0
+m.q
lut[m] g(x
m
)
Exemple : LUT pour la fonction cosinus
Une priode : cos(2 t) pour t[0,1[
lut[m] cos(2 m/M) pour m[0..M-1]
-0.5
0
0.5
1
cos(2 n f / f )
lut[m] cos(2 m/M) pour m[0..M-1]
t = m/M
Application au calcul dune sinusode de frquence f frquence dchantillonnage f
e
0 0.2 0.4 0.6 0.8 1
-1
0 5 10 15
-3
-2
-1
0
1
2
3
x 10
4
180
cos(2 n f / f
e
)
m = n f M / f
e
t = n f / f
e
f
e
/ M = f
lut
peut tre prcalcul si entier
cos(2 n f / f
e
) lut[n * f / f
lut
]
Calculs entiers uniquement
Filtres RIF
Structure transverse
Buffer linaire
181
Buffer linaire
Buffer circulaire
Structures pour filtre RIF
Structure transverse avec ligne retard
x
x
n-N+1
x
n-1
x
n-2
Structure en treillis (filtres adaptatifs)
x
n
y
n
x
n-N+1
x
n-1
x
n-2
b
0
b
1
b
2
b
3
b
N-1
182
Filtre RIF par structure transverse
Deux aspects
Mise jour de la mmoire Mise jour de la mmoire
A chaque rception dune nouvelle donne x(n)
Calcul du filtre
ACCU 0
Insrer x(n) dans un buffer
183
ACCU 0
Pour i de 0 N-1
ACCU ACCU + h(i) x(n-i)
Retourner ACCU
x(n-1)
Buffer linaire
0
x(n-1) x(n)
x(n)
xtab xtab
0
Schma "tat mmoire"
Application au filtre RIF
x(n-1)
( ) ( ) ( )
=
=
1
0
N
i
i n x i b n y
2
0
1
N-2
x(n-1)
x(n-2)
x(n-N+1)
x(n)
x(n-1)
x(n-2)
x(n-N+2)
0
1
N-2
1
pour i de 0 N-1:
A A + btab[i] xtab[i]
Application au filtre RIF
184
N-2
N-1
x(n-N+1)
x(n-N)
x(n-N+2)
x(n-N+1)
x(n-N)
Mise jour du buffer
N-2
N-1
Avant insertion
de x(n)
Aprs insertion
de x(n)
Calcul
Buffer circulaire (adressage modulo)
x(n)
xtab xtab
Schma "tat mmoire"
Application au filtre RIF
x(n-N)
x(n-k+1)
x(n-N+1)
x(n-N)
x(n-1)
x(n-2)
x(n-k+1)
x(n-N+1)
x(n)
x(n-1)
x(n-2)
idx
0
1
0
1
idx
pour i de 0 N-1:
idd (idx + i)%N
A A + btab[i] xtab[idd]
Utilisation dune variable
( ) ( ) ( )
=
=
1
0
N
i
i n x i b n y
Application au filtre RIF
Calcul
idx
185
x(n-k)
Mise jour du buffer
x(n-k)
N-2
N-1
N-2
N-1
Utilisation dune variable
auxiliaire idd pour lindex
de x(n-i) dans le tableau
Plus lisible lors de la
conception de lalgorithme
permet de reprsenter
idd sur un schma
Avant insertion
de x(n)
Aprs insertion
de x(n)
Filtre RIF avec buffer circulaire en assembleur
( ) ( ) ( )
=
=
1
0
N
i
i n x i h n y
N .set 32
; adr_x+d suppos charg
dans AR2 Adresses Contenu
=0 i
dans AR2
STM #(coef)+N-1, AR3
STM #(adr_y), AR5
STM #N, BK
STM #1, AR0
RPTZ A, #N-1
i = coef h(N-1)
Adresses Contenu
i + 1 h(N-2)
i + 2 h(N-3)
i + N - 1 h(0)
k = adr_x x(n-N+d-1)
Adresses Contenu
k + d - 1 x(n-N+1)
k + d x(n)
k + N x(n-N+d)
186
RPTZ A, #N-1
MAC *AR2+0%, *AR3-, A
STH A, *AR5
i + N - 1 h(0)
Mmoire Programme
k + N x(n-N+d)
Mmoire Donnes
Rmq: les log
2
(N) bits de poids faible de adr_x
doivent tre nuls pour que ladressable
modulo *AR2%0 fonctionne
Filtre RIF en virgule fixe
Entres y(n) et sorties x(n) gnralement normalises de faon identique
Par exemple sur [-1 1] : format Q
m-1
sur m bits signs
Coefficients au format Qk, dpend du filtre
( ) ( ) ( )
=
=
1
0
N
i
i n x i h n y
Coefficients au format Qk, dpend du filtre
Y = (H * X) >> k
187
Y = (H * X) >> k
Q
m-1+k
Q
k
Q
m-1
Q
m-1
Q
m-1
Saturation pour un filtre RIF
( ) ( ) ( )
=
=
1
0
N
i
i n x i h n y
m bits m bits m bits
max max
) ( x Nh n y
Sign
) ( log
max 2
x m =
) ( log ' h m =
m bits m bits m bits
Non-sign
1 ) ( log
max 2
+ = x m
1 ) ( log ' + = h m
(Pire cas sur x et h)
188
) ( log '
max 2
h m =
' '
max
2
m
y =
) ( log ' ' '
2
N m m m + + =
1 ) ( log '
max 2
+ = h m
1 ' '
max
2
=
m
y
) ( log 1 ' ' '
2
N m m m + + =
Bornes sur la saturation
Lorsque le filtre h est connu, on peut tre plus prcis
( ) ( )
<
1 N
x i h n y ( ) ( ) ( )
=
1 N
i n x i h n y
Ce qui correspond
( ) ( )
=
<
0
max
i
x i h n y
(
(
(
(
+ =
) ] [ ( log ' '
2
i
i H m m
en notant H[i] lentier correspondant au codage Q
k
sur m bits de h(i)
( ) ( ) ( )
=
=
0 i
i n x i h n y
189
=
sinon
0 ) ( si 1 -
) (
max
max
x
n h x
n x
Cette borne est atteinte pour
un signal spcifique x :
en notant H[i] lentier correspondant au codage Q
k
sur m bits de h(i)
Compromis prcision/saturation (1)
T = 0
pour i=0..N-1
Calcul brut
Exemple:
H et X au format Q
7
sign sur 8 bits
pour i=0..N-1
T = T+(H[i]*X[i])
Y = T >> k
T format Q
k+m-1
sur m bits
Y format Q
m-1
sur m bits
H X
T au format Q
14
sur 16 bits
T = T + H*B
Q
k
Q
m-1
16+G bits
190
Y au format Q
7
sur 8 bits
Y = T >> 7
Q
m-1
Ncessit de bits de garde
si filtre de taille importante.
G bits
Perte de prcision Saturation
Compromis prcision/saturation (2)
T = 0
pour i=0..N-1
Dcalage ds les calculs intermdiaires
Exemple:
H et X au format Q
7
sign sur 8 bits
pour i=0..N-1
T = T+((H[i]*X[i]) >> p)
Y = T >> (k-p)
H X
T au format Q
10
sur 16 bits
T = T + (H*B)>>3
Q
k
Q
m-1
Perte de prcision sur les rsultats
intermdiaires, mais pas de risque
de saturation ce niveau
p=3
191
Y au format Q
7
sur 8 bits
Y = T >> (7-3)
Q
m-1
de saturation ce niveau
Pas de saturation si filtre bien choisi
en fonction du type de signal
Filtres RII
Structures de filtres
192
Dcomposition en lments simples
Problmes de quantification
Filtre RII
Fonction de transfert rationnelle
1 Q
1 1 Q Q
=
+
= =
1
1
1
0
1
) (
) (
) (
P
k
k
k
Q
i
i
i
z a
z b
z A
z B
z H
( )
=
=
=
1
0
1
0
1
0
1
Q
i
i
Q
i
i
i
z z b z b
( )
=
=
= +
1
0
1
1
1
1 1
P
i
i
P
i
i
i
z p z a
Zros z
i
Ples p
i
193
Equation aux diffrences
=
=
=
1
1
1
0
P
k
k n k
Q
i
i n i n
y a x b y
Ples p
i
Forme directe I (ND)
z
-1
z
-1
b
0
x
n y
n ) (
1
) ( ) (
z A
z B z H =
=
=
|
|
\
|
=
1
1
1
0
Q
k
k n k
Q
i
i n i n
y a x b y
z
-1
z
-1
z
-1
z
-1
z
-1
z
-1
b
1
b
2
b
3
Forme non canonique
-a
1
-a
2
-a
3
194
z
-1
z
-1
Forme non canonique
Ncessite Q+P mmoires
Q pour les x(n-i)
P pour les y(n-k)
Forme directe I (ND)
-a
Q-1
B(z) 1/A(z)
b
Q-1
Forme directe II (DN)
z
-1
b
0
y
n
) (
) (
1
) ( z B
z A
z H =
x
n
w
n
z
-1
z
-1
z
-1
b
1
b
2
b
3
-a
1
-a
2
-a
3
=
=
1
0
Q
i
i n i n
w b y
=
=
1
1
Q
k
k n k n n
w a x w
195
z
-1
b
Q-1
-a
Q-1
Forme canonique
Ncessite max(Q,P) mmoires
Risque accru de dpassement au
niveau de w(n) car filtre rcursif
1/A(z) appliqu en premier
Forme directe II (DN)
1/A(z) B(z)
Transposition de la structure du filtre
x
n
z
-1
w
n
b
0 y
n
b
0 x
n
y
n
-a
1
-a
2
z
-1
z
-1
b
1
b
2
b
2
b
1
z
-1
z
-1
Forme directe II Forme directe II transpose
-a
1
-a
2
196
2 2 1 1 0
+ + =
n n n n
w b w b w b y
2 2 1 1
=
n n n n
w a w a x w
2 2 1 1
2 2 1 1 0
+ + =
n n
n n n n
y a y a
x b x b x b y
Bilan structures RII
Formes II et II transpose
Canoniques en nombre de retards
Formes I et II transpose:
Partie non rcursive applique en premier
z
-1
z
-1
b
1
b
0
x
n y
n
-a
1
x
n
b
0
z
-1
y
n
z
-1
b
b
0
-a
y
n
x
n
w
n
Partie non rcursive applique en premier
Limite les saturations dues aux rsonnances dans
la partie rcursive
Forme II transpose:
Potentielle perte de prcision chaque retard
z
-1
z
-1
b
2
-a
2
Forme directe I
197
b
2
-a
1
-a
2
b
1
z
-1
z
-1
z
-1
z
-1
b
1
b
2
-a
1
-a
2
Forme directe II
Forme directe II transpose
Dcomposition dun filtre RII
en sections du deuxime ordre
choisies pour leur stabilit et robustesse
coefficients rels (racines conjugues)
Structure parallle
2
2
1
1
1
1 0
1
+ ++ + + ++ +
+ ++ +
z a z a
z b b
x y
Structure cascade
c
0
2 1
2
2
1
1 0
1
+ ++ + + ++ +
+ ++ + + ++ +
z a z a
z b z b b
2 1
2
2
1
1 0
1
+ ++ + + ++ +
+ ++ + + ++ +
z a z a
z b z b b
x
n
y
n
198
2
2
1
1
1
1 0
1
+ ++ + + ++ +
+ ++ +
z a z a
z b b
x
n
y
n
Expansion partielle
= == =
+ ++ + + ++ +
+ ++ +
+ ++ + = == =
1
0
2
2
1
1
1
1 0
0
1 ) (
) (
N
i
i i
i i
z a z a
z b b
c
z A
z B
2 1
1 + ++ + + ++ + z a z a
2 1
1 + ++ + + ++ + z a z a
Factorisation
= == =
+ ++ + + ++ +
+ ++ + + ++ +
= == =
1
0
2
2
1
1
2
2
1
1
0
1
1
) (
) (
N
i
i i
i i
z a z a
z b z b
b
z A
z B
Dcomposition en cascade
s
0
s
1
s
2
s
3
x(n)
y(n)
H
1
(z) H
2
(z) H
3
(z)
s
0
s
1
s
2
s
3
x(n)
y(n)
) ( ) ( ) (
1
1
) (
) (
3 2 1 0
1
0
2
2
1
1
2
2
1
1
0
z H z H z H b
z a z a
z b z b
b
z A
z B
N
i
i i
i i
=
+ +
+ +
=
=
199
2
2
1
1
2
2
1
1
1
1
) (
+ +
+ +
=
z a z a
z b z b
z H
i i
i i
i
avec : avec : et et
0 3 2 1 0
b s s s s =
Exemple
Pour les spcifications suivantes (f
s
=16kHz):
Lapproximation de Chebyshev ncessite un filtre Lapproximation de Chebyshev ncessite un filtre
dordre 6 :
200
[N,Wn]=CHEB2ORD(1800/8000,4000/8000,0.01,50);
[B,A]=CHEBY2(N,50,Wn)
Exemple
B = [ 0.0276 0.0685 0.1194 0.1392 0.1194 0.0685 0.0276 ]
Coefficients:
A = [ 1.0000 -1.5044 1.7003 -0.9512 0.3933 -0.0764 0.0085 ]
Fonction de transfert: freqz(B,A)
201
Exemple : dcomposition en cascade
Fonction de transfert: freqz(B,A)
Ples et zros: zplane(A,B)
1
2
3
symtrie
Appariement :
Les ples conjugus les plus proches du cercle unit sont apparis aux zros
les plus proches. On recommence avec les deuximes plus proches et ainsi de
suite.
Ce choix maximise la stabilit de chaque section
202
Exemple : dcomposition en cascade
[SOS,G]=tf2sos(B,A);
1.0000 1.7489 1.0000 1.0000 -0.2831 0.0461
1.0000 0.6667 1.0000 1.0000 -0.4695 0.2687 SOS = B2
B1
A2
A1
G = 0.0276
-40
-20
0
20
H1
H2
H3
H
1.0000 0.6667 1.0000 1.0000 -0.4695 0.2687
1.0000 0.0693 1.0000 1.0000 -0.7518 0.6868
B3 A3
SOS = B2 A2 G = 0.0276
2 1
2 1
1
0461 . 0 2831 . 0 1
7489 . 1 1
) (
+
+ +
=
z z
z z
z H
2 1
6667 . 0 1
+ + z z
Fonctions de transfert: freqz(B1,A1)
203
0 1000 2000 3000 4000 5000 6000 7000 8000
-120
-100
-80
-60
-40
2 1
2 1
2
2687 . 0 4695 . 0 1
6667 . 0 1
) (
+
+ +
=
z z
z z
z H
2 1
2 1
3
6868 . 0 7518 . 0 1
0693 . 0 1
) (
+
+ +
=
z z
z z
z H
0276 . 0
0
= b
Filtrage en virgule fixe
Quantification des coefficients
Quantification des signaux
204
Erreur de quantification des coefficients
z
-1
b
b
0
-a
y
n
x
n
a a a + =
z
z
-1
z
-1
b
1
b
2
b
3
-a
1
-a
2
-a
3
k k k
a a a + =
k k k
b b b + =
205
z
-1
b
Q-1
-a
Q-1
Forme directe II
Quantification dun coef :
a
q
= round(a*q)/q
avec un pas de quantification q=2
-k
Quantification des coefficients
k k k
a a a + ++ + = == =
=
+
= =
P
k
Q
i
i
i
z b
z A
z B
z H
0
) (
) (
) (
Le dnominateur quantifi devient :
Plus le degr du polynme est lev, plus les ples et
k k k
( ) ( )
=
=
= + =
1
1
1
1
1
1 1
Q
l
l
Q
k
k
k
z p z a z A
=
+
k
k
k
z a
z A
1
1
) (
206
Plus le degr du polynme est lev, plus les ples et
les zros seront perturbs modifiant ainsi la fonction
de transfert
Il est plus robuste de dcomposer le filtre en sections
dordre plus faible
Effets de la quantification (1)
207
Fonction de transfert avec coefficients quantifis
(Structure directe)
Effets de la quantification (2)
208
Fonction de transfert avec
coefficients quantifis
(Structure cascade de
sections du 2
nd
ordre)
Quantification et saturation sur les donnes
Apparat quand on tronque les donnes de laccumulateur pour les
stocker en mmoire (bruit de quantification e
n
)
Forme Directe II
Une source de bruit
-a
1
x
n
b
1
b
2
z
-1
y
n
e
n
z
-1
b
1
b
0
-a
1
y
n
x
n
e
n
Forme Directe II Transpose
Deux sources de bruit
209
b
2
-a
2
z
-1
z
-1
b
2
-a
2
Une seule source de bruit qui est de plus filtre
Mais application des ples du filtre en premier
=> risques de saturation sur w
n
Application des zros du filtre en premier
=> filtrage des frquences susceptibles
davoir un large gain au niveau des ples
Cycles limites sur filtres rcursifs
z
-1
g
x(n) y(n) y(n) = x(n) + g . y(n-1)
z
g
Y = X + ((G * Y + 1) >> 2);
Exemple pour G en Q2 et X et Y entiers
Division par 4
avec arrondi au plus proche voisin
Pour g=0.75, G=3, Y(0)=3 et X(n) nul
Avec arrondi
Y(0)=3
Y(1)=2
Sans quantification :
y(0)=3
y(1)=2.25
210
Y(1)=2
Y(2)=1
Y(3)=1
Y(4)=1
Y(5)=1
Y(6)=1
Y(7)=1
Reste bloqu 1
y(1)=2.25
y(2)=1.6875
y(3)=1.2656
y(4)=0.9492
y(5)=0.7119
y(6)=0.5339
y(7)=0.4004
Tend vers 0
((3 * 1 + 1) >> 2) == 1
Gestion de la saturation (1)
Signal bande troite
(proche dune sinusode pure de frquence f0) (proche dune sinusode pure de frquence f0)
On a alors la borne
max
) ( ) ( x f H n y
) ( ) ( ) (
0
f X f H f Y
avec
211
max
) ( max arg ) ( f H f H
f
=
=
= =
e
f
f
e
x
df f X
f
f X
0
2
2
2
2
) (
1
) (
y
y
y
max
=
Saturation sur les rsultats intermdiaires
z
-1
b
0
y
n
x
n
w
n
Afin dviter la saturation lors du
stockage de w
n
, ajout de facteurs
dchelles:
s en entre
z
-1
z
-1
b
1
b
2
-a
1
-a
2
s en entre
1/s en sortie
Signal bande troite, utilisation de la
norme L
:
Signal bande large, utilisation de la
norme L :
=
) ( / 1
1
f A
s
b
0
/ s
y x
w
n
s
213
Signal bande large, utilisation de la
norme L
2
:
2
) ( / 1
1
'
f A
s = z
-1
z
-1
b
1
/ s
b
2
/ s
-a
1
-a
2
y
n
x
n
Vue densemble
: bruit de quantification et risque de saturation
214
2 1 0
0
3
b
= == =
( (( ( ) )) )
= == =
f A
0
0
/ 1
1
( (( ( ) )) ) ( (( ( ) )) ) ( (( ( ) )) ) ( (( ( ) )) )
= == =
f A f A f B
1 0 0 0
1
/
1
( (( ( ) )) ) ( (( ( ) )) ) ( (( ( ) )) ) ( (( ( ) )) ) ( (( ( ) )) ) ( (( ( ) )) )
= == =
f A f A f A f B f B
2 1 0 1 0 1 0
2
/
1
Bruit en sortie
La puissance du bruit en sortie est :
= == =
e
F
e
e o
df f H f H f H
F
0
2
2
2
1
2
0
2
3
2
2
2
1
2 2
) ( ) ( ) (
1
+ ++ +
e
F
e
e
df f H f H
F
0
2
2
2
1
2
3
2
2
2
) ( ) (
1
+ ++ +
e
F
e
e
df f H
F
0
2
2
2
3
2
) (
1
Bruit du premier tage
Bruit du deuxime tage
Bruit du troisime tage
215
Le facteur dchelle attnue le signal, mais pas le bruit de
quantification, il faut donc le choisir le plus lev possible,
sous la contrainte de la saturation.
Calcul du facteur dchelle
[SOS,G]=tf2sos(B,A);
B = [ 0.0276 0.0685 0.1194 0.1392 0.1194 0.0685 0.0276 ]
A = [ 1.0000 -1.5044 1.7003 -0.9512 0.3933 -0.0764 0.0085 ]
1.0000 1.7489 1.0000 1.0000 -0.2831 0.0461
1.0000 0.6667 1.0000 1.0000 -0.4695 0.2687
1.0000 0.0693 1.0000 1.0000 -0.7518 0.6868
B3 A3
SOS = B2
B1
A2
A1
G = 0.0276
Dcomposition G=s
0
s
1
s
2
s
3
non fournie choix du concepteur
[SOS,G]=tf2sos(B,A);
216
H
1
(z) H
2
(z) H
3
(z)
s
0
s
1
s
2
s
3
x(n)
y(n)
Facteurs dchelle intgrs aux filtres
[SOS,G]=tf2sos(B,A,up,two);
B = [ 0.0276 0.0685 0.1194 0.1392 0.1194 0.0685 0.0276 ]
A = [ 1.0000 -1.5044 1.7003 -0.9512 0.3933 -0.0764 0.0085 ]
[SOS,G]=tf2sos(B,A,up,two);
0.2776 0.4854 0.2776 1.0000 -0.2831 0.0461
0.2681 0.1787 0.2681 1.0000 -0.4695 0.2687
0.3851 0.0267 0.3851 1.0000 -0.7518 0.6868
B3 A3
SOS = B2
B1
A2
A1
G = 0.9617
Les facteurs dchelle s
1
, s
2
, s
3
sont dj intgrs aux coefficients B
Le G calcul correspond s
0
0.0276 = 0.9617 0.2776 0.2681 0.3851
217
H
1
(z) H
2
(z) H
3
(z)
G
x(n)
y(n)
0.0276 = 0.9617 0.2776 0.2681 0.3851
Codage Qk des coefficients dune cellule RII
Pour des sections du second ordre,
A(z) et B(z) peuvent scrire:
( (( ( ) )) )
2 2 1
cos 2 1
+ ++ + z r z r
Dnominateur: pour la stabilit |r|<1, donc les coefficients
sont dans [-2,2].
Numrateur: en utilisant les prototypes classiques
(Butterworth, Chebychev, Elliptique) les zros sont sur le
cercle unit:
|r|=1 les coefficients sont dans [-2,2].
=Codage Q14 sur 16 bits OK
Sur lexemple prcdent, Q15 convient aussi
(tous les coefficients sont entre -1 et 1)
218
Codage Qk des coefficients
0.2776 0.4854 0.2776 1.0000 -0.2831 0.0461
0.2681 0.1787 0.2681 1.0000 -0.4695 0.2687 SOS =
B
G = 0.9617
A
0.2681 0.1787 0.2681 1.0000 -0.4695 0.2687
0.3851 0.0267 0.3851 1.0000 -0.7518 0.6868
SOS =
SOSq = round( SOS / 2^15 );
Gq = round( G / 2^15 );
% plus test de saturation
9095 15906 9095 32767 -9277 1511
8786 5857 8786 32767 -15385 8803 SOSq =
Gq = 31512
219
8786 5857 8786 32767 -15385 8803
12619 875 12619 32767 -24634 22505
SOSq =
Attention la saturation:
le plus grand entier sign en Q15 est 32767
et non pas 32768
Conclusion
Filtres RIF
Structure transverse: buffers linaires et circulaires
Implmentation virgule fixe Implmentation virgule fixe
Filtres RII
Structures : forme I, II, II transpose
Dcomposition cascade
Quantification des coefficients
Perturbation des ples et des zros Perturbation des ples et des zros
Quantification et saturation des signaux
Facteurs dchelle
Choix des facteurs dchelle
220
Annexes Annexes
221
Bibliographie
A.Bateman, I.Paterson-Stephens. The DSP
handbook. Prentice Hall. handbook. Prentice Hall.
G.Baudoin, F.Virolleau. Les DSP - Famille
TMS320C54x - Dveloppement d'applications.
Dunod.
222
Ressources en ligne
Ressources gnrales sur les DSP
www.bdti.com www.bdti.com
www.insidedsp.com
Constructeurs
dspvillage.ti.com
www.analog.com/processors www.analog.com/processors
www.freescale.com
www.starcore-dsp.com
223