You are on page 1of 8

Projeto do Filtro

Filtros FIR (finite impulse response)


Os filtros FIR consiste em filtro que tem uma resposta ao impulso finita, sendo de implementao mais simplificada. Existe vrios pacotes que facilitam a implementao do deste tipo de filtro. Para o experimento utilizou-se o MATLAB (funo fir1) que gerou os coeficientes da resposta impulsiva do filtro. Na freqncia de corte solicitada tem-se 6dB de atenuao.

Implementao
Seguindo a mesma linha de raciocnio do programa da FFT e aproveitando o cdigo relativo a aquisio e transmisso dos dados, rapidamente foi possvel chegar-se ao filtro FIR. Atravs das facilidades disponibilizadas pela instruo MAC do DSP o filtro passou a ser o mero clculo de um produto escalar em duas linhas de cdigo. As constantes que determinam o filtro foram estrategicamente especificadas de modo a facilitar sua modificao e assim transformar em instantes um filtro passa-baixa e um passa-faixa, por exemplo.

Listagem do programa
inicio ordemFiltro numCoeficientes equ equ $2 equ $100 equ $40 ;ordem do filtro ordemFiltro+1 ;numero de coeficientes do filtro ;inicio do buffer de dados dados ;Endereco de entrada para a tabela ; de coeficientes do filtro

dados equ tabelaCoeficientes org jmp org jsr jsr jsr jsr p:0 inicio p:$000c ssi_rx_isr ssi_rx_isr ssi_tx_isr ssi_tx_isr

;SSI ;SSI ;SSI ;SSI

receive data receive data with exception transmit data transmit with exception

;----------------------------------------------------------------------; Gera tabela de coeficientes do filtro na memoria Y ;----------------------------------------------------------------------org y:tabelaCoeficientes ;coeficientes do filtro dc 0.9999999999 ;armazena os coeficientes obedecendo dc 0.0 ; a ordem do mais significativo dc 0.0 ; para o menos significativo ;************************************ ;* nao esqueca de ajustar o valor * ;* da constante ordemFiltro que * ;* identifica a ordem do polinomio * ;* usado na filtragem * ;************************************

Vincius Wellington Diolice Felix da Silva

RA RA 955135

;-------------------------------------------------------------------------; Inicio do programa ;-------------------------------------------------------------------------org p:inicio movep movep ori movec move move move include TONE_OUTPUT TONE_INPUT #$261009,x:PLL #0000,x:BCR #3,mr #0,sp #0,omr #$40,r3 #-1,m3 'ada_init.asm' EQU EQU HEADPHONE_EN+LINEOUT_EN+(4*LEFT_ATTN)+(4*RIGHT_ATTN) MIC_IN_SELECT+(15*MONITOR_ATTN) ;these labels are defined in the ;ada_init.asm program ;mask interrupts ;clear hardware stack pointer ;operating mode 0 ; initialise stack pointer ; linear addressing

;----------------------------------------------------------------------; Leitura de dados ;----------------------------------------------------------------------move move move move loop_filtro jset jclr move move move move move move #2,x:SSISR,* #2,x:SSISR,* x:RX_BUFF_BASE,a #TONE_OUTPUT,y0 y0,x:TX_BUFF_BASE+2 #TONE_INPUT,y0 y0,x:TX_BUFF_BASE+3 a,x:(r0) ;wait for frame sync to pass ;wait for frame sync ;receive left ;set up control words #dados,r0 #ordemFiltro,m0 #ordemFiltro,m1 #-1,m4 ;Atribui o endereco do buffer ; esquerdo a r0 ;seta incremento circular com modulo ; definido por ordemFiltro para r0 ;seta incremento circular com modulo ; definido por ordemFiltro para r1 ;seta incremento convencional para m4

;armazena o sinal do canal esquerdo ; na area de dados do buffer circular ;----------------------------------------------------------------------; Filtro ;----------------------------------------------------------------------move #tabelaCoeficientes,r4 ;atribui a r4 o endereco relativo ao ; inicio da tabela de coeficientes move r0,r1 ;atribui ao ponteiro auxiliar r1 o ; valor de r0 que aponta o ultimo ; dado adquirido e que foi armazenado ; no buffer circular de dados move (r0)+ ;incrementa r0 para esperar o proximo ; dado a ser adquirido clr a ;zera o acumulado que ira armazenar ; o resultado da filtragem do move #numCoeficientes,loop_convolucao x:(r1)-,x0 y:(r4)+,y0 ;carrega os dados para os
Vincius Wellington Diolice Felix da Silva RA RA 955135 2

mac x0,y0,a loop_convolucao

; registradores para efetuar a ; convolucao ;calcula a convolucao

;----------------------------------------------------------------------; Envia resultados para a saida de audio da placa ;----------------------------------------------------------------------jset #2,x:SSISR,* ;wait for frame sync to pass jclr #2,x:SSISR,* ;wait for frame sync move move move move move move jmp a,x:TX_BUFF_BASE a,x:TX_BUFF_BASE+1 #TONE_OUTPUT,y0 y0,x:TX_BUFF_BASE+2 #TONE_INPUT,y0 y0,x:TX_BUFF_BASE+3 loop_filtro ;transmit left ;transmit right ;set up control words

include 'new_txrx.asm' end

Procedimento
Para realizar o levantamento da curva de resposta do filtro FIR, utilizou-se um gerador de funes e um analisador de sinais dinmicos (ASD). Usando a funo Peak Hold do ASD, realizou-se um levantamento da variao da amplitude de sada do gerador de funes em relao a freqncia, verificando-se que poderia ser desprezada. Em seguida, levantou-se a curva de resposta de freqncia da placa de DSP. Com o MATLAB calculou-se os coeficientes para o filtro, foram escolhidos quatro filtros: Passa-Baixas de 6 ordem e freqncia de corte de 12kHz Passa-Altas de 6 ordem e freqncia de corte de 12kHz Passa-Baixas de 18 ordem e freqncia de corte de 12kHz Passa-Altas de 18 ordem e freqncia de corte de 12kHz

Implementou-se e mediu-se a resposta em freqncia do filtro FIR, comparandose em seguida com a curva calculada no MATLAB.

Resultados e Anlise dos Dados


A placa de DSP Necessita-se levantar a curva de resposta em freqncia da placa do DSP, para saber quando o filtro digital ou a placa que est atuando.

Vincius Wellington Diolice Felix da Silva

RA RA 955135

Possui uma resposta bem plana de 100Hz a 21KHz (figura 1a e 1b). Na figura 1a e 1b pode-se observar de uma forma geral a resposta em freqncia da placa.

Vincius Wellington Diolice Felix da Silva

RA RA 955135

Reposta Linear da Placa

Resposta em dB da Placa

figura 1a

figura 1b

Pode-se observar com uma maior preciso a resposta dos filtros da placa de DSP para as baixas freqncias(figuras 2a e 2b) e para as altas freqncias(figuras 3a e 3b). Resposta Linear da Placa Resposta em dB da Placa (parte baixa) (parte baixa)

figura 2a Resposta Linear da Placa (parte alta)

figura 2b Resposta em dB da Placa (parte alta)

figura 3a

figura 3b
Vincius Wellington Diolice Felix da Silva RA RA 955135 5

Filtro Passa-Baixas 6 e 18 ordem As curvas medidas(figuras 4a, 4b, 5a e 5b) e as calculadas no MATLAB esto coerentes, sendo bastante prximas com exceo do ganho que diferencia devido a atenuao existente no programa do filtro. Na freqncia de corte tem aproximadamente 6dB de atenuao como era esperado. O filtro de 6a ordem possui uma curva mais suave que o de 18. Alm disso, no filtro de 18a ordem pode-se perceber a variao caracterstica dos filtros FIR na regio de rejeio. Resposta Linear do Filtro Passa-Baixas(6a Ordem) Resposta em dB do Filtro Passa-Baixas(6a Ordem)

figura 4a

figura 4b

Resposta Linear do Filtro Passa-Baixas(18a Ordem)

Resposta em dB do Filtro Passa-Baixas(18a Ordem)

figura 5a

figura 5b

Vincius Wellington Diolice Felix da Silva

RA RA 955135

Filtro Passa-Altas 6 e 18 ordem As curvas medidas (figuras 6a, 6b, 7a e 7b) e calculadas no MATLAB diferem-se um pouco, pois o filtro implementado sofre influncia do sistema de filtro(s) analgico(s) existente(s) na placa do DSP, poderia-se compensar isto introduzindo-se uma distoro que anula-se o efeito da placa. Mas onde a resposta da placa plana a resposta do filtro FIR coerente, com apenas o ganho diferente do calculado, ou seja, o grfico est deslocado verticalmente em relao quele esperado.

Resposta Linear do Filtro Passa-Altas(6a Ordem)

Resposta em dB do Filtro Passa-Altas(6a Ordem)

figura 6a

figura 6b

Resposta Linear do Filtro Passa-Altas(18a Ordem)

Resposta em dB do Filtro Passa-Altas(18a Ordem)

figura 7a

figura 7b

Vincius Wellington Diolice Felix da Silva

RA RA 955135

Os filtros Passa-Baixas sofreram pouca influncia da filtro(s) da placa, pois a freqncia de corte inferior bem prxima a zero, no caso do passa-altas os filtro(s) analgico(s) comeam a atuar prximos a 21KHz. Observa-se que os filtros de 18 ordem possuem curvas bem mais abruptas que os de 6 ordem, ou seja, pode-se utilizando-se simples filtros analgicos de entrada e sada implementar-se filtros de ordem bastante elevada e at modific-los trocando apenas o programa.

Concluso
O filtro digital utilizando DSP demonstrou possuir grande flexibilidade, alm de em alguns casos ficar mais compacto que o analgico. A flexibilidade ocorre devido a utilizao de um mesmo hardware para a implementao de diversos tipos de filtro, apenas modificando o software. Para filtros de ordem elevada necessita-se muitas vezes de muitos componentes analgicos e de valores elevados tornando-se difcil sua implementao como no caso das baixas freqncias e os valores a serem utilizados. Alm disso, necessita-se em certas aplicaes de preciso dos componentes, e tambm de ajustes constantes, os filtros digital so mais robustos em relao a variao do valor de seus componentes, no necessitando praticamente de ajustes. Com isso, em determinados casos o filtro digital permiti uma maior compactao.

Vincius Wellington Diolice Felix da Silva

RA RA 955135

You might also like