cours_DSP_ISEN_partie1
Download
Report
Transcript cours_DSP_ISEN_partie1
ISEN
2006
COURS DE DSP
(Digital Signal Processor)
Alain Fruleux
Plan
Première Partie
– 0 Introduction
– 1 Comment se former au DSP?
– 2 Notions Générales
– 3 Le TP1
0-1Introduction: Code Composer Studio TI
utilisé en TP
0-2 Vision Globale DSK/TMS320c5510 de TI
?
?
?
?
?
0.3 Utilisation des DSP T. I.
C1x Hard Disk Controllers
C2x Fax/Machines Embedded Control
C3x Videophones
C5x Voice Processing
C54x Digital Cellular Phones
C6x Wireless Base/Modems
C8x Video Conferencing
0.4 Position du Cours
Electro technique
Electronique
électronique
de puissance
électricité
semiconducteurs
Physique
Télécommunication
traitement
de signal
Mesure
Informatique
Micro processeurs et
DSP
Réseaux
Signaux et
Systèmes
Numériques
Automatisation
Processus
Manufacturier
1.1 Comment se former au DSP?
-
10 Cours/Expérimentation
sur une maquette DSK/TMS320C5510
Prise en main
Le jeu d ’instruction et registres
Écriture et compilation d ’un programme (Assembleur)
Repeat Block/ Adressage Circulaire
Temps d ’exécution
Instruction Parallèle
Synthèse réaliser un filtre FIR
1.2 Cycle de Développement
2
1-Réalisation ( ou utilisation) de la
carte électronique (existante) :
cible/target
2-Écriture d ’un programme en c et
assembleur (fichier source)
3-Assemblage ou Compilation (fichier
objet)
4-Chargement du programme sur la
cible (fichier exécutable)
5-« Debugage »/Test du
fonctionnement
4
3
1
5
1.2.1 Le Langage Assembleur
Pour gagner de la place (concision du code)
Pour gagner du temps (d ’exécution pas de développement)
Couche indispensable entre le hard et les
couches logiciels supérieurs.
Souvent lié à une programmation en C.
Forme définitive d ’un programme après
compilation.
1.2.1 Le Langage Assembleur
Formalisme : 4 champs (TMS320C5402)
Etiquette
Instr.
Opérand
Commentaires
LD
B
#0x7FFF,0,A
Début
charger A avec la valeur hexa 7FFF
saut à Début
(ou label)
Début
Fin
pour lisibilité
correspond à
adresse après
compilation
registre
adresse mémoire
étiquette
variable immédiate
1.2.2-Code Composer Studio TI utilisé en TP
2- NOTIONS PREALABLES
2.1 Représentation des Nombres Entiers
2.2 Autres Représentations
2.3 Opérations sur Entiers
2.4 Représentation des Nombres Réels
2.1 Représentation des nombres entiers
2.1.1 Nombres entiers en Base 10
101001 +1*100000
1001 +1*1000
1 =1*10°
777
10
10
10
0
666
555
444
0
1
0
333
222
111
000
10
10
10
10
10
10
10
10 10
10 10
10 10
10 10
10 10
10
1
00
10
10
10
00
111
2.1.2 Nombres entiers en Base 2
101001 +1*32
1001 +1*8
1 =1*2°
= 41 (décimal)
7 7
22
27
0
66
2
226
0
MSB
55
2225
1
44
2
224
0
33
2
223
1
1
2222
2
0
0
2111
2
0
0
22000
2
11
1
LSB
2.1.3 Nombre entier Hexadécimal (base 16)
Décimal
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Hexadécimal
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
Binaire
0 0
0 0
0 1
0 1
1 0
1 0
1 1
1 1
0 0
0 0
0 1
0 1
1 0
1 0
1 1
1 1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
2.1.4 Dynamique des Nombres Entiers
8 bits
1 octet (byte) 0 à 255 Dec 00h à FFh en Héxa
16 bits 2 octets (word)
0 à 65535 ou 0000h à FFFFh
32 bits 4 octets (long w) 0 à 4.294.967.295 ou FFFFFFFFh
2.1.5 Nombres entiers Unités
Kilo 210 1024
Méga 2 1.048.576
20
Giga 2 1.073.741.824
30
2.2 Autres Représentations
2.2.1 Nombres BCD (Binary Coded Decimal)
C ’est une astuce pour
utiliser la notation
hexadécimal pour le
décimal.On s ’arrête à 9
et cela complique un peu
les algorithmes de calcul
Décimal Hexadécimal
Binaire
0
0
0 0 0 0
1
1
0 0 0 1
2
2
0 0 1 0
3
3
0 0 1 1
4
4
0 1 0 0
5
5
0 1 0 1
6
6
0 1 1 0
7
7
0 1 1 1
8
8
1 0 0 0
9
9
1 0 0 1
10
A
1 0 1 0
XXXXXXXXXXXXXX
11
B
1 0 1 1
XXXXXXXXXXXXXX
12
C
1 1 0 0
13
D
1 1 0 1
XXXXXXXXXXXXXX
14
E
1 1 1 0
XXXXXXXXXXXXXX
15
F
1 1 1 1
2.2 Autres Représentations
2.2.2 Représentation de Texte (ASCII)
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
0
NUL
SOH
STX
ETX
EOT
ENQ
ACK
BEL
BS
HT
LF
VT
FF
CR
S0
S1
1
DLE
DC1
DC2
DC3
DC4
NAK
SYN
ETB
CAN
EM
SUB
ESC
FS
GS
RS
US
2
SP
!
"
#
$
%
&
'
(
)
*
+
,
.
/
3
0
1
2
3
4
5
6
7
8
9
:
;
<
=
>
?
4
@
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
5
P
Q
R
S
T
U
V
W
X
Y
Z
[
\
]
^
_
6
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
7
p
q
r
s
t
u
v
w
x
y
z
{
|
}
DEL
2.2 Autres Représentations
2.2.3 État extérieur (port d ’entrée/sortie)
Informations
Entrée interrupteur 1
Entrée interrupteur 2
Entrée interrupteur 3
Entrée interrupteur 4
Sortie voyant 1
Sortie voyant 2
Sortie voyant 3
Sortie voyant 4
direction
Port entrée/sortie
1
1
0
0
1
1
0
0
ext
2.2 Autres Représentations
2.2.4 Registre de commande
Contenu du registre de commande
7
6
5
4
3
2
1
0
x
x
x
x
x
x
x
x
x
x
x
x
0
0
1
0
0
1
0
1
1
1
0
1
Signification
Baud Rate 28800
Baud Rate 57600
Baud Rate 115200
1.3.3 Registre de status (d’état)
Contenu du registre d'état
Signification
7
6
5
4
3
2
1
0
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
X
1
x
1
x
1
x
x
Time out
Liaison interrompue
Détection de porteuse
…………
2.2 Autres Représentations
2.2.5 Codage d ’une instruction (TMS320C5402)
l ’instruction (équivalente à A=32767):
LD #0x7FFF,0,A
(charger A avec la valeur hexa 7FFF)
est codée (en hexa) dans la mémoire:
F0 20
7F FF
LD#??,0,A
7FFF variable immédiate
2.3- OPERATIONS SUR ENTIERS
2.3.1 Addition en Base 2, 16 et 10
ret 1001111
11101001011 = 4Bh = 75
+
11100101 = E5h =229
= 1 00110000 = 1 30h=304
2.3.2 Nombres entiers signés
(complément à 2)
Soustraction et nombres négatifs
00101001 = + 41 =
+ + ?????????
11010111== - 41 ==
29h
??h
D7h
= (1) 00000000 = 00 = (1)00h
X X 1
2.3.3 Opérations Logiques
ET (AND)
01001011 = 4Bh = 75
et 11100101 = E5h =229
= 01000001 = 41h= 65
Masque (forcer un bit à 0)
xxxxxxxx
et
10111101
= x0xxxx0x
2.3.3 Opérations Logiques
OU (OR)
01001011 = 4Bh = 75
ou 11100101 = E5h = 229
= 11101111 = EFh= 239
Masque (forcer un bit à 1)
xxxxxxxx
ou 01000010
= x1xxxx1x
2.4 Représentation des nombres Réels
Dans un filtre FIR la somme des coefficients est égale à 1
Nous avons besoin de variables non entières
15
14
13
12
s
2 1
2 2
2 3
11
2 4
10
2 5
9
2 6
8
2 7
14
7
2 8
6
2 9
X ( fi * 2
5
4
3
2
1
2 10 2 11 2 12 2 13 2 14 2 15
i 15
)
i 0
S est le signe 0 positif 1 négatif
la somme fractionnaire est toujours <1
0
2.4.1 Virgule Fixe (Q15)
15
14
13
12
11
s
0
1
2
3
4
2
2
1
1
7
2
1
2
1
10
2
5
9
2
0
6
0
8
2
7
0
7
2
8
6
2
9
0
8
5
2
10
0
2
0
0
4
11
3
2
0
12
2
2
0
13
2
1
14
0
2
0
0
Exemple d ’un Nombre positif
X 21 22 23 24
X 0.5 0.25 0.125 0.0625
X 0.9375
0
15
0
2.4.1 Virgule Fixe (Q15)
L ’utilisation de la virgule fixe est délicate:
Les variables doivent être comprises entre -1 et +1
Multiplication : pas de débordement possible
Addition et soustraction risque de débordement qu ’il faut traiter (test
des variables avant l ’opération)
Faire attention à l ’ordre des calculs
Faire attention au format de variable supporté par les instructions en
Assembleur et en C
Ces problèmes sont résolus avec la virgule flottante
Malheureusement notre TMS320C55 ne possède pas de
virgule flottante (sauf en C) pour des économies de surface
de silicium et de consommation…..
2.4.2 Virgule Flottante
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
e e e e e e e e s f f f f f f f f f f f f f f f f f f f f f f f
+/8 bits = exposants
23 bits =Fraction de la mantisse
e exposant codé en complément à 2 (-128 à 127)
si e=-128 alors variable =0
s signe de la mantisse 0=positif 1=négatif
f fraction de la mantisse en 2^-n
on ajoute 1 systématiquement à f si s=0, -2 si s=1
23
X 2 * (1( ou 2) fi * 2
e
i 0
i 23
)
2.4.2 Virgule Flottante
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7
e e e e e e e e s f f f f f f f f f f f f f f f f
+/8 bits = exposants
23 bits =Fraction de la mantisse
6
f
5
f
4
f
3
f
2
f
1
f
0
f
0 0 0 0 0 0 1 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0
3
7
8
0
0
0
0
Exemple d ’un Nombre positif
1
2
3
4
X 2 * (1 2 2 2 2 )
X 8 * (1 0.5 0.25 0.125 0.0625)
X 8 * (1.9375) 15.5
3
2.4.2 Virgule Flottante
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7
e e e e e e e e s f f f f f f f f f f f f f f f f
+/8 bits = exposants
23 bits =Fraction de la mantisse
6
f
5
f
4
f
3
f
2
f
1
f
0
f
1 1 1 1 1 1 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
F
D=(=-3)
F
8
0
0
0
0
Exemple d ’un Nombre négatif
3
1
2
3
4
X 2 * (2 2 2 2 2 )
X 0.125* (2 0.5 0.25 0.125 0.0625)
X 0.125* (2 1.9375) 0.0078125
3
X 7.8125*10