ÉCOLE POLYTECHNIQUE DE MONTRÉAL … · ou code mixte de C/C++ avec assembleur. Les instructions...

4

Transcript of ÉCOLE POLYTECHNIQUE DE MONTRÉAL … · ou code mixte de C/C++ avec assembleur. Les instructions...

Page 1: ÉCOLE POLYTECHNIQUE DE MONTRÉAL … · ou code mixte de C/C++ avec assembleur. Les instructions en langage assembleur peuvent être trouvées dans les documentations sur la carte

ÉCOLE POLYTECHNIQUE

DE MONTRÉAL

Département de Génie Électrique

La technologie de TEXAS INSTRUMENTS DSP pour le cours Analyse des Signaux ELE2700

M. Corinthios et Zaher Dannawi

29 août 2007

Page 2: ÉCOLE POLYTECHNIQUE DE MONTRÉAL … · ou code mixte de C/C++ avec assembleur. Les instructions en langage assembleur peuvent être trouvées dans les documentations sur la carte

2

Tables des matières Tables des matières ............................................................................................................. 2

Liste des figures .................................................................................................................. 3

Introduction ......................................................................................................................... 4

Programmation en C/C++ ................................................................................................... 6

Programmation à l’aide du Matlab/Simulink .................................................................... 11

Page 3: ÉCOLE POLYTECHNIQUE DE MONTRÉAL … · ou code mixte de C/C++ avec assembleur. Les instructions en langage assembleur peuvent être trouvées dans les documentations sur la carte

3

Liste des figures

Figure 2. 1: Fenêtre de nouveau projet. .............................................................................. 6

Figure 2. 2: Ajouter des fichiers au projet .......................................................................... 7

Figure 2. 3: Modification du fichier Volume.cmd .............................................................. 8

Figure 2. 4: Programme C++ de la série de Fibonacci ....................................................... 9

Figure 2. 5: Résultat du programme ................................................................................. 10

Figure 2. 6: Visualisation du mode mixte C++/ assembleur. ............................................ 10

Figure 3. 1: Schéma du system à réaliser………………………………………………...11

Figure 3. 2: Paramètres du boite ADC .............................................................................. 11

Figure 3. 3: Paramètres du boite Digital Filter Design ..................................................... 12

Figure 3. 4: Paramètres du boite DAC .............................................................................. 13

Figure 3. 5: Initialisation des Parameters de simulation ................................................... 13

Figure 3. 6 : Fenêtre de Configuration Parameters ........................................................... 14

Figure 3. 7 : Décochage du l’option ‘Incorporate DSP/BIOS’ ......................................... 14

Figure 3. 8 : CCStudio après la construction du projet ..................................................... 15

Page 4: ÉCOLE POLYTECHNIQUE DE MONTRÉAL … · ou code mixte de C/C++ avec assembleur. Les instructions en langage assembleur peuvent être trouvées dans les documentations sur la carte

4

Introduction Le puce de traitement numérique du signal TNS (DSP) (‘Digital Signal Processor’) de

Texas Instruments Inc. est un microprocesseur spécialisé pour effectuer en grandes

vitesse les opérations divers de traitement de signal tels que le filtrage, la transformation

et l’analyse spectrale en temps réel.

Un DSP est un processeur dont l'architecture est optimalisée pour effectuer des calculs

complexes en un coup d'horloge, mais aussi pour accéder très facilement à un grand

nombre d'entrées-sorties (numériques ou analogiques). La fonction principale utilisée

dans le DSP est la fonction MAC (Multiply and Accumulate), c'est-à-dire une

multiplication suivie d'une addition et d'un stockage du résultat.

Les DSP sont utilisés dans la plupart des applications du traitement numérique du signal

en temps réel. On les trouve dans les modems, les téléphones mobiles, les appareils

multimédia, les récepteurs GPS parmi autres.

La carte « d’initiation » (Starter Kit) de Texas Instruments TMS320C6713B, ou

brièvement C6713 possède une architecture qui permet l’utilisation des mots

d’instruction très grands (en anglais Very-Long-Instruction-Word (VLIW)) et la

réalisation des applications multicanaux et multifonctionnelles.

Cette carte est supportée par le logiciel Code Composer StudioTM qui contient des outils

de développement, y compris un compilateur de haute optimisation de C/C++, émulation

basée sur le JTAG , débogueur à temps réel (real-time debugging) et autres…

La carte TMS320C6713B peut être programmée en utilisant C/C++, langage assembleur,

ou code mixte de C/C++ avec assembleur. Les instructions en langage assembleur

peuvent être trouvées dans les documentations sur la carte au site web de Texas

Instruments.

Page 5: ÉCOLE POLYTECHNIQUE DE MONTRÉAL … · ou code mixte de C/C++ avec assembleur. Les instructions en langage assembleur peuvent être trouvées dans les documentations sur la carte

5

Grace a une collaboration entre Texas Instruments Inc. et MathWorks Corp. On pourrait

de plus configurer la carte à l’aide le Matlab/Simulink. Cette collaboration a réduit

immensément la complexité de programmation de la carte. Ainsi, on pourrait concevoir

un bloque fonctionnel d’un système en Simulink® et Matlab® afin de configurer

automatiquement la carte pour un Traitement à temps réel.

Les objectives de ce rapport sont d’introduire la carte de DSP, de programmer la carte

avec des petits programmes de C/C++ et à l’aide le Simulink [1].

Référence :

[1] M. Corinthios, “Signal Analysis, Systems and Transforms”, sous presse, Dec. 2007,

chap.15: “Digital Signal Processors: Design, Architecture”.

Page 6: ÉCOLE POLYTECHNIQUE DE MONTRÉAL … · ou code mixte de C/C++ avec assembleur. Les instructions en langage assembleur peuvent être trouvées dans les documentations sur la carte

6

Programmation en C/C++ Pour programmer la carte de DSP par un programme de C/C++, vous devez suivre les

étapes suivantes :

1- Allumer et brancher la carte :

- Allumer la carte.

- Brancher le câble de USB.

- Lancer le Code Composer Studio en cliquant sur ‘ 6713 DSK CCStudio 3.1’ qui se

trouve sur votre poste de travail.

- Établir la connexion avec la carte en cliquant sur ‘Debug’ dans le menu principal et

choisissant ‘Connect’. On peut vérifier le statut de la connexion qui s’affiche dans le

coin gauche de la fenêtre.

2-Créer un nouveau projet :

- Dans le menu principal cliquez sur ‘Project’, et choisissez ‘New’. Une nouvelle

fenêtre s’ouvrira comme dans la figure 2.1.

Figure 2. 1: Fenêtre de nouveau projet.

Dans cette fenêtre, vous choisissez un nom pour votre projet, sa location sur le disque

dure de l’ordinateur (par exemple C:\CCStudio_v3.1\MyProjects), son type (exécutable

.out ou librairie .lib) et la carte DSP (Target) utilisée (C6713).

Page 7: ÉCOLE POLYTECHNIQUE DE MONTRÉAL … · ou code mixte de C/C++ avec assembleur. Les instructions en langage assembleur peuvent être trouvées dans les documentations sur la carte

7

3- Ajouter des fichiers au projet :

- Ajoutez le programme C/C++ en cliquant le bouton droit de la souris sur le projet et

choisissez ‘ Add files to Project…’ figure. 2.2. Trouvez votre programme C/C++ sur le

disque dur et cliquez sur ‘ Open’.

- Ajoutez le fichier de commande (.cmd ou .lcf). Ce type de fichier divise la mémoire de

la carte en des sections. Cliquez le bouton droit de la souris sur le projet et choisissez ‘

Add files to Project…’. Ajoutez le fichier Volume.cmd en cliquant sur ‘Open’.

NB : vous pouvez trouver ce fichier en allant à

c:CCStudiov3.1/tutorial/dsk6713/volume1. ou

enonceELE2700/tutorial/dsk6713/volume1

- Ajouter les fichier d’Objet et de librairie (.o ou .l). Cliquez le bouton droit de la souris

sur le projet et choisissez ‘ Add files to Project…’. Ensuite, allez à

c:CCStudiov3.1/C6000/cgtools/lib/rts6700.lib ou EnonceELE2700/lib/rts6700.lib et

cliquez sur ‘Open’.

Figure 2. 2: Ajouter des fichiers au projet

Page 8: ÉCOLE POLYTECHNIQUE DE MONTRÉAL … · ou code mixte de C/C++ avec assembleur. Les instructions en langage assembleur peuvent être trouvées dans les documentations sur la carte

8

4-Compiler le programme de C/C++ et construire le projet :

- Dans la liste du projet à gauche de la fenêtre du CCStudio, cliquez sur le programme

(C/C++) ajouté. Ensuite dans le menu principal cliquez sur ‘Project’ et choisissez

‘Compile File’.

- Après la compilation du programme, construisez le projet en cliquant dans le menu de

‘Project ‘ sur ‘Rebuild all’. À noter qu’à ce point on pourrait recevoir le message

« warnings », concernant la grandeur de la pile (Stack size). Tel que suggéré par ce

message, modifiez le fichier Volume.cmd utilisant les commandes –stack et –heap tel que

montré à la figure 2.3. Appuyez de nouveau sur ‘Rebuild all’.

Figure 2. 3: Modification du fichier Volume.cmd

5- Charger et rouler le programme :

- Après la construction du projet, le programme doit être chargé sur la carte. Dans le

menu principal choisissez ‘File’ et ensuite ‘Load Program’. Une nouvelle fenêtre

s’ouvrira dans laquelle vous choisissez le fichier portant votre nom de projet suivi par

.out et cliquez sur ‘Open’.

Page 9: ÉCOLE POLYTECHNIQUE DE MONTRÉAL … · ou code mixte de C/C++ avec assembleur. Les instructions en langage assembleur peuvent être trouvées dans les documentations sur la carte

9

- Pour faire rouler le programme, cliquez dans la menue ‘Debug’ sur ‘Go Main’ et

ensuite dans le même menu ‘Debug’ cliquez sur ‘ Run’.

- S’il faut arrêter le programme, cliquez dans le menu ‘Debug’ sur ‘ Halt’.

Exemple série de Fibonacci : Pour bien comprendre les étapes présentées ci-dessus, on les applique sur un exemple. La

série de Fibonacci est générée pour une longueur n arbitraire, prise égale à 10 dans le

programme C++ montré dans la figure suivante :

Figure 2. 4: Programme C++ de la série de Fibonacci

Pour construire un nouveau projet basé sur le programme C++ de la série de Fibonacci,

suivez les étapes indiquées ci-avant. Faire roulez le programme et le résultat sera affiché

comme ‘Stdout’ au bas–gauche de la fenêtre du Code composer studio, figure 2.5.

Page 10: ÉCOLE POLYTECHNIQUE DE MONTRÉAL … · ou code mixte de C/C++ avec assembleur. Les instructions en langage assembleur peuvent être trouvées dans les documentations sur la carte

10

Figure 2. 5: Résultat du programme

Pour voir comment le CCStudio convertit les lignes de code C/C++ en assembleur, allez

dans le menu de ‘View’ et choisissez ‘Mixed Source/ASM’. Le programme C++ de la

série de Fibonacci sera présenté dans les deux langues C++ et assembleur (‘Mixed

Mode’) comme la figure 2.6 le montre :

Figure 2. 6: Visualisation du mode mixte C++/ assembleur.

Page 11: ÉCOLE POLYTECHNIQUE DE MONTRÉAL … · ou code mixte de C/C++ avec assembleur. Les instructions en langage assembleur peuvent être trouvées dans les documentations sur la carte

11

Programmation à l’aide du Matlab/Simulink

1- Construire un system dans le Simulink :

Utilisez Simulink pour reproduire le system présenté dans la figure suivante.

Figure 3. 1: Schéma du system à réaliser

La boîte ‘ADC’ de conversion A/N se trouve dans la librairie de Simulink au

‘(Embedded Target for TI C6000 DSP/ C6713 DSK Board Support/ ADC). Elle fait

configurer le Codec de la carte pour l’acquisition du signal par la porte ‘Line In’. Double-

cliquez sur cette boite et fixez les paramètres selon la figure suivante :

Figure 3. 2: Paramètres de la boite ADC

Page 12: ÉCOLE POLYTECHNIQUE DE MONTRÉAL … · ou code mixte de C/C++ avec assembleur. Les instructions en langage assembleur peuvent être trouvées dans les documentations sur la carte

12

La boîte d’insertion d’un filtre numérique ‘Digital Filter Design’ se trouve dans la

librairie de Simulink au (Signal Processing Blockset/ Filtering / Filter Designs / Digital

Filter Design). Dans l’exemple présent, les composantes du signal ayant des fréquences

entre 1 kHz et 1.5 kHz seront atténuées.

Double-cliquez sur la boite et fixez les paramètres selon la figure suivante :

Figure 3. 3: Paramètres du boite Digital Filter Design

La boîte ‘DAC’ de conversion N/A se trouve dans la librairie de Simulink au (Embedded

Target for TI C6000 DSP/ C6713 DSK Board Support/ DAC). Elle fait configurer le

Codec de la carte afin d’envoyer le signal filtré à la porte ‘Line Out’ et ‘Headphone’ de la

carte DSP. Double-cliquez sur la boite et fixez les paramètres selon la figure suivante :

Page 13: ÉCOLE POLYTECHNIQUE DE MONTRÉAL … · ou code mixte de C/C++ avec assembleur. Les instructions en langage assembleur peuvent être trouvées dans les documentations sur la carte

13

Figure 3. 4: Paramètres du boite DAC

La boîte ‘C6713DSK’, figure 3.1, se trouve dans la librairie de Simulink au (Embedded

Target for TI C6000 DSP/ C6000 Target Preferences/ C6713DSK). Cet élément

fournit un accès au hardware du processeur et permet de changer et configurer la carte

DSP pour l’exécution en temps réel (Real-Time Workshop).

En ajoutant cette boite à notre model de Simulink, une fenêtre s’ouvrira comme ci-

dessous

Figure 3. 5: Initialisation des Parameters de simulation

Cliquez sur ‘Yes’ pour initialiser les paramètres de la simulation d’une façon pertinente à

la carte utilisée.

2- Générer et charger le code sur la carte :

Pour générer le code du système créé ci-dessus, allez dans la fenêtre du Simulink et

choisissez dans le menu principal ‘Simulation’ et cliquez sur ‘Configuration

Parameters…’. La fenêtre suivante s’ouvrira.

Page 14: ÉCOLE POLYTECHNIQUE DE MONTRÉAL … · ou code mixte de C/C++ avec assembleur. Les instructions en langage assembleur peuvent être trouvées dans les documentations sur la carte

14

Figure 3. 6 : Fenêtre de Configuration Parameters

S’assurer que l’option ‘ Incorporate DSP/BIOS’ n’est pas choisie : Cliquez dans la liste

à gauche de la fenêtre ‘Configuration Parameters…’, figure 3.6, sur ‘TIC6000 Code

Generation’ et assurez que la boite de l’option ‘Incorporate DSP/BIOS’, n’est pas

cochée, figure 3.7, et cliquez sur ‘Apply’.

Figure 3. 7 : Décochage du l’option ‘Incorporate DSP/BIOS’

Page 15: ÉCOLE POLYTECHNIQUE DE MONTRÉAL … · ou code mixte de C/C++ avec assembleur. Les instructions en langage assembleur peuvent être trouvées dans les documentations sur la carte

15

Finalement, Cliquez dans la liste à gauche de la fenêtre ‘Configuration Parameters…’

sur ‘Real-Time Workshop’ et ensuite cliquez sur ‘Generate Code’ au bas et sur le côté

droit de la fenêtre.

Matlab automatiquement génère le code, établie une connexion avec le Code Composer

Studio, écrit tous les fichiers de C/C++ nécessaire pour le model, crée un nouveau projet,

ajoute les fichiers au projet et charge le programme sur la carte, figure 3.8.

Figure 3. 8 : CCStudio après la construction du projet

3- Rouler et Vérifier le programme :

Pour faire rouler le programme, dans la fenêtre de CC Studio, cliquez dans le menu

‘Debug’ sur ‘Go Main’ et ensuite dans le même menu ‘Debug’ cliquez sur ‘ Run’.

Pour vérifier notre système, on fournit à l’entrée de la carte un signal sinusoïdal par la

porte ‘Line In’ et on branche des écouteurs à la porte ‘Headphone’. Normalement, si la

fréquence de notre signal d’entrée est moins que 1 kHz ou plus grande que 1.5 kHz on

doit entendre un son constant qui sorte des écouteurs. Lorsque la fréquence du signal se

trouve entre 1 kHz et 1.5 kHz le signal entendu sera notablement atténué.