Uploaded by Adam Hqcker

Digital Signal Processing (DSP)

advertisement
Université Ibn Tofail
Ecole Nationale des Sciences Appliquées
Département Génie Electrique & Réseaux de Télécommunications
Kenitra
Module : Digital Signal Processing (DSP)
Filière Master : Electronique embarqué et Systèmes de
Télécommunications (Semestre 2)
Pr . R.ELGOURI
Année universitaire: 2019/2020
PLAN DU COURS
1ère Partie :
Généralité sur les DSP……………………………3
- DSP de Texas Instrument …………………………20
2ième Partie: Traitement Numérique du Signale……………………..26
- Introduction aux Filtres Numériques
- Etude des Filtres Numériques
- Synthèse des Filtres Numériques
3ième Partie: Travaux Pratiques………………..……………………..60
-TP1 : Prise en main du logiciel Code Composer Studio (CCS)
-TP 2 : Exemples de programmation sur carte DSP
I
G
R
OU
EL
Pr
.E
L
GO
UR
I
Ra
ch
id
EN
SA
K
Page 3 of 74
I
G
R
OU
EL
Pr
.E
L
GO
UR
I
Ra
ch
id
EN
SA
K
Page 4 of 74
I
G
R
OU
EL
Pr
.E
L
GO
UR
I
Ra
ch
id
EN
SA
K
Page 5 of 74
I
G
R
OU
EL
Pr
.E
L
GO
UR
I
Ra
ch
id
EN
SA
K
Page 6 of 74
I
G
R
OU
EL
Pr
.E
L
GO
UR
I
Ra
ch
id
EN
SA
K
Page 7 of 74
I
G
R
OU
EL
Pr
.E
L
GO
UR
I
Ra
ch
id
EN
SA
K
Page 8 of 74
I
G
R
OU
EL
Pr
.E
L
GO
UR
I
Ra
ch
id
EN
SA
K
Page 9 of 74
I
G
R
OU
EL
Pr
.E
L
GO
UR
I
Ra
ch
id
EN
SA
K
Page 10 of 74
I
G
R
OU
EL
Pr
.E
L
GO
UR
I
Ra
ch
id
EN
SA
K
Page 11 of 74
I
G
R
OU
EL
Pr
.E
L
GO
UR
I
Ra
ch
id
EN
SA
K
Page 12 of 74
I
G
R
OU
EL
Pr
.E
L
GO
UR
I
Ra
ch
id
EN
SA
K
Page 13 of 74
I
G
R
OU
EL
Pr
.E
L
GO
UR
I
Ra
ch
id
EN
SA
K
Page 14 of 74
I
G
R
OU
EL
Pr
.E
L
GO
UR
I
Ra
ch
id
EN
SA
K
Page 15 of 74
I
G
R
OU
EL
Pr
.E
L
GO
UR
I
Ra
ch
id
EN
SA
K
Page 16 of 74
I
G
R
OU
EL
Pr
.E
L
GO
UR
I
Ra
ch
id
EN
SA
K
Page 17 of 74
I
G
R
OU
EL
Pr
.E
L
GO
UR
I
Ra
ch
id
EN
SA
K
Page 18 of 74
I
G
R
OU
EL
Pr
.E
L
GO
UR
I
Ra
ch
id
EN
SA
K
Page 19 of 74
I
G
R
OU
EL
Pr
.E
L
GO
UR
I
Ra
ch
id
EN
SA
K
Page 20 of 74
I
G
R
OU
EL
Pr
.E
L
GO
UR
I
Ra
ch
id
EN
SA
K
Page 21 of 74
I
G
R
OU
EL
Pr
.E
L
GO
UR
I
Ra
ch
id
EN
SA
K
Page 22 of 74
I
G
R
OU
EL
Pr
.E
L
GO
UR
I
Ra
ch
id
EN
SA
K
Page 23 of 74
I
G
R
OU
EL
Pr
.E
L
GO
UR
I
Ra
ch
id
EN
SA
K
Page 24 of 74
I
G
R
OU
EL
Pr
.E
L
GO
UR
I
Ra
ch
id
EN
SA
K
Page 25 of 74
I
G
R
OU
EL
Pr
.E
L
GO
UR
I
Ra
ch
id
EN
SA
K
Page 26 of 74
I
G
R
OU
EL
Pr
.E
L
GO
UR
I
Ra
ch
id
EN
SA
K
Page 27 of 74
I
G
R
OU
EL
Pr
.E
L
GO
UR
I
Ra
ch
id
EN
SA
K
Page 28 of 74
I
G
R
OU
EL
Pr
.E
L
GO
UR
I
Ra
ch
id
EN
SA
K
Page 29 of 74
I
G
R
OU
EL
Pr
.E
L
GO
UR
I
Ra
ch
id
EN
SA
K
Page 30 of 74
I
G
R
OU
EL
Pr
.E
L
GO
UR
I
Ra
ch
id
EN
SA
K
Page 31 of 74
I
G
R
OU
EL
Pr
.E
L
GO
UR
I
Ra
ch
id
EN
SA
K
Page 32 of 74
I
G
R
OU
EL
Pr
.E
L
GO
UR
I
Ra
ch
id
EN
SA
K
Page 33 of 74
I
G
R
OU
EL
Pr
.E
L
GO
UR
I
Ra
ch
id
EN
SA
K
Page 34 of 74
I
G
R
OU
EL
Pr
.E
L
GO
UR
I
Ra
ch
id
EN
SA
K
Page 35 of 74
I
G
R
OU
EL
Pr
.E
L
GO
UR
I
Ra
ch
id
EN
SA
K
Page 36 of 74
I
G
R
OU
EL
Pr
.E
L
GO
UR
I
Ra
ch
id
EN
SA
K
Page 37 of 74
I
G
R
OU
EL
Pr
.E
L
GO
UR
I
Ra
ch
id
EN
SA
K
Page 38 of 74
I
G
R
OU
EL
Pr
.E
L
GO
UR
I
Ra
ch
id
EN
SA
K
Page 39 of 74
RI
U
GO
EL
Pr
.E
L
GO
UR
I
Ra
ch
id
EN
SA
K
Page 40 of 74
I
G
R
OU
EL
Pr
.E
L
GO
UR
I
Ra
ch
id
EN
SA
K
Page 41 of 74
I
G
R
OU
EL
Pr
.E
L
GO
UR
I
Ra
ch
id
EN
SA
K
Page 42 of 74
I
G
R
OU
EL
Pr
.E
L
GO
UR
I
Ra
ch
id
EN
SA
K
Page 43 of 74
I
G
R
OU
EL
Pr
.E
L
GO
UR
I
Ra
ch
id
EN
SA
K
Page 44 of 74
I
G
R
OU
EL
Pr
.E
L
GO
UR
I
Ra
ch
id
EN
SA
K
Page 45 of 74
I
G
R
OU
EL
Pr
.E
L
GO
UR
I
Ra
ch
id
EN
SA
K
Page 46 of 74
I
G
R
OU
EL
Pr
.E
L
GO
UR
I
Ra
ch
id
EN
SA
K
Page 47 of 74
I
G
R
OU
EL
Pr
.E
L
GO
UR
I
Ra
ch
id
EN
SA
K
Page 48 of 74
I
G
R
OU
EL
Pr
.E
L
GO
UR
I
Ra
ch
id
EN
SA
K
Page 49 of 74
I
G
R
OU
EL
Pr
.E
L
GO
UR
I
Ra
ch
id
EN
SA
K
Page 50 of 74
I
G
R
OU
EL
Pr
.E
L
GO
UR
I
Ra
ch
id
EN
SA
K
Page 51 of 74
I
G
R
OU
EL
Pr
.E
L
GO
UR
I
Ra
ch
id
EN
SA
K
Page 52 of 74
I
G
R
OU
EL
Pr
.E
L
GO
UR
I
Ra
ch
id
EN
SA
K
Page 53 of 74
I
G
R
OU
EL
Pr
.E
L
GO
UR
I
Ra
ch
id
EN
SA
K
Page 54 of 74
I
G
R
OU
EL
Pr
.E
L
GO
UR
I
Ra
ch
id
EN
SA
K
Page 55 of 74
I
G
R
OU
EL
Pr
.E
L
GO
UR
I
Ra
ch
id
EN
SA
K
Page 56 of 74
I
G
R
OU
EL
Pr
.E
L
GO
UR
I
Ra
ch
id
EN
SA
K
Page 57 of 74
I
G
R
OU
EL
Pr
.E
L
GO
UR
I
Ra
ch
id
EN
SA
K
Page 58 of 74
I
G
R
OU
EL
Pr
.E
L
GO
UR
I
Ra
ch
id
EN
SA
K
Page 59 of 74
I
G
R
OU
EL
Pr
.E
L
GO
UR
I
Ra
ch
id
EN
SA
K
Page 60 of 74
TPN° 1: Initiation au Code Composer Studio (CCS)
et au kit DSP Starter KIT (DSK)
But de TP : Ce familiariser avec l’environnement de développement CCS (code composer
studio) et le starter kit DSP (DSK).
Présentation générale :
Le kit DSK comporte un processeur de traitement de signal de la génération 6x à virgule
flottante de Texas Instrument.
Les figures suivantes montrent les principales composantes de la carte c6713 DSK
Page 61 of 74
Mise en marche et diagnostique de la carte:
1. Alimentez le kit, Attendez que les LEDs clignotent puis restent allumées.
2. Branchez ensuite le câble USB.
Pour diagnostiquer le kit, lancez DSK Diagnostics Utility, puis cliquez sur ‘Start‘, et attendez
jusqu'à la fin.
Le diagnostique n’est pas obligatoire à chaque utilisation de la carte, il est facultatif pour
vérifier le bon fonctionnement des principaux composantes du kit.
Mon Premier projet :
Nous allons commencer à travailler sur un projet déjà existant, afin de se familiariser avec le
logiciel Code Composer Studio. Ce projet est un exemple fournit par le constructeur de la
carte.
Ce projet à la fonction :

De clignoter la led_0 ;

De commander le clignotement de la led_3 par l’interrupteur_3
Etapes à suivre : valable aussi pour tous les autres projets
1. Lancez le « 6713 DSK CCStudio v3.1.exe » (depuis le bureau de votre PC).
2. Après le lancement du CCS, cliquez sur (Debug  Connect) afin d’établir la
connexion entre le logiciel el le kit.
3. Cliquer sur: Project  Open.
4. Choisissez le fichier led.pjt qui existe déjà dans le dossier dont le chemin est :
(C:\CCStudio_v3.1\examples\dsk6713\bsl\led)
5. Pour visualiser le code du programme cliquez sur source  led.c
Page 62 of 74
6. Pour compiler le projet, cliquer sur (Project Build). Si la compilation se passe bien
vous devez avoir : 0 Errors, 0 Warning, 0 Remark.
7. Pour charger le programme dans le DSP, cliquer sur file --> load program puis
choisissez le fichier led.out : (dans le dossier Debug)
Page 63 of 74
8. Pour exécuter le programme cliquer sur: Debug --> run
9. Pour arrêter l’exécution cliquer sur : Debug -->Halt
Création d’un nouveau projet :
Cette fois-ci, nous allons créer un nouveau projet intitulé Sine8_led, dont la fonction est de
générer en sortie un signal sinusoïdal puis, allumer la led_0 si l’interrupteur DIP_0 est actif
(DIP_0=1)
Les étapes à suivre
1. Démarrez CCS.
2. Créez un nouveau projet : Project -> new
Page 64 of 74
Puis donnez le nom du projet, La location (choisissez un dossier), le type de projet et le type
de DSP sur lequel vous allez travailler Target) :
Le nom: led
Location:
c:\CCStudio_v3.1\myprojects\led
Type de projet : exécutable (.out)
Target : TMS320C67XX
3. Nous allons écrire notre premier programme en langage C (code source), pour cela
cliquer sur : File->New->Source File.
Sur votre nouveau fichier écrivez le texte suivant :
// Remarque: attention aux lettres majuscules et minuscules
#include "dsk6713_aic23.h"
//le fichier support du convertisseur codec
Uint32 fs = DSK6713_AIC23_FREQ_8KHZ;
// fréquence d’echantiollonnage
short
//pointeur de la table
loop = 0;
short gain = 10;
//facteur de gain
short sine_table[8]={0,707,1000,707,0,-707,-1000,-707}; //les valeurs de la fonction sin
void main()
{
comm_poll();
//init DSK,codec,McBSP
DSK6713_LED_init();
//init LED
DSK6713_DIP_init();
//init DIP
while(1)
// boucle infinie
{
Page 65 of 74
if(DSK6713_DIP_get(0)==0)
//si l’interrupteur=1
{
DSK6713_LED_on(0);
output_sample(sine_table[loop]*gain);
// allume la LED _0
//faire sortir la valeur sur l’output
if (loop < 7) ++loop;
else loop = 0;
}
else DSK6713_LED_off(0);
// éteint la LED _0
}
}
4. Enregistrez ce fichier dans le dossier de votre projet sous le nom Sine8_LED .c (ce
fichier doit avoir une extension .c).
5. Ajoutez le fichier Sine8_LED .c : Project -> Add Files to Project .
6. Ajoutez le fichier source c6713dskinit.c qui se trouve dans le dossier C:\fichierCCS
par Project -> Add Files to Project.
7. Ajoutez les fichiers support de librairie : rts6700.lib, dsk6713bsl.lib et
(qui sont aussi dans le même dossier).
8. Puis ajouter le fichier de liaison c6713dsk.cmd.
9. Ajoutez aussi Vectors_poll.asm
10. Réglez les options de la compilation :
Project->Build option
Page 66 of 74
csl6713.lib
Choisissez target version= C671x ( - mv6710) .
11. Dans la categorie advanced :choisir Memory Models = Far ( – mem_ model:data=far)
12. Dans la catégorie Préprocesseur réglez :
Pre - Defi ne Symbol= CHIP_6713
Include Search Path = c:\CCStudio_v3.1\C6000\dsk6713\include
13. Cliquez sur linker puis réglez l’options suivante :
Page 67 of 74
Library Search Path= c:\CCStudio_v3.1 \C6000 \dsk6713 \lib
14. Scannez les fichiers ajoutés : Project->Scan All File Dependencies
15. Vérifiez si tous les fichiers désirés sont ajoutés :
16. Exécutez le programme en suivant les étapes 2, 6 ,7 et 8 de la 1ér partie.
17. (Après la compilation il se peut que le CCS affiche des Warnings qui n’influencent
pas sur le fonctionnement du programme.)
18. Branchez la sortie de DSK LIGNE OUT à l’oscilloscope et fermez l’interrupteur_0.
Page 68 of 74
Instructions pour la déconnexion :
1) déconnecter la carte par debug->disconnect.
2) Fermer Code Composer Studio, et tous programmes qui se connectent à la
carte DSK.
3) Débrancher le câble USB.
4) Débrancher l’alimentation de la carte DSK, d’abord l’alimentation continue
de la carte, puis l’alimentation au secteur.
Très important :
Avant toute connexion ou déconnexion de la carte, s’assurer que Code
Composer Studio est fermé, ainsi que tous autres programmes qui pourraient
chercher à communiquer avec la carte.
En cas de problème avec la carte (erreurs inexpliquées lors du ‘Load
Program ’…):
Fermer Code Composer Studio (CCS)
Déconnecter le câble USB, appuyer sur le bouton reset de la carte, attendez un
peu, puis reconnecter.
Relancer CCS.
Page 69 of 74
TPN° 2:
Echantillonnage et reconstruction
But :
-
Mode d’acquisition des échantillons.
-
Mètre en considération le filtre d’anti-repliement et de reconstruction.
- Observation de l’effet du lissage.
Généralités :
Le
kit
DSK
possède
deux
convertisseurs
analogique/numérique
et
numérique/analogique qui permettent d’interfacer avec le monde extérieur, dédier en générale
au traitement des signaux BF, avec une fréquence d’échantillonnage programmable de 8 à
96Khz.
Pour éviter le phénomène de repliement, le convertisseur filtre le signal avant
l’échantillonnage avec un filtre passe-bas programmable de fréquence de coupure fc=fs/2.
Pour la reconstruction du signal analogique on utilise un filtre passe bas (de lissage).
Le AIC32 (les convertisseurs CAN et CNA) permet de coder une tension d’entre
entre +/- 1v sur 16 bit pour chaque canal (canal gauche et droit) pour former un mot de 32
bit. Il permet aussi la conversion d’un mot de 32bit (16bit pour chaque canal) en une tension
de sortie comprise entre +/- 1v.
Page 70 of 74
Première Partie :
- Créez un nouveau projet (voir TP 1) en ajoutant le fichier victor_poll.asm au lieu de
victor_intr.asm.
- Copiez le code C suivant (voir l’annexe pour les fonctions appelées).
/*Reconstruction1.c programme de lecture d’une valeur et écriture sur la sortie*/
#include "DSK6713_AIC23.h" //support du codec
Uint32 fs=DSK6713_AIC23_FREQ_8KHZ; //Fréquence d’echant fs
#define DSK6713_AIC23_INPUT_LINE 0x0011
Uint16 inputsource=DSK6713_AIC23_INPUT_LINE; // type d’entrée
void main()
{
short sample_data; //variable temporaire
comm_poll(); //init du DSK, codec
while(1) //boucle infinie
{
sample_data = input_left_sample(); //stockage l’echant
output_left_sample(sample_data); //écriture
}
}c
- appliquer un signal sinusoïdale sur LINE INPUT (vérifiez que l’amplitude est < à 1v
avant le branchement) d’une fréquence < 4khz et visualisez la sortie sur LINE OUTPUT.
- Tracez la fonction de transfert (200 <f< 8khz).
- Changez le signal sinusoïdal par un signal carré.
- Donnez la plage des fréquences qui permet d’avoir le signal de sortie avec une distorsion
minimale par rapport a l’entrée.
- Changez DSK6713_AIC23_FREQ_8KHZ par DSK6713_AIC23_FREQ_48KHZ et
donnez la plage des fréquences qui permet d’avoir le signal de sortie avec une distorsion
minimale par rapport a l’entrée.
- Conclure
Page 71 of 74
Deuxieme Partie
- supprimer la bibliothèque victor_poll.asm (remove from project) et ajoutez
victor_intr.asm et changez comm_poll par comm_intr.
- Modifiez le programme, comme ci-dessous :
/*Reconstruction.c programme de lecture d’une valeur et écriture sur la sortie */
#include "DSK6713_AIC23.h"
//support du codec
Uint32 fs=DSK6713_AIC23_FREQ_8KHZ; //Fréquence d’echant fs
#define DSK6713_AIC23_INPUT_LINE 0x0011
Uint16 inputsource=DSK6713_AIC23_INPUT_LINE; // type d’entrée
interrupt void c_int11(){
short sample_data; //variable temporaire
sample_data = input_left_sample(); // stockade l’echant
output_left_sample(sample_data); //écriture
return;
}
void main()
{
comm_intr(); //init du DSK, codec
while(1); //boucle infinie
}
- Citez le problème majeur de l’utilisation du mode poll.
- Introduisez un signal sinusoïdale dans LINE INPUT (vérifiez que l’amplitude est < à 1v)
d’une fréquence < 4khz et visualisez la sortie.
- Changez le programme pour faire le traitement sur le canal droit (voir annexe).
- Changez le programme pour faire le traitement sur les deux canaux simultanément.
Page 72 of 74
Troisième partie :
- Cette partie permettra de générer un signal sinusoïdale sur le canal gauche par la méthode
LookUpTable afin d’observer le rôle du filtre de reconstruction.
- Le programme est le suivant :
//Sinus.c programme delivre en sortie un Sin
#include "DSK6713_AIC23.h"
//support du codec
Uint32 fs=DSK6713_AIC23_FREQ_8KHZ; //Fréquence d’echant fs
#define DSK6713_AIC23_INPUT_LINE 0x0011
Uint16 inputsource=DSK6713_AIC23_INPUT_LINE; // type d’entrée
#define LOOPLENGTH 8
short loopindex = 0;
//table index
short gain = 10;
//gain
short sine_table[LOOPLENGTH]=
{0,707,1000,707,0,-707,-1000,-707}; //valeur de la sin
interrupt void c_int11(){
output_left_sample(sine_table[loopindex++]*gain); //sortie
if (loopindex >= LOOPLENGTH) loopindex = 0; //mise à zero
return; }
void main()
{
comm_intr(); //init du DSK, codec
while(1); //boucle infinie
}
- Esquissez un graphe des valeurs de la table en fonction de temps et calculez sa fréquence.
- Visualisez la sortie (notez la fréquence et l’amplitude).
- Changez LOOPLENGTH 8 par LOOPLENGTH 4 et changez les coefficients par
{0,1000, 0,-1000}, refaire le même travail que précédemment.
- Changez les coefficients par {1000,1000,-1000,-1000,} Visualisez la sortie.
- Modifiez les coefficients précédents pour obtenir la fréquence maximale (4khz).
- Changez LOOPLENGTH 4 par LOOPLENGTH 64 et changez les coefficients pour avoir
32 valeurs de 1000 et 32 autres de -1000. Visualisez la sortie.
Page 73 of 74
Annexe
Mode de communication avec AIC32 :
-
Mode Poll, dans ce mode le dsp interroge et attend le AIC32 jusqu’il soit prêt a une
Ecriture /Lecture du mot
o
L’utilisation du ce mode nécessite l’ajout de la bibliothèque Vector_poll.asm. et
l’initialisation avec comm_poll() au début du programme.
o
Pour faire une lecture d’un canal (droite / gauche)
input_left_sample() /
input_right_sample(), la fonction ne nécessite aucun argument, et donne en sortie
une valeur de 16bit (short). Pour la lecture des deux canaux en même temps
(Uint32 ) on utilise la fonction input_sample() .
o
Pour faire une écriture dans un canal (droite / gauche) : ouput_left_sample( ) /
output_right_sample( ), la fonction nécessite comme argument la variable a
transmettre (16 bits). Pour l’écriture des deux données en même temps
output_sample( ) avec une variable de donnée de 32 bits (Uint32).
-
Mode Int, dans ce mode le AIC32 génère une interruption chaque fois qu’il est prêt à
recevoir/émettre une donnée (dépend de la fréquence d’échantillonnage choisie par
‘’Uint32 fs=DSK6713_AIC23_FREQ_XXKHZ’’ ou XX=8,16,32,48,96).
o
L’ulilisation du ce mode nécessite l’ajout du fichier Vector_intr.asm et
l’initalisation avec comm_intr() au début du programme . Le sous-programme
d’interruption est de la forme suivante :
interrupt void c_int11(){ ………
………
return;//obligatoire
}
o
La lecture/écriture des canaux est identique au mode Poll.
Page 74 of 74
Download