Programmation en C/C++

Transcription

Programmation en C/C++
É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
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
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
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.
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”.
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).
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
cliquez sur ‘Open’.
Figure 2. 2: Ajouter des fichiers au projet
et
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’.
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.
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.
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’. Doublecliquez sur cette boite et fixez les paramètres selon la figure suivante :
Figure 3. 2: Paramètres de la boite ADC
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 :
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 cidessous
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.
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’
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é.