Académique Documents
Professionnel Documents
Culture Documents
signal (DSP)
Sylvain MONTAGNY
sylvain.montagny@univ-savoie.fr
Bâtiment chablais, bureau 13
04 79 75 86 86
Présentation des cours : Sommaire
Université de Savoie 2
Présentation TD
TD : 7.5 h en 5 séances
Université de Savoie 3
Présentation TP
TP : 16h en 4 séances de 4h
TP1 : Prise en main de l’environnement de programmation
Code Composer Studio
Université de Savoie 4
Examens
Université de Savoie 5
Chapitre 1 : Introduction aux systèmes de
traitement numérique
Université de Savoie 6
La chaine de traitement numérique
Analogique Analogique
Mémoire
Numérique
Université de Savoie 7
Chaîne de traitement numérique
Avantages / Inconvénients
Avantages :
Robustesse :
Précision :
Multitâche :
Prédiction :
Inconvénients :
Coût :
Vitesse :
Complexité :
Université de Savoie 8
Chaîne de traitement numérique
Exemples d’applications (2)
Télécommunications : détection de
tonalité BP Filter Detector
Schéma de détection
697 Hz
de tonalité BP Filter Detector 770 Hz
BP Filter Detector 852 Hz
697 Hz 1 2 3 LP Filter Limiter BP Filter Detector 941 Hz
941 Hz * 0 #
-0 dB
Fréquences de tonalité du clavier numérique -3 dB
-30 dB
Fe
10
FS1 FS2 2
Université de Savoie FP1 FP2
La chaine de traitement numérique
Complexité des algorithmes
Fréquence
en Hz
1 000 000
10 000
100
Reconnaissance Reconnaissance
vocale d’image
11
Positionner les applications suivantes dans le graphique
Chapitre 1 : Introduction aux systèmes de
traitement numérique
Université de Savoie 12
Problématique et solutions
Filtrage numérique sur processeur classique (1)
Fonction de transfert d’un filtre numérique
ିଵ ି
ଵ
ିଵ ି
ଵ
Te = Période d’échantillonnage
T = Temps de traitement
Horloge
acquisition
Te
t
Interruption
Activité
processeur
t
Entrée de l’échantillon
T
Sortie du résultat
Université de Savoie 15
Problématique et solutions
Solutions architecturales (document architecture reconfigurable)
Compromis performance – flexibilité
Cf article : Architecture reconfigurable, les processeurs du futurs
2 V DSP
3 MOPS/mW
Efficacité énergétique
En MIPS/W Pleiades
Flexibility
10-50 MOPS/mW
Embedded
Processor
100-1000 MOPS/mW SA110
0.4 MIPS/mW
ASIC
DSP Alpha
0.007 MIPS/mW
Embedded Reconfigurable
FPGA Processor
Université de Savoie 17
De l’analogique au numérique
Université de Savoie 18
De l’analogique au numérique
Effets du repliement de spectre
Université de Savoie 19
De l’analogique au numérique
Quantification Uniforme
On parle de quantification uniforme si les intervalles (valeurs
du signal numérisés) sont de même longueur q ( q est le pas
de quantification )
q
1. Erreur de d’arrondi e
2
2. Erreur de saturation x<valeur min ou x>valeur max
Université de Savoie 20
De l’analogique au numérique
1. Erreur d’arrondi
Plage globale de
q
quantification
0 Temps
0 1 2 3 4 5 6 7 8 9
Rapport signal sur bruit relatif à la quantification
Px
RSBdB Px Pe 10 log
dB dB
Pe
On peut montrer que le RSB se rapproche de l’expression
RSBdB Px 6 N 10 log10 xmax
dB 2 3
log10 21
2
De l’analogique au numérique
2. Erreur de saturation
Université de Savoie 22
De l’analogique au numérique
Quantification uniforme et RSB
saturation
100
80
RSB (dB)
60
40
20
erreur d’arrondi
0
-60 -50 -40 -30 -20 -10 0 10
puissance du signal (dB)
0 0 0
-1 -1 -1
0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1
0 0 0
-1 -1 -1
0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1
45
Loi A
40 Loi A sur 8 bits RSB à peu près constant
35
sur une plage de 30 dB
30
La compression limite les
RSB (dB)
25
20 effets de la granulation
15
10
5 Quantification uniforme
0
-60 -50 -40 -30 -20 -10 0 10 L’effet de granulation est
linéaire par rapport à la
puissance du signal (dB)
puissance du signal
granulation saturation
Université de Savoie 25
Chapitre 2 : Représentation numérique du
signal
Université de Savoie 26
Le codage des nombres entiers
Non signées N 1
A chaque chiffre est affecté un poids exprimé en puissance de 2 : x bi 2i
i 0
Exemple
( 101 )2 <=> 1.22 + 0.21 + 1.20 = ( 5 )10
Signées : Complément à 2
C’est le format le plus utilisé en arithmétique binaire. Le bit de poids fort
représente le signe
Nombre positif : codé comme un non-signé
Nombre négatif : codé par son C2 (Inversion des bits puis
ajout de1)
Université de Savoie 27
Le codage des nombres entiers
Entiers signés : Format complément à 2
Nombre Codage
N 1 Complément à 2 de x :
2 1 3 0 1 1
2 0 1 0 C2(x) = 2N – x
1 0 0 1
Dynamique
0 0 0 0
-1 1 1 1 Implantation efficace :
Inversion des bits puis ajout de 1
-2 1 1 0
-3 1 0 1 C2(x) = C1(x) + 1
N 1
2 -4 1 0 0
Signe
28
Le codage des nombres entiers
Propriétés du codage en complément à 2
0
-1 1
Représentation “circulaire” 111 000 001
En ajoutant 1 à la plus
grande valeur positive on -2 110 010 2
obtient la valeur négative
extrême 101 011
100
-3 3
-4
Université de Savoie 30
Le codage des nombres réels
1.Codage en virgule fixe (1)
m1
x (2)m1 S bi 2i CA2
i n
Université de Savoie 31
Le codage des nombres réels
1. Codage en virgule fixe (2)
Propriétés:
Partie fractionnaire codée sur k bits
Partie entière codée sur N-k bits en C2
Université de Savoie 32
Le codage des nombres réels
1. Codage en virgule fixe (3)
Université de Savoie 33
Le codage des nombres réels
1. Codage en virgule fixe (4)
34
Le codage des nombres réels
1. Codage en virgule fixe (5)
0 0 0 0 0 0 0 0 0
3.9375 0 1 1 1 1 1 1 0
3.96875 0 1 1 1 1 1 1 1
35
Le codage des nombres réels
1. Codage en virgule fixe (6)
Université de Savoie 36
Le codage des nombres réels
2. Codage en virgule flottante
Virgule flottante
Représentation : exposant - mantisse
dE-1 d1 d0 cM-1 c2 c1 c0
Exposant Mantisse
Norme IEEE :
Exposant sur 8 bits
x Mantisse .2 Exposant
Mantisse sur 24 bits
1 ≤ |Mantisse| <2
Université de Savoie 37
Le codage des nombres réels
Comparaison fixe - flottant
Dynamique virgule fixe/flottante
1500
Virgule flottante
Niveau de dynamique
D ynam ique en dB
1000
max(x )
DN (dB) 20. log
500
Virgule fixe
min( x )
0
10 15 20 25 30
Nombre de bits
Quantification
RS B en dB
60
40
Ps Virgule fixe
Pe 0
-50 0 50
Dynamique du signal d entré e en dB
38
Application
En langage de programmation C, nous utilisons les types de variables
suivant. Retrouver la valeur minimale et maximale de chacun des types.
32 bits
float Réel signé • 24 bits de mantisse -3,4 x 1038 à 3,4 x 1038
• 8 bits d’exposant
64 bits
double Réel signé • 53 bits de mantisse -1,7 x 10308 à 1,7 x 10308
• 11 bits d’exposant
Université de Savoie 39
Chapitre 3 : Les unités spécifiques des DSP
Université de Savoie 40
Architecture générale et objectifs
Processeur
CPU
Unité de Unités de
commande traitement
Bus internes
Université de Savoie 41
Chapitre 3 : Les unités spécifiques des DSP
Université de Savoie 42
Unité de commande
C’est le chef d’orchestre du CPU. Il séquence
et décode les instructions une à une.
Université de Savoie 43
Les phases du Pipeline
P (Prefecth) - Generate program address = Incrémentation du compteur ordinal
F (Fetch) - Get Opcode = Lecture du code de l’instruction en mémoire
D (Decode) - Decode instruction = Décodage de l’instruction
A (Access) - Generate read address = Calcul des adresses des opérandes
= Calcul de l’adresse du résultat
R (Read) - Read operands = Lecture des opérandes en mémoire
X ( Execute) = Exécution de l’instruction
= Ecriture du résultat l’adresse calculée
P F D A R X
P F D A R X
P F D A R X
P F D A R X
P F D A R X
P F D A R X
Full Pipeline : Toutes les unités
matérielles du DSP sont en activités
Unité de commande
Séquentiel vs pipeline
t1 t2 t3 t4 t5 t6 t7 t8 F1
- MemP
Instruction Instruction 1 Instruction 2
Fetch F1 F2 D1
-
CPU
Decode D1 D2
Read R1 R2 R1
- MemD
Execute X1 X2
Exécution séquentielle X1
- MemD
t1 t2 t3 t4 t5 t6 t7 t8 F4
F5 MemP
Fetch F1 F2 F3 F4 F5 … … …
Decode D1 D2 D3 D4 D5 … … D3
D4
CPU
Read R1 R2 R3 R4 R5 …
Execute X1 X2 X3 X4 X5 R2
R3 MemD
Amorçage du pipeline
X1
X2 MemD
Exécution avec pipeline : entrelacement des instructions
Université de Savoie 45
Unité de commande
Exemple de rupture de séquence
Code à exécuter :
1: Instr1
2: Si B==1 Alors GOTO 10: …
3: Instr3 10: Instr10
4: Instr4 11: Instr11
5: Instr5 12: Instr12
6: Instr6 …
D D1 D2 D3 D4 ! D10 D11 D D1 D2 D3 D4 D5 D6 …
R R1 R2 R3 ! ! R10 R R1 R2 R3 R4 R5 R6
X X1 X2 ! ! ! X X1 X2 X3 X4 X5
Problème réglé si
Mémoire multi-accès
Programmes et Données dans des mémoires différentes (ou multi-bloc)
Université de Savoie 47
8
Unité de commande
Effets du pipeline lors du débogage
Code à exécuter : Watch Window
1: A=1 A 1 La flèche indique la position du PC
2: B=1 B 1 Plusieurs cycles sont nécessaires
3: C=1 C 1 avant que la variable soit modifiée :
… NOP … Cela n’intervient qu’à l’étape X
Watch Window
10: A=2 (exécution)
A 1 ???
11: B=2
B 1
12: C=2
C 1
13: D=2
14: E=2 t1 t2 t3 t4 t5 t6 t7 t8
Watch Window
… F F10 F11 F12 F13 F14 … … …
A 2 !!!
D
B 1 D10 D11 D12 D13 D14 … …
Etage
Description Partie hardware utilisée
pipeline
P Generate program address PC
F Get Opcode Program memory
D Decode instruction Decoder
A Generate read address ARs, ARAU
Read Operand Data memory
R
Generate write address ARs, ARAU
Execute instruction MAC, ALU
X
Write result Data Memory
PC = Program Counter
ARAU = Auxiliary Register Arithmetic Unit
AR = Adresse Register
MAC= Multiply ACcumulate
ALU = Arithmetic Logic Unit 50
Unité de commande
Retards dans le pipeline
Université de Savoie 51
Unité de commande
Gestion des boucles
Université de Savoie 52
Unité de commande
Exemple : Calcul d’un filtre RIF
N 1
y n b(i ) x n i
Gestion matérielle des boucles : i 0
Unité de génération d’adresses programme
• PC sur 16 bits
• pile de 8 * 16 bits
• PFC,IR: pour le pipeline
• Interruptions :
• IMR: masque interruptions
• IFR: flags interruptions
Université de Savoie 55
Chapitre 3 : Les unités spécifiques des DSP
Université de Savoie 56
Unité de traitement
DSP virgule fixe / virgule flottante
Université de Savoie 57
Unité de traitement
DSP virgule fixe (1)
Arithmétique :
Dynamique limitée : [-Xmax et Xmax] : Possibilité de
débordement nécessité de recadrer les données
Développement :
Temps de développement plus long : Étude de la
dynamique des données, détermination du codage et
des recadrages
Université de Savoie 58
Unité de traitement
DSP virgule fixe (2)
Architecture :
Opérateurs plus simples
Largeur des données b : 16 bits
Efficacité énergétique plus importante : consommation
moins importante
Processeur moins cher (surface du circuit moins importante)
Processeur rapide (seulement pour les calculs à virgule fixe)
TMS320C64x :
59
Unité de traitement
DSP virgule flottante (1)
Arithmétique :
Dynamique importante : 1500 dB pour 32 bits
Développement
Temps de développement plus court
Recadrage des données assuré par le processeur
Compilateur de langage de haut niveau plus efficace : plus
grande portabilité
Université de Savoie 60
Unité de traitement
DSP virgule flottante (2)
Architecture :
Largeur des données : 32 bits
Opérateurs plus complexes (gestion de la mantisse et de
l’exposant)
Processeur plus cher et consommant plus
Marché
Applications nécessitant une grande dynamique :
audionumérique
Applications avec des faibles volumes
61
Unité de traitement
Exemple
Filtre numérique FIR sur N points
N 1
y(n) h(i).x(n i) x(n) h(n)
i 0
h(0)
x h(1)
x h(2)
x h(3)
x h(4)
x
y(n)
+ + + +
Cellule
Opérateurs
Multiplieur câblé
Multiplication en 1 cycle ou pipelinée (1 résultat de multiplication
par cycle)
Le résultat est fourni directement à l’UAL ou il est stocké dans un
registre (P register)
Largeur des opérandes source : b
résultat : bmultiplication = 2.b
Unités de saturation ou d’arrondi
Unités spécifiques
Unité de manipulation de bit, Viterbi, ...
Université de Savoie 63
Unité de traitement
Eléments de l’unité de traitement (2)
U.A.L.
Opérations arithmétiques : addition, soustraction,
incrémentation, négation
Opérations logiques : and, or, not
A B
b b
P
bmult
MAC
+
badd
Accumulateur
Sat /Arr
Université de Savoie 66
Unité de traitement
Exemple : TMS320C54x
DB PB DB CB DB CBDBEB
CB
1 additionneur 40 bits
1 ALU (40 bits)
2 registres d ’accumulation 40
bits
1 registre à décalage en
barillet
Université de Savoie 67
Chapitre 3 : Les unités spécifiques des DSP
Université de Savoie 68
Unité de mémorisation
Les différents accès à la mémoire
D D D D
x(n)
x x x x x
h(0) h(1) h(2) h(3) h(4)
y(n)
+ + + +
TAP
69
Unité de mémorisation
Rappels : Bus
Le CPU est le maître du bus
Il est le seul à écrire sur les bus adresse et contrôle
Le périphérique obtempère sur le bus données
Lecture : il fournit la donnée demandée
Ecriture : il récupère la donnée fournie par le CPU
Haute impédance : il se déconnecte du bus
Université de Savoie 70
Unité de mémorisation
Accès mémoire pour un calcul
2
CPU Mémoire
4
Université de Savoie 71
Unité de mémorisation
Architecture Von Neuman
Mémoire
CPU BUS Programme
+ Données
Université de Savoie 72
Unité de mémorisation
Architecture Harvard
Mémoire Programme
CPU
Mémoire Données
Université de Savoie 73
Unité de mémorisation
Accès mémoire multi-port
Mémoire Programme
+ Données
CPU
Mémoire Données
Ext’l A
Internal Data Read A/D Bus (D) External
Mem
Memory Data Read A/D Bus (C) I/F D Memory
Data Write A/D Bus (E)
Université de Savoie 77
Unité de mémorisation
Exemple du TMS320C5416
Program Data
SARAM DARAM
ROM ROM
P Bus
A
D Bus Ext’l
Mem
C Bus I/F D
E Bus
Université de Savoie 78
Unité de mémorisation
Cache d'instructions
DSP
cache Mémoire Programme
d’instructions + Données
Mémoire Programme
+ Données
CPU
Mémoire Données
MUX
Mémoire Programme
+ Données
CPU
Mémoire Données
interruptions
DMA
configuration
DMA4 DMA5
PING PING
IN OUT
31 1
Traitement
PONG PONG
IN OUT
2 2
Découpage en blocs
Université de Savoie 84
Unité de mémorisation
Adressage indirect : exemple (3)
Option Syntax Action Affected by:
No Modification *ARn no modification to ARn
Increment / *ARn+ post increment by 1
Decrement *ARn- post decrement by 1
Indexed *ARn+0 post increment by AR0 AR0
*ARn-0 post decrement by AR0
Circular *ARn+% post increment by 1 - circular BK
*ARn-% post decrement by 1 - circular
*ARn+0% post increment by AR0 - circular BK, AR0
*ARn-0% post decrement by AR0 - circular
Bit-Reversed *ARn+0B post inc. ARn by AR0 with reverse carry AR0
*ARn-0B post dec. ARn by AR0 with reverse carry (=FFT size/2)
86
Unité de mémorisation
Buffer linéaire
Chaque nouvel échantillon donne lieu au déplacement
de l’ensemble des données du buffer, l’adresse du
nouvel échantillon est toujours la même.
Université de Savoie 87
Unité de mémorisation
Adressage circulaire
Exemple : stockage des échantillons d’entrée dans un
filtre FIR.
0000h
MMRs Tip: use the .mmregs directive
to allow MMR names to be
0060h interpreted as addresses
Scratch
007Fh
Université de Savoie 89
Unité de mémorisation
Memory Mapped Registers
Addr. Addr.
Name (Hex) Description Name (Hex) Description
IMR 0000 Interrupt Mask Register AR0 0010 Address Register 0
IFR 0001 Interrupt Flag Register AR1 0011 Address Register 1
----- 2-5 Reserved AR2 0012 Address Register 2
ST0 0006 Status 0 Register AR3 0013 Address Register 3
ST1 0007 Status 1 Register AR4 0014 Address Register 4
AL 0008 A accumulator low (A[15:00]) AR5 0015 Address Register 5
AH 0009 A accumulator high (A[31:16]) AR6 0016 Address Register 6
AG 000A A accumulator guard (A[39:32]) AR7 0017 Address Register 7
BL 000B B accumulator low (B[15:00]) SP 0018 Stack Pointer Register
BH 000C B accumulator high (B[31:16]) BK 0019 Circular Size Register
BG 000D B accumulator guard (B[39:32]) BRC 001A Block Repeat Counter
T 000E Temporary Register RSA 001B Block Repeat Start Address
TRN 000F Transition Register REA 001C Block Repeat End Address
PMST 001D PMST Register
------- 01E-01F Reserved
Université de Savoie 91
Performance / Consommation
Consommation énergétique
Université de Savoie 93
Performance / Consommation
Panorama des DSP (2)
Université de Savoie 94
Chapitre 4 : Le DSP TMS320C5416
4.1 L’architecture
4.2 L’organisation mémoire
Université de Savoie 95
L’architecture
Diagramme bloc du TMS320C5416 (1)
Université de Savoie 96
L’architecture
Diagramme bloc du TMS320C5416 (2)
Program/Data ROM Program/Data RAM Mémoire
16K Words 128K Words JTAG Test/
interne
D(15-0) Emulation
MUX Control
Bus externe Program/Data Buses
Timer
A(23-0)
MAC ALU DMA Muxed GP I/O
17 x 17 MPY 40-Bit ALU Ch 0
CMPS Operator 8/16-bit Host Port
40-Bit Adder Interface (HPI)
Peripheral Bus
(VITERBI) Ch 1
RND, SAT EXP Encoder Ch 2 Multichannel Buffered
Serial Port (McBSP)
Shifter Accumulators Ch 3
40-Bit ACC A Multichannel Buffered
CPU40-Bit ACC B
40-Bit Barrel
(-16, 31)
Ch 4 Serial Port (McBSP)
Ch 5 Multichannel Buffered
Addressing Unit Serial Port (McBSP)
Université de Savoie 97
L’architecture
Diagramme bloc du TMS320C5416 (3)
Program/Data ROM Program/Data RAM Mémoire
16K Words 128K Words JTAG Test/
interne
D(15-0) Emulation
MUX Control
Bus externe Program/Data Buses
Timer
A(23-0)
MAC ALU DMA Muxed GP I/O
17 x 17 MPY 40-Bit ALU Ch 0
CMPS Operator 8/16-bit Host Port
40-Bit Adder Interface (HPI)
Peripheral Bus
(VITERBI) Ch 1
Unités de RND, SAT EXP Encoder Ch 2 Multichannel Buffered
calcul Shifter Accumulators
Serial Port (McBSP)
Ch 3
40-Bit ACC A Multichannel Buffered
40-Bit Barrel Ch 4 Serial Port (McBSP)
(-16, 31) 40-Bit ACC B
Ch 5 Multichannel Buffered
Addressing Unit Serial Port (McBSP)
Génération 8 Auxiliary Registers PLL Clock
d’adresses 2 Addressing Units
Generator
S/W Waitstate
Power Management Generator Entrées
Sorties
CPU
Université de Savoie 98
Structure interne du
TMS320C54x
Bus P
programme
Bus C / D
lecture
données
Bus E
écriture
données
ALU
Shifter
Viterbi
MAC
Chapitre 4 : Le DSP TMS320C5416
4.1 L’architecture
4.2 L’organisation mémoire
108
L’organisation mémoire
Mémoire de données
module.h Module.h54
Generate
Link
program.out
112
1. Introduction
Emulateur JTAG
HOST TARGET
CCS
JTAG
Interface
JTAG DSP
Emulator Target
JTAG est un outil puissant pour faire du debug logiciel bas niveau. Son
implementation demande une carte équipée d’un émulateur JTAG. Celui-ci est
parfois jumelé avec la connectivité USB qui alimente la carte.
program.c :
Programme source en langage C contenant la fonction main(). Nous
pouvons aussi avoir d’autres fichier.c pour les fonctions utilisateur.
program.asm :
Programme source en assembleur contenant la fonction main(). Nous
pouvons aussi avoir d’autres fichier.asm pour les fonctions utilisateur.
header.h :
Fichier header pour les déclaration des fonctions ou variables du langage
C utilisées dans le projet.
librairie.lib :
Librairie compilée. Ce genre de fichier est souvent donné par le
constructeur pour fournir des fonctions utilisateurs spécifiques pour son
composant.
program.obj :
Fichier objet. C’est un fichier compilé depuis une fichier assembleur ou
un fichier C.
command.cmd:
Fichier de commande. Indispensable pour le linker afin qu’il définisse
l’emplacement des variables et du code en mémoire.
L’interface et la compilation
Chaîne de compilation (5)
Fichier généré par la chaine de compilation
program.out :
C’est le programme exécutable pour une cible spécifique. Il s’agit
du code chargé en mémoire.
program.lst :
Fichier listing, il s’agit d’un fichier où sont superposés le code en
C, le code assembleur généré, le code machine généré, et les
adresses mémoires utilisées pour chaque instruction.
program.map :
Fichier mapping, il s’agit d’un fichier résumant toutes les
quantités et les zones mémoires utilisées.
>> Document d’exemples de code
L’interface et la compilation
Outils de débogage
Type d’outils Emulateur
DSP ou IDE
Emulateur
Contrôleur JTAG
Communique avec le DSP à
grande vitesse
Capable de simuler/enregistrer
en temps-réel l’état interne Définition de breakpoints
exact du DSP et modification des variables
Boundary-scan (JTAG) Récupération des données
Protocole intégré au sein du
processeur depuis la mémoire du DSP
Interrompt le DSP pour
accéder à l’information
Opérations
Interruption et relance de
l’exécution
Chargement du code
Breakpoints
Accès en lecture/écriture
Visualisation et modification du
contenu mémoire
Registres internes
117
L’interface et la compilation
Affichage du code désassemblé
#define N 256
short inputData[N];
short outputData[N];
void toto()
{
int i;
Ces fonctions font parties des librairies de la carte (Board Support Library)
>> Voir C:\CCStudio_v3.1\docs\hlp\C5416DSK.HLP
Exemple :
short cfft8 (DATA *x, DATA scale);
short fir(DATA *x, DATA *h, DATA *r,DATA **d, ushort nh, ushort nx);
Les librairies
Vue synoptique des modules utiles
Carte DSK
Université de Savoie 124