Processeurs de Signaux (DSPs) -...

15
HEIG-Vd Exercices DSP Haute Ecole d’Ingénieurs et de Gestion du canton de Vaud (HEIG-Vd) Département d’électricité et d’informatique Filière Informatique technique (IT) Processeurs de Signaux (DSPs) Exercices A i i utomatisation nstitut d' ndustrielle Prof.Michel ETIQUE, mai 2005, Yverdon-les-Bains version 1.8 1 MEE \dsp_exercice.tex\25 mai 2005

Transcript of Processeurs de Signaux (DSPs) -...

Page 1: Processeurs de Signaux (DSPs) - poseidon.heig-vd.chphp.iai.heig-vd.ch/~mee/cours/Cours_dsp/Exercices/LaTeX/dsp... · HEIG-Vd Exercices DSP 1 Programmation en C d’un filtre numérique

HEIG-Vd Exercices DSP

Haute Ecole d’Ingénieurs et de Gestion ducanton de Vaud (HEIG-Vd)

Département d’électricité etd’informatique

Filière Informatique technique (IT)

Processeurs de Signaux (DSPs)Exercices

Ai

iutomatisation

n s t i t u t d '

n d u s t r i e l l e

Prof.Michel ETIQUE, mai 2005,Yverdon-les-Bains

version 1.8 1 MEE \dsp_exercice.tex\25 mai 2005

Page 2: Processeurs de Signaux (DSPs) - poseidon.heig-vd.chphp.iai.heig-vd.ch/~mee/cours/Cours_dsp/Exercices/LaTeX/dsp... · HEIG-Vd Exercices DSP 1 Programmation en C d’un filtre numérique

HEIG-Vd Exercices DSP

Table des matières1 Programmation en C d’un filtre numérique de type IIR 3

1.1 Synthèse et simulation du filtre . . . . . . . . . . . . . . . . . . . 31.2 Programmation du filtre en C . . . . . . . . . . . . . . . . . . . . 4

1.2.1 Réalisation du filtre numérique . . . . . . . . . . . . . . . 41.2.2 Canevas du fichier regul.c . . . . . . . . . . . . . . . . . . . 7

1.3 Test du filtre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2 Addition multiprécision 32 bits, entrées/sorties, décalages, bran-chements, directives assembleur 92.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

3 Programmation d’un filtre numérique de type FIR 113.1 Synthèse du filtre à l’aide de MATLAB . . . . . . . . . . . . . . . 113.2 Algorithme du filtre et adaptation à l’arithmétique en virgule fixe 113.3 Assemblage et création du code exécutable . . . . . . . . . . . . . 12

4 Programmation d’un régulateur numérique de type PID 134.1 Algorithme du régulateur numérique . . . . . . . . . . . . . . . . 134.2 Adaptation de l’algorithme du régulateur à l’arithmétique en vir-

gule fixe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134.3 Implantation du code du régulateur en assembleur, assemblage et

création d’un code exécutable . . . . . . . . . . . . . . . . . . . . 134.4 Test du fonctionnement du régulateur . . . . . . . . . . . . . . . . 144.5 Accès aux convertisseurs A/D et D/A . . . . . . . . . . . . . . . . 144.6 Application : régulation de la "balle dans un tube" . . . . . . . . 14

version 1.8 2 MEE \dsp_exercice.tex\25 mai 2005

Page 3: Processeurs de Signaux (DSPs) - poseidon.heig-vd.chphp.iai.heig-vd.ch/~mee/cours/Cours_dsp/Exercices/LaTeX/dsp... · HEIG-Vd Exercices DSP 1 Programmation en C d’un filtre numérique

HEIG-Vd Exercices DSP

1 Programmation en C d’un filtre numérique detype IIR

Le but de cet exercice est de programmer en langage C un filtre IIR (i.e. unfiltre à réponse impulsionnelle infinie). Le travail est divisé en 9 étapes :

1. Synthèse et simulation du filtre sous MATLAB et Simulink

2. Codage en C du filtre

3. Test du filtre sous Windows 2000 en temps réel avec le driver MapMemPlus

4. Test du filtre sur processeur de signal SHARC

5. Obtention du filtre sous forme d’état et test du filtre sous MATLAB et Si-mulink

6. Codage en C du modèle d’état du filtre, compilation avec le compilateurC/C++ WATCOM et test sous Simulink

7. Test du modèle d’état du filtre sous Windows 2000

8. Test du modèle d’état du filtre sur processeur de signal SHARC

9. Programmation en assembleur et test du modèle d’état du filtre sur proces-seur de signal TMS320LF2407

1.1 Synthèse et simulation du filtre

A l’aide de MATLAB , faire la synthèse d’un filtre numérique passe-bas deButterworth d’ordre n = 8. La fréquence de fc de coupure devrait être de 30 [Hz].La période d’échantillonnage sera h = 2 [ms]. Vérifier son fonctionnement etcréer un schéma de simulation Simulink pour ajuster interactivement le type etla fréquence du signal d’excitation.

Fonctions MATLAB utiles (tapez help nom_de_commande pour en savoir plus)– butter– dbode– dstep– pzmap– dlsim– tf2ss

Un fichier canevas est disponible par httphttp ://iai.eivd.ch/users/mee/cours/cours_dsp/exercices/matlab/ex_dsp_04.txtou par http http ://iai.eivd.ch/users/mee/, en suivant le lien cours DSP. Le fichierex_dsp_04.txt est à sauver dans d:\users avec l’extension .m.

version 1.8 3 MEE \dsp_exercice.tex\25 mai 2005

Page 4: Processeurs de Signaux (DSPs) - poseidon.heig-vd.chphp.iai.heig-vd.ch/~mee/cours/Cours_dsp/Exercices/LaTeX/dsp... · HEIG-Vd Exercices DSP 1 Programmation en C d’un filtre numérique

HEIG-Vd Exercices DSP

1.2 Programmation du filtre en C

La programmation du filtre peut s’effectuer en implantant son équation auxdifférences

y(k) + a1 · y(k − 1) + ... + an−1 · y(k−n + 1) + an · y(k−n)

= b0 · u(k−d) + b1 · u(k−d− 1) + ... + bm−1 · u(k−n + 1) + bm · u(k−n)

laquelle est la repésentation du système discret (le filtre numérique) ayant pourfonction de transfert

G(z) =Y (z)

U(z)=z−d · b0 + b1 · z−1 + ... + bm−1 · z1−m + bm · z−m

1 + a1 · z−1 + ... + an−1 · z1−n + an · z−n

En effet, la transformée en z des 2 membres de l’équation aux différences donne :(1 + a1 · z−1 + ... + an−1 · z1−n + an · z−n

)· Y (z)

= z−d ·(b0 + b1 · z−1 + ... + bm−1 · z1−m + bm · z−m

)· U(z)

d’où :

G(z) =Y (z)

U(z)=z−d · b0 + b1 · z−1 + ... + bm−1 · z1−m + bm · z−m

1 + a1 · z−1 + ... + an−1 · z1−n + an · z−n

La multiplication des numérateur et dénominateur par zn permet de mettre cetteexpression sous forme de puissances de z positives :

G(z) =Y (z)

U(z)=

b0 · zm + b1 · zm−1 + ... + bm−1 · z + bm

zn + a1 · zn−1 + ... + an−1 · z + an

1.2.1 Réalisation du filtre numérique

La fonction filtre () programmée sera codée dans le fichier regul.c dont lecanevas est à disposition (fichier regul.txt, voir § 1.2.2 page 7). Il s’agit du seulfichier à éditer !

L’appel de la fonction filtre () à chaque instant d’échantillonnage est automa-tique et vous n’avez pas à vous en préoccuper.

Environnements matériel et logiciel à disposition Il faut commencer parcharger le fichierhttp ://iai.eivd.ch/users/mee/Cours/cours_dsp/Exercices/Filtre_num/filtre_num.zipdans votre propre répertoire (qui pourrait être d:\users). On peut aussi accéderà ce fichier au niveau http ://iai.eivd.ch/users/mee/, lien Processeurs de signaux.

version 1.8 4 MEE \dsp_exercice.tex\25 mai 2005

Page 5: Processeurs de Signaux (DSPs) - poseidon.heig-vd.chphp.iai.heig-vd.ch/~mee/cours/Cours_dsp/Exercices/LaTeX/dsp... · HEIG-Vd Exercices DSP 1 Programmation en C d’un filtre numérique

HEIG-Vd Exercices DSP

Edition du fichier regul.c, programmation du régulateur La seule uniquefonction que l’on vous demande de programmer devra se trouver dans le fichierregul.c.

Pour éditer le code, l’éditeur " PFE " est installé et son utilisation est recom-mandée. On peut l’appeler par son icône à partir du bureau.

Le canevas de ce fichier vous est fourni (§ 1.2.2 page 7). Il montre que le signalprovenant de la carte d’acquisition est disponible dans la variable globale in0,alors que le signal de sortie peut être modifié en affectant la variable out0./∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗

Variab les , constantes et fonc t ions r e l a t i v e s au f i l t r a g e∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗/f loat u , y ; /∗ signaux d ’ entree et de so r t i e du f i l t r e ∗/f loat out0 , out1 ; /∗ s o r t i e s ana log iques ∗/f loat in0 ; /∗ entrees ana log iques ∗/f loat Te = 0.01 ; /∗ periode d ’ e chan t i l l l onnage ( ne peut e tre modif iee en l i gne )∗/f loat umax; /∗ l im i t e de la so r t i e du f i l t r e ∗/

Les paramètres du filtre peuvent quant à eux être déclarés comme variables glo-bales ou locales à la fonction filtre (), par exemple comme suit :/∗Parametres du f i l t r e ∗/f loat b [ 9 ] ;f loat a [ 9 ] ;

De façon à ce que certains paramètres et variables soient visibles et modifiablesen ligne à partir de RTPWatch, il faut les enregistrer dans le tableau var commesuit :/∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗

Declarat ion des va r i a b l e s a c c e s s i b l e s depuis le PC via RTPWatch∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗/t_var var [ ] = {

var_f loat ( u ) ,var_f loat ( y ) ,var_f loat (Te ) ,var_int (T_u) ,var_f loat (A_u) ,

end_var_list};

Si vous l’estimez nécessaire, vous pouvez bien sûr créer d’autres fonctions privéesde regul.c, comme par exemple une fonction de limitation de la sortie du filtre.

version 1.8 5 MEE \dsp_exercice.tex\25 mai 2005

Page 6: Processeurs de Signaux (DSPs) - poseidon.heig-vd.chphp.iai.heig-vd.ch/~mee/cours/Cours_dsp/Exercices/LaTeX/dsp... · HEIG-Vd Exercices DSP 1 Programmation en C d’un filtre numérique

HEIG-Vd Exercices DSP

Notez que les valeurs numériques initiales, "par défaut" des paramètres peuventêtre spécifiées dans regul.c : la fonction regulation_init est appelée au dé-marrage et vous pouvez donc y placer vos initialisations :/∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗

I n i t i a l i s a t i o n du f i l t r e∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗/void r egu l a t i on_in i t ( void ){/∗Def in i t i on de la fonct ion e f f e c t uan t le f i l t r a g e ∗/

regu lat ion_bouc le_interne = f i l t r e ;/∗ I n i t i a l i s a t i o n des parametres du f i l t r e ∗/

umax = 10 .0 ;}

Les valeurs pourront ensuite être modifiées en ligne via l’interface RTPWatch,à condition qu’elles soient rendues publiques, i.e. déclarées dans le tableau varcomme indiqué ci-dessus.

Compilation du fichier regul.c

Vous pouvez compiler votre programme en lançant un compilateur C/C++ àpartir de l’éditeur PFE, menu Execute DOS Command and Capture Output. Lacommande make ou make -B (équivalente à l’opération build) doit être tapée.Si aucune erreur n’est détectée, le fichier objet (regul.obj) est généré. Dans lanégative, la fenêtre PFE ouverte indique le message d’erreur.

version 1.8 6 MEE \dsp_exercice.tex\25 mai 2005

Page 7: Processeurs de Signaux (DSPs) - poseidon.heig-vd.chphp.iai.heig-vd.ch/~mee/cours/Cours_dsp/Exercices/LaTeX/dsp... · HEIG-Vd Exercices DSP 1 Programmation en C d’un filtre numérique

HEIG-Vd Exercices DSP

1.2.2 Canevas du fichier regul.c

/∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗REGUL.C

∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗/

/∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗Version Date Auteur Motif1 04/05/98 MEE Regulateur s ca l a i r e de courant

Regulateur PID de pos i t i on2 14/08/99 MEE Mise a jour3 06/09/99 MEE Adaptation pour temps ree l NT4 07/02/01 MEE Labo PID numerique5 11/03/02 MEE Labo PID numerique avec carte NI6 11/04/02 MEE Labo DSP f i l t r e numerique avec carte NI∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗/#define REGUL_C#include " regu l . h" /∗ entê te de l ’ uni té ∗/

/∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗Variab les , constantes et fonc t ions r e l a t i v e s au f i l t r a g e

∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗/f loat u , y ; /∗ signaux d ’ entree et de so r t i e du f i l t r e ∗/f loat out0 , out1 ; /∗ s o r t i e s ana log iques ∗/f loat in0 ; /∗ entrees ana log iques ∗/f loat Te = 0.01 ; /∗ periode d ’ e chan t i l l l onnage ( ne peut e tre modif iee en l i gne )∗/f loat umax; /∗ l im i t e de la so r t i e du f i l t r e ∗/

/∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗Declarat ion des va r i a b l e s a c c e s s i b l e s depuis le PC via RTPWatch

∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗/t_var var [ ] = {

var_f loat ( u ) ,var_f loat ( y ) ,var_f loat (Te ) ,var_int (T_u) ,var_f loat (A_u) ,

end_var_list};/∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗

Fi l t r e numerique∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗/void f i l t r e (){

// Mesuresu = in0 ;/∗Algorithme ∗/y = u ; // F i l t r e passe−toutout0 = y ; // Sor t i e du f i l t r e

}/∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗

I n i t i a l i s a t i o n du f i l t r e∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗/void r egu l a t i on_in i t ( void ){/∗Def in i t i on de la fonct ion e f f e c t uan t le f i l t r a g e ∗/

regu lat ion_bouc le_interne = f i l t r e ;/∗ I n i t i a l i s a t i o n des parametres du f i l t r e ∗/

umax = 10 .0 ;}

version 1.8 7 MEE \dsp_exercice.tex\25 mai 2005

Page 8: Processeurs de Signaux (DSPs) - poseidon.heig-vd.chphp.iai.heig-vd.ch/~mee/cours/Cours_dsp/Exercices/LaTeX/dsp... · HEIG-Vd Exercices DSP 1 Programmation en C d’un filtre numérique

HEIG-Vd Exercices DSP

1.3 Test du filtre

Lorsque le code temps réel a été compilé sans erreur, il faut lancer RTPWatchet utiliser l’outil Enregistreur. Sélectionner Autre code temps réel dans le menu etchoisir votre DLL se trouvant dans votre répertoire de travail.

version 1.8 8 MEE \dsp_exercice.tex\25 mai 2005

Page 9: Processeurs de Signaux (DSPs) - poseidon.heig-vd.chphp.iai.heig-vd.ch/~mee/cours/Cours_dsp/Exercices/LaTeX/dsp... · HEIG-Vd Exercices DSP 1 Programmation en C d’un filtre numérique

HEIG-Vd Exercices DSP

2 Addition multiprécision 32 bits, entrées/sorties,décalages, branchements, directives assembleur

Les fichiers nécessaires se trouvent à l’adresse

http ://iai.eivd.ch/profs/mee/cours/cours_dsp/exercices/ex_01/tms2407/ex_01_etudiant.zip

Une liste des instructions assembleur du DSP TMS2407 utilisé est disponible àl’adresse :

http ://iai.eivd.ch/profs/mee/cours/cours_dsp/doc/spru160c.zip

2.1

Les variables 32 bits PHIC et PHI sont codées chacune sur 2 mots de 16 bits,les MSWs (Most Significant Word) PHICH et PHIH et les LSWs (Least SignificantWord) PHICL et PHIL.

Ecrire le code assembleur (processeur Texas TMS320F2407) effectuant l’ad-dition des deux variables PHIC et PHI et sauver le mot de 16 [bit] formé avec lesbits 27. . . 12 du résultat 32 [bit] dans la variable SUM.

Instructions particulières :– LACC dma,16– ADDS dma– SACH dma,4

2.2

Lire le contenu du port 2, qui correspond par exemple au registre de sortied’un convertisseur A/D 12 [bit], câblé sur D11..D0, et le sauvegarder dans lavariable ANA.

Instruction particulière :– IN dma, PA2

2.3

Additionner SUM et ANA et sauvegarder le résultat dans la variable RES, sachantque le MSB (Most Significant Bit) du registre de sortie du convertisseur A/D ale même poids que le MSB de SUM.

version 1.8 9 MEE \dsp_exercice.tex\25 mai 2005

Page 10: Processeurs de Signaux (DSPs) - poseidon.heig-vd.chphp.iai.heig-vd.ch/~mee/cours/Cours_dsp/Exercices/LaTeX/dsp... · HEIG-Vd Exercices DSP 1 Programmation en C d’un filtre numérique

HEIG-Vd Exercices DSP

2.4

Effectuer la multiplication de RES par le coefficient 2.71828, celui-ci étantcodé avec une précision inférieure au millième, et sauvegarder le résultat dans lavariable SORTIE.

Instructions particulières :– LT dma– MPY #valeur immédiate

2.5

Refaire le point précédent en multipliant 2.71828 par :– RES si ABS(RES) < 0fffh– RES^2 si ABS(RES) > 0fffhInstruction particulière :– BCND LT

2.6

Compléter le programme constitué des points précédents par les instructionset directives assembleur nécessaires à son assemblage sans erreur. Les donnéesse trouvent dans la première page de 128 mots disponible (référée par le sym-bole VP0 dans le fichier DEFVAR.ASM, zone désignée ON_CHI30 dans le fichier deconfiguration LINK.CMD).

Directives particulières :

.title "titre"

.length 60

.width 80

.mmregs

.def

.ref

.bss symbole, taille en mots

.textsymbole .set valeur.end

version 1.8 10 MEE \dsp_exercice.tex\25 mai 2005

Page 11: Processeurs de Signaux (DSPs) - poseidon.heig-vd.chphp.iai.heig-vd.ch/~mee/cours/Cours_dsp/Exercices/LaTeX/dsp... · HEIG-Vd Exercices DSP 1 Programmation en C d’un filtre numérique

HEIG-Vd Exercices DSP

3 Programmation d’un filtre numérique de typeFIR

On souhaite mettre en oeuvre un filtre numérique à réponse impulsionnellefinie (FIR) dont les caractéristiques sont les suivantes :

– ordre : n = 8– pulsation de coupure (relative à ωe

2) : ωc = 0.1.

3.1 Synthèse du filtre à l’aide de MATLAB

A l’aide de MATLAB et surtout de sa boîte à outils Signal Processing, calculerles coefficients b0 , b1 et b2 du filtre par les commandes (celles-ci peuvent êtreréunies dans un fichier d’extension .M sauvé dans D:\USERS et exécutées dansl’espace de commande MATLAB en tapant son nom) :

n = 8;Wn = 0.1;numG = fir1(n,Wn);denG = [1,zeros(1,n)];

numG est un ici un vecteur-ligne contenant les coefficients des puissances décrois-santes de z, i.e. les valeurs b0, b1 et b2. Il correspond au numérateur de la fonctionde transfert du filtre, le dénominateur étant denG. En tapant par exemple numG,sans point-virgule, les coefficients s’affichent.

On peut alors tracer la réponse harmonique du filtre pour une période d’échan-tillonnage h valant par exemple 1 [ms] :

h = 1e-3;figure(1),dbode(numG,denG,h)

On peut vérifier que la réponse indicielle du filtre est bel et bien finie en encalculant et traçant les 10 premiers échantillons :

figure(2),dstep(numG,denG,10)

3.2 Algorithme du filtre et adaptation à l’arithmétique envirgule fixe

Programmer en assembleur (exceptionnellement en C, mais c’est plus diffi-cile !) l’algorithme du filtre FIR.

Pour l’implémentation des coefficients et des variables, on suivra les premièresindications données dans le chapitre 3 du cours. On pourra ensuite compléter lefichier ini_filt.asm avec les les valeurs numériques manquantes de B0 à B8.

Enfin, le code du filtre (somme de produits) devra être écrit en éditant leprogramme assembleur filtre.asm, qu’il s’agira de compléter par les instructionsmathématiques manquantes.

version 1.8 11 MEE \dsp_exercice.tex\25 mai 2005

Page 12: Processeurs de Signaux (DSPs) - poseidon.heig-vd.chphp.iai.heig-vd.ch/~mee/cours/Cours_dsp/Exercices/LaTeX/dsp... · HEIG-Vd Exercices DSP 1 Programmation en C d’un filtre numérique

HEIG-Vd Exercices DSP

3.3 Assemblage et création du code exécutable

Lancer l’assemblage du fichier (le point d’entrée de la routine d’interruptiondevrait être FILTRE).

Si l’assemblage est en ordre, il reste à éxécuter l’édition de liens (Menu Projet→ Build).

version 1.8 12 MEE \dsp_exercice.tex\25 mai 2005

Page 13: Processeurs de Signaux (DSPs) - poseidon.heig-vd.chphp.iai.heig-vd.ch/~mee/cours/Cours_dsp/Exercices/LaTeX/dsp... · HEIG-Vd Exercices DSP 1 Programmation en C d’un filtre numérique

HEIG-Vd Exercices DSP

4 Programmation d’un régulateur numérique detype PID

On souhaite implanter, dimensionner et tester un régulateur numérique detype PID. La loi de commande de la version analogique étant

u (t) = Kp ·(

e (t) +1

Ti

·∫ t

−∞e (τ) · dτ + Td ·

de

dt

)où e(t) est le signal d’erreur et u(t) la commande. L’application visée étantla "balle dans un tube", les valeurs numériques des coefficients sont dans lesgammes :

– 0.1 ≤ Kp ≤ 10, résolution ≤ 0.1– 0.1 [s] ≤ Ti ≤ 100 [s], résolution ≤ 0.05 [s]– 0 [s] ≤ Td ≤ 1 [s], résolution ≤ 0.05 [s]

4.1 Algorithme du régulateur numérique

Discrétiser la loi de commande du régulateur afin d’en obtenir l’équation auxdifférences. Traiter séparément l’action intégrale afin de pouvoir la contrôler (li-mitation, annulation) plus facilement.

4.2 Adaptation de l’algorithme du régulateur à l’arithmé-tique en virgule fixe

Les signaux d’entrée (consigne w(k), grandeur réglée y(k)) comme le signal desortie (commande u(k)) étant représentés sur 14bits, représenter les coefficientsdu régulateur PID sous forme de nombres entiers (processeur 16bits, virgule fixe).Tester le bon fonctionnement sous MATLAB par exemple.

4.3 Implantation du code du régulateur en assembleur, as-semblage et création d’un code exécutable

Implanter en assembleur l’algorithme du régulateur PID.Les coefficients et les variables pourront être déclarées dans le fichier ini_filt.asm.Le code du régulateur devra être écrit en éditant le programme assembleur

filtre.asm, qu’il s’agira de compléter.Lancer l’assemblage du fichier (le point d’entrée de la routine d’interruption

devrait être FILTRE).Si l’assemblage est en ordre, il reste à éxécuter l’édition de liens (Menu Projet

→ Build).

version 1.8 13 MEE \dsp_exercice.tex\25 mai 2005

Page 14: Processeurs de Signaux (DSPs) - poseidon.heig-vd.chphp.iai.heig-vd.ch/~mee/cours/Cours_dsp/Exercices/LaTeX/dsp... · HEIG-Vd Exercices DSP 1 Programmation en C d’un filtre numérique

HEIG-Vd Exercices DSP

4.4 Test du fonctionnement du régulateur

Le test du fonctionnement du régulateur doit ensuite être effectué avant de lemettre en oeuvre en asservissement d’un système.

4.5 Accès aux convertisseurs A/D et D/A

Compléter le code assembleur du régulateur par les accès aux convertisseurA/D et D/A ainsi que par la programmation du timer afin de pouvoir fixer lapériode d’échantillonnage.

4.6 Application : régulation de la "balle dans un tube"

Le régulateur, une fois testé, peut être mis en oeuvre sur l’un des systèmesdu laboratoire d’automatique (balle dans un tube). Se référer au site

http ://iai.eivd.ch/users/mee/

pour obtenir le protocole de mise en oeuvre de ce système.

version 1.8 14 MEE \dsp_exercice.tex\25 mai 2005

Page 15: Processeurs de Signaux (DSPs) - poseidon.heig-vd.chphp.iai.heig-vd.ch/~mee/cours/Cours_dsp/Exercices/LaTeX/dsp... · HEIG-Vd Exercices DSP 1 Programmation en C d’un filtre numérique

HEIG-Vd Exercices DSP

Version du docu-ment

Date Notes

v1.0 12 avril 2002v1.1 12 mai 2003v1.5 5 novembre 2003v1.6 28 janvier 2004v1.7 18 mai 2005v1.8 25 mai 2005

Tab. 1 – Versions publiées

version 1.8 15 MEE \dsp_exercice.tex\25 mai 2005