Download - Filtro FIR

Transcript

//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