Vous êtes sur la page 1sur 223

Traitement du signal

sur processeurs DSP


Rmi Mgret
ENSEIRB 2009-10
sur processeurs DSP
1
Plan
Gnralits
Architecture des DSP Architecture des DSP
Dveloppement pour un DSP
Reprsentation numrique du signal
Mise en uvre de filtres
2
Gnralits sur Gnralits sur
les processeurs DSP
3
DSP: une introduction
Quel est le contexte dutilisation du traitement
numrique du signal (TNS) ? numrique du signal (TNS) ?
De quelles solutions dispose-t-on pour
effectuer ce travail ?
Quelle est la spcificit dun processeur DSP
(Digital Signal Processor) ?
4
Chane de Traitement Numrique
Signal original
Grandeur physique
Capteur
Mem
fs fs
G
Adaptation du
signal dentre
Gain + Dmodulation
Signal
Trait
Signal analogique
5
Filtre
anti-repliement
Echantillonage Echantillonage
CAN CNA
Filtre de
lissage
DSP
Ports
E/S
Quantification Quantification
Reconstruction Reconstruction
du signal du signal
Signal analogique
Signal numrique Signal numrique
Chane de Traitement Numrique (2)
Mem
calcul
Signaux analogiques
(RF, capteur physique,
microphone)
DSP
Ports
E/S
Adapteur
Analogique /
Numrique
Dmodulation analogique
gain, chantillonnage,
quantification
Adapteur
Adapteur
Numrique /
Analogique
Adapteur
Modulation analogique
CNA, amplification
Calculs
numriques
6
Adapteur
Numrique /
Numrique
Transmission depuis un module numrique :
coprocessing, acquisition (capteur CCD)
Traduction de protocole
Adapteur
Numrique /
Numrique
Le cahier des charges
Traitement temps rel
Latence maximale autorise entre larrive dune donne
et la disponibilit du rsultat du calcul correspondant. et la disponibilit du rsultat du calcul correspondant.
Dbits de donnes important
Signaux numriques = quantit importante de donnes
transmises squentiellement
Charge de calcul importante
Convolution, FFT
Charge de calcul = Dbit Complexit du calcul Charge de calcul = Dbit Complexit du calcul
Matrise de la prcision des calculs
Traitements rptitifs
7
Oprations classiques en TNS
MAC : multiplication-accumulation
acc acc + b
i
. x
i
acc acc + b
i
. x
i
Filtres rponse impulsionelle finie (RIF):

=
=
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

Etat du pipeline avec prdiction que B1 :


72
F
D D1 D2 D3 D4 ! D10 D11
R R1 R2 R3 ! ! R10
X X1 X2 ! ! !
F
D D1 D2 D3 D4 D5 D6
R R1 R2 R3 R4 R5 R6
X X1 X2 X3 X4 X5
Vidange du pipeline:
Perte de 3 cycles
Evaluation du prdicat (B==1)
=> rupture de squence
Evaluation du prdicat (B==1)
=> pas de rupture
Exemple de conflit d'accs mmoire
Programmes et Donnes dans la mme mmoire 1 accs par cycle
t1 t2 t3 t4 t5 t6 t7 t8
EConflit pour laccs mmoire entre Fetch et Read
ELes lectures de donnes R1/R2 empchent les chargements d'instruction F3/F4
ERductions des performances d'au moins 50%
Fetch F1 F2 conflit conflit F3 F4 ! !
Decode D1 D2 ! ! D3 D4 !
Read R1 R2 ! ! R3 R4
Execute X1 X2 ! ! X3
8 8
ERductions des performances d'au moins 50%
EProblme rgl si
EMmoire multi-accs
EProgrammes et Donnes dans des mmoires diffrentes (ou multi-bloc)
Effets du pipeline lors du dbogage
Code excuter :
1: A=1
2: B=1
Watch Window
A 1
B 1
C 1
La flche indique la position du PC
Plusieurs cycles sont ncessaires 2: B=1
3: C=1
NOP
10: A=2
11: B=2
12: C=2
13: D=2
14: E=2

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

Compression du code machine


91
Jazz D4
http://www.improvsys.com/products/JazzDSP/Jazz_DSP.pdf
Bilan approches SIMD et MIMD
Augmentation des performances
Par augmentation du paralllisme
Ncessaire pour les applications exigeantes
Vido, TV numrique, multimdia, cartes graphiques
Tlphonie 3G et plus
Imagerie mdicale, radar
Ncessitent une optimisation spcifique
Il faut que lalgorithme sy prte
SIMD => Vectorisation des calculs
MIMD => Optimisation de lutilisation des diffrentes units
Processeurs gnriques avec fonctionnalits SIMD DSP Processeurs gnriques avec fonctionnalits SIMD DSP
Certains processeurs peuvent surpasser les DSP en puissance brute
Filtre RIF: Pentium 1.3GHz plus rapide quun C67xx 225MHz
Mais moins bons pour :
la consommation lectrique, la gestion des entres-sorties, le prix
92
Puces multi-processeurs
Multi-curs
Nombre de curs x4 => Performances x4 ??? Nombre de curs x4 => Performances x4 ???
Attention la limitation au niveau des communications
Flux de donnes avec la mmoire et lextrieur
Echanges de donnes entre les curs
La programmation doit explicitement prendre en compte les
multiples curs
Puces hybrides
Processeur gnrique (Pilotage du systme)
+ DSP (Traitement du Signal)
Exemple: tlphone portable
GPP = gestion du clavier, de laffichage, du rseau
DSP = compression audio, communication numrique
93
Processeurs DSP conventionnels multi-curs
Gravure sur la mme
puce de deux curs puce de deux curs
DSP indpendants
Communication entre
les deux
Mmoire partage
Interface FIFO Interface FIFO
94 Architecture du C5421
Shared memory
two-way RAM : permet l'accs
simultan la mmoire par les
deux curs DSP, par exemple
pour l'excution parallle du mme
programme
DSP System on a Chip (DSP SoC)
ARM+ DSP + modules vido
Spcialis traitement
vido/multimdia
Encodage/dcodage matriel Encodage/dcodage matriel
temps-rel
Outils de dveloppement
Linux embarqu
Librairies de codecs multimdia
logiciels adapts
Exemples
Texas Instruments: DaVinci
DM335 : ARM+coprocesseur DM335 : ARM+coprocesseur
MPG4+vido
DM6437: DSP+vido
DM644x, DM646x :
ARM+DSP+vido
95
Processeur Cell (Sony/Toshiba/IBM)
CBEA = Cell Broadband Engine Architecture
Paralllisme
8 SPE indpendants en
parallle
Capacits SIMD du PPE Capacits SIMD du PPE
et des SPE
Haut-Dbit
Frquence dhorloge
leve / architecture
simple (3.2GHz)
Bus dinterconnexion
trs haut-dbit (EIB)
Usage intensif de
transferts DMA
asynchrones
Programmation
Extensions vectorielles
au Langage C
SDK base sur outils
GNU/Linux
96
1 PPE
(Power Processor Element)
64 bits PowerPC
Contrleur gnral
8 SPE
(Synergistic Processor Elements)
Calcul vectoris sur mots de 128 bits
Possdent une mmoire locale rapide
Image: http://www-128.ibm.com/developerworks/power/library/pa-fpfeib/
Introduction to the Cell multiprocessor:
http://www.research.ibm.com/journal/rd/494/kahle.html
Dveloppement pour
la plateforme DSP la plateforme DSP
Texas Instruments
Outils de dveloppement Outils de dveloppement
Organisation de la mmoire
97
Carte de dveloppement (DSK 5416)
Mmoire
externe
Plateforme de
Protocole JTAG
sur lien USB
(CPLD)
ROM
SARAM
DARAM
Mmoire
interne
Plateforme de
dveloppement
Processeur
DSP
98
DARAM
source : "TMS320VC5416 DSK Reference Technical", Spectrum Digital
Carte DSK
Dveloppement pour processeur DSP
Mise au point de l algorithme
Prototypage, simulation haut-niveau
Matlab Matlab
Langage C sur PC
Implmentation DSP
Dveloppement sur carte d'valuation
Langage C
Cartes EVM, SDK
Noyau temps-rel (DSP/BIOS)
Optimisation des parties critiques
Assembleur Assembleur
Outils de dbogage
Simulateur
mulateur
Boundary scan JTAG
Communication temps-rel avec un PC hte
99
Dveloppement pour un DSP
*.c
Compilateur
C
Outils de
conception
*.asm
Assembleur
*.lst *.obj
Linker
*.map
*.cmd
IDE
*.asm
Editeur
de Texte
*.out
100
- Simulateur
- DSP
*.hex
Chargement
sur la cible
C vs. assembleur
Langage C
Langage de plus haut-niveau
Plus rapide coder
Assembleur
Langage bas-niveau
Fastidieux Plus rapide coder
Meilleure portabilit
Code machine gnr moins
efficace
Malgr loptimisation par le
compilateur
Outils de dveloppement
Noyau temps-rel
(DSP/BIOS)
Fastidieux
Jeux dinstructions
complexes et irrguliers
Spcifique chaque
constructeur
Plus puissant
Accs direct certains
registres inconnus du C
Instructions spcifiques DSP
(DSP/BIOS)
Configuration de la carte
Librairies de calculs
optimises (DSPLIB)

Utile pour loptimisation


...ponctuellement sur les
fonctions identifies comme
critiques
101
Environnement Intgr de Dveloppement (Integrated
Development Environment : IDE)
102
Vue synoptique des modules utiles
Dsplib
User Application
Logiciel applicatif
CSL
DSP/BIOS
Kernel/Scheduler
Dsplib
Imglib
BSL
User Application
Abstraction du matriel
et systme dexploitation
Logiciel applicatif
Drivers
103
Carte DSK
USB/
JTAG
DSP CODEC
LED
Boutons
CPU Timer EMIF McBSP
Matriel
Support Libraries (CSL/BSL)
Abstraction du matriel travers une API logicielle
Amliore la portabilit
C54x DSP
Modules
CHIP
Chip Support Library (CSL)
Bibliothque facilitant l'utilisation des priphriques
internes du DSP
DMA, BSP, IRQ
Mthodes standards d'accs aux priphriques
Accessible depuis le langage C
Board Support Library (BSL)
CHIP
DAA
DAT
DMA
EBUS
GPIO
HPI
IRQ
MCBSP
Board Support Library (BSL)
Bibliothque facilitant lutilisation des priphriques sur
la carte DSK
Switches, LEDS
104
MCBSP
PLL
PWR
UART
WDTIM
Systme temps-rel DSP/BIOS
Noyau temps-rel
Ordonnanceur temps-rel
Gestion multi-threads premptive Gestion multi-threads premptive
Outils d'analyse temps-rel
Dbogage sans interruption de l'excution
Profiling, vision des threads
Intgration avec
Real-time data exchange (RTDX) Real-time data exchange (RTDX)
Communication hteDSP pendant l'excution
Chip Support Library (CSL)
105
Stratification des traitements sous DSP/BIOS
Interruptions matrielles
Hard Real-time
1st-TIER
Traitement par chantillon
Raction la microseconde
Interruptions logicielles
Multi-tche
2nd-TIER
Traitement par blocs
Raction la milliseconde
Raction la microseconde
Traitements ordonnancs
Excution concurrente
106
Multi-tche
Tche de fond (idle)
Soft Real-time
Excution concurrente
S'il reste du temps
Proprits des systmes temps-rel
Pilot par vnements
Synchrones (chronomtre)
Asynchrones (interruptions des E/S) Asynchrones (interruptions des E/S)
Contraint dans le temps
Contraintes dures (deadlines critiques)
Contraintes souples (deadlines non critiques)
Concurrence de l'excution
Plusieurs traitements en parallle
Ncessite un ordonnancement
multi-tches (plusieurs traitements la fois) multi-tches (plusieurs traitements la fois)
premptif (toute tche peut tre interrompue par une tche plus
prioritaire)
Dterministe et fiable
Comportement du systme prdictible
107
Librairies spcialises (DSPLIB, IMGLIB)
Librairie dj optimise
Traitement du signal ou des images
Dj programmes Dj programmes
Optimises
Utilisables depuis le langage C
Fonctionnalits de base
FFT
Filtrage Filtrage
Mathmatiques et trigonomtrie
Calcul matriciel
108
Outils de dbogage
Type doutils
Emulateur
Communique avec le DSP grande
vitesse
Emulateur
ou
Contrleur JTAG
IDE
DSP
vitesse
Capable de simuler/enregistrer en
temps-rel ltat interne exact du
DSP
Boundary-scan (JTAG)
Protocole intgr au sein du
processeur
Interrompt le DSP pour accder
linformation
Oprations
Interruption et relance de lexcution
Chargement du code
Rcupration des donnes
depuis la mmoire du DSP
Dfinition de breakpoints
et modification des variables
Chargement du code
Breakpoints
Accs en lecture/criture
Visualisation et modification du
contenu mmoire
Registres internes
109
Boundary Scan (JTAG) vs In-Circuit Emulator (ICE)
Emulateur ICE
Gestion avance temps-rel
Emulateur JTAG Externe
(GAO XDS510PP JTAG Scan Path)
www.gaotek.com
110
http://www.embedded-computing.com/products/product_guide/emulators/index.shtml
Gestion avance temps-rel
(trace, dtection dvnements complexes,
statistiques)
(Lauterbach TRACE32-ICE)
Contrleur JTAG intgr la carte
(DSK C5416)
Image: http://www.logic-instrument.com/gamme-33.html
Affichage du code dsassembl
#define N 256
short inputData[N];
short outputData[N];
void toto() void toto()
{
int i;
for (i=0; i<N; i++)
{
outputData[i] = inputData[i];
}
}
111
Compilation et dition des liens
puis affichage du code dsassembl
Mixed Source/ASM
Organisation mmoire
112
Structuration hirarchique de la mmoire
Carte mmoire
Carte mmoire physique
Associe chaque adresse une connexion vers une mmoire physique
Configuration matrielle statique spcifique chaque processeur Configuration matrielle statique spcifique chaque processeur
Configurable dans une certaine mesure (MP/MC, DROM, OVLY)
Carte mmoire logique
Blocs dadresses logiques nomms
Position et taille dfinies statiquement
Doit tre compatible avec la carte physique
Sur architecture Harvard, attention bien diffrencier les espaces dadresses
donnes et programme
Section relogeable
A lintrieur dun bloc logique A lintrieur dun bloc logique
Taille dcide lors de ldition des liens, en fonction de son contenu
Variable / Portion de code
A lintrieur dune section
Position dans la section dcide lors de ldition des liens
113
Architecture mmoire logique et physique
DSP
Espace
Vue logique simplifie
de larchitecture Harvard
Vue physique
ROM
SARAM
DARAM
Mmoire
interne
CPU
SRAM
Mmoire
externe
Bus Bus
Mmoire
Programme
CPU
Espace
dadresses
programme
Espace
dadresses
donnes
Mmoire
Donnes
114
Bus
programme
Bus
donnes
Chaque mmoire est physiquement cble pour ne rpondre qu
certaines adresses logiques dans chaque espace dadresses.
La carte mmoire permet de dterminer le lien entre adresses logiques et
mmoires physiques.
Carte mmoire Prog et Data (C5416)
PROG
Registres MMR
(Accs accumulateurs et
registres de configuration)
DATA
Reserved
DARAM03
registres de configuration)
Utilis par le
DSP/BIOS
DARAM03
Overlay :
DARAM03 est
accessible par les
deux espaces
Deux espaces
mmoires distincts :
0x8000 pointe sur
deux cases
External
ROM
115
Routines
d'interruption
(gr par le DSP/BIOS)
DARAM47 accessible
uniquement par
adresses donnes
DARAM47
deux cases
physiques distinctes
Carte mmoire obtenue daprs la documentation du DSK5416 lorsque
MP/MC=0, OVLY=1, DROM=0. Dautres valeurs conduiraient des cartes diffrentes
source : "TMS320VC5416 DSK Reference Technical", Spectrum Digital
Notion de mmoire tendue (Prog)
Mmoire accessible
avec adresses 16 bits
(0x0000 0xFFFF)
Mmoire tendue,
accessible grce la pagination par le registre XPC
DARAM03
DARAM03
DARAM03 DARAM03 DARAM03
DARAM47 SARAM03
SARAM47
Reserved
116
source : "TMS320VC5416 DSK Reference Technical", Spectrum Digital
Le registre XPC permet dexcuter des fonctions dont le code
est stock en mmoire tendue, ladresse :
XPC 0x10000 + PC
Le compilateur C gre automatiquement le XPC lorsque loption
far-calls est coche.
Le fichier de commande
File_name1.obj
File_name2.obj
-o Name.out
Name.cmd
O Noms des fichiers objet
constituant lexcutable final
O Noms des fichiers de sortie
-m Name.map
MEMORY
{
PAGE 0 :
IPROG : origin = 0x7080, length = 0x0F00
VECT : origin = 0xFF80, length = 0x0080
SARAM03 : origin = 0x28000, length = 0x8000
PAGE 1 :
IDATA : origin = 0x0080, length = 0x7000
DARAM47: origin = 0x8000, length = 0x8000
O Carte mmoire :
Dfinition des blocs mmoire
statiques
O Noms des fichiers de sortie
(excutable et carte mmoire)
117
}
SECTIONS
{
.text : load = SARAM03 page0
.data : load = IDATA page1
.bss : load = IDATA page1
.coef : load = IPROG page0
}
O Positionnement des
sections dans les blocs
mmoire
Sections relogeables
Sections initialises Sections initialises
Sections non
initialises pour les
donnes
Code Variables
Code ou
constantes
Sections
nommes (par
l'utilisateur)
.sect .usect
118
Sections par
dfaut
.text .data .bss
Phase d'dition de liens
Positionnement
des sections en
mmoire (*.cmd)
SARAM03
IDATA
mmoire (*.cmd)
119
source : "TMS320C54x Assembly Language Tools User's Guide",
ref. SPRU102F, Texas Instruments
Utilisation explicite des sections
en assembleur
SECTIONS
{
Dclaration des sections dans le fichier *.cmd :
{
init: > IPROG page0
vars: > IDATA page1
results: > IDATA page1
.text: > IPROG2 page0
}
.sect "init"
Dclaration des variables dans le fichier assembleur :
init: Section initialise qui commence
120
.sect "init"
tbl .int 1,2,3
x .usect "vars",3
y .usect "result",1
.text

init: Section initialise qui commence


laddresse tbl
vars: Section non initialise de taille 3
qui commence laddresse x
result: Section non initialise de
taille 1 qui commence laddresse y
.text: Section de code
Utilisation explicite des sections
en Langage C
Pour placer un tableau ou une variable :
SECTIONS
#pragma DATA_SECTION (tbl, "init")
Pour placer une fonction (cest--dire le code machine correspondant):
Code C
Fichier *.cmd
SECTIONS
{
init: > IPROG page1
vars: > IDATA page1
results: > IDATA page1
}
#pragma DATA_SECTION (tbl, "init")
Int16 tbl[3]={1,2,3};
#pragma DATA_SECTION (x, "vars")
Int16 x[3];
#pragma DATA_SECTION (y, "results")
Int16 y;
121
Pour placer une fonction (cest--dire le code machine correspondant):
SECTIONS
{
psec: > IPROG page0
}
#pragma CODE_SECTION (increment, "psec")
Int16 increment(Int16 a) {
return a+1;
}
Code C
Fichier *.cmd
Reprsentation numrique Reprsentation numrique
du signal
Echantillonnage / Quantification Echantillonnage / Quantification
Virgule fixe, format Qk
Virgule flottante
122
Chane de Traitement Numrique
au sein dune chane analogique
Signal
dentre
Signal
Trait
Filtre
anti-repliement
CAN CNA
Filtre de
lissage
DSP
G
Echantillonage/Quantification
Reconstruction
123
Signal analogique
Signal analogique Signal numrique
Du signal analogique...
Signal Analogique Signal Analogique
Volts Volts
Valeurs continues de tension
en fonction du temps
Discrtisation en temps par
Temps Temps
Discrtisation en temps par
chantilloneur-bloqueur
frquence
Signal Discrtis en temps Signal Discrtis en temps
ff
s s
= 1 / T = 1 / T
s s
124
Temps Temps
TT
S S
Discrtisation en temps
vers le signal numrique
Restriction des instants
considrs
Signal Echantillonn Signal Echantillonn
V
a
l
e
u
r
s

c
o
n
t
i
n
u
e
s
Signal Numris Signal Numris
q
Restriction des valeurs de
magnitude possible
V
a
l
e
u
r
s

c
o
n
t
i
n
u
e
s
V
a
l
e
u
r
s

d
i
s
c
r

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 =

Lerreur de quantification est


(cart entre la valeur relle
et la valeur quantifie)
qX x =

\
=
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

Compression Quantification Expansion


) (

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 =

Dynamique sur [qX


min
, qX
max
] Dynamique sur [X
min
, X
max
]
Inteprtation binaire
Exemple : Reprsentation Q
k
non signe de x=0.1

1 2 1/2 1/4 1/8 1/16 1/32 1/64 2


-11
2
-10
2
-9
2
-8
2
-7
2
-12
En pratique, utiliser plutt
la dfinition X=round(x/q)
0 0 0 0 0 1 1 0 0 1 1
,
0 0 1

1 2 1/2 1/4 1/8 1/16 1/32 1/64 2 2 2 2


Format Q
0
sur 8 bits non signs
0 0 0 0 0 0 0 0
,
1
0

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)

Nouvelle structure du filtre


Utilisation de lookup-table (LUT)
178
Principe de la LUT
Prcalcul dune fonction
calculatoirement
y = g(x)
g(x
0
)
lut
0
k
g(x
1
)
g(x )
1
calculatoirement
complexe
Fonctions
trigonomtriques
Fonction non-linaire
(log, exp)
Forme donde ou fentre
(triangle, hamming)
y = g(x)
y = lut[m]
g(x
2
)
g(x
3
)
2
3
g(x
M-2
)
M-2
g(x
M-1
)
M-1

(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
=

Gestion de la saturation (2)


Signal bande large
On raisonne en puissance moyenne On raisonne en puissance moyenne
La probabilit de non saturation dpend du type
de signal et du facteur de charge
2 2 2
) ( ) ( ) ( f X f H f Y
y
212

=
= =
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

Vous aimerez peut-être aussi