Filtro FIR
description
Transcript of Filtro FIR
//Filtro FIR Mtodo 1: Registro de corrimiento
#include // Soporte del chip#include // Soporte de los DIPs#include // Soporte de los LEDs#include "DSK6713_AIC23.h"// Archivo de soporte del codec-DSK
#include "PasaBajas.h"// Coeficientes de los filtros
Uint32 fs=DSK6713_AIC23_FREQ_44KHZ;// Frecuencia de muestreo
union {short canal[2]; Uint32 estereo;} entrada,salida; // Union para envo/Recepcin de datos// entrada.estereo, salida.estereo contiene ambos canales// entrada.canal[0], salida.canal[0] contiene el canal izquierdo para entrada y salida, respectivamente// entrada.canal[1], salida.canal[1] contiene el canal derecho para entrada y salida, respectivamente
short x_I[BL]={0}, x_D[BL]={0};// Registro de la seal de entrada (como registro de corrimiento)
interrupt void c_int11()// Rutina de servicio de interrupcin{int k;// Variable para ndices de los arreglosfloat y_I=0, y_D=0;// Variables temporales para clculo de la salida entrada.estereo=input_sample();// Captura de la seal de entrada
x_I[0]=entrada.canal[0];// Canal izquiero y derecho son almacenadosx_D[0]=entrada.canal[1];// al inicio del registro de corrimiento
y_I=0;// Inicializacin de variables para algoritmoy_D=0;// FIR de musltiplicaicn - acumulacinfor (k=0;k0;k--)// Corrimiento de los datos para registro {// de corriemientox_I[k] = x_I[k-1];x_D[k] = x_D[k-1];}
salida.canal[0]=(short)y_I;// Captura de la salida parasalida.canal[1]=(short)y_D;// ambos canales con conversin forzada a short
output_sample(salida.estereo);// Envo de los dos canales a la salida de la tarjeta
return;// Retorno de la interrupcin} void main()// Programa principal{
comm_intr(); // Inicializa el DSK, codec, McBSPwhile(1); // Ciclo infinito}
// Filtro FIR Mtodo 2: Buffer Circular
#include // Soporte del chip#include // Soporte de los DIPs#include // Soporte de los LEDs#include "DSK6713_AIC23.h"// Archivo de soporte del codec-DSK
#include "PasaBajas.h"// Coeficientes de los filtros
Uint32 fs=DSK6713_AIC23_FREQ_44KHZ;// Frecuencia de muestreo
union {short canal[2]; Uint32 estereo;} entrada,salida; // Union para envo/Recepcin de datos// entrada.estereo, salida.estereo contiene ambos canales// entrada.canal[0], salida.canal[0] contiene el canal izquierdo para entrada y salida, respectivamente// entrada.canal[1], salida.canal[1] contiene el canal derecho para entrada y salida, respectivamente
short x_I[BL]={0}, x_D[BL]={0};// Registro de la seal de entrada (como registro de corrimiento)int n=0;// Indice para buffer circular
interrupt void c_int11()// Rutina de servicio de interrupcin{int k,a;// Variable para ndices de los arreglosfloat y_I=0, y_D=0;// Variables temporales para clculo de la salida entrada.estereo=input_sample();// Captura de la seal de entrada
x_I[n]=entrada.canal[0];// Canal izquiero y derecho son almacenadosx_D[n]=entrada.canal[1];// en la posicin n-sima del buffer circular
y_I=0;// Inicializacin de variables para algoritmoy_D=0;// FIR de musltiplicaicn - acumulacin
a=n;for (k=0;k