PROCESADORES DIGITALES DE SEÑAL Práctica nº 3

Anuncio
PROCESADORES DIGITALES DE SEÑAL
Práctica nº 3
Programación de un Filtro FIR
1. OBJETIVO
El objetivo de esta práctica es escribir un programa que filtre un conjunto de muestras
predefinidas mediante un filtro de tipo FIR.
Un filtro FIR (Finite Impulse Response) consiste en una suma ponderada de entradas. La
ecuación de un filtro FIR es la siguiente:
y (n ) =
m −1
∑a
k
⋅ x(n − k )
k =0
donde:
x(n-k) es una secuencia temporal de entradas
y(n)
es la salida del filtro para el instante n
ak
es un vector con los coeficientes o pesos del filtro
2. PROCEDIMIENTO
1. Copiar dentro de la carpeta practica3 los ficheros que hay en el directorio
ejemplos\practica3.
2. Define las siguientes constantes en el programa:
•
TAPS: Número de pesos o coeficientes del filtro (m en la ecuación).
•
MUESTRAS: Número total de muestras que pasarán por el filtro.
3. Construye los siguientes buffers:
a) COEFS: buffer circular en memoria de programa para los coeficientes o pesos del
filtro que se obtendrán del fichero “fircoefs.dat”.
Nota: Este buffer estará ordenado empezando por el coeficiente con k=m-1. Esto es
debido a que el bucle del filtro FIR debe procesar los datos empezando con el más
antiguo y terminando con el dato que se acaba de añadir. Por lo tanto los coeficientes
deben estar ordenados empezando por el asociado al más antiguo (am-1) y terminando
con el coeficiente asociado al más reciente (a0).
b) TABLA: buffer circular en memoria de datos donde estarán las muestras x(n-k).
c) INBUF: buffer no circular, contiene muestras de entrada predefinidas que se
obtendrán del fichero “onda_suma.dat”.
d) OUTBUF: buffer no circular, contiene los valores de salida del filtro.
Procesadores Digitales de Señal. Práctica 3
1
Para los buffers se deben utilizar los siguientes registros:
Registro
Nombre del Buffer
Longitud
Descripción
I0
tabla
L0 = TAPS
Línea de retardo
I1
inbuf
L1 = 0
Entradas
I2
outbuf
L2 = 0
Salidas
I8
coefs
L8 = TAPS
Coeficientes
4. Después de asociar los buffers con los registros de los DAG´s, el programa debe inicializar
el buffer TABLA con ceros mediante un bucle.
5. Un bucle externo tomará sucesivamente un nuevo dato del buffer INBUF y lo pondrá en la
posición que le corresponda del buffer TABLA, ver la Figura 1. A continuación se obtendrá
una nueva muestra de salida mediante un bucle interno a este. La muestra obtenida se
pondrá en el buffer OUTBUF. Este bucle externo se ejecutará tantas veces como se
indique en la constante MUESTRAS.
TABLA
I0 →
K=0
Muestra más reciente
K=4
Muestra más antigua
COEFS
K=4
← I8
K=3
K=3
K=2
K=2
K=1
K=1
K=0
Figura 1: Posición de los punteros en el buffer TABLA y en el buffer
coeficientes inmediatamente después de añadir una nueva muestra a la
tabla (pisando la muestra más antigua hasta ese momento).
6. El bucle interno será el que realice el filtrado propiamente dicho y por lo tanto implemente
la ecuación indicada al principio. Como se ha indicado en la nota del punto 3, se realizará
el bucle empezando con k=m-1 y se terminará con k=0.
3. TRABAJO
Entregar el listado del programa y la representación gráfica de las señales de entrada y salida
superpuestas en el mismo gráfico.
Procesadores Digitales de Señal. Práctica 3
2
Descargar