Está en la página 1de 30

5

Diseo de ltros en tiempo discreto n


En este cap tulo se trata el diseo de ltros digitales con respuesta inn nita al impulso (RII). El diseo de estos ltros se basa en transformaciones n que permiten convertir la funcin de transferencia de ltros analgicos H(s), o o en ltros digitales o de tiempo discreto H(z).

5.1.

Dise o por solucin directa de la ecuacin en n o o diferencias

Un sistema lineal en tiempo discreto e invariante al desplazamiento se puede caracterizar por su funcin de transferencia H(z), o por una ecuacin o o en diferencias. Representando este sistema en tiempo discreto por su funcin de transo ferencia tenemos,
M N

bk y k =
k=0 k=0

ak xk ;

M N,

(5.1)

entonces, aplicando la transformada Z, H(z) =


N k k=0 ak z , M k k=0 bk z

(5.2)

cuya respuesta en frecuencia est dada por a H(ej ) =


N jk k=0 ak e . M jk k=0 bk e

(5.3)

Podemos suponer que nuestro ltro digital acta como un ltro analgiu o co, desde el punto de vista de la entrada y salida analgicas del ltro, segn o u 119

120

5.1. DISENO POR SOLUCION DIRECTA DE LA ECUACION EN DIFERENCIAS

se presenta en la gura 5.1, donde xn = xa (nT ) y yn = ya (nT ) son las versiones muestreadas de xa (t) y ya (t), y H(z) es un sistema lineal en tiempo discreto. Esto ser nuestro punto de partida en el diseo de ltros digitales. a n xa (t) ya (t)
-

SLIT tiempo continuo

xa (t)

- A/D

H(z) yn

- D/A

ya (t)
-

xn

Figura 5.1: Sistema analgico equivalente en tiempo discreto. o Si nuestro ltro analgico est representado por la siguiente ecuacin o a o diferencial: N M dk dk pk k ya (t) = qk k xa (t), (5.4) dt dt k=0 k=0 entonces, de la transformacin de Laplace tenemos o H(s) =
N k k=0 qk s . M k k=0 pk s

(5.5)

Para trabajar en el dominio del tiempo discreto, podemos aproximar las derivadas por diferencias hacia atrs. Recurdese la denicin de derivada a e o como f (t) f (t T ) d f (t) = l m . (5.6) T 0 dt T Entonces, para la primera derivada tenemos
(1)

[y(n)] =

[y(n) y(n 1)] , T

(5.7)

donde

(k)

indica la primera diferencia. Para ordenes mayores tenemos


(k)

{y[n]} =

(1)

(k1)

{y[n]}}.

(5.8)

As podemos escribir ,
N M

pk
k=0

(k)

{ya (nT )} =

qk
k=0

(k)

{xa (nT )}.

(5.9)

G. Miramontes, ISBN 968-5923-15-9

PDS: Introduccin con teora y prctica o a

5.1. DISENO POR SOLUCION DIRECTA DE LA ECUACION EN DIFERENCIAS

121

(5.9) es una aproximacin numrica para obtener la versin muestreada o e o de y(t). Aplicando la transformada Z a la primera diferencia tenemos Z{
(1)

{y[n]}} = Z{ =

1 Y (z)(1 z 1 ) T

y[n] y[n 1] } T (5.10)

y para la k-sima diferencia, e Z{


(k)

{y[n]}} = Y (z)

(1 z 1 ) T

(5.11)

Haciendo T = 1, podemos escribir y a (nT ) como y[n], y xa (t) como x[n], as ,


N k=0 N M

pk Z{

(k)

{y[n]}} =
k

k=0

qk Z{ qk

(k)

{x[n]}},
k

pk
k=0

(1 z 1 ) T

Y (z) =
k=0

(1 z 1 ) T

X(z),

(5.12)

de modo que nalmente Y (z) = H(z) = X(z)


(1z 1 ) k N ] k=0 pk [ T . (1z 1 ) k M ] k=0 qk [ T

(5.13)

De (5.13) podemos ver, comparndola con (5.5), que H(z) se puede oba 1 )/T ] en H(s), esto es tener reemplazando s por [(1 z H(z) = H(s)
s=
(1z 1 ) T

(5.14)

Lo anterior corresponde a una transformacin (en algunos textos se le llama o mapeo) del plano-s al plano-z, de modo que 1 1 z 1 , z= (5.15) T 1 sT La respuesta en frecuencia resultante se puede obtener haciendo s = j en el dominio analgico, entonces o s= z= 1 . 1 jT (5.16)

Se puede demostrar que con esta transformacin el eje j, del plano-s, o es transformado en un c rculo de radio 0.5 centrado en (x = 0.5, y = 0) sobre el plano-z, como se muestra en la gura 5.2.
G. Miramontes, ISBN 968-5923-15-9 PDS: Introduccin con teora y prctica o a

122

5.2. LA TRANSFORMACION BILINEAL y

imag 6 plano-s real -

plano-z = 0+
x I

= +
s 3

= 0

Figura 5.2: Transformacin del plano-s al plano-z. o As los polos del semiplano izquierdo del plano-s estarn dentro del , a c rculo unitario, lo que signica que esta transformacin entregar un ltro o a digital estable a partir de un ltro analgico estable; sin embargo, la forma de o la respuesta en frecuencia de H(z) ser diferente a la respuesta en frecuencia a de H(s). Recurdese que obtenemos la respuesta en frecuencia del ltro e digital evaluando H(z) sobre el c rculo unitario haciendo z = e j .

5.2.

La transformacin bilineal o

Otra solucin a la ecuacin en diferencias est basada en la aplicacin o o a o de la regla del trapecio para aproximar la integracin. o Recordando la regla del trapecio tenemos,
t2 t1

x( )d =

t2 t 1 [x(t1 ) + x(t2 )]. 2

(5.17)

Supngase que tenemos una funcin de transferencia analgica dada por: o o o Ha (s) = cuya respuesta al impulso es h(t) = L1 Ha (s) = 1, si t 0+ 0, si t 0 , (5.19) 1 , s (5.18)

la respuesta a una entrada arbitraria x(t) es


t

y(t) =
0

x( )h(t )d,

(5.20)

haciendo t = t1 tenemos y(t1 ) =


t1 0

x( )h(t1 )d,

(5.21)

G. Miramontes, ISBN 968-5923-15-9

PDS: Introduccin con teora y prctica o a

5.2. LA TRANSFORMACION BILINEAL y si t = t2 y(t2 ) =


0

123

t2

x( )h(t2 )d,
t2

(5.22)

si adems, h(t2 ) = h(t1 ) = 1, entonces a y(t2 ) y(t1 ) = x( )d, (5.23)


t1

y aplicando la regla del trapecio para aproximar la integracin o t2 t 1 y(t2 ) y(t1 ) [x(t1 ) + x(t2 )]. (5.24) 2 Ahora, haciendo t2 = nT y t1 = nT T T y(nT ) y(nT T ) = [x(nT T ) + x(nT )], (5.25) 2 y de la transformada Z T (5.26) Y (z) z 1 Y (z) = [z 1 X(z) + X(z)], 2 de aqu que Y (z) T z+1 H(z) = = . (5.27) X(z) 2 z1 Nuevamente, comparando H(z) con H a (s) se puede ver que la funcin o de transferencia en tiempo discreto se obtiene como H(z) = Ha (s)
2 s T z1 z+1

(5.28)

La (5.28) es conocida como la transformacin bilineal, y su efecto en la o transformacin del plano s al plano z se muestra en la gura 5.3. La transo formacin bilineal tiene las siguientes propiedades: o 1. 2. 3. El eje j del plano-s cae sobre el c rculo unitario en el plano-z. El semiplano izquierdo del plano-s cae dentro del c rculo unitario. No hay una relacin lineal entre las frecuencias analgicas y las freo o cuencias del ltro digital.

Como resultado de la propiedad nmero 3, los ltros digitales tendrn u a la misma respuesta en amplitud slo a bajas frecuencias ya que la relacin o o entre y es no lineal. Esto se puede demostrar haciendo z = e j y s = j, de modo que 2 T = tan( ) T 2 T = 2 tan1 ( ) (5.29) 2 A esta relacin no lineal de las frecuencias y se le llama el efecto de como badura warping de la transformada bilineal. Por simplicidad le llamaremos efecto de deformado.
G. Miramontes, ISBN 968-5923-15-9 PDS: Introduccin con teora y prctica o a

124

5.2. LA TRANSFORMACION BILINEAL y

imag 6 plano-s = + real R 

plano-z = 0+
x I

= 0

Figura 5.3: Transformacin bilineal. o

5.2.1.

Diseo de ltros digitales por la transformacin bilin o neal

Como se vio en la seccin 5.2, al aplicar la transformacin bilineal a o o un ltro analgico se presentar el efecto de deformacin en las frecuencias o a o digitales. Para obtener las frecuencias de corte deseadas debemos disear el n ltro analgico con las frecuencias dadas por o 1 = T 2 tan( ). T 2 (5.30)

Esta operacin se conoce como pre-deformado. Luego, diseamos el ltro o n analgico con estas frecuencias pre-deformadas para, posteriormente, aplio carle la transformacin bilineal para obtener la H(z) deseada. o El procedimiento de diseo es: n 1. Pre-deformar las especicaciones del ltro digital. 2. Disear el ltro analgico que satisfaga esas especicaciones analgin o o cas. 3. Aplicar la transformacin bilineal. o Para simplicar los clculos en el diseo de ltros digitales por la transa n formacin bilineal, se pueden hacer lo siguientes cambios sin que se afecten o los resultados: Para el pre-deformado de las frecuencias digitales i se emplear la a siguiente expresin para obtener las frecuencias analgicas de diseo o o n i : i ), (5.31) i = tan( 2F s donde F s es la frecuencia de muestreo.
G. Miramontes, ISBN 968-5923-15-9 PDS: Introduccin con teora y prctica o a

5.2. LA TRANSFORMACION BILINEAL

125

Para la transformacin bilineal se emplear la expresin simplicada: o a o s= z1 z+1 (5.32)

Note que se ha eliminado el trmino 2/T de ambas expresiones, obtee niendo de este modo una simplicacin en los clculos. o a Ejemplo 5.2.1 Disear un ltro digital de primer orden con frecuencia de n corte de 1 rad/s. Considerar T = 1. Solucin: o Pre-deformando la frecuencia digital tenemos 1 = tan 2 0.1591 = 0.5460. 2

Como se desea un ltro de primer orden, no hay necesidad de calcular n puesto que es igual a 1. As que la funcin prototipo ser H(s) = 1/(s + 1) o a con escalamiento en frecuencia H(s) = 1 1 = . (s + 1) ss/0.5460 1.83123s + 1

Aplicando la transformada bilineal tenemos H(z) = 0.3532 + 0.3532z 1 . 1 0.29359z 1

Ejemplo 5.2.2 Disear un ltro digital que satisfaga las siguientes especin caciones: a) Banda de paso y de rechazo monotnicas. o b) Frecuencia de corte /2 rad/s con -3 dB. c) Atenuacin de al menos 15 dB a una frecuencia de 3/4. o Emplear la transformada bilineal y T=1. Solucin: o Predeformando las especicaciones de frecuencia digital para obtener las frecuencias analgicas tenemos o 1 = tan(/4) = 1.000, 2 = tan(3/8) = 2.4142135. El orden del ltro analgico ser o a n = = log (100.3 1)/(101.5 1) 2 log(1/2.4142135) 1.94383 = 2,
PDS: Introduccin con teora y prctica o a

G. Miramontes, ISBN 968-5923-15-9

126

5.3. DISENO DE FILTROS DIGITALES RII USANDO TRANSFORMACIONES DIGITAL-A-DIGITAL 1 |s s/1, + 2s + 1

as que la funcin prototipo es o H(s) = ya que r = (100.3 1.000 = 1.00118. 1)1/4 s2

Aplicando la transformada bilineal resulta H(z) = = s2 1 | z1 + 2s + 1 s z+1 0.29289 + 0.58579z 1 + 0.29289z 2 1 + 0.17158z 2

5.3.

Dise o de ltros digitales RII usando transn formaciones digital-a-digital

Se ha mostrado, en las secciones anteriores, que es posible encontrar una funcin de transferencia en tiempo discreto H(z) para ltros digitales o Butterworth normalizados, aplicando la transformacin bilineal. Podemos o construir, nuevamente, un catlogo de funciones de transferencia en tiema po discreto H(z) para ltros Butterworth, Chebyshev, y el pticos. Ahora la pregunta es podemos disear un ltro digital con algunas especicacion nes dadas usando solamente funciones de transferencia en tiempo discreto normalizadas? S ya que, de la misma manera que se disearon ltros analgicos, usan, n o do escalamiento en frecuencia (transformaciones analgico-a-analgico), se o o puede denir un conjunto de transformaciones digital-a-digital. Partiendo de un ltro digital pasa-bajas normalizado podemos obtener ltros pasa-altas, pasa-banda, y rechazo de banda. Este juego de transformaciones, dado en la tabla 5.1, fue propuesto por Constantinides (1970), donde Pb signica pasa-bajas, PA pasa-altas, PB pasa-banda, y RB rechazo de banda.

5.3.1.

Determinacin del orden n para un ltro digital Buto terworth

entonces,

Para un ltro pasa-bajas, usualmente tenemos una frecuencia de corte 1 y una frecuencia de rechazo 2 con ganancias k1 y k2 respectivamente, donde 0 20 log |H(ej1 )| k1 (5.33) 20 log |H(ej2 )| k2 , n= log[(10k1 /10 1)/(10k2 /10 1)] 2 log[ tan(1 T /2) ] tan(2 T /2) , (5.34)

G. Miramontes, ISBN 968-5923-15-9

PDS: Introduccin con teora y prctica o a

5.3. DISENO DE FILTROS DIGITALES RII USANDO TRANSFORMACIONES DIGITAL-A-DIGITAL Tabla 5.1: Transformaciones digital-a-digital. Transformacin: o Ecuaciones: sen[( )/2] z 1 Pb p aPb p z 1 = 1z 1 donde = sen[(p +p )/2] p p Pb p aPA p Pb p aPB p
1

127

z + z 1 = 1+z 1 donde = cos[(p +p )/2] cos[(p p )/2]

z 1

= cos[(2 1 )/2] 1 )/2] tan(p T /2) Pb p aRB p z 1 =

k+1 k+1 cos[(1 +2 )/2]

k+1 k+1 k1 z 2 2k z 1 +1

z 2 2k z 1 + k1

donde k = cot[(2 donde k = tan[(2

= cos[(2 1 )/2] 1 )/2] tan(p T /2)

2 z 2 1+k z 1 + 1k 1+k 1k 2 2 z 1+k z 1 +1 1+k cos[(2 +1 )/2]

para satisfacer el requisito de ganancia k 1 , seleccionamos una frecuencia cr tica 2 tan(1 T /2) p = , (5.35) (10k1 /10 1)1/2n tal que p = 2 tan[(10k1 /10 1)1/2n 2 tan(1 T /2)] y nalmente, H(z) = HBn (z)|z 1 = z1 ,
1z 1

(5.36) (5.37)

donde =

sen[(p p )/2] . sen[(p p )/2]

(5.38)

Ejemplo 5.3.1 Se desea un ltro digital normalizado Butterworth de orden 1. Obtenga H(z) a) por transformacin bilineal y b) empleando una o transformacin digital-a-digital. o Solucin: o a) Para aplicar la transformacin bilineal, partiendo de una H(s) = 1/(s+1), o requerimos de un ltro analgico de primer orden pero con frecuencia de coro te = tan(1/2) = 0.546302 1 0.546302 = . s ( 0.546302 ) + 1 s + 0.546302

Ha (s) = H(s)|s=s/0.546302 = Por transformacin bilineal o H(z) = Ha (s)|s= z1 =


z+1

z1 z+1

0.546302 + 0.546302
PDS: Introduccin con teora y prctica o a

G. Miramontes, ISBN 968-5923-15-9

128 = =

5.4. REALIZACION DE FILTROS DIGITALES RII (z + 1)0.546302 0.546302(z + 1) = z 1 + 0.546302 + 0.546302 1.546302z 0.4536975 0.3532957896(1 z 1 ) . 1 0.293408z 1

b) Si, en cambio, aplicamos directamente la transformacin bilineal sobre el o ltro analgico H(s) = 1/(s + 1), obtendremos una H(z) con una frecuencia o de corte que no corresponde a la del ltro digital normalizado. Entonces, aplicaremos una transformacin digital-a-digital para obtener la H(z) deo seada.

5.4.

Realizacin de ltros digitales RII o

Por realizacin se entiende la traduccin de la funcin de transferencia o o o H(z), primero en una estructura y despus en una ecuacin en el domino del e o tiempo, de modo que permita su implantacin en el lenguaje propio de un o procesador de seales digitales. Para el caso de ltros RII se tienen varias n estructuras posibles.

5.4.1.
Sea

Forma directa I
H(z) =
M k k=0 bk z , N k k=1 ak z

1+

M N,

(5.39)

entonces, de la transformada Z inversa tenemos


N M

y(n) =

k=1

ak y(n k) +

k=0

bk x(n k).

(5.40)

Una realizacin del ltro RII, usando (5.40) es llamada forma directa I. o La gura 5.4 muestra tal realizacin, donde se puede observar que el nmero o u 1 es igual a M + N . de bloques de retardo z

5.4.2.

Forma Directa II

Es posible obtener otra realizacin descomponiendo H(z) en dos funcioo nes: H1 (z) y H2 (z); donde H1 (z) contiene slo al denominador o polos de o o , H(z), y H2 (z) contiene slo al numerador o ceros de H(z). As como se muestra en la gura 5.5 H(z) = H1 (z)H2 (z) = donde H1 (z) = 1+ 1
N k k=1 ak z

Y (z) , X(z) y

(5.41)

(5.42)

G. Miramontes, ISBN 968-5923-15-9

PDS: Introduccin con teora y prctica o a

5.4. REALIZACION DE FILTROS DIGITALES RII b0

129

x(n) z 1 z 1

66

y(n) a1 a2 z 1 z 1

b1 b2

-  - 

z 1

bM

- 

aN

z 1

Figura 5.4: Forma directa I.


N

H2 (z) =
k=0

bk z k .

(5.43)

x(n)

- H1 (z)

w(n)

H2 (z) slo-ceros o

y(n)

slo-polos o

Figura 5.5: Descomposicin de H(z). o La salida se obtiene calculando el resultado intermedio w(n) por: W (z) = H1 (z)X(z) = y
N

1 1+
N k k=1 ak z

X(z)

(5.44)

Y (z) = H2 (z)W (z) =


k=0

bk z k W (z)

(5.45)

Tomando las transformadas Z inversas


N

w(n) = x(n) y
M

k=1

ak w(n k)

(5.46)

y(n) =
k=0

bk w(n k).

(5.47)

G. Miramontes, ISBN 968-5923-15-9

PDS: Introduccin con teora y prctica o a

130

5.4. REALIZACION DE FILTROS DIGITALES RII b0 z 1 z 1 b1 b2

x(n)

6 1 a  

w(n) z 1

6 -

y(n)
-

a2 z 1

aN z 1

z 1

bM

Figura 5.6: Forma directa II. En forma grca tenemos las estructuras que se muestran en la gura 5.6. a Puede verse que las dos ramas de los elementos de retardo se pueden combinar en una sola, ya que se reeren a la misma versin retrasada de o w(n). Entonces, despus de simplicar, tenemos la forma directa II simplie cada o cannica en la gura 5.7. o x(n) b0
6 1 a  

6 -

y(n)

z 1

b1 b2

a2 z 1

aN 1 z 1
 

bM

aN z 1

Figura 5.7: Forma (cannica) directa II. o En este caso, el nmero de bloques de retardo es igual a N , es decir, es u igual al orden del ltro. N es el m nimo nmero de bloques de retardo. Esta u realizacin es slo una de las muchas que contienen el nmero m o o u nimo de es una bloques de retardo, tambin como multiplicadores y sumadores. Esa e consideracin importante para prevenir o reducir errores de redondeo y de o cuantizacin. o
G. Miramontes, ISBN 968-5923-15-9 PDS: Introduccin con teora y prctica o a

5.4. REALIZACION DE FILTROS DIGITALES RII Un caso especial e importante ocurre cuando N = M = 2, pues H(z) = b0 + b1 z 1 + b2 z 2 b0 (1 + b1 z 1 + b2 z 2 ) = , 1 + a1 z 1 + a2 z 2 1 + a1 z 1 + a2 z 2

131

(5.48)

a donde b1 = b1 /b0 y b2 = b2 /b0 . Entonces tenemos las secciones bi-cuadrticas, comnmente llamadas secciones bi-cuads, compuestas de dos polinomios u de segundo orden como se muestran en las guras 5.8 y 5.9. La forma directa II alternativa es util para escalamiento de la amplitud de x(n) y mejora el desempeo del ltro. n b0
6  -

x(n)

y(n)
6 -

a1

z 1

b1

a2

z 1

b2
-

Figura 5.8: Seccin bi-cuad. o

x(n) b0
6 

y(n)
6 -

a1

z 1

b1

a2

z 1

b2
-

Figura 5.9: Seccin bi-cuad alternativa. o

G. Miramontes, ISBN 968-5923-15-9

PDS: Introduccin con teora y prctica o a

132

5.5. EL TRIANGULO DE ESTABILIDAD

5.4.3.

Conexin de estructuras en cascada o

La H(z) total puede ser factorizada como H(z) = CH1 (z)H2 (z) Hi (z). Y en trminos de secciones de segundo orden, e
N/2

(5.49)

H(z) =
i=1

b0i + b1i z 1 + b2i z 2 , 1 + a1i z 1 + a2i z 2

(5.50)

donde el sub ndice i representa el nmero de la seccin bi-cuad. u o En esta conexin en cascada la salida de una seccin es la entrada de la o o siguiente seccin, y el cdigo necesario en su implantacin toma en cuenta o o o este hecho al calcular la salida una seccin para emplearla como entrada o para la siguiente.

5.4.4.

Conexin de estructuras en paralelo o

Para la conexin en paralelo, H(z) se representa por o H(z) = C + H1 (z) + H2 (z) + + Hi (z), y en trminos de secciones de segundo orden, e
N/2

(5.51)

H(z) = C +
i=1

b0i + b1i z 1 + b2i z 2 . 1 + a1i z 1 + a2i z 2

(5.52)

As la salida se obtiene como ,


N/2

y(n) = Cx(n) +
i=1

yi (n),

(5.53)

donde yi (n) representa la salida de la i-sima seccin bi-cuad. e o

5.5.

El tringulo de estabilidad a

Antes de introducir la implantacin de ltros digitales RII, en los proceo sadores de seales de la familia DSP56k, se analizan las propiedades de los n coecientes de las estructuras bi-cuad. El numerador y el denominador de las secciones bi-cuad tienen la forma: 1 + C1 z 1 + C2 z 2 = (1 q1 z 1 )(1 q2 z 1 ), (5.54)

donde las ra ces q1 y q2 son los polos y ceros de H(z) en el plano-z, dadas por 2 C1 C1 4C2 . (5.55) q1,2 = 2
G. Miramontes, ISBN 968-5923-15-9 PDS: Introduccin con teora y prctica o a

5.6. CODIGO DE UNA SECCION DE SEGUNDO ORDEN Las ra pueden ser reales o complejas, pero en cualquier caso ces C1 = (q1 + q2 ), y

133

C2 = q 1 q 2 .

2 2 Si C1 4C2 , las ra ces son reales, mientras que si C 1 < 4C2 , las ra ces son complejas conjugadas. Espec camente para el denominador podemos obtener condiciones sobre los coecientes a1 y a2 de modo que se asegure la estabilidad. Sea el polinomio del denominador dado por

D(z) = 1 + a1 z 1 + a2 z 1 = (1 p1 z 1 )(1 p2 z 1 ),

(5.56)

rculo donde p1 y p2 , para asegurar la estabilidad, deben caer dentro del c unitario, es decir, |p1 | y |p2 | < 1. Como C2 = q1 q2 , |a2 | = |p1 p2 | < 1 y como C1 = (q1 + q2 ), entonces |a1 | = (p1 + p2 ) de donde se puede ver que |a1 | < 1 + a2 . As mientras a2 , puede variar entre -1 y +1, a1 puede variar entre -2 y 2. Esto se ilustra en la gura 5.10. a 16 2 polos complejos polos reales -1
* a2 = 1 1

4a2 = a2 1
-

a1

-2

-1


1
q

a1 = 1 + a2

2 a1 = 1 + a2

Figura 5.10: Tringulo de estabilidad. a Para una seccin de segundo orden se cumplir el requisito de estabilidad o a si y slo si a1 y a2 denen un punto dentro del tringulo de estabilidad. o a

5.6.

Cdigo de una seccin de segundo orden o o

Para el procesador de seales DSP56002, necesitaremos que tanto a 1 n como a2 (igualmente b1 y b2 ) sean menores a 1, debido a la aritmtica e fraccionaria empleada por este procesador.
G. Miramontes, ISBN 968-5923-15-9 PDS: Introduccin con teora y prctica o a

134

5.6. CODIGO DE UNA SECCION DE SEGUNDO ORDEN

La seccin de segundo orden ms general se presenta cuando a 1 y a2 son o a menores a 1, entonces tenemos el siguiente juego de ecuaciones: w(n) = 1 [x(n) a1 w(n 1) a2 w(n 2)] a0 y(n) = b0 w(n) + b1 w(n 1) + b2 w(n 2) w(n 2) = w(n 1) w(n 1) = w(n) (5.57)

En caso de que a1 > 1 se puede factorizar un 2 en el denominador. El ncleo del cdigo, tambin llamado kernel en los textos extranjeros, requiere u o e seis ciclos de instrucciones para su ejecucin. Antes de entrar al ncleo de o u instrucciones, supondremos que se han hecho los siguientes movimientos: la muestra ms reciente x(n) ha sido cargada al acumulador a, el valor en a w(n 2) ha sido cargado en el registro de datos x0, y el coeciente a 2 ha sido cargado en el registro de datos y0.
mac -x0,y0,a macr -x1,y0,a asl a mpy x0,y0,a mac x1,y0,a macr x0,y0,a x:(r0)+,x1 x1,x:(r0)+ a,x:(r0) x:(r0)+,x0 x:(r0)+,x0 y:(r4)+,y0; y:(r4)+,y0; ; y:(r4)+,y0; y:(r4)+,y0; y:(r4)+,y0; R1=x(n)-a_2 w(n-2) R2=R1-a_1 w(n-1) R3=2 R2 R4=R3+b_2 w(n-2) R5=R4+b_1 w(n-1) R5=ecuacin o

5.6.1.

Cdigo para la forma directa II transpuesta o

Una realizacin alternativa a la forma directa II mostrada en la gura o 5.7 es la forma transpuesta. Esta forma est incluida en el paquete de diseo a n que se describe en la siguiente seccin. o Para obtener la forma transpuesta se siguen los pasos siguientes: Considrese la seccin de segundo orden mostrada en la gura 5.8. e o Invertir las direcciones de todas las ramas, e invertir el papel de la entrada y la salida, como se muestra en la gura 5.11. Volver a dibujar la estructura con la entrada a la izquierda y la salida a la derecha, para obtener la forma transpuesta que se muestra en la gura 5.12, con las siguientes ecuaciones: u[n] = b2 x[n] a2 y[n]

v[n] = b1 x[n] a1 y[n] + u[n 1] y[n] = b0 x[n] + v[n 1]

(5.58)

G. Miramontes, ISBN 968-5923-15-9

PDS: Introduccin con teora y prctica o a

5.6. CODIGO DE UNA SECCION DE SEGUNDO ORDEN

135

b0 y[n] -a1 z 1 b1 x[n]

z 1 -a2 b2

Figura 5.11: Inversin de ramas para la forma transpuesta. o b0 x[n] b1 z 1


i

y[n] -a1 v[n] -a2 u[n]

z 1 b2

Figura 5.12: Forma directa II transpuesta. Debe notarse que la (5.58) equivale a la ecuacin en diferencias dada por o y[n] = b0 x[n] + b1 x[n 1] + b2 x[n 2] = a1 y[n 1] a2 y[n 2]
M N

=
k=0

bk x[n k]

k=1

ak y[n k].

(5.59)

Si suponemos que todos los coecientes son divididos entre dos, entonces podemos escribir 1 y[n] = 2{b0 x[n] + v[n 1]} 2

1 v[n] = 2{b1 x[n] a1 y[n] a2 y[n 1] + u[n 1]} 2 u[n] = 2{b2 x[n] a2 y[n]}.

(5.60)

A continuacin se muestra la construccin del cdigo en ensamblador, o o o con las siguientes suposiciones: antes de entrar al lazo do, el registro y1
G. Miramontes, ISBN 968-5923-15-9 PDS: Introduccin con teora y prctica o a

136

5.7. DESCRIPCION DE FDI

contiene el dato de entrada x[n], el registro y0 contiene el valor del coeciente b0, el acumulador a es igual a 1/2 v[n-1], y el registro r4 apunta al coeciente b1. El arreglo de memoria ser el siguiente: a


X:(r3)

v[n-1]

b0 b1

Y:(r4)

X:(r1)

u[n-1]

-a1 b2 -a2

Con estos preparativos el cdigo es el siguiente: o


do macr asr mac macr mpy macr asr #nsec,_fin y0,y1,a x:(r3),b b y0,y1,b y0,x0,b y0,y1,b y0,x0,b a a,x0 y:(r4)+,y0 ;a=y[n], b=u[n-1] ;y0=b1/2, r4->-a1 ;b=1/2 u[n-1], x0=y[n] y:(r4)+,y0 ;b=(b1 x[n]+1/2 u[n-1]) ;y0=-a1, r4 ->b2 y:(r4)+,y0 ;b=v[n], y0=b2, r4->-a2 y:(r4)+,y0 ;b=b2 x[n], guarda v[n] ;y0=-a2, r4-> b0 a,y1 ;b=u[n], prepara a=v[n-1] y:(r4)+,y0 ;a=1/2 v[n-1],u[n]->u[n-1] ;y0=b0, r4->b1 ;y1=y[n] salida

b,x:(r1)+ x:(r1),a b,x:(r3)+

_fin

donde #nsec es el nmero de secciones de segundo orden del ltro, y u _fin es la etiqueta que indica el nal del cdigo hasta donde se ejecuta la o instruccin do. o

5.7.

Descripcin de FDI o

FDI es una coleccin de archivos M para el ambiente de programacin o o Matlab. En el desarrollo de esta herramienta se ha hecho uso de las capacidades grcas de este poderoso ambiente de trabajo. Al hacer uso de la a interfase grca para usuario (GUI), se ha obtenido un ambiente de diseo a n e implantacin de ltros digitales muy amigable. o Se tienen dos versiones de FDI, una para el DSP56002EVM y una segunda versin para el DSP56303EVM. En las siguientes guras se muestra o paso a paso el empleo de FDI. Para comenzar, se debe crear una carpeta en el directorio ra C:\FDI2k2, o C:\FDI563x. Dentro de esta carpeta se crea z,
G. Miramontes, ISBN 968-5923-15-9 PDS: Introduccin con teora y prctica o a

5.7. DESCRIPCION DE FDI

137

otra carpeta: transposeM, la cual contiene los archivos M que debern ejecua tarse desde Matlab. En la primera se copian los archivos de los programas ensamblador, otros programas ejecutables y macros. Dentro del espacio de trabajo de Matlab se da inicio a la herramienta FDI escribiendo mainfdi. Despus de la pantalla de presentacin aparee o cer una pantalla con el men principal, como se muestra en la gura 5.13. a u Se tiene la opcin para el diseo de ltros RII o FIR, la cual se puede o n seleccionar desde el men principal. u

Figura 5.13: Presentacin del men principal. o u

5.7.1.

Opcin disear RII o n

Una vez seleccionada la opcin RII (ver gura 5.14), aparece el men, pao u ra elegir el tipo de ltro a disear, es decir, pasa-bajas (Lowpass), pasa-altas n (Highpass) o pasa-banda (Bandpass). Al seleccionar el tipo de ltro, pulsando con el ratn el botn apropiado del men, aparece enseguida el men de o o u u seleccin de la funcin de aproximacin a usar: Butterworth, Chebyshev, o o o o El ptico, como se muestra en la gura 5.15.

Figura 5.14: Presentacin del men tipo de ltro. o u Las especicaciones de diseo se dan cuando el programa regresa al amn biente de trabajo de Matlab, solicitando el ingreso de la frecuencia de corte, la frecuencia de rechazo, y la atenuacin deseada, en dB, para cada una. En o la gura 5.16 se muestra el ingreso de los datos para un ltro pasa-bajas.
G. Miramontes, ISBN 968-5923-15-9 PDS: Introduccin con teora y prctica o a

138

5.7. DESCRIPCION DE FDI

Figura 5.15: Presentacin del men tipo de aproximacin. o u o Una vez ingresados los datos se puede obtener la grca de la respuesta en a

Figura 5.16: Entrada de especicaciones del ltro deseado. frecuencia, y para el caso de ltros RII se obtiene, adems, el diagrama de a ceros y polos en el plano-z. La gura 5.17 muestra el trazo de la respuesta en frecuencia, y adems se pueden ver las otras opciones que aparecen en ese a momento, Write ASM para escribir el archivo con los coecientes del ltro en lenguaje ensamblador, y Assemble para llamar al ensamblador, y nalmente Back to main para regresar al men principal. u Una ultima opcin, antes de terminar con el diseo del ltro y la gene o n racin del cdigo ensamblador, es la seleccin de la tasa de muestreo que o o o emplear el procesador de seales. Para esto aparece un men como el que a n u se muestra en la gura 5.18. Cabe hacer notar que slo la versin de FDI para el DSP56002EVM o o permite seleccionar diferentes tasas de muestreo; para el DSP56303EVM se ha dejado una tasa de muestreo ja de 48 kHz.
G. Miramontes, ISBN 968-5923-15-9 PDS: Introduccin con teora y prctica o a

5.7. DESCRIPCION DE FDI

139

Figura 5.17: Respuesta en frecuencia del ltro diseado. n

Figura 5.18: Men para la seleccin de la frecuencia de muestreo. u o Una vez que se ha obtenido el diseo del ltro, es necesario generar el n cdigo y ejecutar el programa ensamblador para obtener el archivo .cld. Pao ra la generacin automtica de cdigo se emplean los archivos provistos por o a o Motorola, los cuales con modicaciones m nimas han sido construidos como macros que son llamados desde el archivo que contiene los coecientes del ltro. A continuacin se muestra el cdigo resultante para el DSP56303EVM o o del diseo de un ltro pasa-altas el n ptico cuya frecuencia de corte es de 4 kHz. Puede notarse que el ltro se compone de dos secciones bicuads, denidas en la constante nsec equ 2.
;********************************************** ;* Digital Signal Processing * ;* COEF_file for IIR filters on the DSP56303 * ;*............................................* ;* Gerardo Miramontes de Leon * ;* Universidad Autonoma de Zacatecas * ;* * G. Miramontes, ISBN 968-5923-15-9 PDS: Introduccin con teora y prctica o a

140

5.7. DESCRIPCION DE FDI

;* gmiram@cantera.reduaz.mx * ;********************************************** ; Filter specifications: ; iirHPtr.ASM ; Elliptic ; Sampling Frequency 48000.00 [Hz] ; Passband Frequency 4000.00 [Hz] ;********************************************** nsec equ 2 org x:$400 statesw1left ds nsec statesw2left ds nsec org x:$400+2*nsec statesw1right ds nsec statesw2right ds nsec org x:$400+4*nsec+1 templ ds 1 tempr ds 1 org Y:$400 coefs ;=== Biquad 1 === dc 0.475399/2 ; b(1,0)/2 dc -0.475399/2 ; b(1,1)/2 dc 0.093364/2 ; -a(1,1)/2 dc 0.000000/2 ; b(1,2)/2 dc 0.000000/2 ; -a(1,2)/2 ;=== Biquad 2 === dc 1.000000/2 ; b(2,0)/2 dc -2.000000/2 ; b(2,1)/2 dc 1.572226/2 ; -a(2,1)/2 dc 1.000000/2 ; b(2,2)/2 dc -0.857434/2 ; -a(2,2)/2 INCLUDE mactrans.asm mactrans nsec,coefs,statesw1left,statesw2left, statesw1right,statesw2right

En la gura 5.19 se muestra la pantalla resultante una vez que se ha seleccionado el botn para ensamblar. o Como se dijo antes, en la construccin del macro se han empleado y o modicado algunos archivos dados por Freescale Semiconductor, Inc., como ioequ.asm, intequ.asm ada_equ.asm y vectors.asm. El macro es el archivo que contiene tanto la programacin del codec como la implantacin del o o ltro, empleando una estructura RII transpuesta. A continuacin se mueso tra, en varias partes, el cdigo del macro mactrans.asm. En la primera parte o se muestra el inicio del macro donde se realiza la inicializacin del DSP56303 o y los ajustes del codec:
mactrans macro nsec,coefs,statesw1left,statesw2left, statesw1right,statesw2right G. Miramontes, ISBN 968-5923-15-9 PDS: Introduccin con teora y prctica o a

5.7. DESCRIPCION DE FDI

141

Figura 5.19: Ejecucin del programa ensamblador ASM56000 (o ASM56300). o


;**************************************************** nolist include ioequ.asm include intequ.asm include ada_equ.asm include vectors.asm list ;*************************************************** ;---Buffer for talking to the CS4218 org x:$0 RX_BUFF_BASE equ * RX_data_1_2 ds 1 ; data time slot 1/2 ; for RX ISR (left audio) RX_data_3_4 ds 1 ; data time slot 3/4 ; for RX ISR (right audio) TX_BUFF_BASE equ * TX_data_1_2 ds 1 ; data time slot 1/2 ; for TX ISR (left audio) TX_data_3_4 ds 1 ; data time slot 3/4 ; for TX ISR (right audio) RX_PTR ds 1 ; Pointer for rx buffer TX_PTR ds 1 ; Pointer for tx buffer CTRL_WD_12 equ MIN_LEFT_ATTN+MIN_RIGHT_ATTN+LIN2+RIN2 CTRL_WD_34 equ MIN_LEFT_GAIN+MIN_RIGHT_GAIN org START main movep ori movec move move move jsr p:$100

#$040006,x:M_PCTL #3,mr #0,sp #0,omr #$40,r7 #-1,m7 ada_init

;PLL 7 X 12.288 = 86.016MHz ;mask interrupts ;clear hardware stack pointer ;operating mode 0 ;initialize stack pointer ;linear addressing ;initialize codec PDS: Introduccin con teora y prctica o a

G. Miramontes, ISBN 968-5923-15-9

142
; Initialize Filter Parameters move #statesw1left,r1 move #statesw2left,r3 move #coefs,r4 move #5*nsec-1,m4 clr a rep move rep move move move rep move rep move loop jset jclr clr a clr b move move jsr jsr jsr jsr jsr move move jmp

5.7. DESCRIPCION DE FDI

;point to filter state1 ;point to filter state2 ;addressing modulo 5*nsec ;initialize internal ;state storage

#nsec a,x:(r3)+ #nsec a,x:(r1)+ #statesw1right,r1 ;point to filter state1 #statesw2right,r3 ;point to filter state2 #nsec a,x:(r3)+ #nsec a,x:(r1)+ #3,x:M_SSISR0,* #3,x:M_SSISR0,* ;wait for rx frame sync ;wait for rx frame sync

x:RX_BUFF_BASE,a ;receive left x:RX_BUFF_BASE+1,b ;receive right save_left save_right process_stereo get_left_In_a get_right_In_b a,x:TX_BUFF_BASE ;transmit left b,x:TX_BUFF_BASE+1 ;transmit right loop ; used to include codec ; initialization routines

include ada_init.asm

Como puede observarse, dentro del lazo (loop) se hace el llamado a varias subrutinas: process_stereo, la cual llama a left_ch y a save_left, y luego a right_ch y save_right. A continuacin se muestra la subrutina o process_stereo en la cual se carga en dos ocasiones al apuntador r4 con la direccin #coeffs ya que la operacin de ltrado se aplica primero al canal o o izquierdo y despus al canal derecho: e
process_stereo jsr move move get_left_In_a #coefs,r4 #statesw1left,r1 PDS: Introduccin con teora y prctica o a

G. Miramontes, ISBN 968-5923-15-9

5.7. DESCRIPCION DE FDI


move jsr jsr jsr move move move jsr jsr rts #statesw2left,r3 left_ch save_left get_right_In_b #coefs,r4 #statesw1right,r1 #statesw2right,r3 right_ch save_right

143

El las subrutinas left_ch y right_ch se hace el llamado a la rutina de ltrado, es decir, en estas subrutinas se preparan los apuntadores y los registros apropiados para el ltro. Note que cada subrutina termina con la instruccin rts (return from subroutine). En el siguiente listado se muestran o tambin las subrutinas save_left, save_right, entre otras: e
left_ch ori move move asr jsr move andi rts right_ch ori move asr move jsr #$08,mr a,y1 x:(r1),a a filtro y1,a #$f7,mr ; ;set scaling mode ;load left signal y:(r4)+,y0 ; Call cascade biquad routine. ;disable scaling mode?

#$08,mr ;set scaling mode x:(r1),a y:(r4)+,y0 a b,y1 ;load left signal filtro ; Call cascade biquad routine.

move y1,b andi #$f7,mr ;disable scaling mode? rts save_right move #tempr,r1 nop move b,x:(r1) ;save temporally right channel rts save_left move #templ,r1 nop move a,x:(r1) ;save temporally left channel rts get_left_In_a G. Miramontes, ISBN 968-5923-15-9 PDS: Introduccin con teora y prctica o a

144
move #templ,r1 nop move x:(r1),a rts get_right_In_b move #tempr,r1 nop move x:(r1),b rts

BIBLIOGRAF IA

;get temporally right channel

;get temporally right channel

Finalmente se muestra el cdigo que realiza la operacin de ltrado ino o cluyendo, en el campo de los comentarios, una breve descripcin del proceso: o
#nsec,_end_filter y0,y1,a x:(r3),b y:(r4)+,y0 ;a=x(n)*bi0/2+Vi/2, ;b=Ui,y0=bi1/2 asr b a,x0 ;b=Ui/2,x0=y(n) mac y0,y1,b y:(r4)+,y0 ;b=x(n)*bi1/2+Ui/2, ;y0=ai1/2 macr x0,y0,b y:(r4)+,y0 ;b=b+y(n)*ai1/2, ;y0=bi2/2 mpy y0,y1,b b,x:(r1)+ y:(r4)+,y0 ;b=x(n)*bi2/2,save ;Vi,y0=ai2 macr x0,y0,b x:(r1),a a,y1 ;b=b+y(n)*ai2/2, ;a=next iter wi1, asr a b,x:(r3)+ y:(r4)+,y0 ;y1=output of ;section i ;a=next iter wi1,save ;wi2,y0=next iter bi0 _end_filter rts ;Return from ;filter routine. filtro do macr

Para aplicar el ltro en tiempo real es necesario cargarlo al mdulo que o contiene al procesador de seales haciendo uso del programa de comunin cacin con l. Para esto se tiene la opcin Abrir Debugger con la cual se o e o llama al programa EVM56kw (o EVM30xW) de Domain Technologies, cuya ventana aparece en la gura 5.20.

Bibliograf a
[1] Antoniou, A., Digital Filters Analysis and Design, McGraw-Hill, 1979. [2] El-Sharkawy, M., Digital Signal Processing Applications with the Motorolas DSP56002 Processor, Prentice Hall PTR, 1996. [3] Gold, B., Rader, C. M., Digital Processing of Signals, McGraw-Hill, 1969.
G. Miramontes, ISBN 968-5923-15-9 PDS: Introduccin con teora y prctica o a

BIBLIOGRAF IA

145

Figura 5.20: Ventana de la aplicacin EVM56kw. o [4] Hamming, R. W., Digital Filters, Prentice-Hall, 1977. [5] Jackson, L. B., Digital Filters and Signal Processing, 2nd Ed., Kluwer,1992. [6] Mitra, S. K., Digital Signal Processing: a computer based approach, McGraw-Hill, 1998. [7] Freescale Semiconductor, Inc., DSP56000/56001 Digital Signal Processor Users Manual, DSP56000UM/AD Rev 2. Motorola Inc. 1990. [8] Freescale Semiconductor Inc., DSP56002 Digital Signal Processor Users Manual, DSP56002UM/AD Rev 1. Motorola Inc. 1993. [9] Stanley, W. D., Digital Signal Processing, Reston Publishing Co., 1975.

Problemas
Problema 5.1 Un ltro Butterworth analgico normalizado de primer oro den tiene una funcin de transferencia o H(s) = 1 s+1

a) Aplique la transformacin bilineal para obtener H(z). o b) Cul es la frecuencia de corte de H(z)? a c) Usando la H(z) obtenida en a), aplique una transformacin digital-ao digital para obtener un ltro digital Butterworth de primer order normalizado. Problema 5.2 Una funcin de transferencia digital se puede obtener aplio cando la transformacin o s
G. Miramontes, ISBN 968-5923-15-9

1 z 1 , T
PDS: Introduccin con teora y prctica o a

146 o equivalentemente z= 1 . 1 sT

BIBLIOGRAF IA

Demuestre que el eje j del plano-s se transforma a un c rculo de radio 1/2 en el plano-z, como se muestra en la gura 5.2. Problema 5.3 Trabajando slo en el dominio digital, encuentre el orden y o muestre los pasos necesarios para obtener la funcin de transferencia H(z) a o partir de las siguientes especicaciones: repuesta en frecuencia mximamente a plana con -3 dB a una frecuencia de corte de 15 rad/s, y al menos 25 dB de atenuacin a frecuencias mayores que 30 rad/s. o Problema 5.4 Encuentre H(z), aplicando la transformacin bilineal, si las o especicaciones son las siguientes: frecuencia de corte de 100 Hz con atenuacin de 3 dB, frecuencia de rechazo de 300 Hz con al menos 25 dB de o atenuacin y una frecuencia de muestreo de 1000 Hz. o Problema 5.5 Disee un ltro digital por el mtodo de la transformada n e bilineal que cumpla con las especicaciones dadas en la gura 5.21. -3 dB
-

-20 dB1 rad/s 10 rad/s 100 rad/s 1000 rad/s

Figura 5.21: Respuesta deseada del ltro para el problema 5.5. Problema 5.6 Disee un ltro digital Chebyshev tipo 1, empleando la n transformacin bilineal, de modo que cumpla con -3 dB a 20 Hz, y -30 o dB a -120 Hz. Proponga la Fs adecuada. Problema 5.7 Disee un ltro digital Butterworth, empleando la transforn macin bilineal, de modo que cumpla con -3 dB a 20 Hz, y -30 dB a 120 Hz. o Proponga la Fs adecuada. Problema 5.8 Se tiene un ltro analgico Butterworth normalizado de seo gundo orden, es decir, Ha (s) = 1 . s2 + 2s + 1
PDS: Introduccin con teora y prctica o a

G. Miramontes, ISBN 968-5923-15-9

BIBLIOGRAF IA

147

Realizar las transformaciones necesarias para obtener un ltro digital que cumpla con la especicacin de una frecuencia de corte de 100 Hz. Suponga o una Fs=1000. Problema 5.9 Disee un ltro digital pasa-bajas Chebyshev tipo 1, por la n transformacin bilineal, con las siguientes especicaciones: o a) Frecuencia de corte de 1000 Hz, con -2 dB de rizo. b) Frecuencia de rechazo de 5kHz con -30 dB de atenuacin. o c) Suponga Fs=15 kHz. Problema 5.10 Partiendo de un ltro Butterworth digital de primer orden normalizado, obtenga un ltro Butterworth digital con frecuencia de corte de 100 Hz. Suponga Fs = 1000 Hz. Problema 5.11 La funcin de transferencia de un ltro digital Butterworth o normalizado est dada por a H(z) = 0.353295(1 + z 1 ) . 1 0.293408z 1

Aplique las transformaciones necesarias para obtener una nueva funcin de o transferencia H (z) que tenga una frecuencia de corte =2 rad/s con una respuesta pasa-bajas. Problema 5.12 Se tiene un ltro analgico Butterworth normalizado de o primer orden, es decir, Ha (s) = 1 s+1

Su respuesta al impulso es muestreada con una frecuencia de muestreo sucientemente alta para evitar el traslape, es decir F s =100 Hz. Obtenga H(z) por el mtodo de la invariancia al impulso (sin correccin). e o NOTA: h[n] = T ha (nT ).

G. Miramontes, ISBN 968-5923-15-9

PDS: Introduccin con teora y prctica o a

148

BIBLIOGRAF IA

G. Miramontes, ISBN 968-5923-15-9

PDS: Introduccin con teora y prctica o a

También podría gustarte