Vous êtes sur la page 1sur 54

Université Mohamed V de Rabat

Ecole Normale Supérieure de l’Enseignement Technique


Département Génie Electrique

Traitement du signal par DSP

Architecture et programmation des DSP

M. NAJOUI – ENSET - Rabat

Année Universitaire : 2019-2020


LOGO
m.najoui@um5s.net.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

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

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

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

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

10

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

11

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

12

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

13

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

14

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

15

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

16

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

17

Domaines d’application du C667x

18 M. NAJOUI

18

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

19

Rôle du DSP
Le traitement numérique du signal revient à effectuer
essentiellement des opérations arithmétiques de base du type
A = (B x C) + D
Le rôle principal d’un DSP est d’effectuer le plus rapidement
possible, en principe en un seul cycle d'horloge, l'opération
multiplication/addition sur des grandeurs numériques :
MR=X⋅Y +R MAC : Multiply and
X et Y sont des données ou des constantes,
R une donnée, une constante ou un résultat précédent. ACcumulate
MR est le résultat de l'opération arithmétique de base.

Signal original x(n-i)

A.L.U.

Accumulateur

20 M. NAJOUI

20

M. NAJOUI 10
DSP vs Microporocesseur
Un microprocesseur classique nécessitera plusieurs cycles
d’horloge pour effectuer le calcul d’une opération MAC,

Par exemple, un 68000 a besoin de :


10 cycles d’horloge pour effectuer une addition,
70 cycles d’horloge pour effectuer une multiplication.
Soit 80 cycles pour seulement faire l’opération MAC.

NB : certain
processeurs ne
nécessiteront
que 4 cycles (2
chargement +1
mul + 1add)

21 M. NAJOUI

21

Evolution de l’exécution d’une MAC


Le principal objectif d’évolution des DSP a toujours été d’améliorer le
temps de calcul d’une MAC.

Actuellement, un DSP de gamme moyenne effectue une opération MAC sur


des données de 16 bits en moins de 25ns, soit 40.000.000
MAC/seconde.
Certains DSP possèdent un accumulateur adapté au MAC qui a un format
spécial incorporant des bits supplémentaires (bits de garde) suivant la
taille des données à manipuler Eviter les débordements

22 M. NAJOUI

22

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

23 M. NAJOUI

23

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)

24 M. NAJOUI

24

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

25 M. NAJOUI

25

Représentation des nombres : Virgule fixe

Codage des entiers

Exemple sur 8 bits :

26 M. NAJOUI

26

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

27 M. NAJOUI

27

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

28 M. NAJOUI

28

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

29 M. NAJOUI

29

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)

30 M. NAJOUI

30

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

31 M. NAJOUI

31

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

32 M. NAJOUI

32

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

33 M. NAJOUI

33

Architecture générale d’un DSP

34 M. NAJOUI

34

M. NAJOUI 17
Eléments principales d’un DSP

Unité de mémoire

CPU
Unité de calcul
Unité de commande (Pipeline)
Unité de génération d’adresses

Périphériques

35 M. NAJOUI

35

Quelques spécificités

Les opérations les + Contraintes


courantes dans les Imposent matérielles sur
algorithmes de TNS l’architecture DSP

Filtres FIR :
Pour chaque cellule 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


Objectifs : Augmenter les accès mémoires simultanés
Réduire le temps du calcul

36 M. NAJOUI

36

M. NAJOUI 18
Unité de mémoire
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

37 M. NAJOUI

37

Unité de mémoire

Architecture Harvard modifiée

Possibilité de charger 2 types de


données en 1 cycle Bancs de mémoires
Mém. prog+données coefficients
Mémoire données signal d’entrée

38 M. NAJOUI

38

M. NAJOUI 19
Unité de mémoire

Réduction des accès mémoires


Adressages spécifiques (circulaire)
Mémoire cache programme
• Contient des instructions exécutées fréquemment (boucles...)
• Structure plus simple que dans les processeurs généraux
• Configurable par l’utilisateur

39 M. NAJOUI

39

Structure interne du CPU

40 M. NAJOUI

40

M. NAJOUI 20
CPU : Unité de commande

Chef d’orchestre du CPU

Chargement des instructions


Compteur de programme (PC)
Registre d’instruction
Cache d’instructions
Séquencement (Séquencer le déroulement des instructions)
Décodage des instructions
Pilotage des autres unités
Gestion efficace des boucles

41 M. NAJOUI

41

CPU : Unité de commande

PIPELINE
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

42 M. NAJOUI

42

M. NAJOUI 21
CPU : Unité de commande

PIPELINE

43 M. NAJOUI

43

CPU : Unité de commande

PIPELINE
Différents types de pipelines

44 M. NAJOUI

44

M. NAJOUI 22
CPU : Unité de commande

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.

45 M. NAJOUI

45

CPU : Unité de commande

PIPELINE : Ex C66xx

46 M. NAJOUI

46

M. NAJOUI 23
CPU : Unité de commande

47 M. NAJOUI

47

CPU : Unité de commande

PIPELINE

Avantage :
Gain en vitesse d’exécution
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).

48 M. NAJOUI

48

M. NAJOUI 24
Périphériques

Port série
Port parallèle

Timers

Contrôleur d’interruption

Horloge interne

Interfaces (I2C, UART, Ethernet, PCI, CAN, LIN, Flexray…)

DMA

49 M. NAJOUI

49

DSP à hautes performances

Architecture conventionnelle (AC)


Spécialisée pour le TNS
Faible consommation, faible coût
Difficulté de programmation

Nouvelles architectures
Coût élevé par rapport aux AC.
Rendues nécessaires par de nouveaux besoins
• Performance (téléphonie 4G, 5G…)
• Rapidité de développement

50 M. NAJOUI

50

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

51 M. NAJOUI

51

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.

52 M. NAJOUI

52

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

53 M. NAJOUI

53

Mesure de performances

Mesure de la vitesse :

54 M. NAJOUI

54

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

55 M. NAJOUI

55

Mesure de performances

La vitesse de calcul d’un DSP n’est pas une indication


universelle,

Elle ne prends pas en compte un certain nombre de


perfectionnement dont peuvent bénéficier les DSPs :
Certains DSP proposent en effet des modes d’adressages plus
performants que d’autres. Ces modes sont spécialement adaptés à des
algorithmes standards du TNS (exemple : «bits reversing» pour les
FFT).
Le temps d’accès à la mémoire est un autre paramètre incontournable.

La mesure des performances par benchmark complète


avantageusement la mesure de la vitesse.

56 M. NAJOUI

56

M. NAJOUI 28
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 !)

57 M. NAJOUI

57

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

58 M. NAJOUI

58

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

59 M. NAJOUI

59

Evolution des DSP à virgule fixe

60 M. NAJOUI

60

M. NAJOUI 30
Evolution des DSP à virgule flottante

61 M. NAJOUI

61

TMS320C6678 Multicore Fixed and Floating-Point Digital Signal Processor

62 M. NAJOUI

62

M. NAJOUI 31
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, …

63 M. NAJOUI

63

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)

64 M. NAJOUI

64

M. NAJOUI 32
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, …).

65 M. NAJOUI

65

Architecture du TMS320C6678

66 M. NAJOUI

66

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

67 M. NAJOUI

67

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.

68 M. NAJOUI

68

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

69 M. NAJOUI

69

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

70 M. NAJOUI

70

M. NAJOUI 35
Structure interne d’un cœur C66xx

71 M. NAJOUI

71

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

72 M. NAJOUI

72

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

73 M. NAJOUI

73

Structure interne d’un cœur C6678

74 M. NAJOUI

74

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

75 M. NAJOUI

75

C6713 Core functional block diagram

76 M. NAJOUI

76

M. NAJOUI 38
Caractéristiques du DSP C6713

77 M. NAJOUI

77

Description du Cœur de C673

78 M. NAJOUI

78

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

79 M. NAJOUI

79

Développement d’une application embarquée

Assembleur Langage C
Langage bas-niveau Langage de plus haut
Fastidieux niveau
Jeux d’instructions Plus rapide à coder
complexes et irréguliers Meilleure portabilité
Spécifique à chaque
constructeur

Plus puissant Code machine généré moins


Accès à certains efficace
registres inconnus du C

Permet d’optimiser Outils de développement

80 M. NAJOUI

80

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

81 M. NAJOUI

81

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.

82 M. NAJOUI

82

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

83 M. NAJOUI

83

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 »

84 M. NAJOUI

84

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

85 M. NAJOUI

85

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!!!

86 M. NAJOUI

86

M. NAJOUI 43
Notre première application

Affichage d’un message


Dans le cas de l’émulation :

DSK-EVM-eZdsp onboard USB


Emulator

DSK6713

Cliquer sur « Save »

87 M. NAJOUI

87

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.

88 M. NAJOUI

88

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

89 M. NAJOUI

89

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

90 M. NAJOUI

90

M. NAJOUI 45
Notre première application

Affichage d’un message

La liste des mémoires disponibles sur TMS320C6678 est la suivante :

91 M. NAJOUI

91

Notre première application

Affichage d’un message


Nous distinguons plusieurs sections prédéfinies pour un programme :

92 M. NAJOUI

92

M. NAJOUI 46
Notre première application

Affichage d’un message


Exemple de compilation d’un programme C :

93 M. NAJOUI

93

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
}

94 M. NAJOUI

94

M. NAJOUI 47
Notre première application

Affichage d’un message


Développer votre première application:

95 M. NAJOUI

95

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

96 M. NAJOUI

96

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

97 M. NAJOUI

97

Chaine de compilation (1/2)

Simulateur

98 M. NAJOUI

98

M. NAJOUI 49
Chaine de compilation (2/2)

99 M. NAJOUI

99

TPs sur
TMS320C6713B

100 M. NAJOUI

100

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

101 M. NAJOUI

101

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“.

102 M. NAJOUI

102

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

103 M. NAJOUI

103

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 :

104 M. NAJOUI

104

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

105 M. NAJOUI

105

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.

106 M. NAJOUI

106

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

107 M. NAJOUI

107

LOGO
www.themegallery.com

108

M. NAJOUI 54