Este documento describe los filtros digitales, incluyendo sus ventajas como sistemas predecibles, flexibles y precisos. Explica que los filtros digitales se caracterizan por modificar el espectro de una señal mediante algoritmos implementados en hardware digital como DSP o FPGA. También discute los tipos principales de filtros digitales, FIR e IIR, y cómo diseñar filtros FIR usando MATLAB.
Introducción.
2. Ejemplos de Sistemas basados en reglas
difusas.
1. Sistemas de control difuso.
2. Sistemas expertos difusos.
3. Minería de datos difusos.
3. Estructura básica de un sistema basado en
reglas difusas (SBRD) .
4. Tipos de sistemas basados en reglas difusas.
5. Arquitectura detallada.
1. Interfaz de Fuzzificación.
2. Base de Conocimiento.
1. Base de Datos.
2. Base de Reglas.
3. Motor de inferencia en un SBRD tipo Mamdani.
4. Interfaz de defuzzificación.
5. Motor de inferencia en un SBRD tipo TSK.
Documento realizado para la materia de Control Moderno y sus Aplicaciones de la Licenciatura en Ingeniería en Mecatrónica de la Benemérita Universidad Autónoma de Puebla en el periodo de Primavera 2015, con el cual se buscaba comprender el proceso de modelado de sistemas dinámicos utilizando la representación en variables de estado, comparar los resultados obtenidos el uso funciones de transferencia y representación en variables de estado, así como modelos no lineales y modelos lineales y finlmente representar dichos sistemas en un software computacional (Matlab) para su manipulación y análisis de comportamiento.
En el documento trata de los métodos de diseño de filtros digitales FIR que se utilizan comúnmente en el procesamiento digital de señales. Se caracterizan por tener una respuesta de impulso finita. Algunos métodos comunes, de Parks-McClellan, Logarítmico y Muestreo en frecuencia.
Introducción.
2. Ejemplos de Sistemas basados en reglas
difusas.
1. Sistemas de control difuso.
2. Sistemas expertos difusos.
3. Minería de datos difusos.
3. Estructura básica de un sistema basado en
reglas difusas (SBRD) .
4. Tipos de sistemas basados en reglas difusas.
5. Arquitectura detallada.
1. Interfaz de Fuzzificación.
2. Base de Conocimiento.
1. Base de Datos.
2. Base de Reglas.
3. Motor de inferencia en un SBRD tipo Mamdani.
4. Interfaz de defuzzificación.
5. Motor de inferencia en un SBRD tipo TSK.
Documento realizado para la materia de Control Moderno y sus Aplicaciones de la Licenciatura en Ingeniería en Mecatrónica de la Benemérita Universidad Autónoma de Puebla en el periodo de Primavera 2015, con el cual se buscaba comprender el proceso de modelado de sistemas dinámicos utilizando la representación en variables de estado, comparar los resultados obtenidos el uso funciones de transferencia y representación en variables de estado, así como modelos no lineales y modelos lineales y finlmente representar dichos sistemas en un software computacional (Matlab) para su manipulación y análisis de comportamiento.
En el documento trata de los métodos de diseño de filtros digitales FIR que se utilizan comúnmente en el procesamiento digital de señales. Se caracterizan por tener una respuesta de impulso finita. Algunos métodos comunes, de Parks-McClellan, Logarítmico y Muestreo en frecuencia.
DISEÑO Y ELECTRONICA ANALOGICA - FILTRO PASA BAJOS - LOW PASS FILTERFernando Marcos Marcos
En esta práctica se realizo diferentes el filtro pasa bajo, se realizaron los circuitos, y se efectuaron diferentes cálculos para ello, el fin de esto fue para ver cuál era el efecto del cambio de frecuencia en la señal de salida de cada circuito, por supuesto previamente se vieron algunas características importantes de los circuitos, como lo son la frecuencia de corte y su funcionamiento de manera teórica, claro, así fue para que de manera práctica se comprobaran.
Porfolio de diseños de Comedores de Carlotta Designpaulacoux1
calidad en el porfolio capturan la atención al detalle, la calidad de los materiales y la armonía de colores y texturas en cada diseño. El cuidadoso equilibrio entre muebles, iluminación y elementos decorativos se destaca en cada espacio, creando ambientes acogedores y sofisticados.
En resumen, la sección de porfolio de comedores de Carlotta Design es un reflejo del compromiso del equipo con la excelencia en el diseño de interiores, mostrando su habilidad para crear ambientes únicos y personalizados que sobresalen por su belleza y funcionalidad
El movimiento moderno en la arquitectura venezolana tuvo sus inicios a mediados del siglo XX, influenciado por la corriente internacional del modernismo. Aunque inicialmente fue resistido por la sociedad conservadora y los arquitectos tradicionalistas, poco a poco se fue abriendo camino y dejando una huella importante en el país.
Uno de los arquitectos más destacados de la época fue Carlos Raúl Villanueva, quien dejó un legado significativo en la arquitectura venezolana con obras como la Ciudad Universitaria de Caracas, considerada Patrimonio de la Humanidad por la UNESCO. Su enfoque en la integración de la arquitectura con el entorno natural y la creación de espacios que favorecen la interacción social, marcaron un punto de inflexión en la arquitectura venezolana.
Otro arquitecto importante en la evolución del movimiento moderno en Venezuela fue Tomás Sanabria, quien también abogó por la integración de la arquitectura con el paisaje y la creación de espacios abiertos y funcionales. Su obra más conocida es el Parque Central, un complejo urbanístico que se convirtió en un ícono de la modernidad en Caracas.
En la actualidad, el movimiento moderno sigue teniendo influencia en la arquitectura venezolana, aunque se ha visto enriquecido por nuevas corrientes y enfoques que buscan combinar la modernidad con la identidad cultural del país. Proyectos como el Centro Simón Bolívar, diseñado por el arquitecto Fruto Vivas, son ejemplos de cómo la arquitectura contemporánea en Venezuela sigue evolucionando y adaptándose a las necesidades actuales.
DIA DE LA BANDERA PERUANA EL 7 DE JUNIO DE 182062946377
Diseño del dia de la bandera. El 7 de junio se celebra en todo el Perú el Día de la Bandera, una fecha que conmemora el aniversario de la Batalla de Arica de 1880, un enfrentamiento histórico en el que las tropas peruanas se enfrentaron valientemente a las fuerzas chilenas durante la Guerra del Pacífico.
Porfolio livings creados por Carlotta Designpaulacoux1
La sección de porfolio de livings de Carlotta Design es una muestra de la excelencia y la creatividad en el diseño de interiores. Cada proyecto en el porfolio refleja la visión única y el estilo distintivo de Carlotta Design, mostrando la habilidad del equipo para transformar espacios en ambientes acogedores, elegantes y funcionales. Desde salas de estar modernas y contemporáneas hasta espacios más tradicionales y clásicos, la variedad de estilos y diseños en el porfolio demuestra la versatilidad y la capacidad del equipo para adaptarse a las necesidades y gustos de cada cliente.
Las fotografías de alta calidad en el porfolio capturan la atención al detalle, los materiales de alta calidad y la combinación de texturas y colores que hacen que cada sala de estar sea única y especial. Además, la sección de porfolio de livings de Carlotta Design destaca la integración de muebles y accesorios cuidadosamente seleccionados para crear ambientes armoniosos y sofisticados.
En resumen, la sección de porfolio de livings de Carlotta Design es una ventana a la excelencia en el diseño de interiores, mostrando el talento y la dedicación del equipo para crear espacios extraordinarios que reflejan la personalidad y el estilo de cada cliente.
1. 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. Se
utilizan, 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
2. 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” del
manual 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 al
diseñ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.
3. 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
kk knxbknyany
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 ak 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 knxbny
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.
4. 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
knxkhny
0
)()()( ( 5-3)
Comparando esta última ecuación con (5-2) se tiene que
)(khbk = ( 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 usan
normalmente estructuras no-recursivas. En tales casos la función del sistema tiene la
forma
∑
−
=
−
=
1
0
)()(
N
n
n
znhzH ( 5-5)
donde se tiene que :
∑
−
=
−
==
1
0)(
)(
)(
N
n
n
n zb
zX
zY
zH ( 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
5. 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()( nNhnh −−= ( 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 al
problema 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.
6. 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 y
los 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<Wn<1, donde 1
corresponde a la mitad de la frecuencia de muestreo (Frecuencia Nyquist). Su formato
general es :
»B=FIR1(N,Wn,type,window);
»B=FIR1(N,Wn). Calcula y almacena en B N+1 coeficientes de un filtro FIR pasabajos.
»B=FIR1(N,Wn,'high') usa el parámetro ‘high’ para diseñar filtros FIR pasaaltos. N
debe ser par en este caso particular.
Al momento de diseñar filtros pasabanda o atrapabanda con la instrucción fir1, se debe
definir Wn como un vector de dos elementos Wn=[W1 W2], con la restricción
0<W1<W<W2<1.
»B=FIR1(N,Wn). Calcula y almacena en B los N+1 coeficientes de un filtro FIR
pasabanda.
»B=FIR1(N,Wn,'stop'); usa el parámetro ‘stop’ para diseñar filtros FIR pasaaltos. N
también debe ser par en este caso.
Se usa por default la ventana Hamming. Sin embargo, se puede usar ventanas Boxcar
(rectangular), Hanning, Bartlett, Blackman, Kaiser and Chebyshev. El comando se escribe
así :
»B=FIR1(N,Wn,boxcar(N+1)) ;
5.1.2.2. FIR2 : Filtros FIR con método de ventanas y forma arbitraria.
Al igual que FIR1, permite el diseño de filtros FIR usando el método de las ventanas, pero
con forma de filtro arbitraria. Los parámetros que tiene en común con FIR1 funcionan
7. 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 (fs/2) y por tanto sus valores responden a la
condición 0=f(1)<f(2)<..f(k)=1.0, para un vector de k elementos de frecuencia.
El vector M contiene los valores de magnitud correspondientes a cada una de las
frecuencias especificadas en el vector F, por lo que F y M deben tener las mismas
dimensiones. Se puede visualizar la repuesta en frecuencia del filtro especificado con el
comando plot(F,M).
»B=fir2(N,F,M,npt,lap,window)permite a fir2 interpolar la respuesta frecuencial
deseada (F,M) con npt puntos (por defecto, npt=512). Si dos valores sucesivos de F son
iguales, se crea una región de lap puntos alrededor de este punto (por defecto, lap=25).
5.1.2.3. FIRLS : FIR de Fase Lineal con minimización de error por mínimos
cuadrados.
Los argumentos de entrada son el orden del filtro N, y dos vectores F y M, cuyo formato es
un poco diferente de los definidos para fir2. Su estructura general es
» B=firls(N,F,M);
Los coeficientes obtenidos corresponden a la mejor aproximación a la respuesta en
frecuencia descrita por (F,M), de acuerdo con el criterio de mínimos cuadrados y con
coeficientes reales y simétricos característicos de los sistemas de fase lineal. El tema de las
aproximaciones óptimas para filtros FIR se desarrolla ampliamente en la sección 7.6 de [5].
F es un vector que indica los límites de las bandas de frecuencia en parejas (por tanto el
tamaño de F debe ser par), y en orden ascendente entre 0 y 1. M es un vector del mismo
8. 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.
9. 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<F(0)< F(1)< ... < F(k)<1. Tiene la misma
longitud que el vector M, que a su vez 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í:
» B = REMEZ(N,F,M)
Se calcula y se almacena en la variable B un N+1 coeficientes de un filtro FIR (reales y
simétricos), con la mejor aproximación a la respuesta especificada según el criterio
minimax [5]. La respuesta de este filtro se aproxima a la respuesta deseada del filtro,
obtenida de trazar una recta desde (F(k),M(k)) hasta (F(k+1),M(k+1)) para k impar. Se
minimiza el máximo error
B=REMEZ(N,F,M,W) permite enfatizar la minimización de error en cada banda según el
valor asignado en W para cada una de ellas.
La utilización de B=REMEZ(N,F,M,'differentiator'), B=REMEZ(N,F,M,W,'differentiator'),
B=REMEZ(N,F,M,'Hilbert'), B=REMEZ(N,F,M,W,'Hilbert'), va por cuenta del interesado.
5.1.3. IMPLEMENTACIÓN DE FILTROS FIR EN EL ‘C50
Una vez conocida la estructura básica de los filtros FIR, el problema de la implementación
en un DSP se convierte en la construcción de un algoritmo que permita hacer los cálculos
pertinentes. En aplicaciones de procesamiento digital se señales en tiempo real, es
necesario considerar la capacidad el procesador en términos de velocidad de ejecución
(ciclo de máquina) y la disponibilidad de un conjunto de instrucciones que permita llevar
a cabo esta implementación. En la mayoría de los casos el problema consiste en
desarrollar con suficiente velocidad el proceso de convolución de un conjunto de muestras
de la señal, con un conjunto de valores previamente definidos.
10. 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 el
cá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 XLAST
MPY 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].
11. 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 el
siguiente (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 AIC
LAMM DRR ; y almacenamiento en XN
SACL XN ;
ZAP ; Cero ACC y PREG
LT XLAST ; Primera multiplicacion
MPY 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 signo
LACC OUTPUT ; OUTPUT->ACC
SFL
AND #0fffc ; Ultimos bits al AIC =0
SAMM DXR ; Escribir en reg de X-mision
RETE ; 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
12. 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 AIC
LAMM DRR ; y almacenamiento en XN
SACL XN ;
LAR AR0,#XLAST ; Definicion de
LAR AR1,#H79 ; apuntadores
ZAP ; Cero ACC y PREG
LT *-,AR1 ; Primera multiplicacion
MPY *-,AR0 ; No desplazamiento
LAZO : LTD *,AR1 ; AR0->TREG, 1->ARP
MPY *-,AR0 ; Hxx*TREG , 0->ARP
BANZ 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 :
13. 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 de
que 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
14. 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 resultado
AND #0fffc ;
SAMM DXR ; Enviar por puerto de salida
RETE ; 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
15. 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
kk knxbknyany
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
za
zb
zX
zY
zH
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.
16. 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 filtro
aná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<W<Wp)
Ws : Frecuencia de rechazabanda (Banda de rechazo normalizada Ws<W<1)
Rp : Máxima atenuación permitida en pasabanda.
Rs : Mínima atenuación deseada en rechazabanda.
N : Orden mínimo calculado para el filtro. Sirve de argumento para la función de cálculo
de coeficientes correspondiente.
Wn : Frecuencia natural. Parámetro de entrada necesario para que el filtro calculado
mediante la función correspondiente cumpla con las especificaciones del diseño.
Las funciones consideradas en este documento son :
»[N, Wn] = buttord(Wp, Ws, Rp, Rs);
»[N, Wn] = cheb1ord(Wp, Ws, Rp, Rs) ;
»[N, Wn] = cheb2ord(Wp, Ws, Rp, Rs) ;
»[N, Wn] = ellipord(Wp, Ws, Rp, Rs) ;
5.2.2.2. Funciones para calcular los coeficientes de un filtro determinado.
Para el diseño de filtros Butterworth pasabajos y pasaaltos se tienen las instrucciónes
»[B,A] = butter(N, Wn); y »[B,A] = butter(N, Wn, ‘high’);
17. 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<W2<1 , butter calcula los
coeficientes para un pasabanda y un atrapabanda mediante los comandos
»[B,A] = butter(N, Wn); y »[B,A] = butter(N, Wn, ‘stop’);
El funcionamiento y los parámetros de las instrucciones para los filtros Chebishev tipos I
y II son muy similares a los de butter, salvo por R (dB’s de ripple en la banda de paso) .
»[B,A] = cheby1(N, R, Wn) ; y »[B,A] = cheby2(N, R, Wn) ;
Una vez que se tienen los parámetros N y Wn del filtro Elíptico, se agrega la información
del ripple de pasabanda Rp y el de rechazabanda Rs, según el siguiente formato :
»[B,A] = ellipord(N, Rp, Rs, Wn) ;
5.2.2.3. YULEWALK : Filtro recursivo mediente el método de mínimos
cuadrados.
Calcula un filtro recursivode orden N que cumpla con la ecuación (5-9), de tal forma que
este se ajuste a la respuesta en frecuencia descrita por los vectores F y M. Su sintaxis es
»[B,A] = yulewalk(N,F,M)
y la definición de sus parámetros es idéntica a la de la función FIR2, por ejemplo.
5.2.3. IMPLEMENTACIÓN DE FILTROS IIR EN EL ‘C50
Se tienen en cuenta en esta sección varios de los conceptos manejados en la 5.1.3 . Se
presenta en esta sección una descripción de las formas más usadas en la implementación
de filtros IIR.
18. 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 :
19. 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 .
20. Figura 5-11. Filtro IIR Forma Directa de Segundo Orden
Las ecuaciones de diferencias que se utilizan en esta rutina son :
]2[]1[][][ 21 −+−+= ndandanxnd ( 5-10)
]2[]1[][][ 210 −+−+= ndbndbndbny ( 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 caso
particular 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
21. 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 AIC
LAMM DRR ; y almacenamiento en XN
SACL XN ;
LT DNM1
MPY 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->DNM2
MPY B1 ; A2*DNM2 -> PREG
LTD DN ; Producto, Suma y DN->DNM1
MPY B0 ; B0*DN -> PREG
APAC ; B0*DN +B1*DNM1 +B1*DNM1->ACC
SACH OUTPUT,1 ;(ACC)->OUTPUT sin bit signo
LACC OUTPUT ; OUTPUT->ACC
SFL
AND #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 :
22. ∑
∑
=
−
=
−
−
== N
k
k
k
M
k
k
k
za
zb
zX
zY
zH
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/
1
2
2
1
1
2
2
1
10
1)(
)(
)(
N
k kk
kkk
zz
zzk
zX
zY
zH
αα
βββ
( 5-13)
así, la ecuación del filtro IIR es realizable como una sucesión de etapas en cascada. Se
tiene 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 AIC
LAMM DRR ; y almacenamiento en XN
SACL XN ;
Inicio de la primera sección de cascada
LT D1NM1
MPY A11 ; A11*D1NM1 -> PREG
LTA D1NM2 ; ACC + PREG -> ACC
MPY 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 -> ACC
MPY B11 ; B11*D1NM1 -> PREG
LTD D1N ; ACC + PREG -> ACC
MPY B01 ; B11*D1NM1 -> PREG
* Fin de la primera etapa de la cascada. Inicio de la segunda
LTA D2NM1 ; PREG+ ACC ->ACC D2NM1->TREG0
23. MPY A12 ; A12*D2NM1 -> PREG
LTA D2NM2 ; ACC + PREG -> ACC
MPY 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 -> ACC
MPY B12 ; B12*D2NM1 -> PREG
LTD D2N ; ACC + PREG -> ACC
MPY 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 signo
LACC OUTPUT ; OUTPUT->ACC
SFL
AND #0fffc ; Ultimos bits al AIC =0
SAMM DXR ; Escribir en reg de X-mision
RETE ; 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
24. 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 muy
elevado, 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/
1
2
2
1
1
1
10
0 1)(
)(
)(
N
k kk
kk
NM
k
k
k
zz
zk
zC
zX
zY
zH
αα
γγ
( 5-14)
en la que el término Ckz-k se hace cero cuando M<N.
RECEIVE : LDP #XN ;
CLRC INTM ; Captura de dato del AIC
LAMM DRR ; y almacenamiento en XN
SACL XN ;
Inicio de la primera sección en paralelo
LACC XN,15
LT D1NM2
MPY A21 ; A21*D1NM2 -> PREG
LTD D1NM1
MPY 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 -> ACC
MPY GAMMA01 ; GAMMA01*D1N -> PREG
25. APAC ;
SACH P1,1 ; P1= GAMMA01*D1N+ GAMMA11*D1NM1
* Fin de la primera etapa en paralelo. Inicio de la segunda
LACC XN,15
LT D2NM2
MPY A22 ; A22*D2NM2 -> PREG
LTD D2NM1
MPY 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 -> ACC
MPY GAMMA02 ; GAMMA02*D2N -> PREG
LTA C
MPY XN ; XN*C -> PREG
APAC ;
* Fin de la segunda etapa en paralelo y del filtro.
SACH OUTPUT,1 ;(ACC)->OUTPUT sin bit signo
LACC OUTPUT ; OUTPUT->ACC
SFL
AND #0fffc ; Ultimos bits al AIC =0
SAMM DXR ; Escribir en reg de X-mision
RETE ; 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.
26. 5.3.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.
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,
27. 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ú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 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.
28. 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 de
sonido 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”
29. • 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.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.
30. 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.
31. • 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
32. 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, TLC32041I
Analog Interface Circuits (SLAS 014E). U.S.A : s.n., 1995.
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 : Using
MATLAB. 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 the
TMS32010/TMS32020. En KUN SHAN LIN. Digital Signal Processing Applications
with 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