Trabalho Filtro FIR_DSP

12
  Universidade Federal de Uberlândia – UFU Faculdade de Engenharia Elétrica – FEELT Programa de Pós–Graduação em Engenharia Elétrica  Trabalho de Introdução a Processadores Digitais de Sinais Filtro Digital FIR : : , 2011. 

Transcript of Trabalho Filtro FIR_DSP

Universidade Federal de Uberlndia UFU Faculdade de Engenharia Eltrica FEELT Programa de PsGraduao em Engenharia Eltrica

Trabalho de Introduo a Processadores Digitais de Sinais Filtro Digital FIR

Professor: Aluno:

Ernane Coelho Fabrcio Alves Borges

Uberlndia, Setembro de 2011.

Sumrio1. 2. 3. 4. Objetivo ................................................................................................................................. 3 Projeto do filtro digital FIR .................................................................................................... 3 Implementao do filtro no Code Composer Studio 3.1 ..................................................... 10 Concluso ............................................................................................................................ 12

1. ObjetivoO objetivo deste trabalho o projeto de um filtro digital do tipo FIR e sua implementao no Code Composer Studio 3.1 (CCS), que um ambiente de desenvlovimento integrado para DSPs da Texas Instruments. Como esta aplicao no DSP no contemplar uma aquisio de sinais externos, o software MATLAB ser utilizado para gerar os dados de entrada (uma onda distorcida) e o projeto do filtro digital. Estes devero ser aplicados ao CCS para implementao no DSP, visualizao dos resultados e validao da estratgia do filtro FIR.

2. Projeto do filtro digital FIRPrimeiramente o filtro foi projetado e implementado no software MATLAB. Foi gerada uma onda senoidal composta por uma componente fundamental e duas harmnicas, sendo estas de stima e nona ordens. Todos os pontos desta onda gerada foram salvos em um arquivo .DAT para que este possa ser lido como dado de entrada pelo simulador do Code Composer. O trecho do cdigo que gera a onda no MATLAB demonstrado abaixo bem como o grfico da onda gerada.%frequncia da fundamental f=60; T=1/f; %perodo w=2*pi*f; %frequncia angular da fundamental fs=10000; %frequncia de amostragem. A frequncia de amostragem dever ser no mnimo 2x a frequncia da maior harmnica. Ts=1/fs; %perodo de amostragem nump= ceil (T/Ts); %nmero de pontos amostrados em um perodo N=nump*5; %nmero de pontos vezes o numero de perodos que queremos ter de onda (numero total de pontos da onda) t=0; %% Loop para gerar o vetor x que a onda com 7 e 9 harmnica for i=1:N, x(i)=0.75*sin(w*t)+0.2*sin(7*w*t)-0.15*sin(9*w*t); t=t+Ts; tempo(i)=t; end

1.5

1

0.5

0

-0.5

-1

-1.5

0

100

200

300

400

500

600

700

800

900

Figura 1. Forma de onda gerada com 7 e 9 harmnica.

Depois de gerada a onda, os pontos so salvos em um arquivo denominado seno_float.dat para que este possa ser usado pelo Code Composer como dados de entrada.%% grava arquivo para poder ser usado posteriormente no DSP (em float) fid = fopen('seno_float.dat','wt'); fprintf(fid,'1651 4 0 0 0 \n'); %imprime cabealho para o code composer fprintf(fid,'%d\n',x); fclose(fid);

Para dimensionar o filtro FIR pode-se utilizar vrios mtodos, porm nesta aplicao utilizaremos o aplicativo do MATLAB fdatool. Esta ferramenta amigvel, grfica e possui parmetros de entrada que so definidos pelo projetista. Estes dados foram definidos como a frequncia de amostragem fs = 10k, frequncia de banda passante Fpass = 60Hz, frequncia da banda de corte Fstop = 406Hz, amplitude passante em dB Apass = 1dB, e magnitude de corte Astop = 39dB.

Figura 2. Projeto do filtro na ferramenta Fdatool.

O programa gerou um filtro FIR de ordem 40 e seus coeficientes so extrados para implementao do mesmo digitalmente. A alta ordem deste filtro devido proximidade das frequncias da banda passante e da banda de corte, o que exige uma atenuao expressiva do filtro para mitigar a primeira frequncia harmnica presente no sinal de entrada.

Figura 3. Interface do Fdatool para projeto do filtro FIR.

As figuras seguintes mostram que a atenuao nas frequncias de stima e nona harmnicas bem expressiva por elas se encontrarem no vale de atenuao do filtro. Esta caracterstica desejvel e fez parte do projeto de atuao do filtro.

Figura 4. Atenuao em dB da frequncia de stima harmnica (420 Hz).

Figura 5. Atenuao em dB da frequncia de nona harmnica (540 Hz).

A figura abaixo representa as curvas ideal e real do filtro FIR gerado. Observa-se que a curva real est bem prxima da ideal, o que representa uma ao desejada do filtro projetado.1.4 curva ideal curva real

1.2

1

0.8

0.6

0.4

0.2

0

0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

Figura 6. Curvas real e ideal do filtro FIR gerado.

Os coeficientes do filtro FIR de ordem 40 que ser utilizado foram alocados no vetor b de tamanho 41. Este vetor demonstrado abaixo:b= [0.00826183661261409 0.00534677877169939 0.00875491763240740 0.0107569080283339 0.0152666657407029 0.0177233430165056 0.0228412709129467 0.0254259489084970 0.0303917980019217 0.0326819683536402 0.0366304144562180 0.0382113574859615 0.0404057736645068 0.0409680235716572 0.0409680235716572 0.0404057736645068 0.0382113574859615 0.0366304144562180 0.0326819683536402 0.0303917980019217 0.0254259489084970 0.0228412709129467 0.0177233430165056 0.0152666657407029 0.0107569080283339 0.00875491763240740 0.00534677877169939 0.00826183661261409]; 0.00694600461491117 0.0129381223708205 0.0202571135443323 0.0279553775221055 0.0347760573563094 0.0394809925112221 0.0411568320462748 0.0394809925112221 0.0347760573563094 0.0279553775221055 0.0202571135443323 0.0129381223708205 0.00694600461491117

Para realizar a implementao do filtro FIR projetado, foi utilizada a equao de diferenas com coeficientes constantes clssica dos sistemas discretos, sendo que o termo do filtro recursivo zero.

Para a = 0, ou seja, filtro FIR:

Onde b so os coeficientes do filtro projetado e X a entrada de dados em que o filtro ser aplicado. O filtro FIR ou filtro recursivo possui as caractersticas de estabilidade na sada se a entrada tambm for sempre estvel, exige maior peso computacional se comparado ao FIR e apresenta resposta finita, ou seja, um resultado ao impulso em tempo finito. Abaixo pode-se exemplificar o funcionamento de um filtro FIR de terceira ordem e sua resposta a um impulso:

Figura 7. Diagrama de blocos do filtro FIR.

Figura 8. Resposta ao impulso de um filtro FIR.

Abaixo tem-se o cdigo feito no MATLAB responsvel pela ao do filtro no sinal de entrada, ou seja, aplicao da frmula do filtro FIR demonstrada anteriormente.%N = (numero total de pontos da onda gerada) for i=1:N, yo= 0; if i < ordem+1 M = i; else M = ordem+1; end for k=1:M, yo = yo + b(k) * x(i-k+1); end yf(i)=yo; end

O resultado final foi satisfatrio, o qual o filtro mitigou as harmnicas, restando apenas um sinal de ordem fundamental 60Hz. Esta onda filtrada apresentou aspecto bem senoidal e com um pequeno defasamento ou atraso, sendo este intrnseco aos filtros digitais, devido elevada ordem do filtro proposto.

1.5 fir in fir out 1

0.5

0

-0.5

-1

-1.5

0

0.01

0.02

0.03

0.04

0.05

0.06

0.07

0.08

0.09

Figura 9. Sinal da onda gerada (azul) com harmnicas e sinal de sada da onda filtrada (verde).

A figura abaixo demonstra o espectro em frequncia da onda gerada e tambm o espectro da onda filtrada. Pode-se observar que no primeiro quadro a onda apresenta a componente fundamental mais duas harmnicas, de stima (420 Hz) e nona (540 Hz) ordem. J o segundo quadro, este representando a onda filtrada, apresenta apenas a frequncia fundamental, o que demonstra que o filtro mitigou as harmnicas como esperado.

0.8 Amplitude Y 0.6 0.4 0.2 0

0

500

1000 1500 Frequencia (Hz)

2000

2500

0.8 Amplitude Yf 0.6 0.4 0.2 0

0

500

1000 1500 Frequencia (Hz)

2000

2500

Figura 10. Espectro em frequncia da onda gerada e da onda filtrada.

3. Implementao do filtro no Code Composer Studio 3.1A implementao do filtro dimensionado anteriormente no DSP feita atravs do simulador do eZdsp F2812 no Code Composer Studio 3.1. O cdigo fonte da implementao do filtro foi feito em linguagem C, no qual este executa as mesmas funes daquele feito no MATLAB. Um probe point inserido no incio do cdigo carrega os pontos do documento gerado pelo programa feito no MATALB seno_float.dat, sendo este a onda gerada com harmnicos, ou os dados de entrada. Estes pontos so inseridos no vetor in_onda[BUFSIZE] . O vetor out_onda[BUFSIZE] contem os dados de sada, ou os pontos da onda filtrada, que podem ser visualizados atravs do modo grfico em funo do tempo. Abaixo tem-se o cdigo do programa implementado no CCS 3.1. Nota-se no cdigo a ausncia de um comando que desabilite o watchdog do DSP. Este no foi implementado devido a utilizao do simulador do eZdsp F2812 presente no CCS. Em aplicaes reais na insero do cdigo no DSP, o watchdog dever ser desabilitado para as iteraes se completem totalmente.#include #include "volume.h" /* Global declarations */ float in_onda[BUFSIZE]; /* processing data buffers */ float out_onda[BUFSIZE]; int size = BUFSIZE; int N = 835; int ordem = 40; float b[41] = {0.00826183661261409,0.00534677877169939,0.00694600461491117, 0.00875491763240740,0.0107569080283339,0.0129381223708205,0.0152666657 407029, 0.0177233430165056,0.0202571135443323,0.0228412709129467,0.02542594890 84970, 0.0279553775221055,0.0303917980019217,0.0326819683536402,0.03477605735 63094, 0.0366304144562180,0.0382113574859615,0.0394809925112221,0.04040577366 45068, 0.0409680235716572,0.0411568320462748,0.0409680235716572,0.04040577366 45068, 0.0394809925112221,0.0382113574859615,0.0366304144562180,0.03477605735 63094, 0.0326819683536402,0.0303917980019217,0.0279553775221055,0.02542594890 84970, 0.0228412709129467,0.0202571135443323,0.0177233430165056,0.01526666574 07029, 0.0129381223708205,0.0107569080283339,0.00875491763240740,0.0069460046 1491117, 0.00534677877169939,0.00826183661261409}; int i = 0; float yo = 0; int M; int k=0; * ======== main ======== void main() { /* loop forever */

while(TRUE) { for (i=0; i