Telechargé par Elyafi Zakariae

Cours DSP EEIN-S2

publicité
Université Mohamed V de Rabat
Ecole Nationale Supérieure d’Arts et Metiers
Département Génie Electrique
Traitement du signal par DSP
Architecture et programmation des DSP
M. NAJOUI – ENSET - Rabat
Année Universitaire : 2020-2021
[email protected]
LOGO
Table des matières
I. Introduction
II. Qu’est ce qu’un DSP?
III. Architecture des DSP
IV. Performances des DSP
V. Etude de cas : TMS320C6678 & C6713
VI. Implémentations
2
M. NAJOUI
I. Introduction
Définitions
TNS
Application d’opérations mathématiques sur des signaux
représentés sous forme numérique
Signal
Quantité électrique qui traverse un canal sous la forme
d'une tension ou d'un courant, et qui est utilisée pour
transmettre des informations.
Une suite de nombres.
SN
Signal numérique = Séquence d’échantillons
Le signal électrique (impulsions), le signal sonore (sons) et le signal lumineux (voyants) sont des
types de signaux.
f(t)=5t : une seule variable
f(x,y)=2x+3y : deux variables
S1 = A Sin(ωt) : signal réel
S2 = A Cos(ωt)+j A Sin(ωt) : signal complexe
S4(t)= [S1(t), S2(t), S3(t)] : Signal multi-canaux
I(x,y,t)= [Ir(x,y,t), Ig(x,y,t), Ib(x,y,t)]: Signal multidimensionnel
M. NAJOUI
3
I. Introduction
Pourquoi leTNS?
Le traitement analogique du signal est réalisé souvent par
des composants électroniques tels que :
Résistances.
Mise en œuvre difficile, Coûteux,
Condensateurs.
Reproductibilité difficile
Inductances.
Les caractéristiques des composants électroniques sont
sensibles et peuvent changer suivant :
La température,
Instabilité à cause de la
Les variations de tension
sensibilité à l’env
Les vibrations mécaniques
Vieillissement
Impact considérable sur l'efficacité des
traitements fait par les circuits analogiques.
4
M. NAJOUI
I. Introduction
Pourquoi le TNS?
Avec le traitement numérique du signal, il est facile de :
Changer l’application.
Souplesse : Programmation flexible,
Corriger l’application.
Développement rapide, Reproductibilité. ☺
Mettre à jour des applis.
Un seul circuit
Plusieurs applications
En outre, le traitement numérique du signal réduit :
La sensibilité au bruit.
Le nombre de composants.
Stabilité : Insensibilité à
l’environnement, Précision connue
Coût.
et contrôlée. ☺
Consommation.
Le temps de développement
Les techniques du traitement numérique du signal sont
Actuellement si puissantes que parfois c’est impossible d’atteindre
les mêmes performances en analogique
M. NAJOUI
5
Comment faire du TNS?
Chaine classique de traitement numérique du signal :
Partie numérique
Quel type de processeur à utiliser pour le traitement ???
6
M. NAJOUI
Besoins en TNS
Contraintes de temps réel :
Exemple : taux d’échantillonnage 48kHz
Te = 20.833 µs
Arrivée de
l’échantillon x(n)
Théorème de Shannon
Arrivée de
l’échantillon x(n+1)
t
t0+Te
t0
Temps de traitement T
doit être <Te
M. NAJOUI
7
Besoins en TNS : Cahier des charges
Calculs rapides :
Multiplications-accumulations rapides
Bande passante de memoire importante
Support matériel/logiciel pour accélérer le contrôle des algorithmes
Contraintes temps réel :
Entrées/sorties a débit fixe
Prédiction des temps de réponse
Contraintes des systèmes embarqués :
Basse consommation d‘énergie
Les DSP ont une architecture
Taille des programmes
matérielle et logicielle
Production de masse :
dédiée permettant de
répondre à ces besoins
Faible coût
Rapidité de développement
DSP !
8
M. NAJOUI
Classification des processeurs
ASIP = Application Specific Instruction set Processor
ASIC = Application Specific Integrated Circuit
9
M. NAJOUI
Classification des processeurs
Les processeurs généralistes (GPP)
Coût relativement élevé
Forte consommation électrique
Bonnes performances en calcul numérique ☺
Certains surpassent les DSP en puissance brute (multi-coeurs)
GPP moins bons que les DSP pour :
La consommation d'énergie.
La gestion des entrées-sorties
Le prix
Les accès aux mémoires.
10
M. NAJOUI
Classification des processeurs
Les microcontrôleurs
ASIC/ASIP
Coût élevé
Faible coût ☺
Mise en œuvre complexe et
Faible consommation ☺
longue
Mémoire limitée
Confidentialité
Peu adapté aux signaux
Faible consommation ☺
numériques
Rendement amélioré ☺
Adapté aux tâches de
FPGA : sorte de ASIC
contrôle
programmable.
Faible consommation ☺
Traitement parallèle ☺
ASSP : Application Specific Standard Product
11
M. NAJOUI
Classification des processeurs
Microcontrôleurs : pas assez performants en TNS.
ASIC : trop coûteux, mise en œuvre complexe et longue.
ASIP : trop coûteux, définition complexe.
Processeurs généralistes : coûteux, consomment trop
d‘énergie, difficile à embarquer (µP).
Solution :
Concevoir des processeurs spécifiques pour faire du TNS.
DSP
Coût relativement faible ☺
Faible consommation d'énergie ☺
Jeu d’instruction spécialisé ☺
Efficacité et précision en calculs numériques ☺
Entrée/Sortie à grand débit ☺
Mémoire limitée
12
M. NAJOUI
Classification des processeurs
Conclusion :
L’utilisation d’un DSP est justifiée lorsqu’on demande:
Un prix convenable
Une petite surface du circuit
Une faible consommation
Traitement de plusieurs signaux en temps réel
L’utilisation d’un GPP est justifiée lorsqu’on demande:
Une mémoire assez importante
Des opérations avancées du système (OS: Windows, Linux,…)
Pas de contraintes sévères sur la consommation
M. NAJOUI
13
Capteurs
Chaine de traitement numérique du signal basé sur un DSP
Signal
original
Filtre
Passe - Bas
Convertisseur
Analogique
Numérique
Signal traité
Mémoire
Actionneurs
TNS basé sur un DSP
Filtre
Passe - Bas
Convertisseur
Numérique
Analogique
DSP
Entrées/Sortie
14
M. NAJOUI
DSP ?
Un DSP est un type particulier de microprocesseur. Il
se caractérise par le fait qu’il intègre un ensemble de
fonctions spéciales. Ces fonctions sont destinées à le
rendre particulièrement performant dans le domaine
du traitement numérique du signal.
Caractéristiques et avantages :
Multiplication-ACcumulation rapide (MAC) avec un
format de calcul étendu pour éviter les
dépassements
Mémoire à accès multiple/parallèle
Modes d’adressage spécialisés
Exécution rapide des boucles (SW Pipelining)
I/O intégrées avec le processeur
M. NAJOUI
15
Un peu d’histoire
1987
1980
1984
Le DSP1 de Bell Labs
Le 7720 de NEC
1982
Texas Instruments introduit le TMS32010
Le premier processeur utilisant le
format « virgule flottante » IEEE-754
est le MB86232 de Fujitsu
Le DSP56001 premier DSP 24 bits
virgule fixe de Motorola,
Le TMS320C30 de TI
Le DSP96001 et DSP96002 de Motorola
Le premier DSP 32 bits virgule
flottante “DSP32” de Bell Labs
1992-1997 : Processeurs faible consommation
1997-2008 : VLIW
2009+ : Multicore + Hybrides
16
M. NAJOUI
Domaines d’application des DSPs
Communications
Modem, téléphonie
Télévision & radio
numérique
Cryptage
Audio
Mixage et édition
Effets
Suppression de bruit
Annulation d’écho
Image / Vidéo
Compression/Codage
Traitement
Militaire
Imagerie (radar, sonar)
Cryptographie
Guidage de missiles
Navigation
Médical
Equipements de monitoring
(EEG, ECG)
Imagerie (IRM…)
Implants cochléaires,
Instrumentation
Analyseurs de spectre
Générations de fonctions
Interprétation de signaux
sismiques,
Automatisation
Commande des machines
Contrôle des moteurs
Robots
Automobile
Contrôle du moteur
Assistance au freinage
Aide à la navigation
Commandes vocales
Tableau de bord
17
M. NAJOUI
Domaines d’application du C667x
18
M. NAJOUI
Principaux constructeurs de DSP
Texas Instruments
13.00%
12,00%
Analog Devices
65.00%
Agere systems (ex-Lucent)
Freescale (ex-Motorola)
7.00%
3.00%
Autres (NXP, NEC... )
Part de marché/constructeur de DSP (2007)
M. NAJOUI
19
Représentation des nombres
Les valeurs traitées (coefficients, échantillons…) sont représentées sous
les deux formes suivantes :
DSP à
Virgule fixe
Virgule flottante
Format courant : 16/24
bits
Idéal avec CAN/CNA
12/14 bits
Applications : Contrôle
industriel, communications,
instrumentation, parole,
médical, militaire…
Format courant : 32 bits
Idéal pour le traitement sur
une grande dynamique
Applications : Audio
professionnel, vidéo,
médical …
20
M. NAJOUI
Représentation des nombres : Virgule fixe
Le complément à un d'un nombre binaire est la valeur obtenue en
inversant tous les bits de ce nombre.
Exemple :
+7 est équivalent à 0111
-7 est équivalent à 1000
Complément à deux
Inverser les bits de l'écriture binaire de la valeur absolue du nombre
(complément à un),
Ajouter 1 au résultat.
Exemple :
Calculer :
3
+
(−4)
?
=
(−7) ou (−1)
M. NAJOUI
21
Représentation des nombres : Virgule fixe
Complément à deux
Nombre
Codage
3
0
1
1
2
0
1
0
1
0
0
1
0
0
0
0
-1
1
1
1
-2
1
1
0
-3
1
0
1
-4
1
0
0
Nombre positif :
codé comme un
binaire naturel
Nombre négatif :
Inversion des
bits puis ajout
de 1
Signe
22
M. NAJOUI
Représentation des nombres : Virgule fixe
Codage des entiers
Exemple sur 8 bits :
M. NAJOUI
23
Représentation des nombres : Virgule fixe
Codage des réels
Format Qk :
Exemple :
Si k = 0
2,3125
Partie entière sur N-k bits en C2
entier
Partie fractionnaire sur k bits
Pour coder un réel x,
trouver les bi tels que :
Exemple : format Q5 sur 8 bits (N=8, k=5)
Partie entière : 3 bits && fractionnaire : 5 bits
Pour les non-signés:
24
M. NAJOUI
Représentation des nombres : Virgule fixe
Exemple : Format Q5 sur 8 bits
01001010 = 2,3125
+q = +1/32
01001011 = 2,3438
Si on veut coder 2,33
l’erreur maximale sera de 1/64 (q/2).
Que représente le nombre 01011101 en format Q2? Q4? Et Q7?
Ecrire les nombres suivant sous la forme binaire 8 bits signé au
format Q7 :
+0.5
+1.0
-1.0
+1/3 = 0.3333
-1/3 = -0.3333
M. NAJOUI
25
Représentation des nombres : Virgule flottante
Encodage
Signe
Exposant
Mantisse
Simple précision
32 bits
1bit
8 bits
23 bits
Double précision
64 bits
1 bit
11 bits
52 bits
valeur = signe × mantisse × 2(exposant − décalage)
26
M. NAJOUI
Représentation des nombres : Virgule flottante
Encodage
Signe
Exposant
Mantisse
Simple précision
32 bits
1bit
8 bits
23 bits
Double précision
64 bits
1 bit
11 bits
52 bits
valeur = signe × mantisse × 2(exposant − décalage)
M. NAJOUI
27
Représentation des nombres
Virgule fixe vs Virgule flottante
Pour quelles types d’applications un
processeur à virgule flottante est
exigé ?
Une grande précision
Une gamme dynamique très
large
Un grand rapport signal-sur-bruit
La facilité d’utilisation
Vitesse : DSP à virgule fixe
sont plus rapide.
Taille : DSP à virgule fixe sont
plus petits.
Energie : DSP à virgule fixe
consomment moins.
DSP virgule
Fixe
DSP virgule
Flottante
Complexité hard
Simple
Complexe
Coût
Faible
Elevé
Consommation
Faible
Elevée
Dynamique max
190 dB
1500 dB
Complexité prog
Elevée
Faible
28
M. NAJOUI
Architectures des processeurs
Le temps d'exécution (Tx) d'un programme peut
être présenté par l'équation :
Tx = Ni * Tc * Nc
• Ni : nombre d'instructions,
• Tc : temps d’un cycle = (1/fréquence du CPU),
• Nc : nombre de cycles nécessaires pour exécuter une
instruction.
Nous distinguons trois type d’architectures :
CISC : Complex Instruction Set Computer
RISC : Reduce Instruction Set Computer
VLIW : Very Long Instruction Word
29
M. NAJOUI
Architectures des processeurs
Plusieurs solutions possibles pour minimiser le temps d'exécution d'un
programme:
Tx = Ni * Tc * Nc
Minimiser le Ni :
ADDWF f,d [tâche1 : lecture mémoire, tâche2 : addition, tâche3 : stockage]
Exemple : PIC16F84
35 instructions
RISC : nbre d’instructions réduit et qui s’exécutent rapidement.
Minimiser le Tc et Nc :
Exemple : LD mem,reg1 ADD reg1,reg2
ST reg2,mem
Si tc = Tc/3 et nc = Nc/3
tx = Tx/9
CISC : jeu d’instructions riche avec des instructions complexes afin de
simplifier la tâche du compilateur.
Minimiser Ni, Tc et Nc :
Placer plusieurs instructions dans un mot de taille assez grande (> 100 bits).
Exécution en parallèle.
VLIW : HW simplifié, mais elle exige des compilateurs puissants
30
M. NAJOUI
Architecture générale d’un DSP
31
M. NAJOUI
Architecture générale d’un DSP
Architecture de Von Neumann (microprocesseurs) :
Les échanges s'effectuent de manière simple entre l’ALU et la mémoire unique par
un bus transitant les codes de programme et les données.
Architecture de Harvard (DSP) :
Mémoires données et programmes séparées
Meilleure utilisation du CPU: Chargement du programme et des données en parallèle
32
M. NAJOUI
Architecture générale d’un DSP
Les opérations les +
courantes dans les
algorithmes de TNS
Imposent
Contraintes
matérielles sur
l’architecture DSP
Filtres FIR :
Pour chaque operation a(i)x(n-i) :
•
•
•
•
•
•
Recherche de l’instruction
Recherche du coefficient a(i)
Recherche de la donnée x(n-i)
Multiplication a(i)x(n-i)
Accumulation a(i-1)x(n-i-1) + a(i)x(n-i)
Décalage en mémoire x(n-i)
x(n-i-1)
Objectifs :
4 accès à la mémoire
2 accès à l’unité de calcul
Réduire les accès mémoire en augmentant
les accès simultanés
Réduire le temps du calcul
33
M. NAJOUI
SW Pipelining
Principe : Découper une opération en plusieurs
tâches élémentaires à effectuer en parallèle.
Exemple : pipeline à 4 étages
Fetch
Lecture de l’instruction en mémoire programme
Decode
Décodage de l’instruction
Read/Write
Lecture ou écriture d’un opérande en mémoire de donnée
Execute
Exécution éventuelle d’une opération arithmétique/logique
34
M. NAJOUI
SW Pipelining
35
M. NAJOUI
SW Pipelining
Différents types de pipelines
36
M. NAJOUI
SW Pipelining
PIPELINE : Ex C66xx
Les phases du pipeline sont : Fetch, Decode et Execute.
Fetch se fait en 4 étapes :
PG: Program address generate
PS: Program address send
PW: Program access ready wait
PR: Program fetch packet receive
Decode se fait en 2 étapes :
DP: Instruction dispatch
DC: Instruction decode
Execute : Le nombre des étapes d’exécution se diffère
d’une instruction à une autre.
37
M. NAJOUI
SW Pipelining
PIPELINE : Ex C66xx
38
M. NAJOUI
SW Pipelining
Avantage :
Gain en vitesse d’execution (temps)
Inconvénient :
Electronique et programmation complexe
Un retard peut se produire :
S’il existe un conflit de ressources (accès à la mémoire ou
utilisation des bus)
En cas de rupture de séquence (branchement non prévu,
appel de sous-programme ou une interruption).
M. NAJOUI
39
DSP à hautes performances
Comment augmenter les performances ?
Plusieurs solutions :
Diminuer la durée d’un cycle d’horloge
fréquence du chip.
Augmentation de la
Augmenter le travail réalisé au cours d’un cycle
40
M. NAJOUI
DSP à hautes performances
Diminuer la durée d’un cycle d’horloge
Facilité de portage des applis existantes
Limites :
Consommation proportionnelle à la vitesse CPU
Interfaces mémoires deviennent des goulets
d’étranglement
Power = fct(CV2f)
C
Capacitance.
V
Operating voltage.
f
Frequency of operation.
M. NAJOUI
41
DSP à hautes performances
Augmenter le travail réalisé au cours d’un cycle :
Parallèlisme
SIMD : La même instruction est appliquée simultanément à
plusieurs données pour produire plusieurs résultats.
Superscalaire : Plusieurs instructions dans 1 cycle d’horloge
Plusieurs MAC, plusieurs ALU, cache données
Le processeur détecte lui-même les instructions pouvant être exécutées
en parallèle
Circuit de contrôle complexe et consommation elevée.
VLIW (Very Long Instruction Word) : Plus d’instructions
dans 1 cycle d’horloge
VLIW 8 voies = 8 instr. 32 bits = 256 bits
Le compilateur est responsable de présenter au matériel des
instructions exécutables en parallèle
Augmentation du
Hardware plus simple que superscalaire
nombre de cœurs du
Approches hybrides (SIMD/VLIW)
42
DSP (multi-core)
M. NAJOUI
Mesure de performances
Mesure de la vitesse :
43
M. NAJOUI
Mesure de performances
Mesure de la vitesse :
Exemple: DSP56156 30 MIPS
Taux d’échantillonnage 48kHz ==> Te = 20.833 µs
Quel est le nombre maximal d’instructions que peut exécuter
ce DSP entre 2 échantillons ?
44
M. NAJOUI
Mesure de performances
Benchmark : mesurer le temps que met le DSP
pour exécuter des programmes "standards" de
TNS.
Programmes standards
Comment choisir ces programmes ?
Quel domaine d’applications faut-il choisir ?
La qualité de l’implémentation !!!
La mesure des capacités d’un DSP par benchmark reste
néanmoins intéressante, car elle tend à mesurer la
performance globale du système de TNS (y compris les
capacités du programmeur !)
45
M. NAJOUI
Critères de choix d’un DSP
Le type de DSP à utiliser : virgule fixe ou flottante, avec le format
(16bit, 32bit…)
Les ressources mémoires utilisés, car s’il faut par exemple exécuter
très rapidement une FFT 1024 points, un DSP intégrant plus de 2048
mots de mémoire vive statique peut être nécessaire.
La présence d’un ou de plusieurs timers internes,
Le coût du DSP, son rapport «performance/prix»,
La bande passante
La présence des canaux DMA (Direct Memory Access)
Nombre de registres et de multiplieurs (matériel)
La
La
La
La
La
La
La
qualité de la documentation (de préférence claire et abondante).
disponibilité de notes d’applications, d’un support technique.
qualité du système de développement utilisé.
possibilité d’utiliser un langage de haut niveau (Langage C).
présence des librairies (du constructeur ou de tierces parties).
possibilité de réaliser facilement des prototypes et à faible coût.
pérennité du produit, c'est-à-dire l’évolution prévue par le fabricant (roadmap).
46
M. NAJOUI
Gammes de DSP
Gammes de TI :
C2000
Lowest Cost
Control Systems
Motor Control
Storage
Digital Ctrl Systems
TMS320
C5000
Performance &
Best Ease-of-Use
Efficiency
Best MIPS per
Watt / Dollar / Size
Wireless phones
Internet audio players
Digital still cameras
Modems
Telephony
VoIP
C6000
Critical apps
Comm Infrastructure
Wireless Base-stations
DSL
Imaging
Multi-media Servers
Video
47
M. NAJOUI
Evolution des DSP à virgule fixe
48
M. NAJOUI
Evolution des DSP à virgule flottante
49
M. NAJOUI
TMS320C6678 Multicore Fixed and Floating-Point Digital Signal Processor
50
M. NAJOUI
TMS320C6678 Multicore Fixed and Floating-Point Digital Signal Processor
Protocoles de communication haut-débit
Assure la communication entre un PC et le DSP pour des objectifs de débogage : chargement du code
pour exécution par les cœurs, mise en pause/marche de chacun des cœurs, …
51
M. NAJOUI
TMS320C6678 Multicore Fixed and Floating-Point Digital Signal Processor
WR : Réinitialisation
sans mettre hors
tension des
composants
Le connecteur AMC transporte
des lignes des protocoles de
communication haut-débit tel
que RapidIO ou PCIe (débits
jusqu’à 5 Gbps)
52
M. NAJOUI
TMS320C6678 Multicore Fixed and Floating-Point Digital Signal Processor
NB ! En générale, les cartes d’évaluation doivent être configurer
avant utilisation. Les modes de fonctionnement sont précisés
par le constructeur.
Notre carte DSP possède 18 interrupteurs « DIP-Switch »
permettent la configuration statique de la carte (horloge,
protocole PCIe, …).
53
M. NAJOUI
Architecture du TMS320C6678
54
M. NAJOUI
Architecture du TMS320C6678
8 cœurs chacun pouvant
se comporter comme un
processeur indépendant,
fonctionnant jusqu’à
1.25GHz
Les niveaux de mémoires :
L1 local pour chacun des
cœurs, L1D (pour les
données) et L1P (pour le
programme) de taille 32Ko
chacun; c’est le niveau le plus
proche au cœur ==> un
accès plus rapide, sans
latences (débit de 16 octets
par cycle).
L2 local pour chacun des
cœurs de taille 512 Ko;
l’accès à cette mémoire est
moins rapide qu’en L1
L1 ou L2 peuvent être
utilisée en mode CACHE,
55
M. NAJOUI
Architecture du TMS320C6678
Les niveaux de mémoires:
MSM (Multicore Shared
Memory) est une
mémoire statique SRAM
de 4 Mo partagées entre
les cœurs
Un contrôleur de la
mémoire dynamique
DDR3 (Double Data Rate)
64-Bit DDR3 EMIF, il
s’occupe des différentes
opérations de contrôle
pour la mémoire externe
DDR3 (rafraîchissement
périodique, READ,
WRITE, …)
L’accès à ce type de
mémoire est relativement
lent par rapport aux
mémoires statiques.
56
M. NAJOUI
Architecture du TMS320C6678
Assure les opérations de
débogage entre DSP et PC
Mémoire non volatile,
de taille 128 Ko, servant
pour sauvegarder le code
d’initialisation, même
après mise hors tension
des périphériques du
DSP.
Protège l’accès concurrent
aux périphériques par
plusieurs maîtres (i.e : les
8 cœurs)
Génère les horloges
demandées aux
fréquences souhaitées
L’EDMA (Enhanced Direct
Memory Access) permet le
transfert mémoire sans
l’intervention du CPU.
57
M. NAJOUI
Architecture du TMS320C6678
PCIe (5 Gbps), RapidIO (5 Gbps), ETHERNET (1 Gbps),
TSIP (32 Mbps), HyperLink (50 Gbps, entre 2 DSP C6678)
Interface
entre le
DSP et les
mémoires
flash
externes
Optimiser le
transfert des
paquets issus des
interfaces de
communications
haut-débit sur le
bus TeraNet,
ainsi que de
réduire les
latences des
transferts
mémoires entre
cœurs.
Protocoles de comm haut-débit
58
M. NAJOUI
Structure interne d’un cœur C66xx
59
M. NAJOUI
Structure interne d’un cœur C6xxx
Deux banc, chacun est composé de :
32 registres de 32-bit : A0...A31 et B0...B31
4 unités .L, .S, .M et .D
60
M. NAJOUI
Structure interne d’un cœur C6xxx
.L : Unité arithmétique et logique, capable d’exécuter des
instructions arithmétiques (additions, soustractions) et logiques
(AND, OR, …), chacune des unités est capable de faire au
maximum 2 additions/soustractions 32-bit flottantes/fixes par
cycle ; Notez bien que toutes les instructions agissent seulement
sur les 64 registres disponibles par cœur, et n’admettent pas des
opérandes liées à la mémoire externe.
.S : Unité de branchement et de décalage, capable d’exécuter
des opérations de branchement (saut du flux d’exécution d’un
programme à une position bien déterminée) ou de décalage des
registres. Cette unité est capable également d’exécuter des
opérations d’additions/soustractions flottante ou fixe (au
maximum 2 opérations par unité);
.M : Unité de multiplication, capable d’exécuter au maximum 4
multiplications 32-bit flottantes/fixes;
.D : Unité de chargement et de stockage, capable de
charger/stocker une donnée sur 64-bit;
61
M. NAJOUI
Structure interne d’un cœur C6678
62
M. NAJOUI
Performances d’un cœur du C6678
Capable d’exécuter 8 instructions différentes en parallèle
par cycle (une instruction par unité).
Capable d’exécuter 8 multiplications 32-bit flottante/fixe
par cycle en utilisant les deux unités de multiplication, et 8
additions/soustractions 32-bit flottante/fixe par cycle
en exploitant les 4 unités .L1/.L2/.S1/.S2;
63
M. NAJOUI
C6713 Core functional block diagram
64
M. NAJOUI
Caractéristiques du DSP C6713
65
M. NAJOUI
Description du Cœur de C673
66
M. NAJOUI
Développement d’une application embarquée
Conception algorithmique
Choix de la cible (DSP)
Développement sur PC
C ou assembleur ou autres…
Environnement de développement intégré (IDE)
Compilation, link
Chargement de l’exécutable dans le simulateur ou la cible
(carte d’évaluation)
Exécution du programme sur simulateur ou sur la cible
Vérification et Test du fonctionnement
M. NAJOUI
67
Développement d’une application embarquée
Assembleur
Langage C
Langage bas-niveau
Fastidieux
Jeux d’instructions
complexes et irréguliers
Spécifique à chaque
constructeur
Langage haut-niveau
Plus rapide à coder
Meilleure portabilité
Code machine généré moins
efficace
Plus puissant
Accès à certains
registres inconnus du C
Nécessite la maitrise de
l’architecture afin de
développer un code
optimise.
Permet d’optimiser
68
M. NAJOUI
L’outil de développement
Code Composer Studio v6.2.0 ou v5.3.0 de TI : IDE permettant de :
Coder en C/C++ ou ASM et compiler
Charger l’application sur la cible et debugger
Un outil puissant et gratuit, capable de faire l’émulation (quand on
dispose d’une carte d’évaluation) ou la simulation sur simulateur.
Téléchargement : http://processors.wiki.ti.com/index.php/Download_CCS
69
M. NAJOUI
Les étapes de création d’une application sur CCS
Création du projet : Le type (lib, exe…), la famille et le type générique
du DSP choisi.
Configuration de la cible (Target Configuration) : Un fichier portant
l’extension «.ccxml » où il faut spécifier la cible à utiliser (simulateur
ou émulateur).
Lier le fichier de configuration « .ccxml » au projet.
Création du fichier de commande « .cmd » : Un fichier essentiel où le
développeur précise dans quel niveau mémoire (L1, L2, MSM, DDR3,
ROM) il faut charger le programme de son application.
Développement de l’application
Compilation, débogage et exécution du projet.
70
M. NAJOUI
Notre première application
Affichage d’un message
Création du projet :
File -> New -> CCS Project
Project -> New CCS Project
Output type : Executable
Family : C6000, Generic C66xx
Device
Empty Project or Empty Project
(with main.c)
71
M. NAJOUI
Notre première application
Affichage d’un message
Configuration de la cible :
View -> Target Configurations
New Target Configuration File
Ou
File -> New -> Target
Configuration File
Cliquer sur « Finish »
72
M. NAJOUI
Notre première application
Affichage d’un message
Dans le cas de simulation :
Texas Instruments Simulator
C6678 Device Cycle Approximate
Simulator, Little Endian
Cliquer sur « Save »
73
M. NAJOUI
Notre première application
Affichage d’un message
Dans le cas de l’émulation :
Texas Instruments XDS100v1
USB Emulator
TMS320C6678
Cliquer sur « Save »
Vous pouvez aussi tester la
connection!!!
74
M. NAJOUI
Notre première application
Affichage d’un message
Dans le cas de l’émulation :
DSK-EVM-eZdsp onboard USB
Emulator
DSK6713
Cliquer sur « Save »
75
M. NAJOUI
Notre première application
Little Endian & Big Endian
La différence entre "Little Endian" (LE) et "Big Endian" (BE) existe au
niveau de la façon d’adressage d’un octet au sein d’un mot (de 32-bits) :
La carte d’évaluation peut être configurer en LE ou en BE. Pour notre
carte, nous avons choisi LE.
76
M. NAJOUI
Notre première application
Affichage d’un message
Lier le .ccxml au projet :
Clique droit sur votre fichier de
configuration
Link File To Project -> Nom de
votre projet
Assurez-vous que le fichier est bien
visible dans votre projet
77
M. NAJOUI
Notre première application
Affichage d’un message
Création du fichier de commande :
File -> New -> Others -> File
Sauvegarder le fichier sous l’extension .cmd et placer le dans le même
répertoire de votre projet (qui doit se trouver dans le workspace)
La structure minimale du fichier CMD est la suivante :
-stack
: Taille de la pile en octets
-heap
: Taille d’allocations dynamiques en octets
MEMORY { }
: Liste des mémoires disponibles sur le DSP utilisé
SECTIONS { } : Le programme est découpé en sections pouvant
être mappées à plusieurs mémoires
78
M. NAJOUI
Notre première application
Affichage d’un message
La liste des mémoires disponibles sur TMS320C6678 est la suivante :
79
M. NAJOUI
Notre première application
Affichage d’un message
Nous distinguons plusieurs sections prédéfinies pour un programme :
80
M. NAJOUI
Notre première application
Affichage d’un message
Exemple de compilation d’un programme C :
81
M. NAJOUI
Notre première application
Affichage d’un message
Exemple de fichier de commande .cmd :
-stack 0x5000
-heap 0x5000
MEMORY
{
L2SRAM : o = 0x00800000 , l = 0x00080000
}
SECTIONS
{
.text > L2SRAM
.data > L2SRAM
.cinit > L2SRAM
.const > L2SRAM
.cio > L2SRAM
.far > L2SRAM
.near > L2SRAM
.fardata > L2SRAM
.sysmem > L2SRAM
.stack > L2SRAM
}
82
M. NAJOUI
Notre première application
Affichage d’un message
Développer votre première application:
83
M. NAJOUI
Notre première application
Affichage d’un message
Compiler, débugger et exécuter votre application après chargement :
Project -> Build Project, puis Run -> Debug
Compilation et génération d’un fichier .out (traduction binaire d’un code
assembleur) qui sera charger par la suite dans la mémoire spécifiée.
Cocher les cœurs que vous voulez utiliser pour l’exécution de votre
application. Après validation, l’application se chargera dans la cible et
vous pouvez voir tous les cœurs dans la fenêtre « debug ».
Exécuter votre application
84
M. NAJOUI
Notre première application
Affichage d’un message
Après exécution sur un cœur vous devez voir le résultat de printf dans la
console.
[TMS320C66x_0] This is my first application on TMS320C6678
85
M. NAJOUI
Chaine de compilation (1/2)
Simulateur
86
M. NAJOUI
Chaine de compilation (2/2)
87
M. NAJOUI
TPs sur
TMS320C6713B
88
M. NAJOUI
TP1 : Prise en main du CCS et C6713B
Objectifs :
Maitriser les étapes essentielles de création d’un projet sur CCS.
Apprendre comment implémenter des algorithmes de TNS sur DSP C6713B.
Création du projet sous CCS :
Cliquer sur : Project
New CCS Project. Ensuite remplir les informations
suivantes :
•
•
•
•
•
Project name : nom de votre projet (exemple TP1)
Output type : Executable
Cocher la case Use default location
Family : C6000
Variant : C671x Floating-point DSP et sélectionner dans zone de droite
TMS320C6713
• Connection : Spectrum Digital DSK-EVM-eZdsp onboard USB Emulator
• Project templates and examples : choisir Empty Project (with main.c)
89
M. NAJOUI
TP1 : Prise en main du CCS et C6713B
Ajout de la CSL (Chip Support Library) :
CSL fournit une interface en langage C pour simplifier la configuration et le
contrôle des périphériques du DSP TMS320C6713 (Timer, EMDA, …).
Pour pouvoir utiliser la CSL dans un projet, il faut :
• Ajouter le chemin des fichiers .h de la CSL : Sélectionner le projet, aller dans le menu
Project→Properties→CCS Build→C6000 compiler→Include options, cliquer sur
Add et sélectionner le répertoire "C:\Program Files\C6xCSL\include".
• Ajouter le fichier csl6713.lib : aller dans le menu Project →Properties → CCS Build
→ C6000 linker → File search path → Include library file, cliquer sur Add et
sélectionner le fichier "C:\Program Files\C6xCSL\lib_3x\csl6713.lib“.
90
M. NAJOUI
TP1 : Prise en main du CCS et C6713B
Ajout de la BSL (Board Support Library) :
La BSL est fournit par TI afin de faciliter la programmation des composants
intégrés dans la carte DSK6713 (comme : Stereo codec AIC23).
Pour pouvoir utiliser la BSL dans un projet, il faut :
• Ajouter le chemin des fichiers .h de la BSL : Sélectionner le projet, aller dans le menu
Project →Properties →Build → C6000 compiler → Include options, et
sélectionner le répertoire "C:\ti\DSK6713\c6000\dsk6713\include".
• Ajouter le fichier dsk6713bsl.lib : Sélectionner le projet, aller dans le menu Project
→Properties → Build → C6000 linker → File search path → Include library file,
cliquer sur Add et sélectionner le fichier
"C:\ti\DSK6713\c6000\dsk6713\lib\dsk6713bsl.lib“.
M. NAJOUI
91
TP1 : Prise en main du CCS et C6713B
Configuration de la cible :
Simulation : sélectionner Texas Instruments Simulator dans la zone
Connection puis cocher le C6713 Device Cycle Accurate Simulator, Little
Endian dans la zone Board or Device. Cliquer enfin sur Save.
Emulation : sélectionner Spectrum Digital DSK-EVM-eZdsp onboard USB
Emulator dans la zone Connection puis cocher le DSK6713 dans la zone
Board or Device. Cliquer enfin sur Save.
Compilation du projet : clique droite sur le projet puis Build Project.
Chargement du programme dans la cible : Run
Debug
Exécution :
92
M. NAJOUI
TP2 : Implémentation d’un FIR sur C6713
Les objectifs :
Simulation sur Matlab d’un filtre à réponse impulsionnelle finie (RIF)
Implémenter ce filtre sur le DSP TMS320C6713
Comparer les résultats de l’implémentation avec les résultats obtenus par
Matlab
Simulation du FIR sur MATLAB :
Créer le signal x(t) = cos(2πf1t) + cos(2πf2t) + cos(2πf3t), sachant que f1=50,
f2=300, f3=2000, Fe=8000 et Tm=0.1 (durée du signal x(t))
En utilisant la commande fir1, calculer les paramètres d’un filtre FIR passe
bande d’ordre 100 avec les fréquences de coupure fc1=200 et fc2=400.
En utilisant la commande filter, créer le signal y(t) qui est le résultat de
l’opération de filtrage du signal x(t) par le filtre FIR crée précédemment
93
M. NAJOUI
TP2 : Implementation d’un FIR sur C6713
Simulation du FIR sur MATLAB :
Créer le signal x(t) = cos(2πf1t) + cos(2πf2t) + cos(2πf3t), sachant que f1=50,
f2=300, f3=2000, Fe=8000 et Tm=0.1 (durée du signal x(t))
En utilisant la commande fir1, calculer les paramètres d’un filtre FIR passe
bande d’ordre 100 avec les fréquences de coupure fc1=200 et fc2=400.
En utilisant la commande filter, créer le signal y(t) qui est le résultat de
l’opération de filtrage du signal x(t) par le filtre FIR crée précédemment
Visualiser sur la même figure les 4 courbes suivantes :
•
•
x(t) et X(f) : l’input dans le domaine temporel et fréquentiel.
y(t) et Y(f) : l’output dans le domaine temporel et fréquentiel.
Générer les trois fichiers suivants :
•
•
•
Coef.dat : les coefficients du filtre FIR séparés par une virgule.
Input.dat : les échantillons du signal à filtrer séparés par une virgule.
Output.dat : contenant les échantillons du signal filtré par Matlab séparés par une virgule.
94
M. NAJOUI
TP2 : Implementation d’un FIR sur C6713
Implémentation du FIR sur C6713
Créer un projet sur CCS avec le nom FIR_filter,
Développer la fonction « float FIR_filter(float xn) » qui implémente le
filtre FIR.
N = ordre du filtre.
bk = Coefficients du filtre.
Développer le programme principal ou vous faites appel a la fonction de filtrage afin
de filtrer le signal d’entrée.
Comparaison des résultats obtenus avec ceux de Matlab :
Comparaison graphique : en mode Debug, aller a Tools → Graph → Single Time.
Comparaison arithmétique (point par point) : Développer un programme C permettant
de comparer les valeurs de Output_Ref avec celles de Output sachant qu’une erreur
de 0.01 est permise.
95
LOGO
www.themegallery.com
M. NAJOUI
Téléchargement