Vous êtes sur la page 1sur 9

UFR De Physique

L3 : SEEC-ETCOM

Travaux pratiques DSP

Code Composer Studio 3.1

Kit DSK 6416

Le fonctionnement de chaque projet avec ses programmes


sera
contrôlé pendant la séance

PA Degryse

PA Degryse : TP DSP L3 sur Code Composer Studio page 1/9


A.Introduction

I.Principe de travail

a.Principe
Dans chaque Exercice on demande de :
• récupérer un exemple de projet pour le KIT DSK6416
• comprendre chaque ligne de programme source.
• Compiler le code source
• Charger le code binaire dans la cible
• Tester le programme par point d’arrêt, mode run, pas à pas visualiser les
variables etc.

b.Récupération des exemples


Dans ces TP on n’utilise que deux exemples de base. Chaque projet est un
dossier complet à récupérer dans votre dossier de travail « Z ».
• C:\CCStudio_v3.1\examples\dsk6416\bsl\led
• C:\CCStudio_v3.1\examples\dsk6416\bsl\tone

c.Fichier d’aide en ligne


Dans chaque programme écrit en langage « C » on utilise des fonctions
spécifiques au DSP et à la carte DSK :
• CSL : Cheap Support Library - Fonction spécifiques au DSP6416
• BSL : Board Support Library - Fonction spécifiques à la carte DSK.

On trouve toutes les informations utiles aussi bien pour la carte DSK que
pour ses fonctions dans le fichier d’aide :
• C:\CCStudio_v3.1\docs\hlp\c6416DSK.hlp
d.Compte rendu de TP
On demande :
• Un compte rendu global pour l’ensemble des TP
• Pour chaque exercice on doit avoir dans le compte rendu.
o La liste et le rôle des variables globales de l’application
o La liste des fonctions écrites et une description de leur rôle.
o Les paramètres d’appel et de retour de chaque fonction.
o L’algorithme de chaque fonction.
o La liste et le rôle de chaque variable locale de chaque fonction.
o Les tests réalisés.
o Les problèmes rencontrés et leurs solutions.
o En annexe le listing du programme source.

• IL DOIT ETRE REDIGE PENDANT LA SEANCE DE TP.


• IL SERA DEPOSE SUR LE RESEAU A LA FIN DE LA
DERNIERE SEANCE.
• AUCUN RETARD NE SERA ADMIS.

PA Degryse : TP DSP L3 sur Code Composer Studio page 2/9


B.Les dossiers spécifiques au kit DSK6416

PA Degryse : TP DSP L3 sur Code Composer Studio page 3/9


C.TP1 : Les LEDS et les Switch

I.Prise en main des outils

a.Le tutorial du KIT DSK 6416 : les switch et les Leds

PA Degryse : TP DSP L3 sur Code Composer Studio page 4/9


b.Le listing du fichier source
/*
* Copyright 2003 by Spectrum Digital Incorporated.
* All rights reserved. Property of Spectrum Digital Incorporated.
*/
/*
* ======== led.c ========
*
* This example blinks LED #0 at a rate of about 2.5 times per second using the LED module of the the DSK6416 Board
Support Library. The example also reads the state of DIP switch #3 and lights LED #3 if the switch is depressed or turns it
off if the switch is not depressed.
*
* The purpose of this example is to demonstrate basic BSL usage as well as provide a project base for your own code.
*
* Please see the DSK6416 help file for more detailed information.
*/
/*
* DSP/BIOS is configured using the DSP/BIOS configuration tool. Settings for this example are stored in a
configuration file called led.cdb. At compile time, Code Composer will auto-generate DSP/BIOS related files based on
these settings. A header file called ledcfg.h contains the results of the autogeneration and must be included for proper
operation.
* The name of the file is taken from led.cdb and adding cfg.h.
*/
#include "ledcfg.h"
/*
* The Board Support Library is divided into several modules, each of which has its own include file. The file dsk6416.h
must be included in every program that uses the BSL. This example also includes dsk6416_led.h and dsk6416_dip.h
because it uses the LED and DIP modules.
*/
#include "dsk6416.h"
#include "dsk6416_led.h"
#include "dsk6416_dip.h"

PA Degryse : TP DSP L3 sur Code Composer Studio page 5/9


/*
* main() - Main code routine, initializes BSL and runs LED application
*/
/*
* EXTRA: Pressing DIP switch #3 changes LED #3 from off to on.
*/

void main()
{
/* Initialize the board support library, must be first BSL call */
DSK6416_init();

/* Initialize the LED and DIP switch modules of the BSL */


DSK6416_LED_init();
DSK6416_DIP_init();

while(1)
{
/* Toggle LED #0 */
DSK6416_LED_toggle(0);
/* Check DIP switch #3 and light LED #3 accordingly, 0 = switch pressed */
if (DSK6416_DIP_get(3) == 0)
/* Switch pressed, turn LED #3 on */
DSK6416_LED_on(3);
else
/* Switch not pressed, turn LED #3 off */
DSK6416_LED_off(3);
/* Spin in a software delay loop for about 200ms */
DSK6416_waitusec(200000);
}
}

II. Chenillard

a.Chenillard simple
Ecrire un programme qui fait allumer et éteindre les 4 Leds les unes à la suite des autres de
manière permanente.

b.Chenillard avec marche arrêt


On veut utiliser le switch 0 pour définir une fonction marche arrêt du chenillard. Ecrire le
programme correspondant.

c.Chenillard avec changement de sens


On veut utiliser le switch 1 pour définir une fonction changement de sens du chenillard. Ecrire le
programme correspondant.

d.Chenillard à vitesse variable


On veut utiliser les 2 switch 2 et 3 pour définir 4 valeurs de vitesses au choix de l’utilisateur.
Ecrire le programme correspondant.

PA Degryse : TP DSP L3 sur Code Composer Studio page 6/9


D.TP2 : Le traitement du son

I.Fonctionnement du programme « tone.c »

a.Le listing du fichier source


/*
* Copyright 2002 by Spectrum Digital Incorporated.
* All rights reserved. Property of Spectrum Digital Incorporated.
*/

/*
* ======== tone.c ========
*
* This example uses the AIC23 codec module of the 6416 DSK Board Support Library to generate a 1KHz sine wave on
the audio outputs for 5 seconds.
* The sine wave data is pre-calculated in an array called sinetable. The codec operates at 48KHz by default. Since the
sine wave table has 48 entries per period, each pass through the inner loop takes 1 millisecond. 5000 passes through the
inner loop takes 5 seconds.
*
* Please see the 6416 DSK help file under Software/Examples for more detailed information.
*/

/*
* DSP/BIOS is configured using the DSP/BIOS configuration tool. Settings for this example are stored in a configuration
file called tone.cdb. At compile time, Code Composer will auto-generate DSP/BIOS related files based on these settings.
A header file called tonecfg.h contains the results of the autogeneration and must be included for proper operation. The
name of the file is taken from tone.cdb and adding cfg.h.
*/
#include "tonecfg.h"

/*
* The 6416 DSK Board Support Library is divided into several modules, each of which has its own include file. The file
dsk6416.h must be included in every program that uses the BSL. This example also includes dsk6416_aic23.h because it
uses the AIC23 codec module.
*/
#include "dsk6416.h"
#include "dsk6416_aic23.h"

/* Length of sine wave table */


#define SINE_TABLE_SIZE 48

/* Codec configuration settings */


DSK6416_AIC23_Config config = {
0x0017, // 0 DSK6416_AIC23_LEFTINVOL Left line input channel volume
0x0017, // 1 DSK6416_AIC23_RIGHTINVOL Right line input channel volume
0x00d8, // 2 DSK6416_AIC23_LEFTHPVOL Left channel headphone volume
0x00d8, // 3 DSK6416_AIC23_RIGHTHPVOL Right channel headphone volume
0x0011, // 4 DSK6416_AIC23_ANAPATH Analog audio path control
0x0000, // 5 DSK6416_AIC23_DIGPATH Digital audio path control
0x0000, // 6 DSK6416_AIC23_POWERDOWN Power down control
0x0043, // 7 DSK6416_AIC23_DIGIF Digital audio interface format
0x0001, // 8 DSK6416_AIC23_SAMPLERATE Sample rate control
0x0001 // 9 DSK6416_AIC23_DIGACT Digital interface activation
};

/* Pre-generated sine wave data, 16-bit signed samples */


Int16 sinetable[SINE_TABLE_SIZE] = {
0x0000, 0x10b4, 0x2120, 0x30fb, 0x3fff, 0x4dea, 0x5a81, 0x658b,
0x6ed8, 0x763f, 0x7ba1, 0x7ee5, 0x7ffd, 0x7ee5, 0x7ba1, 0x76ef,
0x6ed8, 0x658b, 0x5a81, 0x4dea, 0x3fff, 0x30fb, 0x2120, 0x10b4,
0x0000, 0xef4c, 0xdee0, 0xcf06, 0xc002, 0xb216, 0xa57f, 0x9a75,
0x9128, 0x89c1, 0x845f, 0x811b, 0x8002, 0x811b, 0x845f, 0x89c1,

PA Degryse : TP DSP L3 sur Code Composer Studio page 7/9


0x9128, 0x9a76, 0xa57f, 0xb216, 0xc002, 0xcf06, 0xdee0, 0xef4c
};

/*
* main() - Main code routine, initializes BSL and generates tone
*/

void main()
{
DSK6416_AIC23_CodecHandle hCodec;
Int16 msec, sample;

/* Initialize the board support library, must be called first */


DSK6416_init();

/* Start the codec */


hCodec = DSK6416_AIC23_openCodec(0, &config);

/* Generate a 1KHz sine wave for 5 seconds */


for (msec = 0; msec < 5000; msec++)
{
for (sample = 0; sample < SINE_TABLE_SIZE; sample++)
{
/* Send a sample to the left channel */
while (!DSK6416_AIC23_write(hCodec, sinetable[sample]));

/* Send a sample to the right channel */


while (!DSK6416_AIC23_write(hCodec, sinetable[sample]));
}
}

/* Close the codec */


DSK6416_AIC23_closeCodec(hCodec);
}
a. Expliquer comment fonctionne ce programme
• Quelles sont les valeurs maximales et minimales du tableau de sinus ?
• Expliquer comment est configuré le CODEC AIC23 ?
• Quelles sont les fonctions qui permettent de sortir un échantillon ?
• Comment est générée la fréquence d'échantillonnage ?
• Pourquoi 48 échantillons produit un signal à 1 kHz ?
• Comment sont gérées les voies gauches et droites ?

b. Modifications du programme
On garde toujours la même fréquence d’échantillonnage de 48kHz.
Modifier le programme pour :
• Générer un sinus sur les haut-parleurs à 2k Hz pendant 5 secondes.
• Générer un sinus sur les haut-parleurs à 4k Hz pendant 5 secondes.
• Générer un sinus sur les haut-parleurs à 8k Hz pendant 5 secondes.

c.Génération de signaux en sortie


En utlisant le même principe que pour générer un sinus à 1kHz pendant 5s, on demande:
• de générer un signal triangulaire à 1Khz
• de générer un signal de forme carré à 1 khz,
• de choisir l'une des trois formes sinus, triangle et carré avec les switch 0, 1et 2.
• visualiser sur les LEDS l'état des switch

PA Degryse : TP DSP L3 sur Code Composer Studio page 8/9


II.Entrées du son sur LINE-IN et sortie sur LINE-OUT

a.Entrées sorties directes

La fonction «DSK6416_AIC23_read()»
Description Read a 32 bit signed value from the codec data port.
Required Headers dsk6416.h dsk6416_aic23.h
Required Libraries dsk6416bsl.lib

Prototype Int16 DSK6416_AIC23_read(DSK6416_AIC23_CodecHandle hCodec, Int32 *val);


Parameters hCodec – Codec handle.val – Address of 16 bit signed variable to receive codec data.
Return Value TRUE – Data written successfully.FALSE – Data port is busy.
Example Uint32 data;
// Read 32 bits of codec data, loop to retry if data port is busy
while(!DSK6416_AIC23_read(hCodec, &data));

Remarque : Le driver “AIC23” ne permet d'utiliser que les voies “Line In” et “Line out”.
Pour se synchroniser en sortie sur la fréquence d'échantillonage mettre la valeur par
défaut “0x0081” dans la configuration “sample rate control”

b.Programme de lecture et écriture simple


Ecrire un programme qui recopie de manière permanente les deux voix stéréos de l’entrée ligne
sur la sortie ligne.

c.Programmes de filtrage du son


Modifier le programme générateur de son pour avoir :

• switch 1 : recopier l’entrée ligne sur la sortie ligne


• switch 2 : filtrer par un filtre passe bas l’entrée ligne et la reporter sur la sortie ligne.
• switch 3 : filtrer par un filtre passe haut l’entrée ligne et la reporter sur la sortie ligne.
• switch 4 : filtrer par un filtre coupe bande l’entrée ligne et la reporter sur la sortie ligne.

Pour l’équation de récurrence des filtres utiliser matlab pour

⇒ Choisir la fréquence d’échantillonnage.


⇒ Choisir la ou les fréquences de coupure.
⇒ Choisir le type de filtre : RII ou RIF.
⇒ Le type des cœfficients réels, 16 bits, 32 bits signés ou non.
⇒ Générer un fichier de type header « filtre_PB.h » à intégrer dans code source.

Remarques :
o Les données à lire et écrire dans « le CODEC » sont de type 16 bits signés.
o Une multiplication 16*16 en mode signée donne un résultat en 32 bits signés.
o On peut régler le gain du filtre par des décalages à gauche ou à droite.

PA Degryse : TP DSP L3 sur Code Composer Studio page 9/9

Vous aimerez peut-être aussi