poly-dsp-2009-10
TRANSCRIPT
-
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 surGnralits 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 originalGrandeur physique
Capteur
Memfsfs
G
Adaptation du
signal dentre
Gain + Dmodulation
Signal TraitSignal analogique
5
Filtreanti-repliement
EchantillonageEchantillonage
CAN CNAFiltre delissage
DSP
PortsE/S
QuantificationQuantification
Reconstruction Reconstruction du signaldu signal
Signal analogiqueSignal numriqueSignal numrique
-
Chane de Traitement Numrique (2)
Memcalcul
Signaux analogiques(RF, capteur physique, microphone)
DSP
PortsE/S
AdapteurAnalogique /Numrique
Dmodulation analogiquegain, chantillonnage,
quantification
Adapteur
AdapteurNumrique /Analogique
Adapteur
Modulation analogiqueCNA, amplification
Calculsnumriques
6
AdapteurNumrique / Numrique
Transmission depuis un module numrique :coprocessing, acquisition (capteur CCD)
Traduction de protocole
AdapteurNumrique /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 + bi . xi acc acc + bi . xi Filtres rponse impulsionelle finie (RIF):
=
=1
0
)()()(
P
i
inxibny
8
Filtres rponse impulsionelle infinie (RII):
=
=
=1
1
1
0
)()()()()(
Q
j
P
i
jnyjainxibny
-
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 MultipurposeConsumer 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 2007Source : 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.comwww.freescale.comAgere -> LSI, Infineonwww.analog.com
March de 7.8 Milliards de $ en 20072006-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 perWatt / Dollar / Size Wireless phones
Internet audio players
Digital still cameras
Modems
Multi Channel and Multi Function App's
Comm Infrastructure Wireless Base-stationsDSL
Performance &Best Ease-of-Use
virgule fixe 16 bits
14
Modems
Telephony
VoIP
DSL Imaging Multi-media Servers Videovirgule 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 ?
Signalanalogique
Signalanalogique
Circuit lectronique composants analogiques
17
DSPCAN CNASignalanalogique
Signalanalogique
Signalnumrique
Signalnumrique
-
Traitement Numrique vs. Analogique
Numrique AnalogiqueFixes 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 bruitEchantillonnage
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'chantillonnagePeut 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
19Image: Agilent Technologie, http://www.soccentral.com/results.asp?CatID=488&EntryID=24811
SDR Development Platform(www.lyrtech.com)
TMS320DM6446 SoC ARM+DSPVirtex-4 SX35 FPGADAC/ADCRF Module
-
Plateformes matrielles pour le Plateformes matrielles pour le
traitement numrique du signal
20
-
Solutions matrielles pour le TNS
Processeur Processeur dusage gnral Microcontrleur
Architectureprocesseur 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
Architecturespcialise
-
Exemple d'un filtre RIFArchitecture ddie (FPGA / ASIC)
x(n)
p
=
=1
0
)()()(
P
i
inxibny
b(0) b(1) b(2) b(3) b(4) b(5)
log2(p)
22
y(n)
log2(p)
Architecture systolique ddieTraitement fortement parallleEfficace pour le RIF, mais peu flexible
-
Exemple d'un filtre RIF Architecture processeur
=
=1
0
)()()(
P
i
inxibny
Mmoire
E/S
bx programmey
CPU
units de
calcul
registres
23
Architecture de type processeurTraitement squentielProgramme 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 dbitnumriques
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
Processor Pea k MIPS
ISR la t ency
Pow er Un i t Pr ice
Area Volum e
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
29Nvidia 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 intgrentdes blocs DSP
Produits rcents intgrentdes 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 limplantationdalgorithmes de traitement du signal
ASIC ASSP GPPDSPFPGA
Matriel ddi Matriel gnriqueComplexit dans le logiciel
Performance pour une application spcifiqueContraintes temps rel Flexibilit
33
Contraintes temps relContraintes de consommation
FlexibilitDlai de mise sur le march
Cot de dveloppement plus faible
-
Architecture dunArchitecture dun
processeur DSP
Accs mmoire et E/S Accs mmoire et E/S
Units du CPU
Pipelining
34
-
Architecture gnrale dun processeur
Processeur
CPUUnit decontrle
Units detraitement
Bus internes
CPU
35
Mmoireinterne
Unit deCommunication
Priphriqueset 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 contrlePriphriqueCPU 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
PriphriqueCPU
adresses
donnes
contrle
37
Haute impdance: il se dconnecte du bus
Contrle : lire / crire / haute impdance
Adresses : slection du priphriqueet dune donne en son sein
Donnes : valeur de la donne changer
-
Etapes dune opration de calcul
11
33
22
(1) Charger une instruction (Fetch)
(2) Dcoder linstruction (Decode)
MmoireCPU33
44
55
(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 BUSMmoire
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 ProgrammeMmoire 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
CPUMmoire Donnes
b[0]b[N-1]x[0]x[N-1]
Bus C
x[0]x[N-1] Bus D
Pour loprationy[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
CPUb[0]b[N-1]
Bus C
Bus Dx[0]x[N-1]
Exemple b[n] stocks dans le bloc 1, x[n] stocks dans le bloc 2
Bus C
Utilisation desressources
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 1Bloc 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
CPUMmoire Donnes
b[0]b[N-1]x[0]x[N-1]
Bus C
Bus DDARAM fonctionne 2f0
Frquence decycle f0
Le CPU rcupre cependant une donne par cycle et par bus
Bus C
Utilisation desressources
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)
46sources : "TMS320C54x DSP Functional Overview", SPRU307A, Texas Instrument"TMS320VC5416 DSK Reference Technical", Spectrum Digital
-
Cache d'instructions
DSP
Mmoire Programme+ Donnes
cachedinstructions
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 externedans une architecture Harvard
DSPMmoire 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
configurationinterruptions Buffer plein (en rception)
/ Buffer vide (en mission)
Buffer demi-plein
49
configuration
E/S
Priphriques(Port Srie, Mmoire externe)
-
DMA et buffer ping-pongpour le traitement par blocs
CAN
McBSP2 McBSP2
CNA
DSPCAN
DRR DXRCNA
DMA4 DMA5
PINGIN
PONG
PINGOUT
PONGTraitement
PINGIN1
PINGOUT
1
PONG
PINGIN3
PONG
50
PONGIN
PONGOUT
Traitement
Source: Texas Instruments C5000 DSP Teaching Kit
Buffers en mmoire Buffers en mmoire
PONGIN2
PONGOUT
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
Interruptionbuffer mi-plein
Interruptionbuffer plein
Interruptionbuffer 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
SquenceurGnration Gnration
Registres etUnits de
CPU pilotage
addr
datactrl
Squenceur
Bus
programme
Gnrationadresses P
Gnrationadresses D
Units decalcul
53
addr
datactrl
programme
Bus
donnes
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)
SquenceurGnration Gnration Units de
addr
datactrl
Squenceur
Bus
programme
Gnrationadresses P
Gnrationadresses D
Units decalcul
PCInstruction
55
addr
datactrl
programme
Bus
donnes
Mmoire P Mmoire D
-
Read/Write (lecture/criture donne)
SquenceurGnration Gnration Units de
SquenceurGnrationadresses P
Gnrationadresses D
Units decalcul
addr
datactrl
Bus
programme
ARi Donne
56
Mmoire P Mmoire D
addr
datactrl
programme
Bus
donnes
-
Diagramme bloc du TMS320C5416
D(15-0)
Program/Data RAM128K Words
Program/Data ROM16K Words
Mmoireinterne
JTAG Test/EmulationControl
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 PortInterface (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 ALUCMPS Operator
(VITERBI)
ALU
Accumulators
40-Bit ACC A
40-Bit ACC B
Multichannel BufferedSerial Port (McBSP)
Multichannel BufferedSerial Port (McBSP)
Units decalcul
ControlM
U
X
57
Ch 540-Bit ACC B
8 Auxiliary Registers
2 Addressing Units
Addressing UnitMultichannel BufferedSerial Port (McBSP)
PLL Clock Generator
S/W WaitstateGeneratorPower Management
Gnrationdadresses
EntresSorties
CPU
-
Structure interne du TMS320C54x
58
Source : Texas InstrumentsTMS320C54x DSPReference SetVol 1 : CPU and Peripherals
-
Unit de controle
Gnrationd'adressesprogramme
Gnrationd'adressesdonnes
Zero overhead looping Adressage indirect :Pr- et post-incrmentation
automatique
Bus Pprogramme
Bus C / Dlecture
59
lecturedonnes
Bus Ecrituredonnes
4 bus : Accs simultan 1 instruction + 2 oprandes + 1 criture
-
ALU
Shifter
Viterbi
Registres
60
MACViterbi
Calcul MAC en un cycle Multiplication par 2k 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
RAMR0
RAMR1
R2
R3registres et mmoire
61
R0
RAMR1
R2
R3
R3
-
Calcul dun filtre RIF en N+2 cycles
( ) ( )
=
=1
0
)(N
i
inxibnyGestion matrielle des boucles :Unit de gnration dadresses programme
A=0;
for (i=0; i 15;Unit de gnration dadresses donnes
STM #X, AR3STM #Y, AR4
RPTZ A, #N-1 (x1)MAC *AR2+,*AR3+, A (xN)
STH A, *AR4 (x1)
Equivalent ASMCode 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, AR2LD #Y, AR3
RPTZ A, #99 MAC *AR2+, *AR3+, A
int *px, *py;
px=X;py=Y;A=0;for (i=0; i
-
Adressage indirect bit-reverse
Ordre des donnes pour la FFT
x(0)
x(1)
x(2)
x(3)
x(4)
x(5)
65
Ordrebit-reverse
Ordrenaturel
Implmentation rcursive de la FFT
X(k) = TFD( x(n) )Ordrenaturel
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 toto813D PSHM 11h Sauvegarde AR1 (save-on-entry)813E FRAME -1813F SSBX SXM Manipulation de nombres signs8140 LD #100h,0,A A
-
Pipelining
68
-
Pipelining
Instructions segmentes en tages
Excution entrelace de plusieurs instructions
Exemple du TMS320C54xx :pipeline 6 tages Prefetch (P)
Incrmentation du PCinstructions 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
oprandesoprandes
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 MemPF5
-
-
-
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: Instr12: Si B==1 Alors GOTO 10:3: Instr3
10: Instr1011: Instr11
t1 t2 t3 t4 t5 t6 t7 t8
F F1 F2 F3 F4 F5 F10 F11 F12
3: Instr34: Instr45: Instr56: 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: Instr1112: 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
Conflit pour laccs mmoire entre Fetch et Read
Les lectures de donnes R1/R2 empchent les chargements d'instruction F3/F4
Rductions 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
88
Rductions des performances d'au moins 50%
Problme rgl si
Mmoire multi-accs
Programmes et Donnes dans des mmoires diffrentes (ou multi-bloc)
-
Effets du pipeline lors du dbogage
Code excuter :1: A=12: B=1
Watch WindowA 1B 1C 1
La flche indique la position du PCPlusieurs cycles sont ncessaires 2: B=1
3: C=1 NOP 10: A=211: B=212: C=213: D=214: E=2
C 1
Watch WindowA 1 ???B 1C 1
Watch WindowA 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 1C 1
D D10 D11 D12 D13 D14
R R10 R11 R12 R13 R14
X A=2 B=2 C=2 D=2 E=2Watch WindowA 2B 2C 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
MFLOPSMillion FloatingPoint Operation Per Second
Mesure le nombre doprations
arithmtiques virgule flottante que le
DSP virgule flottante peut raliser
en une secondeen une seconde
MOPSMillion Operation
Per Second
Mesure le nombre total doprations
(calcul, accs DMA, transferts, etc.) que
le DSP peut raliser en une seconde
MIPSMillion Instructions
Per Second
Mesure le nombre de codes machine
(instructions) que le DSP peut raliser
en une seconde
MMACSMillion of MAC Mesure le nombre doprations MAC
(Multiply+Accumulate) que le DSP peut
77
MBPSMega-BytesPer Second
Mesure la bande passante dun bus
particulier ou dun dispositif dE/S
MMACSper 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 dexcutionConsommation 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 40041972: Intel 80081974: 1er microcontrleur : TMS1000
1er ordinateur personnel (8008)
1980
1990
1er ordinateur personnel (8008)1979: 1er DSP single-chip : Bell Labs Mac 4
Intel 80861980: 1er DSP autonome : NEC PD77101981: IBM PC (8088)1983: 1er succs commercial pour un DSP : TMS320C101986: MIPS -> R2000, premier microprocesseur RISC commercial1989: Intel 486 (Utilisation dun pipeline)1993: Intel Pentium, PowerPC 6011996: 1er DSP VLIW : TMS320C62xx
80
2000
1996: 1er DSP VLIW : TMS320C62xx1997: Jeux dinstruction MMX, 3DNow!, Altivec1999: Pentium III (Jeu dinstruction SSE)2000: Pentium 42004: Jeu dinstruction SSE32005: Cell processor2006: Pentium Core Duo2007: TMS320DM6467 (SoC DSP+ARM Traitement Vido)
-
Historique des DSP
1e gnration 1979 Architecture Harvard
4e gnration 1992 Image et vido Processeurs faible Architecture Harvard
Multiplieur cabl
2e gnration 1985 Paralllisme Bus multiples Mmoire sur la puce
3e gnration 1988
Processeurs faible consommation
5e gnration 1996 SIMD VLIW
Plus rcemment SoC DSP
3e 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 1ADD
Donnes 1 Donnes 2
Instruction 2MUL
MIMD
InstructionADD
Donnes 1 Donnes 2
SIMD
InstructionADD
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)
InstructionADD
Donnes 1 Donnes 2
SIMD par units parallles
A [A1,A2]B [B1,B2]
Instructionpacket_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 vectorisSSE=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,pbfor (i=0; i 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 RegistresA, B
MAC
1 bus dcriture : E
MAC1 MAC24 RegistresAC0,AC3
x y x1 y x2 y
2 bus dcriture : E+F
C54x C55x
86Daprs: 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)
MACALU Shift MACALU Shift
Instruction MAC SIMD
Unit decalcul n1
Unit decalcul n2
SIMD par units parallles 64 bits
- SIMD par partage de chaque unit de traitement (comme MMX)
87
4 multiplications 16 bitsau lieu de
1 multiplication 64 bits
4 multiplications 16 bitsau 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 lmentairespar 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
89RAM
L1
Register File A
S1
A15-A0
++
M1
xD1++
-
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
Interru
pt
Contro
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 2Data Path 1
L1
Register File A
M2D2 S2 L2
Instruction Decode
Instruction Dispatch Registers
Interru
pt
Contro
lEmulation
S1
A15-A0
+ + +x+M1
xD1+
Register File BB15-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 spcifiqueIl 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
94Architecture du C5421
Shared memorytwo-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 PowerPCContrleur gnral
8 SPE(Synergistic Processor Elements)
Calcul vectoris sur mots de 128 bitsPossdent 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 DSPla plateforme DSP
Texas Instruments
Outils de dveloppement Outils de dveloppement
Organisation de la mmoire
97
-
Carte de dveloppement (DSK 5416)Mmoireexterne
Plateforme de
Protocole JTAGsur lien USB
(CPLD)ROM
SARAM
DARAM
Mmoireinterne
Plateforme de dveloppement
ProcesseurDSP
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
*.cCompilateur
C
Outils deconception
*.asm
Assembleur *.lst*.obj
Linker *.map*.cmd
IDE *.asm
Editeurde Texte
*.out
100
Simulateur DSP*.hex
Chargementsur 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
DsplibUser ApplicationLogiciel applicatif
CSLDSP/BIOSKernel/Scheduler
DsplibImglib
BSL
User Application
Abstraction du matrielet systme dexploitation
Logiciel applicatif
Drivers
103
Carte DSK
USB/JTAG DSP CODEC
LEDBoutons
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
Emulateurou
Contrleur JTAG
IDEDSP
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 donnesdepuis la mmoire du DSP
Dfinition de breakpointset 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 ICEGestion avance temps-rel
Emulateur JTAG Externe(GAO XDS510PP JTAG Scan Path)
www.gaotek.com
110http://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
-
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 simplifiede larchitecture Harvard
Vue physique
ROM
SARAM
DARAM
Mmoireinterne
CPU
SRAM Mmoireexterne
Bus Bus
Mmoire Programme
CPU
Espace dadresses programme
Espace dadresses donnes
Mmoire Donnes
114
Bus programme
Busdonnes
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 lorsqueMP/MC=0, OVLY=1, DROM=0. Dautres valeurs conduiraient des cartes diffrentessource : "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
116source : "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 Noms des fichiers objet constituant lexcutable final
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
Carte mmoire :Dfinition des blocs mmoire statiques
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
}
Positionnement des sections dans les blocs mmoire
-
Sections relogeables
Sections initialisesSections initialises Sections non initialises pour les
donnesCode VariablesCode ou constantes
Sections nommes (par l'utilisateur)
.sect .usect
118
Sections par dfaut
.text .data .bss
-
Phase d'dition de liens
Positionnementdes sections en mmoire (*.cmd)
SARAM03
IDATA
mmoire (*.cmd)
119source : "TMS320C54x Assembly Language Tools User's Guide",ref. SPRU102F, Texas Instruments
-
Utilisation explicite des sectionsen assembleur
SECTIONS{
Dclaration des sections dans le fichier *.cmd :
{init: > IPROG page0vars: > 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",3y .usect "result",1
.text
init: Section initialise qui commence laddresse tblvars: Section non initialise de taille 3 qui commence laddresse xresult: Section non initialise de taille 1 qui commence laddresse y.text: Section de code
-
Utilisation explicite des sectionsen 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 page1vars: > IDATA page1results: > 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 numriqueReprsentation numrique
du signal
Echantillonnage / Quantification Echantillonnage / Quantification
Virgule fixe, format Qk
Virgule flottante
122
-
Chane de Traitement Numriqueau sein dune chane analogique
Signaldentre
Signal Trait
Filtreanti-repliement
CAN CNAFiltre delissage
DSP
G
Echantillonage/Quantification Reconstruction
123
Signal analogique Signal analogiqueSignal numrique
-
Du signal analogique...
Signal AnalogiqueSignal Analogique
VoltsVolts Valeurs continues de tension en fonction du temps
Discrtisation en temps par
TempsTemps
Discrtisation en temps par chantilloneur-bloqueur frquence
Signal Discrtis en tempsSignal Discrtis en temps
ffss = 1 / T= 1 / Tss
124
TempsTemps
TTSSDiscrtisation en temps
-
vers le signal numrique
Restriction des instants considrs
Signal EchantillonnSignal Echantillonn
V
a
l
e
u
r
s
c
o
n
t
i
n
u
e
s
Signal NumrisSignal 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
Discrtisationen 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 AnalogiqueSpectre de Frquence du Signal Analogique| X(f) |
fc
fs 2fs 3fs0
Spectre de Frquence du Signal dEchantillonageSpectre de Frquence du Signal dEchantillonage
127
fc fs 2fs 3fs0
Spectre de Frquence du Signal EchantillonSpectre de Frquence du Signal Echantillon| Xe(f) |
-
Thorme de Shannon
Fs > 2FcFs > 2Fc| Xe(f) |
fc fs 2fs 3fs0 4fs
fc fs 2fs 3fs0 4fs 5fs
Fs = 2FcFs = 2Fc| Xe(f) |
128
fc fs 2fs 3fs0 4fs 5fs 6fs 7fs
Fs < 2FcFs < 2Fc
Repliement de spectre
| Xe(f) |
-
Effets du repliement de spectre
AmplitudeAmplitudeSignal chantillon Signal chantillon
fs > 2fcfs > 2fc
TempsTemps
129TempsTemps
SignalSignal chantillonchantillon
fsfs < 2fc< 2fc
-
La quantification
Uniforme
130
Logarithmique
-
Quantification Uniforme
Pour un pas de quantification q :
=q
xX round Entier X associ au rel x
xxe = Lerreur de quantification est (cart entre la valeur relle et la valeur quantifie)
qXx =
=q
X round
Valeur approche du rel x aprs quantification
q e
131
Erreur de granulationErreur de granulationErreur de granulationErreur de granulation Erreur de saturationErreur de saturationErreur de saturationErreur de saturationLie la prcision q Lie la dynamique [xmin, xmax]
0 1 2 3 4 5 6 7 8Temps
09
q
00 11 22 33 44 55 66 77 88Temps
xmax
99
ee
-
RSB de la quantification uniformeN bits signs
==
e
xdB
e
dB
xdBP
PPPRSB log10
Rapport signal sur bruit relatif la quantification
q
)(log2077.402.6 max10 xPNRSBdBxdB ++
Le RSB de la quantification uniformede la quantification uniformede la quantification uniformede la quantification uniforme est donc, en labsence de saturation :
2
qe
12
2qPe =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=(2xmax)2-N
132
max10xdB
En introduisant le facteur de chargefacteur de chargefacteur de chargefacteur de charge ,qui indique quelle est la dynamique utilisable par rapport la puissance du signal x
x
max=
( )+ 10log2077.402.6 NRSBdB
-
Seuil dapparition de la saturation
La saturation se produit lorsque lamplitude du signal convertir dpasse xmax ou xmin
Le RSB se dgrade trs rapidement ds quil y a saturation
Soit a lamplitude du signal il y a saturation pour a>xmax
Pour un signal carr: Px=a2 saturation 0 dBPour un signal sinusodal: Px=a2/2 saturation -3.01 dBPour un signal uniforme sur [-a, a] : Px=a2/3 saturation -4.77 dBPour un signal gaussien moyenne nulle :
133
Dynamiques typiques :X sur N bits non signs => xmin=0 et xmax=q(2N-1)X sur N bits signs en C2 => xmin=-q2
N-1 et xmax=q(2N-1-1)
a 3x (rgle des 3 sigmas) do Px a2/9 saturation -9.54 dB
-
Quantification uniforme et RSB
120Quantification uniforme 16 bits sur [-1,1]
bruit blanc gaussien
bruit blanc uniforme
saturation
dBxPx == )(log201 10maxQuantification uniforme 16 bits signs sur [-1,1]
40
60
80
100
R
S
B
(
d
B
)
bruit blanc uniforme
signal sinusoidal
signal carr
dBxdB PNRSB ++ 77.402.6
Seuil dapparition de la saturationCarr: 0 dBSinus: -3.01 dB
RSB en labsence de saturation:
134
-60 -50 -40 -30 -20 -10 0 100
20
puissance du signal (dB)
erreur de granulation
Sinus: -3.01 dBUniforme : -4.77 dBGaussien : -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
signalsignal
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 yCompression Quantification Expansion )( xQx =
135
y
)( 1 yCx =
xCompression dAmplitude
Quantification Uniforme
Expansion dAmplitude
)(xCy = )( yQy u=
)( log xQx =
( )( ))()( 1log xCQCxQ u=
-
Quantification uniforme vs logarithmique
0.5
1Signal original x
x1
x2
0.5
1Signal original x
0.5
1Signal compress y=C(x)
0 0.5 1-1
-0.5
0
0.5
1
Signal quantifi xq=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 yq=Q(y)
0.5
1
Signal quantifi xq=C-1(y
q)
136
0 0.5 1-1
-0.5
0
0.5
quantif. uniformedomaine linaire
quantif. logarithmiquedomaine linaire
quantif. uniformedomaine 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
1loi 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
( ) ( )( ) ( ) 11
;ln1
/ln1
max
maxmax +
+=
x
x
Apourxsign
A
xxAxxC
A=87.56
Pente leve bonne prcision
C(x)
137
0 0.01 0.02 0.030
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 10
x
( ) ( ) ( ) Axx
pourxsignA
xAxC
10;
ln1 max
+=
x
Pour les signaux de trs faible amplitude,quivalent une quantification uniforme de pas ulog
ln1q
A
Aq
+=
-
Quantification Uniforme 8 bitsvs. Logarithmique 8 bits
Loi A La compression limite les effets
de la granulation50Quantif ication 16 bits 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 AUniforme
( )ANRSBdB ln1log2077.402.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 100
5
10
puissance du signal (dB)
x1x2x3
Quantification uniformemeilleur RSB
Quantification logarithmiquemeilleur RSB
( )+ 10log2077.402.6 NRSBdB
-
Quantification Uniforme 12 bitsvs. 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 100
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
A1
logudBdB RSBRSB
139
( )+ 10log2077.402.6 NRSBudB
( )
+++ 1010
log log20ln1
log2077.402.6A
ANRSBdB
++
A
ANNu
ln1log20
02.6
110log
bits 4log += NNu
Lorsque A=87.56 :
-
Le codage des entiers
140
-
Reprsentation dentiers non signs
Reprsentation binaire non-signe sur bits
=1
2N
i
ibX bi = 0 ou 1 Reprsentation binaire non-signe sur N bits
=
=0
2i
ibX bi = 0 ou 1
dynamique de X : 0..(2N-1)
141
Exemple: entier en dcimal, binaire et hexadcimal
010123401
16210
16101612021202121106102
1A1101026
+=++++=+
==
-
Entiers signs : binaire dcal
Binaire DcalBinaire DcalBinaire DcalBinaire DcalEntier x cod par
Le dcalage d est gnralement gal d = -2N-1
Entier x cod parla reprsentation binaire pure de lentier positif
y=x+d
110011
00-210-1010111012113
Nombre Codage
234567y
12 1 N
D
y
n
a
m
i
q
u
e
142
001
00-410-300-2
012
N=3
12 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 signeLes autre bits, la valeur absolue de lentierLe bit de poids fort reprsente le signeLes autre bits, la valeur absolue de lentier
0011
000101002103
Nombre Codage12 1 N
Deux codes
143
11000
11-301-211-101-0000
Signe
)12( 1 N
Deux codes pour le zro
-
Entiers signs : format complment 1
Format complment 1Format complment 1Format complment 1Format complment 1Le bit de poids fort reprsente le signeNombre positif : cod comme un non-sign
ATTENTION : ne pas confondre
Format C1 et C1 dun entier
Nombre positif : cod comme un non-signNombre ngatif : cod comme le C1 de son oppos
12 1 N
Deux codes
C1(x) = (2N-1) x
avec0011
000101002103
Sign C1 CodageComplment 1 de x:
0123
Non signassoci
144Signe
Deux codes pour le zro
Implantation efficace :Implantation efficace :Implantation efficace :Implantation efficace :inversion des bitsinversion des bitsinversion des bitsinversion des bits
avec
N fois 1
2N-1 = 1111112
)12( 1 N 00110
01-311-201-111-0000
45670
-
Entiers signs : format complment 2
Format complment 2Format complment 2Format complment 2Format complment 2Le bit de poids fort reprsente le signeNombre positif : cod comme un non-sign
ATTENTION : ne pas confondre
Format C2 et C2 dun entier
Format le plus utilisNombre positif : cod comme un non-signNombre ngatif : cod comme le C2 de son oppos
12 1 NC2(x) = 2N x
Implantation efficace de lopposInversion des bits puis ajout de 1
Format le plus utilisen arithmtique binaire
Complment 2 de x :
D
y
n
a
m
i
q
u
e
0011
000101002103
Sign C2 Codage
0123
Non signassoci
145Signe
Inversion des bits puis ajout de 1
12 N
C2(x) = C1(x) + 1
D
y
n
a
m
i
q
u
e
00110
01----444411-301-211-1000
45670
-
Lien entre non-sign et sign C2
Pour une mme reprsentation binaire
],,,,[ 0121 bbbb NN L
0 12-2
-10
X entier sign C2
Y entier non-sign
=
+=
2
0
11 22
N
i
ii
NN bbX
],,,,[ 0121 bbbb NN L 2
3
4
5
67-7
-6
-5
-4
-3
-2 0 123
4
56
78910
11
12
1314
15
pour N=4 bits
Y entier non-sign
146
=
=1
0
2
N
i
iibY
NYX 2=
7-8-7
0X
12 < NY12 NY0
-
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 Qk
Dfinition :Dfinition :Dfinition :Dfinition :La reprsentation Qk du rel x est l'entier X dfini parLa reprsentation Qk du rel x est l'entier X dfini par
)2round( xX k=
Q0 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 Qk en sign et non-sign
Le format Qk peut galement tre not Q.k
-
Dynamique et prcision du format Qk
Prcision: quantification uniforme de pas qkq = 2
En pratique, on peut approximer les dynamiques par des intervalles
Dynamique:non-sign:
sign C2: [ ]kkNkN 22 ,2 11[ ]kkN 22 ,0
q = 2
151
En pratique, on peut approximer les dynamiques par des intervalles semi-ouverts: etDo les formats classiques: Dynamique sur [-1, 1[ format QN-1 sur sur sur sur N bits signsbits signsbits signsbits signs Dynamique sur [0, 1[ format QN sur sur sur sur N bits nonbits nonbits nonbits non----signssignssignssigns
[ [kN2 ,0 [ [11 2 ,2 kNkN
-
Reprsentation Qk sur 16 bits
kPrcision
q
Dynamique pour
16 bits signs
Dynamique pour
16 bits non signs
-1 2 [-65536, 65535] [0, 216-1]-1 2 [-65536, 65535] [0, 216-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 signs15 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
= xX round
xValeur relle exacte
exact
quantifi
qx /
Valeur relle exacte normalise
qXx =
Quantificationde pas q
Arrondi entier
153
x
=q
X round
Valeur relle quantifie Reprsentation entire
qXx =
Dynamique sur [qXmin, qXmax] Dynamique sur [Xmin, Xmax]
-
Inteprtation binaire
Exemple : Reprsentation Qk non signe de x=0.1
12 1/2 1/4 1/8 1/16 1/32 1/64 2-112-102-92-82-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 112 1/2 1/4 1/8 1/16 1/32 1/64 222 2
Format Q0 sur 8 bits non signs
0 00 0 0 0 0 0 ,1
0
0
=
=
x
X
Format Q sur 8 bits non signs13=X
Format Q12 sur 8 bit Saturation
154
Format Q10 sur 8 bits non signs
0 1 1 0 0 1 1 02-10
50.09960937
102
=
=
x
X
0 0 0 0 1 1 0
,
02-7Format Q7 sur 8 bits non signs
1015625.0
13
=
=
x
X
-
Choix du format Qk
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 kmax, le k maximum permettant d'viter la saturationviter la saturationviter la saturationviter la saturation, c'est dire vrifiant:
3) Toutes les valeurs k infrieures k permettent d'viter la saturation. On
maxxx
1
maxmax2 kNx
1)(log max2max += Nxk
155
3) Toutes les valeurs k infrieures kmax permettent d'viter la saturation. On choisit la valeur permettant la plus grande prcision, c'est dire kmax.4) Le pas de quantification est alors:
Dans le cas non sign, on a:
max2 kq =
max2maxkN
x Nxk += )(log max2max
-
Quantification et prcision dcimale
A titre purement indicatifA titre purement indicatifA titre purement indicatifA titre purement indicatif, il est possible de dterminer le nombre de chiffres dcimaux significatifs associ un pas de quantification.
Dkq = 102( )
Dk
Dk
3.3
10log2
Notons- k le nombre de bits aprs la virgule (format Qk),- 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 Q15 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 Qk
-
Oprations arithmtiques virgule fixe
157
-
Influence des oprations sur le format Qk
Addition:Si A, B reprsentations Qk de a et b,alors A+B est la reprsentation Qk de a+b.
A + BQk Qk
Qk
A + BQk Ql
klA+B Qk a+b.
MultiplicationSi A reprsentations Qk de aet B reprsentations Ql de b,alors A*B est la reprsentation Qk+l de ab.
DcalageSi A reprsentations Qk de aalors A n
Qk
A
-
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 s015162931 30
X*Y sur 32 bits
159
s s
s
Rduction 16 bitsPartie 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 Q15 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));
015 142931 30
A = ((Int32)X * Y)16);
A
v
e
c
F
R
C
T
S
a
n
s
F
R
C
T
160
s s015 14
Partie haute de lacc.(STH=Store High)Rduction 16 bits
sDcalage gaucheautomatique si FRCT=10
s
X*Y sur 32 bitsQ30
Q31
Q15
>>16 (STH)
-
Accumulateurs sur le C54x
15-0
ALAHAGAccumulateur A
31-16
Bits de Garde
39-32
Bits de poids fort
Bits de poids faibleGarde 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> 15);
Accumulateur de 40 bitsnon accessible depuis le langage C:Dgradation ds quun rsultatintermdiaire 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>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
-
Accumulation et saturation
Exercice:1) Quelle est la dynamique de laddition de M entiers 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 aM 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 am les accumulations intermdiaires :
1) Quelle est la dynamique des rsultats intermdiaires am ?
=
=1
0
)()(
m
i
m ihixa
1) Quelle est la dynamique des rsultats intermdiaires am ?
2) En dduire le nombre de bits ncessaires pour pouvoir calculer aM 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 aM]-1, 1[, mais sans aucune garantie sur les am intermdiaires.Ecrire le code C permettant de calculer aM 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
ES Mx 2)1( =
Le signesignesignesigne S : 1 bit (0 ou 1) La mantissemantissemantissemantisse M : rel positif cod sur m bits Lexposantexposantexposantexposant E : entier sign sur e bits
Nem =++1
Opration de normalisationnormalisationnormalisationnormalisation:
nombre de chiffres significatifsdynamique
165
Opration de normalisationnormalisationnormalisationnormalisation: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:
21
-
Format virgule flottante IEEE 754
Simple prcision (N=32 bits) : float
Double prcision (N=64 bits) : double
ES Mx 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 mantisseMantisse 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 spciauxZro: tous les bits 0Underflow: exposant = 00002Overflow: exposant = 11112
M sur 53 bits
-
Dynamique en format flottant
Pour le codage en virgule flottantela dynamique est conditionne par le nombre de bits de lexposant:
( ) ( ){ }11loglog11log2 max22max2 ++++ xexe
12 )12(max = e
x
Do la condition :
( ) ( ){ }11loglog11log2 max22max2 ++++ xex
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
EMx 2=
virgule fixe La mantisse M est un rel sign
de [-1, 1]cod au format Qm-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)
15.0
-
Mise en uvreMise 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 Qkk 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 numriquesPar 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 designfir1 Window-based finite impulse response filter designfir2 Frequency sampling-based finite impulse response filter designfircls Constrained least square FIR multiband filter designfircls Constrained least square FIR multiband filter designfircls1 Constrained least square, lowpass and highpass, linear phase, FIR filter desigfirls Least square linear-phase FIR filter designfirpm Parks-McClellan optimal FIR filter designfirpmord Parks-McClellan optimal FIR filter order estimationfirrcos Raised cosine FIR filter designgaussfir Gaussian FIR pulse-shaping filter designintfilt Interpolation FIR filter designkaiserord Kaiser window FIR filter design estimation parameterssgolay Savitzky-Golay filter design
Conception de filtres RII
buttord Butterworth filter order and cutoff frequency
Analyse des caractristiques des filtres
filternorm 2-norm or infinity-norm of a digital filterbuttord Butterworth filter order and cutoff frequencybutter Butterworth analog and digital filter designcheb1ord Chebyshev Type I filter ordercheby1 Chebyshev Type I filter design (passband ripple)cheb2ord Chebyshev Type II filter ordercheby2 Chebyshev Type II filter design (stopband ripple)ellipord Minimum order for elliptic filtersellip Elliptic (Cauer) filter designmaxflat Generalized digital Butterworth filter designyulewalk Recursive digital filter design
173
filternorm 2-norm or infinity-norm of a digital filterfreqz Frequency response of digital filtersfvtool Filter Visualization Toolgrpdelay Average filter delay (group delay)impz Impulse response of digital filtersphasedelay Phase delay response of digital filtersphasez Phase response of digital filtersstepz Step response of digital filterszerophase Zero-phase reponse of digital filterszplane Zero-pole plot
-
tape 1 : Schma et quations
Exemple sur une cellule RII du 2e ordre
b1
b0
-a1
ynxnwn
s
2211
++=
= nnnnwbwbwby
wawasxwwn-1
z-1
174
b2-a2
22110 ++= nnnn wbwbwby
wn-2
z-1
Forme directe II
quations correspondantes
-
tape 2 : Variables et algorithme
s
coefs
wn-1 w(n-1)
dbufferEntres :x (contient xn)dbuffer (contient wn-1 et wn-2)coefs (contient les coefficients)
0 0
a1
a2
b2
b1
b0
wn-2 w(n-2)
tableau descoefficients
tableau desretards
Variable temporaire :w (recevra wn)
Calcul
wn s * xn a1 * w(n-1) a2 * w(n-2)
y b0 * wn + b1 * w(n-1) + b2 * w(n-2)
Mise jour retards
xn
? puis yn
x
y
coefs (contient les coefficients)1
2
3
4
5
1
175
coefficientsw(n-2) w(n-1)
w(n-1) wn
? puis yn y
? puis wn w
variablestemporaires
tat de la mmoirelors de l'appel de la fonction
Sorties :y (reoit yn)dbuffer (contient wn'-1 et wn'-2 pour n'=n+1)
-
tape 3 : Format Qk et programme C
x(n) Q15
s Q15 int cellule(int x) {int w;
int coefs[6];int dbuffer[2];
ai Q15
bi Q15
wk 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 Qk)
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
coefsw (n-1)
dbuffer
0
Exemple: extension de lalgorithme des cellules en cascade.Limplantation mmoire ncessite une phase de conception
s
a11
a12
b12
b11
b10
w1(n-1)
w1(n-2)
w2(n-1)
w2(n-2)cellule 1cellule 2
cellule 10
1
2
5
0
1
2+1
2+2
177
a21
a22
b22
b21
b20
cellule 2
5+1
5+2
H1(z) H2(z)sx(n)
Nouvelle structure du filtre
-
Utilisation de lookup-table (LUT)
178
-
Principe de la LUT
Prcalcul dune fonction calculatoirement y = g(x)
g(x0)
lut
0
k
g(x1)
g(x )
1calculatoirementcomplexe Fonctions
trigonomtriqu