Vous êtes sur la page 1sur 12

TP DSP

Kit de dveloppement TEXAS C6713


Le kit de dveloppement est constitu dune carte TEXAS "C6713 DSK" intgrant le processeur de traitement de signal (DSP) TEXAS TMS320C6713 ; relie un PC via une liaison USB et du logiciel de dveloppement TEXAS "Code Composer Studio".

C6713 DSK
La carte de traitement du signal "C6713 DSK" est une carte propose par TEXAS pour lvaluation de son processeur flottant TMS320C6713. Elle contient suffisamment de mmoire pour mettre en uvre des programmes assez complexes. Elle est quipe galement du circuit dentre-sortie analogique TEXAS AIC23 16 bit dont la frquence dchantillonnage est de 48kHz. Cet ensemble permet la mise en uvre de programmes simples de traitement du signal ; notamment des filtres.

Code Composer Studio


"Code Composer Studio" est un environnement de dveloppement logiciel qui intgre lensemble des lments ncessaires llaboration et la mise au point des programmes : Editeur de texte multi-fentres Paramtrage du projet Assembleur, Compilateur C et C++, Editeur de liens Tlchargement dans la carte Excution et dbogage Aide

Dmarrage
Il est impratif deffectuer les oprations dans lordre o elles sont dcrites ci-aprs.

Mise sous tension de la carte


Vrifier que la carte est bien connecte au PC grce au cble USB. Mettre sous tension la carte en connectant le jack dalimentation. Si elle tait dj sous tension, dbrancher puis rebrancher le jack dalimentation. Vrifier que la carte sinitialise correctement : lordinateur doit signaler la connexion USB et les 4 diodes groupes prsentes sur la carte doivent clignoter aprs une quinzaine de secondes.

Dmarrage de "Code Composer Studio"


La carte tant sous tension et ragissant correctement, on peut dmarrer le logiciel de dveloppement "Code Composer Studio". Double cliquer pour cela sur licne intitule "6713 DSK CCStudio v3.1" . Patienter le temps que la fentre de "Code Composer Studio" apparaisse. Si un message derreur "Error initializing emulator" apparat : choisir "Abandonner", vrifier les connexions de la carte puis relancer "Code Composer Studio". Lorsque "Code Composer Studio" est correctement dmarrer, il faut lui demander de se connecter la carte DSP : Selectionner le menu "Debug" puis "Connect". Une indication doit apparatre dans le coin infrieur gauche de la fentre de "Code Composer Studio" indiquant "The target is now connected". Ltape suivante est la cration dun projet ou louverture dun projet existant.

Ouverture du Projet
Dans le cadre des TP, le temps tant compt, un projet de dpart est fourni. Pour louvrir, slectionner le menu "Project" puis "Open". Puis slectionner le fichier : C:\CCStudio_v3.1\MyProjects\TP_TSN\TP_TSN.pjt Les fichiers constituant le projet apparaissent alors sous forme dune arborescence dans la fentre de gauche de "Code Composer Studio" ; comme dans lexplorateur Windows. Le projet, tel quil est, permet de programmer la carte de faon transmettre les chantillons obtenus du convertisseur analogique-numrique dentre au convertisseur numrique-analogique de sortie.

-1-

Avant dexaminer en dtail les fichiers constituant le projet et de les modifier pour mettre en uvre des traitements plus complexes, nous pouvons lutiliser tel quil est.

Produire un excutable
Pour cela, slectionner le menu "Project" puis "Build" (ou utiliser le bouton ). Une fentre apparat au bas de lcran, rendant compte des tches effectues pour construire le projet. Si tout ce passe bien, le message suivant apparat finalement : Build Complete, 0 Errors, 0 Warnings, 0 Remarks.

Tlchargement
Ltape suivante consiste tlcharger lexcutable dans la carte. Pour cela, slectionner le menu "File" puis "Load Program". Slectionner alors le fichier "TP_TSN.out" (dont le nom est bas sur celui du projet). Le tlchargement seffectue.

Dmarrage du traitement
Pour faire fonctionner le programme tlcharg, slectionner le menu "Debug" puis "Run" (ou utiliser le ). bouton Vrifier alors le bon fonctionnement du traitement en appliquant un signal lentre analogique de la carte et visualiser le signal obtenu en sortie. Le signal de sortie doit tre identique au signal dentre une phase prs. Ceci dans la mesure o il ny a pas dcrtage ([-1.3v ; +1.3v]) et que la frquence dentre est sensiblement infrieure la demi-frquence dchantillonnage. Il peut apparatre un lger cart d'amplitude car les convertisseurs d'entre et de sortie ne sont pas forcment parfaitement rciproques.

Arrt du traitement
Avant de tlcharger tout nouveau traitement, il faut stopper le traitement encours. Pour cela, slectionner le menu "Debug" puis "Halt" (ou utiliser le bouton ).

Modification du traitement
De nombreux fichiers constituent le projet. Nanmoins, ce dernier a t construit de telle faon quun seul fichier est modifier pour modifier le traitement. Il sagit du fichier qui se nomme actuellement "pass.c". Celui-ci se trouve dans larborescence du projet sous le nud "Sources". Pour lditer, double cliquer sur ce nud puis sur le fichier "pass.c". Une fentre ddition apparat. Elle prsente le contenu du fichier :
#include <log.h> extern far LOG_Obj trace; // Dfinition des variables globales (si besoin) // La fonction Init() est appele une seule fois au lancement du programe. // Elle est destine raliser les taches d'initialisation. void Init() { LOG_printf(&trace, "Init OK !"); } // La fonction Process() est appele chaque instant d'chantillonnage. // Elle est destine raliser le traitement des signaaux des 2 voies. // Elle recoit les chantillons des 2 voies d'entre dans le tableau io[]. // et place dans ce mme tableau les chantillons destins aux 2 voies de sortie. void Process(float io[2]) { }

Il s'agit d'instructions crites en langage C. Le fichier contient essentiellement deux fonctions : Init() et Process(). La fonction Init() nest appele quune seule fois au dbut de lexcution du traitement. Elle est destine effectuer les initialisations des variables globales ventuellement ncessaires au traitement comme nous le verrons par la suite. La fonction Process() est appele chaque nouvel instant d'chantillonnage. Elle reoit les chantillons des deux voies d'entre dans un tableau io[2]. En retour, elle place dans le mme tableau les valeurs des deux chantillons destines aux voies de sortie. Dans le cas du programme "pass.c", ce sont les chantillons d'entre non modifis par la fonction qui sont transmis aux sorties.

-2-

Nous allons maintenant modifier ce fichier pour mettre en uvre un premier traitement ralisant un retard d'un instant d'chantillonnage sur la premire voie :

y (n) = x(n 1)

Pour cela, de faon ne pas perdre lancien traitement, nous allons sauver le fichier "pass.c" sous un nouveau nom : "retard.c" par exemple (menu "File" puis "Save as"). Puis nous allons modifier son contenu de la faon suivante :
#include <log.h> extern far LOG_Obj trace; // Dfinition des variables globales (si besoin) float x_retard; // La fonction Init() est appele une seule fois au lancement du programe. // Elle est destine raliser les taches d'initialisation. void Init() { x_retard=0; LOG_printf(&trace, "Init OK !"); } // La fonction Process() est appele chaque instant d'chantillonnage. // Elle est destine raliser le traitement des signaaux des 2 voies. // Elle recoit les chantillons des 2 voies d'entre dans le tableau io[]. // et place dans ce mme tableau les chantillons destins aux 2 voies de sortie. void Process(float io[2]) { float tmp; tmp=io[0]; io[0]=x_retard; x_retard=tmp; }

Avant de construire le nouveau traitement, il faut encore inclure le nouveau fichier dans le projet. Pour cela, slectionner le menu "Project" puis "Add Files to Project". On peut maintenant construire le nouveau programme (menu "Project" puis "Build"). Sil y a des erreurs de syntaxe dans ce que nous avons saisi, elles sont listes par le compilateur. Il faut les corriger et lancer nouveau la construction. Ldition de liens produit une erreur en nous indiquant que les fonctions Init() et Process() sont dfinies plusieurs fois. Cest normal, car elles sont dfinies la fois dans le fichier "pass.c" et dans le nouveau fichier "retard.c". Il faut donc supprimer le fichier "pass.c" du projet. Pour cela, il suffit de slectionner le fichier "pass.c" dans larborescence du projet et de presser la touche "Suppr" du clavier (ou dutiliser le menu contextuel (bouton droit de la souris)). Le fichier est supprim de larborescence mais il nest pas effac du disque pour autant. Nous pourrons donc le rintgrer au projet si nous avons besoin de revenir lancien traitement. On peut maintenant reconstruire le projet pour obtenir lexcutable "TP_TSN.out", le tlcharger et le "lancer". 1 Le rsultat devrait tre un retard d'un instant d'chantillonnage ( Te = = 20,8s ) du signal de la voie 0. Fe Pour mettre en vidence le bon fonctionnement du traitement, on peut injecter un mme signal sur les deux voies d'entre et comparer les signaux des deux voies de sortie. Si le traitement ne fonctionne pas correctement et que lon ne dcouvre pas derreurs, on peut dboguer le programme en plaant des points darrt. Pour cela, arrter le traitement puis placer le pointeur de la souris dans la zone grise de la fentre contenant le fichier "retard.c" en regard de linstruction :
tmp=io[0];

et double cliquer. Un point rouge apparat. Cest un point darrt (pour le faire disparatre, il suffit de double cliquer nouveau dessus). Relancer le programme. Une flche jaune apparat au niveau de linstruction : le programme est arrt ce niveau :

On peut alors examiner le contenu des variables pour dceler une erreur. Slectionner par exemple la variable "x_retard" puis drouler le menu contextuel (bouton droit de la souris) puis slectionner "Add to

-3-

Watch Window". Une nouvelle fentre apparat au bas de lcran qui prsente la liste des variables visualises ainsi que leur valeur. On peut relancer le programme et tudier les valeurs successives de ces variables. Voil pour lessentiel. Procder de faon analogue pour mettre en uvre les autres traitements.

-4-

- TP DSP - Prise en main Le but de cette premire manipulation est de se familiariser avec le kit de dveloppement Texas et de mesurer la fonction de transfert de la carte en absence de traitement numrique.

Prparation
Lire attentivement et entirement le texte. Rflchir ce que signifie un traitement produisant une phase linaire. Prparer, dans la mesure du possible, les rponses aux questions auxquelles il faudra rpondre dans le compte-rendu.

Compte-rendu
Le compte rendu comprendra la prparation, les listings des diffrents programmes, et les rponses aux diffrentes questions.

Prise en main
Programmer la carte de faon transmettre sans traitement les chantillons dentre en sortie (programme pass.c). Puis appliquer un signal en entre et observer le signal produit en sortie.

Fonction de transfert globale


Il s'agit de dterminer la rponse en frquence globale de la carte. Pour cela, appliquer un signal sinusodal en entre de la carte et observer le signal en sortie. Mesurer le gain (ou l'affaiblissement) produit par la carte (module de la rponse en frquence) ainsi que le dphasage (argument de la rponse en frquence). Mesurer ces grandeurs pour toutes les frquences intressantes de faon pouvoir tracer la rponse en frquence (module et phase) avec suffisamment de prcision. Module de la rponse en frquence Dterminer les frquences de coupure basse et haute ainsi que les ondulations en bande passante. Tracer le module de la rponse en frquence en utilisant une chelle linaire. Phase de la rponse en frquence Tracer la rponse en phase de la carte. Commenter la courbe obtenue (ruptures). S'agit-il d'un systme phase linaire. Si oui, que peut-on en dduire ? Proposer une mthode temporelle directe pour mesurer le retard introduit par la carte. Effectuer la mesure. La valeur obtenue est-elle cohrente avec la fonction de transfert prcdemment mesure ?

Fonction de transfert d'entre


Le but est de mesurer la contribution la fonction de transfert du filtre anti-repliement situ en entre avant le convertisseur analogique-numrique. Pour cela, il faut comparer le signal analogique prsent en entre au signal numrique obtenu l'intrieur du processeur. Nous nous intresserons essentiellement au module de la rponse en frquence pour dterminer si l'allure du module de la fonction de transfert globale provient principalement du filtre anti-repliement ou pas. Mesurer l'amplitude du signal analogique en entre ne pose pas de problme. Par contre, la mesure de l'amplitude du signal discret l'intrieur du processeur n'est pas immdiate. Pour cela, il faut mettre au point un petit traitement l'intrieur du processeur pour mesurer l'amplitude du signal et l'imprimer l'cran. Pour obtenir une mesure fiable, nous pouvons estimer la puissance du signal discret en calculant la quantit :

P=

1 N 1 x ( n) 2 N n =0

puis imprimer la valeur de P ou la valeur efficace du signal dduite de P ou encore, la valeur crte du signal. L'affichage de la valeur de P peut tre obtenu de la manire suivante : LOG_printf(&trace, "%f",P);

-5-

L'affichage a lieu dans la fentre "Message Log" qui peut tre active dans le menu "DSP/BIOS" de Code Composeur Studio. La fonction LOG_printf() fonctionne comme la fonction printf() en C ceci prs qu'une seule valeur peut tre affiche la fois ; l'instruction suivante ne fonctionne pas : LOG_printf(&trace, "%f %f",P1,P2); Ce programme fonctionnant, comparer dans un premier temps l'estimation obtenue pour diffrentes valeurs de N . Comment faut-il choisir cette valeur pour obtenir une estimation de qualit. Aprs avoir rgl correctement cette valeur, relever et tracer le module de la rponse en frquence du filtre anti-repliement. Comparer la fonction de transfert globale. Suggestion : Vous pouvez rflchir d'autres faon de procder pour mesurer l'amplitude du signal numrique. Vos propositions seront apprcies. Est-il possible de mesurer de manire quivalente, la contribution du filtre anti-repliement la phase de la fonction de transfert globale ? Si oui, dcrire de quelle faon procder.

Fonction de transfert de sortie


Il s'agit de mesurer la rponse en frquence du filtre de reconstruction prsent en sortie de la carte. Nous ne nous intresserons encore une fois, qu'au module de la rponse en frquence. Pour mesurer cette grandeur, il faut maintenant gnrer un signal sinusodal d'amplitude dtermine l'intrieur du processeur et relever l'amplitude du signal obtenu en sortie de la carte. On pourra pour cela utiliser l'instruction suivante: io[0]=A*sin(2*pi*f*(n++)*Te); Cependant, cette instruction peut poser problme du fait que la variable n grandit continuellement et peut arriver saturation. Proposer un algorithme pour rsoudre ce problme. Le programme fonctionnant correctement, relever et tracer le module de la rponse en frquence du filtre de reconstruction. Comparer la fonction de transfert globale. Les fonctions de transfert d'entre et de sortie confirment-elles la fonction de transfert globale ? Que se passe-t-il si le signal sinusodal gnr par le processeur est une frquence suprieure Essayer avec 3

Fe . 2

Fe par exemple puis avec d'autres frquences. Expliquer le phnomne observ. 4

Rapport Signal Bruit


Le but est d'valuer la dgradation du rapport signal bruit entre l'entre et la sortie. Pour cela, injecter un signal sinusodal en entre de la carte puis utiliser le module fft de l'oscilloscope pour caractriser le bruit introduit par la carte. Quelle est la nature de ce bruit (blanc, harmonique, etc ). Evaluer le rapport signal bruit en sortie. Le comparer au rapport signal bruit d'entr. En dduire la dgradation introduite par la carte. La puissance et la nature du bruit observ en sortie sont-elles normales ?

-6-

- TP DSP - Filtrage Rponse Impulsionnelle Finie -

Prparation
Lire attentivement et entirement le texte. Calculer les rponses en frquences thoriques (module et phase) des filtres devant tre mis en uvre (lorsqu'elles ne sont pas fournies). Rflchir au moyen de mettre en vidence la phase linaire des diffrents filtres (en comprenant videmment ce qu'est une phase linaire ; point dj abord lors du premier TP). Prparer les rponses aux questions auxquelles il faudra rpondre dans le compte-rendu.

Compte-rendu
Le compte-rendu comprendra la prparation, les listings des diffrents programmes, et les rponses aux diffrentes questions.

Introduction
Commencer trs simplement en implantant les rponses impulsionnelles : { 1 ; 1 } et { 1 ; -1 }. Il s'agit simplement de dlivrer en sortie la somme ou la diffrence de deux chantillons successifs d'entre. Les programmes C relatifs ces deux filtres s'appelleront rif1.c et rif2.c. Vrifier rapidement les rponses en frquence (module) de ces filtres trs simples en les comparant aux rponses thoriques (utiliser une chelle linaire). La convolution des rponses impulsionnelles prcdentes (mise en srie des filtres) donne : { 1 ; 0 ; -1 }. Implanter ce nouveau filtre via le programme rif3.c. Vrifier la justesse de sa rponse en frquence. Ce filtre est-il phase linaire ? Si oui, quelle est cette phase et quel est le retard introduit par ce filtre (thoriques et mesurs (attention au retard introduit par la carte elle-mme)) ? Pour mesurer plus justement le dphasage engendr par le traitement numrique uniquement, on pourra dlivrer sur l'une des sorties de la carte le signal filtr y(n) et sur l'autre le signal d'entre x(n) (ou encore x(n L) o L est un retard judicieusement choisi pour mettre en vidence la phase linaire du traitement).

Convolution
Ecrire un programme rif4.c destin mettre en uvre des filtres R.I.F. de faon plus systmatique, cest-dire en effectuant lopration de convolution :
N 1 i =0

y(n)=

h(i) x(ni)

Pour cela, dfinir la dimension du filtre grce un define au dbut du programme : #define N 10 Et dclarer les tableaux destins recevoir les coefficients de la rponse impulsionnelle ainsi que les chantillons du signal dentre devant tre mmoriss : float h[N], x[N]; Puis initialiser la rponse impulsionnelle : h[0]= ...; h[1]= ...; h[N-1]= ...; Remarque : on pourra galement initialiser la rponse impulsionnelle en la dclarant : float h[]={ 1 , 0, -1 }; Ces variables correctement dclares et initialises, programmer le traitement : y=0; for(i=0; i<N; ++i){ y=y+ ... } ainsi que la mise jour du tableau des chantillons dentre ncessaires au traitement. Dans un premier temps, on pourra fixer N 3 et chercher la ralisation du filtre prcdent de rponse : { 1 ; 0 ; -1 } et vrifier le bon fonctionnement du programme.

-7-

Filtre passe bas


Le programme gnrique fonctionnant correctement, on pourra implanter facilement un filtre passe bas obtenu avec Matlab : h=[ 0.0537 0 -0.0916 0 0.3131 0.5 0.3131 0 -0.0916 0 0.0537 ] de la faon suivante : N = 11; F = [ 0 2*0.2 2*0.3 2*0.5 ]; M = [ 1 1 0 0 ]; h=remez(N-1,F,M); Les caractristiques de ce filtre sont les suivantes :
|H(f)| 1.5 20 0 1 -20 -40 -60 0 0 0.6 0.4 0.2 0 -0.2 0.5 h(n) 200 100 0 -100 -200 1 -80 0 0.5 Phase ( ) 1 |H(f)| (dB)

0.5

10

15

0.5

Il suffira pour cela d'adapter N la dimension du filtre et d'initialiser le tableau contenant les coefficients du filtre. Le fichier contenant le programme s'appellera rif5.c. On relvera la rponse en frquence et on la comparera celle attendue. On vrifiera galement la phase linaire du filtre en mesurant le retard introduit par le filtre (procder comme auparavant).

Filtre passe haut


Transformer le filtre passe bas prcdent en filtre passe haut en faisant en sorte que la rponse en Fe frquence soit dcale de . Comment faut-il modifier les coefficients de la rponse impulsionnelle. 2 Mettre en uvre le filtre (programme rif6.c)et vrifier la nouvelle rponse en frquence. Peut-on appliquer une mthode analogue pour passer d'un filtre passe bas un filtre passe bande ? Si oui, expliquer comment.

Filtre de Hilbert
On implantera pour finir un filtre coefficients complexes (rif7.c) obtenu avec Matlab : h = [ 0 -0.0267j 0 -0.0584j 0 -0.1049j 0 -0.1991j 0 -0.6323j 1 0.6323j 0 0.1991j 0 0.1049j 0 0.0584j 0 0.0267j 0 0 ] de la faon suivante : N=21; h=hilbert([zeros(1,(N-1)/2) 1 zeros(1,(N+1)/2)]); Les caractristiques de la partie imaginaire de ce filtre sont les suivantes :

-8-

|H(f)| 1.5 50

|H(f)| (dB)

0.5

-50

0.5 h(n)

-100

0.5 Phase ( )

1 0.5 0 -0.5 -1

200 100 0 -100 -200

10

20

30

0.5

Le programme appliquera le filtre une des voies d'entre et les parties relle et imaginaire du signal produit seront dlivres sur les deux voies de sortie. Comparer les signaux de sortie. Quelle est la particularit de ce genre de filtres ? A quoi peuvent-ils servir ? Calculer avec Matlab puis mettre en uvre un filtre plus long et donc plus efficace (N=101 par exemple). Quelle serait la rponse en frquence idale ? En dduire la rponse impulsionnelle associe.

-9-

- TP DSP -

- Filtrage Rponse Impulsionnelle Infinie -

Prparation
Lire attentivement et entirement le texte. Dterminer les coefficients des filtres devant tre calculs ainsi que les facteurs dchelle. Prparer les rponses aux questions auxquelles il faudra rpondre dans le compte-rendu.

Compte-rendu
Le compte-rendu comprendra la prparation, les listings des diffrents programmes, et les rponses aux diffrentes questions.

Introduction
Les filtres rponse impulsionnelle infinie sont plus dlicats implanter que les filtres rponse impulsionnelle finie car leur caractre rcursif (contre raction) les expose la divergence. Ceci est d'autant plus vrai que leurs ples sont proches du cercle unit. On dit alors qu'on a affaire des filtres rsonnants. De tels filtres requirent une grande prcision au niveau de leurs coefficients, des chantillons et des calculs.

Cellule du second ordre purement rcursive


Soit la fonction de transfert est la suivante :

H (Z ) =

1 1 + b1 Z
1

+ b2 Z 2

Calculer les coefficients du filtre pour que la rsonnance ait lieu la frquence

Fe et que son amplitude soit 4 de 10. Tracer la rponse en frquence. Quel facteur dchelle faut-il appliquer au signal pour quil ny ait pas saturation en sortie ?
Programmer ce filtre (rii1.c) et comparer la rponse en frquence obtenue sa valeur thorique. De quel type de filtres sagit-il ? A quoi peuvent-ils servir ? Comment varie leur phase ?

Cellule du second ordre gnrale


Soit la fonction de transfert est la suivante :

1 + b1 Z 1 + b2 Z 2 Conserver les coefficients du dnominateur dtermins prcdemment pour obtenir une frquence de Fe rsonnance de . Calculer les coefficients du numrateur pour obtenir des zros sur le cercle unit en 4 Fe . Evaluer la rponse en frquence grce linterprtation gomtrique. Quel facteur dchelle faut-il 4 appliquer au signal pour quil ny ait pas saturation en sortie ?
Programmer ce filtre (rii2.c) et comparer la rponse en frquence obtenue sa valeur thorique. De quel type de filtres sagit-il ? A quoi peuvent-ils servir ? Comment varie la phase ?

H (Z ) =

a 0 + a1 Z 1 + a 2 Z 2

Filtre elliptique passe-bas


Ordre 2 Il sagit pour commencer dun filtre d'ordre 2 obtenu avec la mthode elliptique sous Matlab de la faon suivante :

- 10 -

[N, Wn] = ellipord(0.3, 0.7, 0.9, 26); [B,A] = ellip(N, 0.9, 26, Wn); B = 0.1744 A = 1.0000 0.2419 -0.7400 0.1744 0.3953

N = 2

Wn = 0.3

Les caractristiques frquentielles de ce filtre sont les suivantes :


|H(f)| 1 0.8 0.6 -40 0.4 0.2 0 0 2.5 2 1.5 1 0.5 0 0 0.5 1 0.5 Groupe delay 50 0 -50 -100 -150 -200 0 0.5 1 1 -60 -80 0 0.5 Phase ( ) 1 0 -20 |H(f)| (dB)

Programmer ce filtre (rii3.c) et comparer la rponse en frquence obtenue sa valeur thorique.

Ordre lev Il sagit dun filtre elliptique dordre 6 obtenu de la faon suivante avec Matlab : [N, Wn] = ellipord(0.4, 0.6, 0.09, 60); N = 6 Wn = 0.4 [B,A] = ellip(N,0.09,60,Wn); B = 0.0207 0.0585 0.1060 0.1255 0.1060 0.0585 0.0207 A = 1.0000 -1.9673 2.9074 -2.5353 1.5771 -0.5972 0.1163 Les caractristiques frquentielles de ce filtre sont les suivantes :

- 11 -

|H(f)| 1.5 50

|H(f)| (dB)

0.5

-50

0 0 20 15 10 5 0 0.5 Groupe delay 1

-100 0 200 100 0 -100 -200 0.5 Phase ( ) 1

0.5

0.5

Programmer ce filtre (rii4.c) et comparer la rponse en frquence obtenue sa valeur thorique. Que peut-on dire de sa phase ? Passe-haut Expliquer comment il faudrait modifier les coefficients du filtre passe-bas dordre 6 pour obtenir un filtre passe-haut de mme largeur de bande. Justifier votre rponse. Programmer ce filtre (rii5.c) et vrifier la justesse de la transformation. Existe-il une mthode analogue pour obtenir un filtre passe-bande ? Si oui, laquelle ? Peut-on lappliquer au filtre passe-bas dordre 6 ? Si oui, quelle est la bande passante du filtre ?

Oscillateur
Reprendre le programme rii1.c (le recopier dans un programme oscil.c) et modifier les coefficients Fe b1 et b2 pour que le ple soit sur le cercle unit en et initialiser les chantillons y (1) et y (2) pour 8 que le signal de sortie y (n) produit en absence de signal d'entre ( x(n) = 0 ) soit une cosinusode d'amplitude unit. Vrifier le bon fonctionnement de l'oscillateur ainsi produit. L'amplitude drive-t-elle ? Proposer une explication. Discuter la prcision frquentielle.

- 12 -