Vous êtes sur la page 1sur 57

Projets DSP

DSP pour le traitement dimages:


1. Implmentation de la norme JPEG
2. Implmentation de la norme JPEG2000
3. Dtection de contour


2
DSP pour le traitement audio:
4. Implmentation de la norme MP3
5. Gnration dcho


Autres projets DSP :
6. DSP pour GSM : modulation GMSK
7. DSP pour WSN / WIFI : modulation O-QPSK
8. DSP pour la cryptographie : AES-128
9. DSP pour lautomatique : commande dun MCC











Architectures des DSPs




4
Architecture gnrale dun processeur
Unit de
contrle
Units de
traitement
Mmoire
interne
Unit de
Communication
Bus internes
CPU
Priphriques
et mmoire externes




5
Accs la mmoire




6
Rappels : Bus
Le CPU est le matre du
bus
Il est le seul crire sur les
bus adresse et contrle
Le priphrique accepte
sur le bus donnes
Lecture: il fournit la donne
demande
Ecriture : il rcupre la
donne fournie par le CPU
Haute impdance: il se
dconnecte du bus
Priphrique CPU
BUS
Priphrique CPU
adresses
donnes
contrle
Contrle : lire / crire / haute impdance
Adresses : slection du priphrique
et dune donne en son sein
Donnes : valeur de la donne changer




7
Rappels: le fonctionnement basique dune
opration de calcul
(1) Charger une instruction depuis la mmoire
(2) Charger les oprandes depuis la mmoire
(3) Effectuer les calculs
(4) Stocker le rsultat en mmoire
Mmoire CPU
1
2
3
4




8
Architecture Von Neuman
Un seul chemin d'accs la mmoire
Architecture des processeurs dusage gnral
(Pentium, 68000)
Goulot d'tranglement pour l'accs la mmoire
Pas de scurisation matrielle du programme
CPU
BUS
Mmoire
Programme
+ Donnes




9
Architecture Harvard
Sparation des mmoires programme et donnes
Moins de risque de corruption du programme
Meilleure utilisation du CPU
Chargement du programme et des donnes en parallle
Mmoire Programme
Mmoire Donnes
CPU




10
Architecture Harvard modifie
Mmoire programme contient des donnes
Possibilit de charger 2 donnes en un cycle
Utilisation classique en TNS
Mmoire Programme+Donnes coefficients des filtres
Mmoire Donnes chantillons dentre
CPU
Mmoire Programme
Mmoire Programme
+ Donnes
Mmoire Donnes




11
Accs mmoire multi-port
Plusieurs bus de donnes
Accs simultan plusieurs donnes
Combin avec
mmoire multi-accs (plusieurs accs la mme mmoire en un cycle)
mmoire multi-blocs (accs simultan deux blocs de mmoire distincts)
Exemple du TMS320C54xx :
1 bus programme (P)
2 bus de lecture des donnes (C et D)
1 bus dcriture des donnes (E)
CPU
Mmoire Programme
+ Donnes
Mmoire Donnes




12
Cache d'instructions
Cache = mmoire associative rapide
Contient les dernires instructions excutes
Utile en cas de boucle
Accs aux instructions sans accs en mmoire programme
Libre le bus pour des donnes
Pas appliqu aux donnes
Problme de validation du temps rel
DSP
Mmoire Programme
+ Donnes
Mmoire Donnes
CPU
cache
dinstructions




13
Mmoire interne sur les processeurs C54x
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)
Capacit en mmoire interne de diffrents modles C54x




14
Bus externe
dans une architecture Harvard modifie
DSP
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
MUX
CPU
Mmoire Programme
+ Donnes
Mmoire Donnes




15
Accs Direct la Mmoire
(DMA : Direct Memory Access)
DMA
Accs DMA : entres-sorties vers la mmoire interne
indpendant du CPU et des bus internes
Systme d'interruptions "donnes reues"/"donnes transmises"
CPU
Mmoire Programme
+ Donnes
Mmoire Donnes
interruptions
configuration




16
Bus externe
Diagramme bloc du TMS320C5416
Muxed GP I/O
D(15-0)
A(23-0)

















Program/Data Buses
Timer
Program/Data RAM
128K Words









Ch 0
Ch 1
Ch 2
Ch 3
Ch 4
Ch 5
DMA
8/16-bit Host Port
Interface (HPI)
Program/Data ROM
16K Words
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
8 Auxiliary Registers
2 Addressing Units
Addressing Unit
Multichannel Buffered
Serial Port (McBSP)
Multichannel Buffered
Serial Port (McBSP)
Multichannel Buffered
Serial Port (McBSP)
PLL Clock
Generator
S/W Waitstate
Generator
Power Management
Mmoire
interne
Entres
Sorties
JTAG Test/
Emulation
Control
CPU
M
U
X





17
Les Priphriques du C54x
Timer
Ports srie
Port srie synchrone
Port srie bufferis (BSP)
Port srie bufferis multi-canaux (McBSP)
Port srie multiplexage temporel (TDM)
Contrleur DMA 6 canaux
Port dinterface hte (HPI)
Broches accessibles par software
Broche XF (external flag) en criture
Broche BIO en lecture
Gnrateur de temps dattente




18
Architecture interne du CPU




19
Structure interne du CPU




20
Unit de commande
Chef dorchestre du CPU

Chargement des instructions
Compteur de programme (PC)
Registre dinstruction
Cache dinstructions

Squenage
Dcodage des instructions
Pilotage des autres units




21
Units de traitement mathmatique
Calculs au format fixe
ou flottant
Paralllisme entre les
sous-units

Registres de donnes
pour stocker les oprandes
et les rsultats

Multiplieur
Multiplication et
accumulation (MAC)
ALU
Oprations arithmtiques,
logiques et de conversion
entre formats
Registre de dcalage
Multiplication rapide par 2
k
Units spcialises
Compare, Select and Store
(Viterbi)
DCT




22
Units de gnration dadresses
Units de traitement spciales
Pilotes par le squenceur
Calculs sur des entiers
Adresses mmoires

Mthodes pr-programmes
Incrmentation
Dcrmentation
Adressage circulaire
Incrmentation bit-reverse (pour la FFT)




23
Schma de principe des changes
addr
data
ctrl
addr
data
ctrl
Squenceur
B
u
s

p
r
o
g
r
a
m
m
e

B
u
s

d
o
n
n

e
s

Gnration
adresses P
Gnration
adresses D
Units de
calcul
Mmoire P Mmoire D
CPU
priphriques
pilotage




24
Fetch (lecture instruction)
addr
data
ctrl
addr
data
ctrl
Squenceur
B
u
s

p
r
o
g
r
a
m
m
e

B
u
s

d
o
n
n

e
s

Gnration
adresses P
Gnration
adresses D
Units de
calcul
Mmoire P Mmoire D




25
Read/Write (lecture/criture donne)
Squenceur
Gnration
adresses P
Gnration
adresses D
Units de
calcul
Mmoire P Mmoire D
addr
data
ctrl
addr
data
ctrl
B
u
s

p
r
o
g
r
a
m
m
e

B
u
s

d
o
n
n

e
s





26
Bus externe
Diagramme bloc du TMS320C54x
Muxed GP I/O
D(15-0)
A(23-0)

















Program/Data Buses
Timer
Program/Data RAM
128K Words









Ch 0
Ch 1
Ch 2
Ch 3
Ch 4
Ch 5
DMA
8/16-bit Host Port
Interface (HPI)
Program/Data ROM
16K Words
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
8 Auxiliary Registers
2 Addressing Units
Addressing Unit
Multichannel Buffered
Serial Port (McBSP)
Multichannel Buffered
Serial Port (McBSP)
Multichannel Buffered
Serial Port (McBSP)
PLL Clock
Generator
S/W Waitstate
Generator
Power Management
Gnration
dadresses
Units de
calcul
Mmoire
interne
Entres
Sorties
JTAG Test/
Emulation
Control
CPU
M
U
X





27
Structure interne du
TMS320C54x
Source : Texas Instruments
TMS320C54x DSP
Reference Set
Vol 1 : CPU and Peripherals




28
Le bus programme PB sert vhiculer les
instructions et les coefficients stocks dans la
mmoire programme. Ces donnes sont
adresses par le bus dadresse de la mmoire
programme PAB

Trois bus daccs aux donnes sont raccords
lunit centrale de calcul, la mmoire de donne,
aux priphrique et aux circuits de gnrations
dadresse (programme et donnes). Ces bus CB,
DB, et EB vhiculent les donnes des lments
adresss par CAB, DAB, et EAB respectivement.
Bus




29
Unit de controle
Gnration
d'adresses
programme
Gnration
d'adresses
donnes
Bus P
programme
Bus C / D
lecture
donnes
Bus E
criture
donnes




30

Unit arithmtique et logique(UAL)
Multiplieur-Accumulateur (MAC)
Registre dcalage
Units spcialises



Unit de traitementnt mathmatique




31
MAC
ALU
Shifter
Viterbi
Accumulateurs




32
Ce bloc effectue des calculs arithmtiques et
logique
2 accumulateurs sur 40 bits :





Oprations entires et binaires
(+, -, inc, dec, et, ou, xor, shl, ...)
Unit Arithmtique et Logique (ALU)
AL AH AG
15-0 31-16 39-32
BL BH BG
15-0 31-16 39-32




33
IMR Registre Masque dInterruption
IFR Registre de Statut dInterruption
ST0 Registre dEtat 0
ST1 Registre dEtat 1
AL Accumulateur A (0-15)
AH Accumulateur A (16-31)
AG Accumulateur A (32-39)
BL Accumulateur B (0-15)
BH Accumulateur B (16-31)
BG Accumulateur B (32-39)
TREG Registre Temporaire
AR0 Registre Auxiliaire 0 (Index)
AR1-7 Registres Auxiliaires 1 7
SP Registre Pointeur de Pile
BK Registre dAddressage Circulaire
RC Compteur Rption 1 Instruction
RSA Premire Addresse Rptition Bloc
REA Dernire Addresse Rptition Bloc
BRC Compteur Rption dun Bloc
TIM Registre du Timer
PRD Compteur de la Priode de Timer
TRN Registre de Transition
TCR Registre de Contrle du Timer
PMST Registre de Contrle de la Mmoire
Registres




34

Rle central dans un DSP
Plus de 50% des instructions
Caractristiques principales
Temps dexcution = 1 cycle instruction
Structure pipeline
Un rsultat par cycle horloge, si le pipeline est
bien utilis
Multiplieur-accumulateur (MAC)




35
ce registre de 40 bits, sert cadrer les donnes en
provenant de la mmoire ou bien de laccumulateur avant
une opration dans ALU

Oprations de mise lchelle (Scaling) par puissance de
deux
Indispensable pour viter les dpassements de capacit
Son utilisation doit tre maitrise par le programmeur
Rduction de la prcision des calculs
Nombre, emplacement et possibilits des Shifters trs
diffrents dun DSP un autre.
Shifter (registre dcalage)




36
Protocole JTAG
Permet de piloter les units internes du DSP
Intgr par le constructeur lors de la
conception du chip
Utile pour le prototypage et le dbogage
d'applications
Interruption momentane en cours d'excution
Donne accs en lecture/modification aux
Registres internes
Mmoires internes, et ventuellement externes
Ports d'entres/sorties





37
Pipelining
Instructions
segmentes en tages
Excution entrelace de
plusieurs instructions
Chacune une tage diffrent

Gr par le squenceur

Augmentation de la
frquence d'horloge
Etages plus simples donc plus
rapides
Fetch F1
Decode D1
Read R1
Execute X1
Instruction Instruction 1
Fetch F1 F2 F3 F4 F5
Decode D1 D2 D3 D4
Read R1 R2 R3
Execute X1 X2
Segmentation
en tages
Entrelacement




38
Squentiel vs pipeline
tage \ temps t1 t2 t3 t4 t5 t6 t7 t8
Fetch F1 F2 F3 F4 F5
Decode D1 D2 D3 D4 D5
Read R1 R2 R3 R4 R5
Execute X1 X2 X3 X4 X5
tage\temps t1 t2 t3 t4 t5 t6 t7 t8
Fetch F1 F2
Decode D1 D2
Read R1 R2
Execute X1 X2
Chargement du pipeline
Excution avec pipeline
Excution squentielle




39
Pipelining
Exemple du TMS320C54x

6 tages de traitement
Prefetch (P) : Incrmentation du PC
(Program Counter)
Fetch (F) : Lecture de linstruction en mmoire
Decode (D) : Dcodage de linstruction
Access (A) : Calcul des adresses des oprandes
Read (R) : Lecture des oprandes en mmoire
et calcul de ladresse du rsultat
Execute (X) : Excution et criture en mmoire




40
Retards dans le pipeline
Le pipeline atteint son plein rendement une
fois quil est plein
Une retard peut se produire
sil existe un conflit de ressources (retard ponctuel)
accs la mmoire
utilisation des bus
en cas de rupture de squence (vidange du pipeline)
branchement non prvu
appel de sous-programme
interruption




Exemple de conflit d'accs mmoire
P
1
P
2
F
1
D
1
P
3
F
2
A
1
D
2
P
4
F
3
D
3
A
2
--
--
R
1
X
1
A
3
--
--
--
R
2
X
2
--
--
--
R
3
X
3
P
5
--
F
4
D
4
P
6
F
5
A
4
D
5
F
6
A
5
D
6
R
4
X
4
A
6
R
5
X
5
R
6
8
Programme et donnes
dans une mmoire 1 accs par cycle
Les lectures de donnes R1/R2/R3 sont en conflit avec les
chargements d'instruction F4/F5/F6
Peut rduire les performances d'au moins 50%




Rsolution du conflit d'accs mmoire
P
1
F
1
D
1
A
1
R
1
X
1
P
2
F
2
P
3
F
3
D
3
A
3
R
3
X
3
D
2
A
2
R
2
X
2
P
4
F
4
D
4
A
4
R
4
X
4
P
5
F
5
D
5
A
5
R
5
X
5
P
6
F
6
D
6
A
6
R
6
X
6
9
Programme et donnes
dans des mmoires accs spars (Bus Programme/Bus Donnes)
ou dans une mme mmoire accs double (DARAM)




Bilan accs mmoire
A retenir pour viter les problmes:
ROM/SARAM - 1 accs par bloc par cycle
DARAM - 2 accs par bloc par cycle
Program
ROM
Data
ROM
SARAM DARAM
E Bus
C Bus
D Bus
P Bus
A
D
I
n
t
e
r
f
a
c
e

M

m
o
i
r
e

e
x
t
e
r
n
e

10




TMS320C62X
44
Processeur
virgule fixe
comportant 2
multiplieurs, 6 UALs
et 2 groupes de 16
registres de 32 bits
Instructions du type
RISC
Le processeur
peut effectuer des
oprations sur
8/16/32 bits de
donnes.




45
TMS320C62X




46
Chaque groupe doprateurs dispose de :
3 UALs + 1 multiplieur (.L, .S, .D et .M) :
.L : oprations arithmtiques et logiques et instruction de
branchement.
.S : oprations arithmtiques et logiques, de dcalage, de
branchement et de gnration de constantes.
.M : multiplieur cbl 16x16
.D : lecture, chargement et oprations arithmtiques.
16 registres de 32 bits non orthogonaux
Chaque UAL est contrle par une instruction de 32
bits.
TMS320C62X : groupe oprateurs




47
TMS320C62X : groupe oprateurs




MPY .M a1, x1, prod
ADD .L Y, prod, Y

=
=
N
n
n n
x a Y
0
32 bits
a1
x1
prod
Y
.
.
.
.
.M
.L
A0
A1
A2
A3
A4
A15




48
VLIW (Very-Long-Instruction-Word)
Paralllisme gr par le compilateur
Contrle simple mais compilateur complexe
Microarchitecture simple et performante
Mais taille de code importante
Gnralement clusteris (1 cluster : banc de registres
+ units fonctionnelles)
Rduction de la complexit des chemins de donnes





49
inst1
inst2

inst3

inst4

inst5

inst6

inst7

inst8

I
n
s
t
r
u
c
t
i
o
n

V
L
I
W

VLIW (Very-Long-Instruction-Word)




50
VLIW : exemple du TMS320C62x
32 bits
Instruction de 128 bits
8 sous-instructions de 32 bits
32 bits 32 bits 32 bits 32 bits 32 bits 32 bits 32 bits
L1 M2 D2 S2 L2 S1
+
+ +
+
+
x
+
M1
x
D1
+ +




51
Reprsentation de Nombres Rels
La reprsentation des nombres doit rpondre deux
exigences contradictoires:

Prcision: intervalle entre deux rationnels cods
doit tre le plus petit possible

Dynamique: rapport entre le plus grand rationnel et le plus petit
rationnel cods
doit tre la plus tendue possible

Dans ce contexte les units de calcul des DSP travaillent
soit en format fixe (notation dcimale)
soit en format flottant (notation scientifique)




52
Reprsentation en format fixe
Aussi appele reprsentation virgule fixe
Dfinition "format Q
k
" :
La reprsentation Q
k
du rel x correspond
la reprsentation complment 2 (C2) de
l'entier y tel que:
) 2 round( x y
k
=
Proprits:
Partie fractionnaire code sur k bits
Partie entire code sur N-k bits en C2

Q
0
dsigne le cas particuler des entiers signs en C2
Exemple: Le binaire 01011101 peut reprsenter :
Q
2
: 23.25 Q
4
: 5.8125 Q
7
: 0.7265625




53
Reprsentation en Format Fixe
Exemple: Q
5
sur 8 bits

Partie entire cod sur 3 bits (dont 1 de signe)
Partie fractionnaire code sur 5 bits

Valeurs comprises entre -4 et +3.96875

0

0

0

0

0

0

0

1 -4
1

0

0

0

0

0

0

1 -3.96875
0

0

0

0

0

0

0

0 0
0

1

1

1

1

1

1

0 3.9375
1

1

1

1

1

1

1

0 3.96875
#/Poids -2
3
2
2
2
0
2
-1
2
-2
2
-3
2
-4
2
-5
,




54
Reprsentation en Format Fixe
Pour obtenir une dynamique sur lintervalle [-1, 1[ ,utiliser le format
Q
N-1
sur N bits

Format Q
15
:
sur 16 bits, le format Q
15
permet de reprsenter tous les
rels entre -1 et 1 avec une prcision q=2
-15
Prcision: quantification uniforme de pas q
q=2
-k
Dynamique:
-2
N-k-1
.. 2
N-k-1
-2
-k





55
Reprsentation en Format Flottant
Aussi appele reprsentation en virgule flottante
est une reprsentation avec une prcision finie,
dfinie selon lexpression
La mantisse M est exprime sur m bits,
avec un format Q
m-1
en complment 2

Lexposant E est un entier sign sur e bits
en binaire dcal
E
M x 2 =
N e m = +
Opration de normalisation:
Pour rendre la reprsentation unique, M doit satisfaire en
outre:
1
2
1
< s M
dtermine le nombre de
chiffres significatifs
dtermine la
dynamique




56
111 01111
| |
( )
46875 . 0 2 9375 . 0 2 2 1 2 1 2 1 2 1
1 1 2 4 4 3 2 1
= = + + +
+ +
Reprsentation en Format Flottant
Exemples en 8 bits
La mantisse est code sur 5 bits et lexposant sur 3 bits en C2
110 01111
| |
( )
234375 . 0 2 9375 . 0 2 2 1 2 1 2 1 2 1
2 0 2 4 4 3 2 1
= = + + +
+ +
011 10010
| |
( )
7 2 875 . 0 2 2 0 2 1 2 0 2 0 1
3 1 2 0 4 3 2 1
= = + + + +
+ +




57
Format virgule flottante IEEE 754
Format pour N=32 bits
1 bit
signe
8 bits
exposant
en binaire dcal
23 bits
fraction (partie fractionnaire de la mantisse)
C2 avec des codes spciaux
Cas spciaux
Zro: tous les bits 0
Underflow: exposant = 00000000
2

Overflow: exposant = 11111111
2

x = (-1)
signe
(1,fraction)
2
2
exposant-127