Post on 06-Jul-2018
8/17/2019 capitulo5 filtros digitales FIR IIR
1/33
5. FILTROS DIGITALES
Los filtros digitales son sistemas son usados para modificar el espectro de una señal,
mediante el uso de hardware digital como bloque funcional básico (un DSP o un FPGA ,
por ejemplo). Sus características los hacen apropiados un amplio campo de aplicaciones,
entre las que se encuentra compresión de datos, procesamiento de señales biomédicas,
procesamiento digital de audio, procesamiento de voz o procesamiento de imágenes. Seutilizan, al igual que los filtros análogos, para acondicionar señales según características
específicas, extraer información de ellas o separar dos o más señales previamente
combinadas. Consisten fundamentalmente en un algoritmo mediante el cual una señal
digital o secuencia numérica denominada “entrada” se transforma en una segunda
secuencia de números denominada señal digital de salida.
Los filtros digitales se caracterizan, en términos generales, por ser sistemas predecibles ,
flexibles, simulables, consistentes y precisos. Por una parte, es posible cambiar sus
especificaciones mediante la reprogramación, sin la adición de componentes discretos
como capacitores, resistores o bobinas (normalmente con un tamaño considerable y con
variaciones en el funcionamiento dependientes de la temperatura o la humedad). De otro
lado, su carácter digital permite calcular y simular su repuesta usando procesadores de
uso general, y también implementar topologías no realizables mediante el uso de
componentes físicos convencionales. En síntesis, estos sistemas incorporan las ventajas
propias de los procesadores digitales, al filtraje se señales, si se quiere en tiempo real.
A pesar de sus indiscutibles ventajas, los filtros digitales tienen una limitación inherente,
que consiste en la imposibilidad de cumplir con los requerimientos del criterio de Nyquist
de un ancho de banda estrictamente limitado previo al procesamiento digital de datos
muestreados (ya sea un conversor A/D o un filtro basado en DSP). Se hace entonces
8/17/2019 capitulo5 filtros digitales FIR IIR
2/33
necesario preceder el bloque de procesamiento digital de un filtro pasabanda análogo,
como una parte obligatoria del sistema para prevenir el aliasing, que aparece cuando el
ancho de banda de la señal de entrada es mayor que la mitad de la frecuencia de muestreo.
Esto se puede visualizar claramente en la sección “ “Functional Block Diagram” delmanual SLAS014 de la interfaz de circuito análoga [1] donde se observa un bloque análogo
de prefiltrado que puede ser programado mediante un valor determinado en el registro de
control del AIC. Por esta razón, los filtros digitales no son siempre es la mejor solución. [2]
Al momento de escoger los filtros que formarán parte de una determinada aplicación, es
necesario considerar aspectos como el costo y utilización de recursos del sistema
(conversión, carga en el procesador, memoria, inicialización y consumo de potencia)
propios de una implementación digital y compararlos con su contraparte análoga. Esto se
justifica, ya que en la actualidad se dispone de filtros análogos integrados dedicados y
matched op amps de alto desempeño, que permiten realizaciones efectivas de filtros activos,
haciendo atractivo el empleo de diseños análogos en algunas aplicaciones. El problema de
ingeniería se resuelve una vez el diseño análogo cuente con componentes de bajo ruido.
El diseño de filtros digitales normalmente involucra una etapa de aproximación, en la que
se genera una función de transferencia que satisface las especificaciones de la aplicación, y
en donde normalmente se estudian respuestas tanto en el dominio de la frecuencia como
del tiempo. Luego se lleva a cabo la realización, en la que la función de transferencia se
expresa en términos de una topología o redes de filtros, según las características del
problema y la disponibilidad de recursos en el procesador. Los dos pasos anteriores
parten de la base de un sistema de precisión infinita, y es por eso que se debe tener una
etapa de implementación, relacionada con el hardware disponible y las rutinas de
programación del procesador seleccionado. Este, por tener una precisión finita, obliga aldiseñador a estudiar los efectos de los errores matemáticos en la respuesta del filtro. En lo
referente a este trabajo de grado, las etapas de aproximación y realización se ejecutan por
medio de MATLAB y la etapa de implementación se fundamenta en las herramientas de
desarrollo del DSK.
8/17/2019 capitulo5 filtros digitales FIR IIR
3/33
Una amplia variedad de filtros digitales es descrita por medio de una ecuación de
diferencias lineal de coeficientes constantes, que relaciona la secuencia de entrada del filtro
x(n) y la secuencia de salida del mismo y(n):
∑ ∑= =
−+−= N
k
M
k k k k n xbk n yan y
0 0
)()()( ( 5-1)
Estos sistemas pueden ser representados por su secuencia de respuesta al impulso h(k)
donde k=0,1,2,.., y la señal de salida se obtiene a partir de operaciones de suma y
convolución de dicha secuencia con la señal digital de entrada. En términos de su
repuesta al impulso los filtros digitales se clasifican de dos formas: FIR ( Finite Impulse
Response) o filtros de respuesta finita al impulso; e IIR ( Infinite Impulse Response) o filtros de
respuesta infinita al impulso, que deben su comportamiento a la existencia de lazos de
realimentación en su estructura. Este será el tema de estudio de las siguientes secciones.
5.1. FILTROS FIR
5.1.1. CONCEPTOS BÁSICOS
El modelo matemático de los filtros FIR también se fundamenta la ecuación de diferencias
(5-1) , pero con la particularidad de que todos los coeficientes a k son iguales a cero. Se
tiene entonces que la ecuación que los describe es función del conjunto de coeficientes bk y
de la secuencia de entrada x(n).
∑=
−= M
k k k n xbn y
0
)()( , ( 5-2)
donde M+1 corresponde a la longitud del filtro. Este sistema considera sólo las ultimas
M+1 muestras de la señal de entrada y las pondera mediante los coeficientes bk . A este
sistema se le denomina FIR, ya que su respuesta al impulso unitario (dada por los
coeficientes bk ) es finita.
8/17/2019 capitulo5 filtros digitales FIR IIR
4/33
Su diseño requiere la selección de la secuencia que mejor representa la respuesta a
impulso de un filtro ideal. Los filtros FIR son siempre estables y son capaces de tener una
respuesta lineal en fase. Frente a los filtros IIR presentan la desventaja de requerir un
orden mucho mayor.
La salida del filtro es una suma finita de la entrada presente y las M entradas previas al
filtro. En los sistemas lineales se tiene que la salida y[n] puede expresarse como la
convolución de la señal de entrada con la función de respuesta al impulso del filtro.
∑=
−∗= M
k
k n xk hn y0
)()()( ( 5-3)
Comparando esta última ecuación con (5-2) se tiene que
)(k hbk = ( 5-4)
y por lo tanto los coeficientes del filtro son equivalentes a la respuesta al impulso del filtro.
Al aplicar un impulso a la entrada del sistema, se obtiene a la salida una respuesta de
longitud limitada.
Cuando se describe un sistema causal con respuesta finita al impulso, se usannormalmente estructuras no-recursivas. En tales casos la función del sistema tiene la
forma
∑−
=
−=1
0
)()( N
n
n z nh z H ( 5-5)
donde se tiene que :
∑
−
=
−==1
0)(
)(
)(
N
n
n
n z b z X
z Y
z H ( 5-6)
siendo x(n) la entrada, y(n) la salida h(n) la función de respuesta al impulso y X(z) , Y(z) y
H(z) sus respectivas transformadas Z. De (5-5) se tiene que H(z) es un polinomio de orden
N-1 , que tiene polos en z=0 y N-1 ceros que pueden estar en cualquier parte del plano z [3].
Esta ecuación puede ser representada mediante la estructura de la figura siguiente y es
8/17/2019 capitulo5 filtros digitales FIR IIR
5/33
conocida como Forma Directa (los coeficientes del filtro se pueden leer directamente de la
ecuación de diferencias). Las ramas marcadas con z -1 corresponden a un retraso de un
periodo de muestreo en la ecuación (5-3) y a una multiplicación por z -1 en (5-4).
En la sección 4.5 de [3] se discuten arquitecturas alternativas, al igual que consideraciones
de linealidad de fase y simetría. De momento basta con aclarar que la respuesta al
impulso de los sistemas FIR con fase lineal presentan la característica :
)1()( n N hnh −−= ( 5-7)
Figura 5-1. Forma Directa de un Sistema Causal y con Respuesta Finita al Impulso.
5.1.2. DISEÑO DE FILTROS FIR CON MATLAB
Este proceso corresponde a la etapa de aproximación descrita previamente en la
introducción de este capítulo. Los pasos que normalmente se sigue son [4]:
• Escoger una respuesta ideal, normalmente en el dominio de la frecuencia.
• Escoger un tipo particular de filtro.
• Escoger un criterio de medida para valorar la aproximación.
• Definir un método para seleccionar la mejor aproximación según el criterio de
aproximación.
Estos pasos son repetidos asta encontrar unas especificaciones de filtro que se ajusten alproblema inicial. Es posible que en esta etapa del diseño se quiera redefinir la respuesta
ideal, el tipo de filtro o el criterio de medida. De cualquier manera, MATLAB ofrece un
conjunto de rutinas y funciones que permiten agilizar estos pasos, y eso es justamente lo
que se busca mostrar en este capítulo.
8/17/2019 capitulo5 filtros digitales FIR IIR
6/33
5.1.2.1. FIR1: Diseño de filtros FIR mediante el método de ventanas.
El script labfir1.m ofrece una rutina interactiva para el diseño de filtros FIR pasabajo ylos pasabanda. Los argumentos de esta función son fundamentalmente el orden del filtro N
y la frecuencia normalizada de corte Wn, definida con en criterio 0
8/17/2019 capitulo5 filtros digitales FIR IIR
7/33
exactamente igual, razón por la cual sólo se discute en esta sección el significado de los
vectores F y M. Su estructura general es :
» B=fir2(N,F,M,window);
En el vector F se especifican las frecuencias “significativas” dentro del filtro, es decir,aquellas que corresponden a un punto de corte o que simplemente tienen alguna
importancia en el diseño que se busca implementar. Se escriben tambien como fracciones
de la frecuencia de Nyquist (f s/2) y por tanto sus valores responden a la
condición 0=f(1)
8/17/2019 capitulo5 filtros digitales FIR IIR
8/33
tamaño que F que indica la magnitud deseada para cada banda de frecuencias. La
respuesta deseada es la línea que conecta los puntos (F(k),M(k)) y (F(k+1),M(k+1)) para k
impar. Las bandas de frecuencia entre F(k+1) y F(k+2) para k impar son tratadas por firls
como bandas de transición o de “no importa”.
También existe un argumento opcional, el vector W cuyo tamaño es la mitad de F. Los
elementos de W asignan un factor de error para cada una de las bandas especificadas en F.
B=FIRLS(N,F,M,'Hilbert'), FIRLS(N,F,M,W,'Hilbert'), B=FIRLS(N,F,M,'differentiator') y
B=FIRLS(N,F,M,W,'differentiator') quedan para ser estudiados por el lector.
5.1.2.4. REMEZORD : Estimador de orden para FIR.
Se usa para le especificación de parámetros de filtros pasabajo, pasaalto, pasabanda,
multibanda. Los argumentos de entrada son el orden del filtro dos vectores F es un vector
que contiene las frecuencias de corte y está definido en Hertz ; su magnitud es el doble del
vector M más dos y por lo tanto siempre es par. M contiene la magnitud para cada banda.
DEV es un vector que contiene el valor de ripple máxmio permitido para cada banda. Fs
es la frecuencia de muestreo del sistema. La instrucción se escribe así:» [N,Fo,Mo,W] = REMEZORD(F,M,DEV,Fs)
Los valores calculados son el orden N aproximado del filtro, límites de las bandas en
frecuencia normalizada Fo, magnitudes de cada banda Mo, y el vector de error permitido
para cada banda. y corresponden a la mejor aproximación a la respuesta en frecuencia, de
acuerdo con el criterio minimax. Estos valores, al ser incluidos en la instrucción REMEZ,
generan los coeficientes de un filtro FIR que se aproxima a la respuesta deseada en
frecuencia, descrita por (F,M). Es necesario tener en cuenta dos aspectos relacionados con
esta función. El orden es normalmente menor al valor de orden correcto para implementar
un filtro específico. En caso de no tener una respuesta adecuada con el valor N generado
pro remez se recomienda implementar un filtro de orden N= N+1 o N+2.
8/17/2019 capitulo5 filtros digitales FIR IIR
9/33
5.1.2.5. REMEZ: Diseño de Filtros FIR Óptimos Equirripple (Parks-McClellan)
Los argumentos de entrada son el orden del filtro dos vectores F es un vector que contiene
las frecuencias normalizadas de corte, es decir, 0
8/17/2019 capitulo5 filtros digitales FIR IIR
10/33
Tomando como punto de partida la ecuación (5-3), se puede inferir que es necesario
disponer de un espacio en la memoria del DSP para almacenar los M+1 coeficientes del
filtro, que han sido obtenidos en la etapa de diseño del filtro y también un espacio para las
M+1 muestras de la señal que intervienen en cada ciclo (cada periodo de muestreo) en elcálculo de la misma ecuación. Teniendo en cuenta la forma en que se ejecutan
instrucciones de multiplicación y desplazamiento típicas de las operaciones de
convolución el los procesadores TMS320C50, se recomienda disponer los datos en
memoria de la siguiente forma [6]
Figura 5-2. Esquema de almacenamiento para el filtro FIR basado en el lazo.
Se puede implementar el algoritmo de los filtros FIR utilizando las instrucciones LTD y
MPY [6]. Por ejemplo :
LTD XLASTMPY H1
XLAST carga el registro temporal TREG0 con los contenidos de la dirección que
corresponde a XLAST. Suma el producto de la multiplicación anterior (PREG) al
acumulador, según el contenido de los bits PM. Finalmente desplaza el dato en XLAST a
la siguiente posición (superior) de memoria. MPY multiplica los contenidos de TREG0
(XLAST) con los contenidos de H1 [6].
8/17/2019 capitulo5 filtros digitales FIR IIR
11/33
Un segmento de código basado en este par de instrucciones requeriría bastantes líneas de
código (espacio en memoria de programa) y sería poco práctico para la implementación de
filtros de orden relativamente grande. El segmento de código encargado de filtrar sería elsiguiente (se supone que ya se inicializó el sistema y se han definido el vector de
interrupciones y todo lo que haga falta):
RECEIVE : LDP #XN ;CLRC INTM ; Captura de dato del AICLAMM DRR ; y almacenamiento en XNSACL XN ;
ZAP ; Cero ACC y PREG
LT XLAST ; Primera multiplicacionMPY H79 ; No desplazamiento
************************************************************* Se repite el mismo segmento para cada coeficiente, desde ** LT XNM78, MPY H78 hasta LT XNM2, MPY H2, es decir falta ** agregar 152 líneas de código ! ! ! *************************************************************
LTD XNM1 ; TREG = XNM1 = X(N-1)MPY H1 ; TREG*H1
LTD XN ; TREG = XNM = X(N)MPY H0 ; TREG*H0
APAC ; (PREG)+ACC
SACH OUTPUT,1 ;(ACC)->OUTPUT sin bit signoLACC OUTPUT ; OUTPUT->ACCSFLAND #0fffc ; Ultimos bits al AIC =0
SAMM DXR ; Escribir en reg de X-misionRETE ; Volver a esperar otra muestra
Figura 5-3. Rutina de programación de un filtro FIR usando LTD y MPY.
Una alternativa más eficiente utilizaría instrucciones de direccionamiento indirecto para
implementar la ecuación del filtro FIR, esto gracias a las mejoras en diseño y a la
8/17/2019 capitulo5 filtros digitales FIR IIR
12/33
disponibilidad de instrucciones más poderosas. El código tendría más o menos las
siguientes instrucciones :
MAR *,AR0 ; AR0 es el AR actual
RECEIVE : LDP #XN ;CLRC INTM ; Captura de dato en el AICLAMM DRR ; y almacenamiento en XNSACL XN ;
LAR AR0,#XLAST ; Definicion deLAR AR1,#H79 ; apuntadores
ZAP ; Cero ACC y PREG
LT *-,AR1 ; Primera multiplicacionMPY *-,AR0 ; No desplazamiento
LAZO : LTD *,AR1 ; AR0->TREG, 1->ARPMPY *-,AR0 ; Hxx*TREG , 0->ARPBANZ LAZO ; Si (AR0) no cero
: (AR0)-1 -> AR0
APAC ; (PREG)+ACC
SACH OUTPUT,1 ;LACC OUTPUT ;SFL
AND #0fffc ;
SAMM DXR ;RETE ; Volver y esperar otra muestra
Figura 5-4. Programación de un filtro FIR usando un “loop ” y direccionamiento indirecto.
Este segmento de código resulta mucho más compacto y controla por si mismo el
direccionamiento de los factores (coeficientes muestras de la señal), liberando al
programador de esa tarea. La convolución está a cargo nuevamente de las instrucciones
LTD y MPY. Se recomienda leer la instrucción BANZ y el direccionamiento indirecto. El
esquema de memoria utilizado en este caso es el siguiente :
8/17/2019 capitulo5 filtros digitales FIR IIR
13/33
Figura 5-5. Esquema de almacenamiento para el filtro FIR usando un lazo
La rutina que se escribe a continuación utiliza la instrucción MACD, encargada de y sumar
al acumulador el producto anterior (según la definición de los bits PM), multiplicar un
valor de memoria de datos (dma) por un valor de memoria de programa. En el caso deque la dma esté la RAM del DSP, copia el contenido del dma a la dirección inmediatamente
superior, lo que corresponde a una multiplicación por z-1 o un retraso en el tiempo.
MACD, en resumen, es una operación de tres-ciclos que realiza las funciones que se
presentan al ejecutar las instrucciones LTD y MPY, con la ventaja de que al estar incluida
en un ciclo de repetición (Ver RPT y RPTZ en (Manual de Usuario C50) se convierte en
una operación de multiplicación/acumulación de ciclo-único (User manual, página 3-9).
Cada “tab” del filtro se calcula en aproximadamente 50 ns. Este procedimiento es más
eficiente cuando el orden del filtro es mayor que tres.
RECEIVE: LDP #XN ; CLRC INTM ;Habilita int’s para debugger LAMM DRR ; Captura un dato del AIC y
8/17/2019 capitulo5 filtros digitales FIR IIR
14/33
SACL XN ; lo guarda en XN
LAR AR0,#XNLAST ;direccion(XLAST)->AR0
ZAP ;Cero ACC y PREG MAR *,AR0 ; AR0 es AR activo
RPT #80 ; repite el cálculo 81 veces MACD #h0,*- ; por toda la tabla de coef’s. APAC ; Acumula el ultimo producto
SACH OUTPUT,1 ;LACC OUTPUT ;SFL ; Preparar el resultadoAND #0fffc ;SAMM DXR ; Enviar por puerto de salidaRETE ; Volver y esperar otra muestra
Figura 5-6. Programación de un filtro FIR usando un lazo y direccionamiento indirecto.
Para que se pueda utilizar todo el potencial de la instrucción MACD se debe tener un
esquema de almacenamiento en memoria apropiado, descrito por la siguiente figura :
Figura 5-7. Esquema de almacenamiento para el filtro FIR basado en la instrucción MACD
8/17/2019 capitulo5 filtros digitales FIR IIR
15/33
Cabe notar que las rutinas descritas en estos segmentos de código están incluidas como
parte del servicio de la interrupción RECEIVE, que debe estar definida en algún lugar del
código correspondiente.
5.2. FILTROS IIR
5.2.1. CONCEPTOS BÁSICOS
Los conceptos utilizados en el estudio de los filtros FIR pueden ser aprovechados para los
filtros IIR. El punto de partida nuevamente es la ecuación de diferencias lineal de
coeficientes constantes (5-1)
∑ ∑= =
−+−= N
k
M
k k k k n xbk n yan y
0 0
)()()( ( 5-8)
Pero en este caso por lo menos uno de los coeficientes ak no es cero. Así, se tiene que la
transformada z de la respuesta al impulso unitario de la función de transferencia es :
∑
∑
=
−
=
−
−== N
k
k k
M
k
k k
z a
z b
z X z Y
z H
0
0
1)()(
)( ( 5-9)
siendo x(n) la entrada, y(n) la salida h(n) la función de respuesta al impulso y X(z) , Y(z) y
H(z) sus respectivas transformadas Z. La ecuación (5-9) puede ser implementada de
diferentes formas. Las más utilizadas y estudiadas son la Forma Directa, la Forma de
Cascada y la Forma Paralela. Su desarrollo se observa en la sección de implementación en
el DSK[3].
5.2.2. DISEÑO DE FILTROS IIR CON MATLAB
Existe una amplia variedad de funciones para calcular los coeficientes de un filtro IIR, por
medio de MATLAB. Se tienen herramientas que calculan los parámetros apropiados
según la aplicación y otras que usan esta información para calcular los coeficientes.
8/17/2019 capitulo5 filtros digitales FIR IIR
16/33
5.2.2.1. Funciones para determinar el orden de un filtro determinado.
Todas estas funciones están incorporadas en MATLAB. En el caso de quererse un filtroanálogo de cualquiera de estos tipos, se agrega el argumento ‘s’ como último argumento
(con todo y comillas). Tienen además la misma estructura y usan los mismos argumentos
de entrada.»[N, Wn] = función(Wp, Ws, Rp, Rs)
Las especificaciones de diseño son :
Wp : Frecuencia de pasabanda (Banda de paso normalizada 0
8/17/2019 capitulo5 filtros digitales FIR IIR
17/33
que almacenan el B y en A los N+1 coeficientes para la implementación de la función de
transferencia deseada. Si Wn = [W1 W2] con 0< W1
8/17/2019 capitulo5 filtros digitales FIR IIR
18/33
5.2.3.1. Forma Directa I y Forma Directa II
Corresponde a la representación de la ecuación (5-8) y se muestra en la siguiente figura. Se
denomina Forma Directa I por razones idénticas a la Forma Directa de los filtros FIR : los
coeficientes de las ramas de la red pueden obtenerse directamente de la ecuación de
diferencias y su diagrama de flujo se muestra en la siguiente figura :
Figura 5-8. Filtro IIR de Forma Directa
Se supone que M=N pero en caso de no existir tal igualdad, se hace igual a cero las
transmitancias correspondientes en las ramas en que sea necesario.
Esta arquitectura puede interpretarse como dos redes en cascada, una de ellas encargada
de representar los ceros del filtro y la otra sus polos.
En la Forma Directa I puede cambiarse el orden de las etapas sin alterar el funcionamiento
global del sistema, y esto se debe a que se trata de un sistema lineal invariante en el
tiempo. Este es el punto de partida para la Forma Directa II, ya que una vez cambiado el
orden de las etapas de ceros y polos, el diagrama de flujo correspondiente queda :
8/17/2019 capitulo5 filtros digitales FIR IIR
19/33
Figura 5-9. Filtro IIR, Forma Directa con Intercambio de las Redes de Ceros y Polos
Dado que las líneas de retraso comparten la misma entrada, puede dejarse sólo una de
ellas, llegando a las siguiente representación :
Figura 5-10. Filtro IIR en Forma Directa II
Esta topología requiere un menor número de ramas de retraso (por eso pertenece a las
redes canónicas), lo que significa algoritmos más eficientes al momento de programar el
filtro en términos de uso de memoria y modularidad. Un ejemplo de ello se tiene en la
siguiente figura, donde se muestra un filtro de Segundo Orden, sobre el cual se hace el
desarrollo del ejemplo de programación .
8/17/2019 capitulo5 filtros digitales FIR IIR
20/33
Figura 5-11. Filtro IIR Forma Directa de Segundo Orden
Las ecuaciones de diferencias que se utilizan en esta rutina son :
]2[]1[][][ 21 −+−+= nd and an xnd ( 5-10)
]2[]1[][][ 210 −+−+= nd bnd bnd bn y ( 5-11)
donde los d[n-k] corresponden a nodos de retraso según el valor de k y son productos
intermedios, derivados de la arquitectura de Forma Directa II. El almacenamiento en
memoria de cada uno de estos valores se realiza según la siguiente figura y es un casoparticular del almacenamiento para filtros de orden mayor. Obedece a la facilidad que
ofrece la instrucción LTD de sumar al acumulador el producto previo y desplazar el
operando una posición de memoria. Obsérvese que los valores DN sólo se sobreesciben
cuando se ha calculado el producto con su coeficiente B correspondiente.
Figura 5-12. Almacenamiento de Nodos de Retraso. Filtro IIR de Segundo Orden
8/17/2019 capitulo5 filtros digitales FIR IIR
21/33
El código que implementa este algoritmo puede usar las operaciones LTD y MPY. Para
órdenes mayores que tres, resulta ventajoso implementar la rutina con MCAD.
RECEIVE : LDP #XN ;CLRC INTM ; Captura de dato del AICLAMM DRR ; y almacenamiento en XNSACL XN ;
LT DNM1MPY A2 ; A1*DNM1 -> PREG
LTA DNM2 ; DNM2->TREG0 A1*DNM1->ACC
MPY A2 ; A2*DNM2 -> PREG
APAC ; A2*DNM2 + A1*DNM1 -> ACC
SACH DN,1 ; DN= A2*DNM2 + A1*DNM1
ZAC ; Cero ACC
MPY B2 ; B2*DNM2 -> PREG
LTD DNM1 ; Producto, Suma y DNM1->DNM2MPY B1 ; A2*DNM2 -> PREG
LTD DN ; Producto, Suma y DN->DNM1MPY B0 ; B0*DN -> PREG
APAC ; B0*DN +B1*DNM1 +B1*DNM1->ACC
SACH OUTPUT,1 ;(ACC)->OUTPUT sin bit signoLACC OUTPUT ; OUTPUT->ACCSFLAND #0fffc ; Ultimos bits al AIC =0
SAMM DXR ; Escribir en reg de X-mision
RETE ; Volver a esperar otra muestra
Figura 5-13. IIR Forma Directa II implementada con LTD (LTA) y MPY
5.2.3.2. Forma Cascada
Nuevamente se parte de la ecuación de respuesta al impulso de los filtros IIR, cuya
transformada z se escribe de la forma :
8/17/2019 capitulo5 filtros digitales FIR IIR
22/33
∑
∑
=
−
=
−
−==
N
k
k k
M
k
k k
z a
z b
z X z Y
z H
0
0
1)()(
)( .( 5-12)
Esta ecuación puede reescribirse en términos de una productoria de factores cuadráticos,
según la siguiente ecuación :
∏=
−−
−−
−−
++==
2/
12
21
1
22
110
1)()(
)( N
k k k
k k k
z z
z z k
z X z Y
z H αα
βββ( 5-13)
así, la ecuación del filtro IIR es realizable como una sucesión de etapas en cascada. Setiene a continuación un ejemplo de código assembler para esta topología. Se recomienda
ver la figura 18 para seguir el desarrollo de la rutina:
RECEIVE : LDP #XN ;CLRC INTM ; Captura de dato del AICLAMM DRR ; y almacenamiento en XNSACL XN ;
Inicio de la primera sección de cascada
LT D1NM1MPY A11 ; A11*D1NM1 -> PREG
LTA D1NM2 ; ACC + PREG -> ACCMPY A21 ; A21*D1NM2 -> PREG
APAC ; D1N= A2*DNM2 + A1*DNM1
SACH D1N,1 ;
ZAC ; Cero ACC
MPY B21 ; B21*D1NM2 -> PREG
LTD D1NM1 ; ACC + PREG -> ACCMPY B11 ; B11*D1NM1 -> PREG
LTD D1N ; ACC + PREG -> ACCMPY B01 ; B11*D1NM1 -> PREG
* Fin de la primera etapa de la cascada. Inicio de la segunda
LTA D2NM1 ; PREG+ ACC ->ACC D2NM1->TREG0
8/17/2019 capitulo5 filtros digitales FIR IIR
23/33
MPY A12 ; A12*D2NM1 -> PREG
LTA D2NM2 ; ACC + PREG -> ACCMPY A22 ; A22*D2NM2 -> PREG
APAC ;
SACH D2N,1 ; D1N= A2*DNM2 + A1*DNM1
ZAC ; Cero ACC
MPY B22 ; B22*D2NM2 -> PREG
LTD D2NM1 ; ACC + PREG -> ACCMPY B12 ; B12*D2NM1 -> PREG
LTD D2N ; ACC + PREG -> ACCMPY B02 ; B02*D2N -> PREG
APAC ; D2N= B02*D2N+ B12*D2NM1+ B22*D2NM2
* Fin de la segunda etapa de la cascada.
SACH OUTPUT,1 ;(ACC)->OUTPUT sin bit signoLACC OUTPUT ; OUTPUT->ACCSFLAND #0fffc ; Ultimos bits al AIC =0
SAMM DXR ; Escribir en reg de X-misionRETE ; Volver a esperar otra muestra
Figura 5-14. Código para filtro IIR de Cuarto Orden en Cascada
En la siguiente figura se muestra el caso de un filtro IIR de cuarto orden implementado en
arquitectura de cascada, donde cada subsección representa uno de los términos incluidos
en el producto.
Figura 5-15. Filtro IIR de Cuarto Orden en Forma de Cascada
8/17/2019 capitulo5 filtros digitales FIR IIR
24/33
Se observa que cada sección del filtro corresponde a la Forma Directa de Segundo Orden,
según la topología descrita anteriormente. Esta configuración puede resultar ventajosa en
términos de estabilidad del sistema, en caso de que se requiera un orden de filtro muyelevado, caso en el que esta condición que es difícil de lograr al ser implementada en
alguna de las formas descritas anteriormente por los múltiples retrasos y lazos de
realimentación.
5.2.3.3. Forma Paralela
Otra forma de representación de la ecuación de transferencia de un filtro IIR en (5-9) es
∑∑=
−−
−−
=
−
−−
+==
2/
12
21
1
110
0 1)()(
)( N
k k k
k k N M
k
k k z z
z k z C
z X z Y
z H αα
γ γ ( 5-14)
en la que el término C kz-k se hace cero cuando M PREG
LTD D1NM1MPY A11 ; A11*D1NM1 -> PREG
APAC ; D1N= A21*D1NM2 + A11*D1NM1
SACH D1N,1 ;
ZAC ; Cero ACC
MPY GAMMA11 ; GAMMA11*D1NM1 -> PREG
LTD D1N ; ACC + PREG -> ACCMPY GAMMA01 ; GAMMA01*D1N -> PREG
8/17/2019 capitulo5 filtros digitales FIR IIR
25/33
APAC ;
SACH P1,1 ; P1= GAMMA01*D1N+ GAMMA11*D1NM1
* Fin de la primera etapa en paralelo. Inicio de la segunda
LACC XN,15
LT D2NM2MPY A22 ; A22*D2NM2 -> PREG
LTD D2NM1MPY A12 ; A12*D2NM1 -> PREG
APAC ; D1N= A21*D1NM2 + A11*D1NM1
SACH D2N,1 ;
LACC P1,15 ;
MPY GAMMA12 ; GAMMA12*D2NM1 -> PREG
LTD D2N ; ACC + PREG -> ACCMPY GAMMA02 ; GAMMA02*D2N -> PREG
LTA CMPY XN ; XN*C -> PREG
APAC ;
* Fin de la segunda etapa en paralelo y del filtro.
SACH OUTPUT,1 ;(ACC)->OUTPUT sin bit signoLACC OUTPUT ; OUTPUT->ACCSFLAND #0fffc ; Ultimos bits al AIC =0
SAMM DXR ; Escribir en reg de X-misionRETE ; Volver a esperar otra muestra
Figura 5-16. Código para filtro IIR con secciones en paralelo
5.3. PRÁCTICA #5 (FILTROS FIR)
Es fundamental seguir una rutina de diseño-prueba-diseño para lograr un algoritmo que
satisfaga las condiciones de la aplicación. Por lo tanto, las partes que componen esta
sección deben ejecutarse repetidas veces en forma cíclica, hasta cumplir el objetivo.
8/17/2019 capitulo5 filtros digitales FIR IIR
26/33
5.3.1. OBJETIVOS
Conocer diferentes herramientas para el diseño de filtros y de procedimientos para valorarsu viabilidad como solución para una aplicación específica.
• Usar rutinas MATLAB para diseño de filtros tanto FIR como IIR.
Entender el uso del PC como herramienta para diseñar y programar sistemas .
• Conocer el uso del MATLAB, en particular sus funciones de diseño de filtros.
• Utilizar herramientas freeware (COOL96) para medir el funcionamiento de un sistema
de procesamiento digital.
• Ganar familiaridad con el uso de diferentes herramientas de software para poner a
punto el diseño de u determinado algoritmo.
Ejercitar diferentes rutinas de uso común en el desarrollo de aplicaciones DSP.
• Usar diferentes esquemas de direccionamiento para la implementación de diferentes
topologías de sistema digital.
• Editar rutinas en assembler, compilar, depurar y medir resultados de un experimento
específico de procesamiento digital de señales.• Ajustar la entrada y las variables internas del procesador para evitar situaciones de
overflow.
• Poner en práctica normas de seguridad para el trabajo en la estación de DSP.
5.3.2. IMPLEMENTACIÓN EN MATLAB
Relación entre la frecuencia de corte y respuesta al impulso de un filtro.• Abrir en un editor de texto la rutina coefir.m, útil para diseñar filtros FIR.
• Cambiar los valores de la variable Wn. Definirla como un solo valor (filtros pasabajos)
o como dos valores (filtros pasabanda), con el siguiente criterio : Pasabajos : Valores cercanos a 0, valores cercanos a 1, valores existentes cercanos a la mitad
de la frecuencia Nyquist. Pasabanda : Valores cercanos entre sí, valores lejanos entre si,
8/17/2019 capitulo5 filtros digitales FIR IIR
27/33
valores cercanos entre sí con centro en la mitad de la frecuencia Nyquist, valores
lejanos entre sí con centro en la mitad de la frecuencia Nyquist.
• Agregar los argumentos necesarios a la función fir1 para generar filtros pasaaltos y
atrapabanda. Reperir alguna de las observaciones anteriores.• Sacar conclusiones de las observaciones anteriores
Selección de diferentes ventanas• Calcular mediante la rutina filtros.m (basada en la función fir1 de MATLAB),
varios filtros con las mismas especificaciones de frecuencia y atenuación, pero
utilizando diferentes ventanas (Hanning, Bartlett, Kaiser, etc)
• En cada una de ellas estimar los parámetros Amplitud (magnitud) Relativa Pico de
Lóbulo Lateral y Amplitud (ancho de banda) de Lóbulo Principal.
5.3.3. IMPLEMENTACIÓN EN EL DSK
Para lograr un funcionamiento adecuado del DSP en aplicaciones de procesamiento en
tiempo real, se debe contar con instrucciones de alta velocidad y con un hardware que
tenga la misma característica. En el caso del ‘C50, incorporado en la tarjeta DSK, se tiene
un ciclo de instrucción de 50 ns. Este parámetro es fundamental para calcular el númerototal de ciclos de máquina que exige un algoritmo determinado y valorar su utilidad y
factibilidad, dados unos requerimientos específicos de frecuencia de muestreo.
Implementación de Filtros FIR usando Diferentes Ventanas• Editar una de las rutinas de inicialización del DSK provistas para unas condiciones de
trabajo específicas. (Frecuencias de conversión, Sincronía, Filtros de Preprocesamiento,
etc)
• Partiendo de los datos arrojados por el diseño en MATLAB con diferentes ventanas,
escribir un programa para implementar un filtro FIR en cada una de ellas.
• Hacer las mediciones de desempeño de cada filtro, excitando el sistema con la señal
chirpp.wav.
• Comparar la respuesta medida con la del diseño en MATLAB.
8/17/2019 capitulo5 filtros digitales FIR IIR
28/33
Ajuste del diseño• En caso de que los resultados no sean los esperados, intentar una variación del
prescalamiento de la salida del filtro.• Intentar un escalamiento en los coeficientes del filtro
• Repetir el paso anterior pero esta vez ejecute el programa paso a paso, poniendo
atención al contenido del acumulador (ACC), contador de programa(PC), diferentes
registros de estado. Usar la impresión de lazo.lst y establezca relaciones entre el
listado y el contenido de los registros del DSK.
Conteo del número de operaciones y estimación de su duración• Dependiendo del orden del filtro, su topología y las instrucciones utilizadas, hacer una
estimación del tiempo de ejecución de cada pasada del filtro.
• Comparar este criterio con la tasa de conversión del AIC .
• Establecer el orden máximo que podría tener dicho filtro para seguir operando entre el
límite de la frecuencia de muestreo.
5.3.4. OTROS
Exploración del freeware para análisis y síntesis de señales• En caso de no haberlo hecho, usar la herramienta Frequency Analysis del menú
Analyze de Syntrillium COOL96. Ubicar el cursor en cualquier instante de la señal desonido abierta y leer el contenido frecuencial en ese momento.
Estimación de la respuesta del filtro (cualitativa)Para escuchar el efecto de este programa, es necesario aplicar una señal de audio al DSK:
• Realizar un ciclo de ejecución/grabación simultáneos mediante COOL96, teniendo
como entrada al sistema la señal chirpp.wav .
• Establecer la respuesta de uno de los filtros.
Uso de señales “del mundo real”
8/17/2019 capitulo5 filtros digitales FIR IIR
29/33
• Una vez que se tenga el filtro adecuado, inyectar una señal de audio externa (salida de
un radio, por ejemplo).
• Notar el efecto del filtro sobre dicha señal.
• Volver a las etapas de diseño en MATLAB y de implementación en el DSK para variarel diseño.
5.3.5. TAREA
Filtros FIR en cascada• Diseñar dos filtros FIR, uno pasabajos y otro pasabaltos, cuyas frecuencias se solapen.
• Escribir un código en assembler en el que dichas etapas queden en cascada. (Ver rutina
para filtros IIR en cascada).
• Hacer una estimación de la salida utilizando MATLAB.
• Cargar el ejecutable en el DSP ‘C50 y repetir el proceso de diseño-prueba-diseño, hasta
que obtenga una respuesta apropiada
5.4. PRÁCTICA #6 (FILTROS IIR)
Es fundamental seguir una rutina de diseño-prueba-diseño para lograr un algoritmo que
satisfaga las condiciones de la aplicación. Por lo tanto, las partes que componen esta
sección deben ejecutarse repetidas veces en forma cíclica, hasta cumplir el objetivo.
5.4.1. OBJETIVOS
Conocer diferentes herramientas para el diseño de filtros y de procedimientos para valorar
su viabilidad como solución para una aplicación específica.• Usar rutinas MATLAB para diseño de filtros tanto FIR como IIR.
• Utilizar freeware (COOL96) para medir el funcionamiento de un sistema de
procesamiento digital.
• Poner en práctica normas de seguridad para el trabajo en la estación de DSP.
8/17/2019 capitulo5 filtros digitales FIR IIR
30/33
Entender el uso del PC como herramienta para diseñar y programar sistemas .
• Conocer el uso del MATLAB, en particular sus funciones de diseño de filtros.
• Integrar el uso de herramientas de freeware a la estación de tiempo real para DSP.
Ejercitar diferentes rutinas de uso común en el desarrollo de aplicaciones DSP.
• Usar diferentes esquemas de direccionamiento para la implementación de diferentes
topologías de sistema digital.
• Editar rutinas en assembler, compilar, depurar y medir resultados de un experimento
específico de procesamiento digital de señales.
• Ajustar la entrada y las variables internas del procesador para evitar situaciones de
overflow.
5.4.2. IMPLEMENTACIÓN EN MATLAB
Obtención de los coeficientes B y A de un filtro IIR.• Abrir en un editor de texto la rutina coefiir.m, útil para diseñar filtros IIR.
• Cambiar el la función de diseño y ver como cambia la respuesta para especificaciones
idénticas.• Adicionar los argumentos necesarios a cada función para generar filtros análogos.
Buscar una relación con su equivalente digital.
• Sacar conclusiones de las observaciones anteriores
Generación de señales con características apropiadas.• Por medio de la rutina chirp1.m generar una señal de barrido en frecuencia que se
adapte a las especificaciones de una aplicación en tiempo real. Escoger una banda de
frecuencias su generación.
Escalización de coeficientes.• Estudiar la representación numérica al interior del procesador ‘C50.
8/17/2019 capitulo5 filtros digitales FIR IIR
31/33
• Encontrar los factores de escalización apropiados para la definición de los coeficientes
en el DSP.
• Hacer el producto en MATLAB y, si es el caso, usar una hoja de cálculo para facilitar la
exportación de estos valores al código en assembler.
5.4.3. IMPLEMENTACIÓN EN EL DSK
Para lograr un funcionamiento adecuado del DSP en aplicaciones de procesamiento en
tiempo real, se debe contar con instrucciones de alta velocidad y con un hardware que
tenga la misma característica. En el caso del ‘C50, incorporado en la tarjeta DSK, se tiene
un ciclo de instrucción de 50 ns. Este parámetro es fundamental para calcular el número
total de ciclos de máquina que exige un algoritmo determinado y valorar su utilidad y
factibilidad, dados unos requerimientos específicos de frecuencia de muestreo.
Implementación de Filtros IIR en Diferentes Arquitecturas• Editar una de las rutinas de inicialización del DSK provistas para unas condiciones de
trabajo específicas. (Frecuencias de conversión, Sincronía, Filtros de Preprocesamiento,
etc)• Partiendo de los datos arrojados por el diseño en MATLAB y de los ejemplos de
código para diferentes topologías y, escribir un programa para implementar un filtro
IIR en cada una de ellas.
• Hacer las mediciones de desempeño de cada filtro, excitando el sistema con la señal
chirpp.wav.
• Comparar la respuesta medida con la del diseño en MATLAB.
Ajuste del diseño• En caso de que los resultados no sean los esperados, intentar una variación del
prescalamiento de la salida del filtro.
• Intentar un escalamiento en los coeficientes del filtro
8/17/2019 capitulo5 filtros digitales FIR IIR
32/33
Conteo del número de operaciones y estimación de su duración• Dependiendo del orden del filtro, su topología y las instrucciones utilizadas [7], hacer
una estimación del tiempo de ejecución de cada pasada del filtro.
• Comparar este criterio con la tasa de conversión del AIC .• Establecer el orden máximo que podría tener dicho filtro para seguir operando entre el
límite de la frecuencia de muestreo.
5.4.4. OTROS
Estimación de la respuesta del filtro (cualitativa)Para escuchar el efecto de este programa, es necesario aplicar una señal de audio al DSK:
• Realizar un ciclo de ejecución/grabación simultáneos mediante Syntrillium COOL96,
teniendo como entrada al sistema la señal chirpp.wav .
• Establecer la respuesta de uno de los filtros.
Uso de señales “del mundo real”• Una vez que se tenga el filtro adecuado, inyectar una señal de audio externa (salida de
un radio, por ejemplo).
• Notar el efecto del filtro sobre dicha señal.• Volver a las etapas de diseño en MATLAB y de implementación en el DSK para variar
el diseño.
5.4.5. TAREA
• Conseguir información relacionada con la estabilidad en filtros IIR. Establecer criterios
de eficiencia de cada topología consultada.
5.5. REFERENCIAS
[1] TEXAS INSTRUMENTS INC. TLC32040C, TLC32040I, TLC32041C, TLC32041IAnalog Interface Circuits (SLAS 014E). U.S.A : s.n., 1995.
8/17/2019 capitulo5 filtros digitales FIR IIR
33/33
[2] SCHWEBER, Bill. Analog filters: Even More Essential in the Digitized Wworld. En :EDN Magazine. ( April 24, 1997)
[3] OPPENHEIM Alan V. and SCHAFER, Ronald W. Digital Signal Processing.Englewood Cliffs, New Jersey: Prentice Hall, 1975. p 156-157.
[4] BURRUS, C. Sidney, et al. Computer-Based Exercises for Signal Processing : UsingMATLAB. Englewood Cliffs, New Jersey: Prentice Hall, 1994. p 247
[5] OPPENHEIM Alan V. and SCHAFER, Ronald W. Discrete-Time Signal Processing.Englewood Cliffs, New Jersey: Prentice Hall, 1989. p 464-486
[6] LOVRICH, Al and SIMAR junior, Ray. Implementation of FIR/IIR Filters with theTMS32010/TMS32020. En KUN SHAN LIN. Digital Signal Processing Applicationswith the TMS320 Family, V.1. Texas Instruments- Prentice-Hall, 1987. p.27-68.
[7] TEXAS INSTRUMENTS INC. TMS320C5x User’s Guide (SPRU056C). Owensville,Missouri. s.n.. 1997