Documentos de Académico
Documentos de Profesional
Documentos de Cultura
5.1.
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)
(5.2)
(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
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)
-
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)] =
(5.7)
donde
(k)
{y[n]} =
(1)
(k1)
{y[n]}}.
(5.8)
As podemos escribir ,
N M
pk
k=0
(k)
{ya (nT )} =
qk
k=0
(k)
(5.9)
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 (z)
(1 z 1 ) T
(5.11)
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)
(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
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 =
(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)
y(t) =
0
x( )h(t )d,
(5.20)
x( )h(t1 )d,
(5.21)
123
t2
x( )h(t2 )d,
t2
(5.22)
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
plano-z = 0+
x I
= 0
5.2.1.
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
125
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
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
126
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.
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.
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)
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 1
k+1 k+1 k1 z 2 2k z 1 +1
z 2 2k z 1 + k1
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 =
(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
z1 z+1
0.546302 + 0.546302
PDS: Introduccin con teora y prctica o a
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.
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)
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)
129
x(n) z 1 z 1
66
y(n) a1 a2 z 1 z 1
b1 b2
- -
z 1
bM
-
aN
z 1
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)
bk z k W (z)
(5.45)
w(n) = x(n) y
M
k=1
ak w(n k)
(5.46)
y(n) =
k=0
bk w(n k).
(5.47)
130
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
-
x(n) b0
6
y(n)
6 -
a1
z 1
b1
a2
z 1
b2
-
132
5.4.3.
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
(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.
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
(5.52)
y(n) = Cx(n) +
i=1
yi (n),
(5.53)
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.
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
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.
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]
(5.58)
135
z 1 -a2 b2
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
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
_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
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
5.7.1.
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
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
139
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
;* 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
141
;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
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
;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
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
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
-
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
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 ).
148
BIBLIOGRAF IA