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é.
Documents pareils
Conception DSP avec Xilinx™ System Generator®
implémenter un design de l’algorithme à la simulation