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  21  22  23  24
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