You are on page 1of 11

PSI 2432 - Projeto e Implementa c ao de Filtros Digitais

Complemento de Transformada z Estruturas para Implementa c ao de Filtros Fase e Atraso de Grupo


V tor H. Nascimento 20 de agosto de 2008

Estruturas para implementa c ao de ltros

Uma mesma fun c ao de rede H (z ) pode ser implementada em um microprocessador de diversas maneiras. N ao estamos falando aqui de implementa c ao f sica, como em capacitores chaveados por oposi c ao a em um microprocessador dedicado a processamento digital de sinais (um digital signal processor, ou DSP), mas das diferentes formas de se agrupar as opera c oes de adi c ao e multiplica c ao e o armazenamento em mem oria necess arios para realizar a fun c ao H (z ). H a outras estruturas al em das descritas aqui, veja por exemplo [14]. Para facilitar a discuss ao, vamos come car tratando de ltros n ao-recursivos. Todas as formas de implementa c ao seriam equivalentes se os c alculos fossem realizados em precis ao innita. No entanto, em precis ao nita as coisas n ao s ao t ao simples: em precis ao nita, a ordem das opera c oes (ou a forma como uma conta e feita) afeta a precis ao do resultado nal. Isso e particularmente importante para ltros recursivos, em que o arredondamento de um coeciente fazer com que um ltro que inst avel, como veremos a seguir.

1.1

Implementa c ao de ltros n ao-recursivos

Considere por exemplo o ltro y (n) = b0 x(n) + b1 x(n 1) + b2 x(n 2) + b3 x(n 3), ou seja, Y (z ) = b0 X (z ) + b1 z 1 X (z ) + b2 z 2 X (z ) + b3 z 3 X (z ). Esta forma de escrever a sa da em fun c ao da entrada nos leva ` a forma direta para implementa c ao de ltros n ao-recursivos, que pode ser representada pelo diagrama de blocos da gura 1.

x(n)

b0

y (n)

z 1 b1 z 1 b2 z 1 b3 Figura 1: Implementa c ao direta de um ltro n ao-recursivo (os s mbolos b0 , b1 , etc. sobre liga c oes entre blocos representam multiplica c oes por coecientes, enquanto que os s mbolos x(n), y (n), etc. sobre as mesmas liga c oes representam os sinais em cada ponto). A forma direta n ao e, no entanto, a u nica maneira de se implementar um ltro n aorecursivo. Isso pode ser visto mais facilmente usando a transformada z : por exemplo, a transformada Y (z ) pode ser agrupada tamb em da seguinte maneira: Y (z ) = b0 X (z ) + z 1 b1 X (z ) + z 1 b2 X (z ) + z 1 b3 X (z ) ,

que pode ser representada pelo diagrama da g. 2 (forma direta alternativa ou transposta).

1.2

Formas diretas para implementa c ao de ltros recursivos


b0 + b1 z 1 + b2 z 2 + b3 z 3 . 1 + a1 z 1 + a2 z 2 + a3 z 3

Considere, por exemplo, a seguinte fun c ao de rede H (z ) =

Podemos separar H (z ) da seguinte maneira (considere x(n) a seq u encia de entrada do ltro, e y (n) a de sa da): Y (z ) = 1 b0 + b1 z 1 + b2 z 2 + b3 z 3 X (z ) = 1 + a1 + a2 z 2 + a3 z 3 1 W (z ), = 1 1 + a1 z + a2 z 2 + a3 z 3 z 1 2

(1)

x(n)

b0

y (n)

+
z 1

b1

+
z 1

b2

z 1 b3 Figura 2: Implementa c ao alternativa (transposta) de um ltro n ao-recursivo. em que denimos W (z ) = b0 + b1 z 1 + b2 z 2 + b3 z 3 X (z ). A partir dessa fatora c ao de H (z ), podemos escrever w(n) = b0 x(n) + b1 x(n 1) + b2 x(n 2) + b3 x(3), e y (n) = a1 y (n 1) a2 y (n 2) a3 y (n 3) + w(n), como mostra o diagrama da g. 3. A implementa c ao representada na gura 3 usa mais atrasos do que o m nimo necess ario. Isso e inconveniente, pois cada atraso e uma posi c ao de mem oria usada. Outra possibilidade e trocar a ordem dos fatores na eq. (1) e escrever Y (z ) = b0 + b1 z 1 + b2 z 2 + b3 z 3 = b0 + b1 z em que denimos W1 (z ) = 1 + a1 z 1 1 X (z ). + a2 z 2 + a3 z 3 3
1

+ b2 z

+ b3 z

1 + a1 W1 (z ),

z 1

1 X (z ) = + a2 z 2 + a3 z 3

x(n)

b0

w(n)

y (n)

z 1 b1 z 1 b2 z 1 b3 a3

z 1

a1 z 1

a2 z 1

Figura 3: Implementa c ao direta de um ltro recursivo. Assim, a implementa c ao car a como w1 (n) = a1 w1 (n 1) a2 w1 (n 2) a3 w1 (n 3) + x(n), e y (n) = b0 w1 (n) + b1 w1 (n 1) + b2 w1 (n 2) + b3 w1 (n 3), como mostrado na g. 4. Como essa implementa c ao utiliza o menor n umero poss vel de registradores (ou seja, de posi c oes de mem oria), ela e chamada de can onica1 note que existe mais de uma implementa c ao com essa propriedade, ou seja, h a mais de uma forma can onica (veja a seguir, e [13]). A forma da g. 4 e chamada forma direta can onica do tipo I. O ltro pode ser implementado de outra maneira, se usarmos a forma transposta para ltros n ao-recursivos para implementar o numerador e o denominador de H(z). Assim, se escrevermos (1) da seguinte maneira, Y (z ) = b0 X (z ) + z 1 b1 X (z ) a1 Y (z ) + z 1 b2 X (z ) a2 Y (z ) + z 1 b3 X (z ) a3 Y (z ) ,

obtemos a forma direta can onica do tipo II, representada na g. 5. As formas diretas s ao as primeiras que v em ` a mente quando precisamos implementar um ltro recursivo. No entanto, exceto para ltros de ordem menor que tr es, as formas
As vezes fala-se tamb em de forma can onica quanto aos atrasos (menor n umero de atrasos poss vel), quanto ` as multiplica c oes (menor n umero de multiplica c oes poss vel).
1`

x(n)

w1 (n)

b0

y (n)

z 1

a1 z 1

b1

a2 z 1 a3

b2

b3

Figura 4: Forma direta can onica do tipo I. diretas t em um problema grave em potencial quando implementadas com precis ao num erica nita: suas respostas podem ser grandemente afetadas pela quantiza c ao dos coecientes, e erros num ericos cometidos nos c alculos de vari aveis intermedi arias podem afetar bastante o resultado nal. Grande parte do problema e que as ra zes de um polin omio podem variar bastante para varia c oes pequenas nos coecientes, principalmente em polin omios de grau elevado. Considere o polin omio p1 (z ) com ra zes p1 (z ) = p1 (z ) = (z 0, 99)(z 0, 998ej/3 )(z 0, 998ej/3 ) = = 0.9860440 + 1.984024z 1.988z 2 + z 3 , e dena p(z ) = p2 zes de p(z ) + 104 z , obtemos 1 (z ). Calculando as ra p(z ) = 0.9722827 3.9126698z + 7.856862z 2 9.8605673z 3 + + 7.920192z 4 3.976z 5 + z 6 Magnitude da raiz 0.9929466 0.9929466 1.002977 1.002977 0.9901008 0.9901008 fase da raiz 59.830493 - 59.830493 60.168276 - 60.168276 0.5827640 - 0.5827640 m odulo do erro (%) 0,59 0,59 0,58 0,58 1,02 1,02

Temos ent ao uma varia c ao de at e 1% nas ra zes causada por uma varia c ao de apenas 0, 0026% em apenas um dos coecientes de p(z )! E essa min uscula varia c ao fez duas ra zes com 5

x(n)

b0

+
z 1

y (n)

b1

+
z 1

a1

b2

a2

z 1 b3

a3

Figura 5: Forma direta can onica do tipo II. m odulo em 0, 98 serem modicadas para ra zes com m odulo maior do que 1: se p(z ) fosse o denominador de uma fun c ao de rede, portanto um erro de 104 em 4 (que corresponde a uma precis ao de 16 bits) tornaria o ltro inst avel.

1.3

Se c oes de segunda ordem em cascata

Para evitar os problemas num ericos das formas diretas, duas solu c oes comuns s ao decompor a fun c ao de transfer encia ou em cascata (decomposi c ao multiplicativa) ou em paralelo (decomposi c ao aditiva). Para a primeira possibilidade, fatora-se a fun c ao desejada em termos de primeira ou segunda ordem (primeira ordem para p olos e zeros reais, segunda ordem para p olos e zeros complexos). Considere, por exemplo, um ltro de terceira ordem H (z ) = 0.0638559 + 0.1915678z + 0.1915678z 2 + 0.0638559z 3 0.1060171 + 0.5826442z 0.9657797z 2 + z 3

(mais ` a frente no curso veremos que este e um ltro de Butterworth de 3a ordem). Usando a estrutura em cascata, a fun c ao de rede acima e fatorada como (e pode ser implementada como mostra a gura 6) H (z ) = 0, 0638559 z 2 + 2z + 1 z+1 2 . z 0, 2679492 z 0, 6978305z + 0, 3956610 6

O fator de escala 0, 0638559 deve ser distribu do entre as duas se c oes. Um bom projeto tamb em deve levar em conta a ordem em que as se c oes devem ser implementadas, se primeiro a se c ao de primeira ordem e depois a de segunda, ou vice-versa. Para ltros mais complexos tamb em e importante decidir como agrupar (parear) os p olos e zeros em se c oes, sempre procurando reduzir efeitos causados por erros num ericos, e (para implementa c oes em aritm etica de ponto xo) para assegurar que todos os valores intermedi arios calculados quem no intervalo [1, 1]. x(n)
+

b01 z 1

b02 z 1

y (n)

a11

b11

a12 a22 z 1

b12 b22

Figura 6: Forma em cascata de ltro de 3a ordem.

1.4

Se c oes de segunda ordem em paralelo

Pode-se decompor uma fun c ao de rede tamb em em fra c oes parciais, e juntar p olos e zeros conjugados para formar se c oes de segunda ordem com coecientes reais. No nosso exemplo do ltro de Butterworth de 3a ordem, o resultado e (g. 7) H (z ) = 0, 0638559 + 0, 4217262z 2 0, 2108631z 1 0, 4641016z 1 + 1 0, 2679492z 1 0, 3956610z 2 0, 6978305z 1 + 1

Fase e atraso de grupo

Como dito anteriormente, a fase da resposta em freq u encia tamb em e importante em muitas aplica c oes. Para ver isso, suponha que um ltro tenha ganho 1 em todas as freq u encias, e fase ( ) = 100 , ou seja, H (ej ) = 1 ej 100 , e que a esse ltro seja aplicada a entrada x(n) = sen(/60n)+1/3 sen(/20n)+1/5 sen(/12n). Ent ao a sa da ser a y (n) = sen /60n 100/60 + 1 1 sen /20n 100/20 + sen /12n 100/12 = 3 5 1 1 = sen /60(n 100 + sen /20(n 100) + sen /12(n 100) . 3 5

Repare que, como a fase e proporcional ` a freq u encia, o efeito na sa da foi o de um atraso. Na g. 8 est ao representadas a entrada e a sa da desse ltro. 7

b00 x(n)
+

b01

y (n)

z 1
+

a11

b11

b02

z 1
+

a12 z 1 a22

b12

b22

Figura 7: Forma paralela de ltro de 3a ordem. No entanto, se a fase n ao variar linearmente com a freq u encia, por exemplo, se H (ej ) = 1 ej arctan(100) , ent ao os atrasos correspondentes a cada harm onica ser ao diferentes, e y (n) = sen /60n 100/60 + 1 1 sen /20n 100/20 + sen /12n 100/12 = 3 5 1 1 = sen /60(n 26, 40 + sen /20(n 9, 60) + sen /12(n 5, 85) . 3 5

Como podemos ver na g. 9, essa varia c ao nos atrasos pode deformar completamente a forma do sinal. Por causa dos efeitos vistos acima, dene-se atraso de grupo de um ltro da seguinte maneira. Se a resposta em freq u encia de um ltro for dada por H (ej ), podemos escrever H (ej ) = A( )ej() , em que A( ) deve ser uma fun c ao real. Devido ao fato que ej (+2) = ej , e ej = ej (+) , as fun c oes A( ) e ( ) podem em princ pio ser escolhidas de mais de uma maneira. Para denir corretamente o atraso de grupo, devemos escolher a fun c ao ( ) sem restringir ( ) ao intervalo < ( ) < , de modo a fazer de ( ) uma fun c ao cont nua (para isso ser poss vel, a fun c ao A( ) deve ser real, mas n ao necessariamente positiva, para que n ao 8

x(n) (linha cont nua) e y (n) (tracejada)


1.0 0.8 0.6 0.4 0.2 0 0.2 0.4 0.6 0.8 1.0 0 20 40 60 80 100 120 140 160 180 200

n Figura 8: Entrada e sa da do sistema com H (ej ) = 1ej 100 . apare ca um degrau em ( ) quando H (ej ) passar por zero). O atraso de grupo e denido por d ( ) tg ( ) = d

Refer encias
[1] DINIZ, P. S. R.; SILVA, E. A. B. da; NETTO, S. L. Processamento Digital de Sinais: Projeto e An alise de Sistemas. S ao Paulo: Bookman, 2004. [2] OPPENHEIM, A. V.; SCHAFER, R. W.; BUCK, J. R. Discrete-Time Signal Processing. 2nd. ed. [S.l.]: Prentice-hall, 1999. [3] BELLANGER, M. Digital Processing of Signals: Theory and Practice. [S.l.]: Wiley, 1984. [4] PARKS, T. W.; BURRUS, C. S. Digital Filter Design. [S.l.]: Wiley-Interscience, 1987. (Topics in Digital Signal Processing Series).

x(n) (linha cont nua) e y (n) (tracejada)


1.9

1.5

1.1

0.7

0.3

0.1

0.5

0.9

1.3

1.7 0 20 40 60 80 100 120 140 160 180 200

n Figura 9: Entrada e sa da do sistema com H (ej ) = 1ej arctan(100) .

10

tg ( )
3.3

2.9

2.5

2.1

1.7

1.3

0.9

0.5 0 0.1 0.2 0.3 0.4 0.5

2 Figura 10: Atraso de grupo do ltro de Butterworth de 3a ordem do primeiro exemplo.

11

You might also like