Vous êtes sur la page 1sur 48

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


LOGO
m.najoui@um5r.ac.ma

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

Application d’opérations mathématiques sur des signaux


TNS représentés sous forme numérique

Quantité électrique qui traverse un canal sous la forme


d'une tension ou d'un courant, et qui est utilisée pour
Signal 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

3 M. NAJOUI

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
5 M. NAJOUI

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
Théorème de Shannon
Te = 20.833 µs

Arrivée de Arrivée de
l’échantillon x(n) l’échantillon x(n+1)

t
t0 t0+Te

Temps de traitement T
doit être <Te

7 M. NAJOUI

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 DSP !
Contraintes des systèmes embarqués :
Basse consommation d‘énergie
Taille des programmes Les DSP ont une architecture
matérielle et logicielle
Production de masse : dédiée permettant de
Faible coût répondre à ces besoins
Rapidité de développement

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

Faible coût ☺ Coût élevé

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

13 M. NAJOUI

TNS basé sur un DSP


Chaine de traitement numérique du signal basé sur un DSP
Actionneurs
Capteurs

Signal
original Signal traité

Filtre Mémoire Filtre


Passe - Bas Passe - Bas

Convertisseur Convertisseur
Analogique
Numérique
DSP Numérique
Analogique

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

15 M. NAJOUI

Un peu d’histoire

1987

1980 Le premier processeur utilisant le


format « virgule flottante » IEEE-754
est le MB86232 de Fujitsu
Le DSP56001 premier DSP 24 bits
1984 virgule fixe de Motorola,
Le DSP1 de Bell Labs
Le TMS320C30 de TI
Le 7720 de NEC
Le DSP96001 et DSP96002 de Motorola
Le premier DSP 32 bits virgule
flottante “DSP32” de Bell Labs
1982

1992-1997 : Processeurs faible consommation


Texas Instruments introduit le TMS32010
1997-2008 : VLIW
2009+ : Multicore + Hybrides

16 M. NAJOUI
Domaines d’application des DSPs
Communications Médical
Modem, téléphonie Equipements de monitoring
(EEG, ECG)
Télévision & radio
Imagerie (IRM…)
numérique
Implants cochléaires,
Cryptage
Instrumentation
Audio
Analyseurs de spectre
Mixage et édition Générations de fonctions
Effets Interprétation de signaux
Suppression de bruit sismiques,
Annulation d’écho Automatisation
Image / Vidéo Commande des machines
Compression/Codage Contrôle des moteurs
Traitement Robots
Militaire Automobile
Contrôle du moteur
Imagerie (radar, sonar)
Assistance au freinage
Cryptographie
Aide à la navigation
Guidage de missiles
Commandes vocales
Navigation
Tableau de bord

17 M. NAJOUI

Domaines d’application du C667x

18 M. NAJOUI
Principaux constructeurs de DSP

13.00% Texas Instruments


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)

19 M. NAJOUI

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 Format courant : 32 bits
bits
Idéal avec CAN/CNA Idéal pour le traitement sur
12/14 bits une grande dynamique
Applications : Contrôle
industriel, communications, Applications : Audio
instrumentation, parole, professionnel, vidéo,
médical, militaire… 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)

21 M. NAJOUI

Représentation des nombres : Virgule fixe

Complément à deux

Nombre Codage
Nombre positif :
3 0 1 1 codé comme un
2 0 1 0 binaire naturel
1 0 0 1
0 0 0 0
-1 1 1 1 Nombre négatif :
Inversion des
-2 1 1 0 bits puis ajout
-3 1 0 1 de 1
-4 1 0 0

Signe

22 M. NAJOUI
Représentation des nombres : Virgule fixe

Codage des entiers

Exemple sur 8 bits :

23 M. NAJOUI

Représentation des nombres : Virgule fixe

Codage des réels


Format Qk :
Exemple : 2,3125 Si k = 0 entier

Partie entière sur N-k bits en C2 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

25 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)

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)

27 M. NAJOUI

Représentation des nombres

Virgule fixe vs Virgule flottante

Vitesse : DSP à virgule fixe Pour quelles types d’applications un


processeur à virgule flottante est
sont plus rapide. exigé ?
Taille : DSP à virgule fixe sont Une grande précision
Une gamme dynamique très
plus petits.
large
Energie : DSP à virgule fixe Un grand rapport signal-sur-bruit
consomment moins. La facilité d’utilisation

DSP virgule DSP virgule


Fixe 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 + Contraintes


courantes dans les Imposent matérielles sur
algorithmes de TNS 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) 4 accès à la mémoire
• Multiplication a(i)x(n-i)
• Accumulation a(i-1)x(n-i-1) + a(i)x(n-i) 2 accès à l’unité de calcul
• Décalage en mémoire x(n-i) x(n-i-1)

Réduire les accès mémoire en augmentant


Objectifs : 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).

39 M. NAJOUI

DSP à hautes performances

Comment augmenter les performances ?

Plusieurs solutions :

Diminuer la durée d’un cycle d’horloge Augmentation de la


fréquence du chip.

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.

41 M. NAJOUI

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) DSP (multi-core)

42 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 qualité de la documentation (de préférence claire et abondante).
La disponibilité de notes d’applications, d’un support technique.
La qualité du système de développement utilisé.
La possibilité d’utiliser un langage de haut niveau (Langage C).
La présence des librairies (du constructeur ou de tierces parties).
La possibilité de réaliser facilement des prototypes et à faible coût.
La 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 &
Efficiency Best Ease-of-Use
Best MIPS per Critical apps
Watt / Dollar / Size C6000 Comm Infrastructure
Wireless Base-stations
Wireless phones
Internet audio players DSL
Digital still cameras Imaging
Modems Multi-media Servers
Telephony Video
VoIP

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

Optimiser le
transfert des
paquets issus des
interfaces de
communications
haut-débit sur le
PCIe (5 Gbps), RapidIO (5 Gbps), ETHERNET (1 Gbps), bus TeraNet,
TSIP (32 Mbps), HyperLink (50 Gbps, entre 2 DSP C6678) ainsi que de
réduire les
Interface
latences des
entre le
transferts
DSP et les
mémoires entre
mémoires
cœurs.
flash
externes
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

67 M. NAJOUI

Développement d’une application embarquée

Assembleur Langage C
Langage bas-niveau Langage haut-niveau
Fastidieux Plus rapide à coder
Jeux d’instructions Meilleure portabilité
complexes et irréguliers
Spécifique à chaque Code machine généré moins
constructeur efficace
Plus puissant
Accès à certains Nécessite la maitrise de
registres inconnus du C 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“.

91 M. NAJOUI

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 M. NAJOUI

LOGO
www.themegallery.com

Vous aimerez peut-être aussi