Sei sulla pagina 1di 9

Unidad Profesional Interdisciplinaria en Ingeniera y

Tecnologas Avanzadas
ales
Procesamiento Digital de Sen

Proyecto: Filtros FIR

Autores:
*BRAVO CONEJO CESAR GERARDO
*DOMINGUEZ PEREZ ABIMAEL
*FERNANDEZ RUIZ ANGEL ERNESTO
GARCIA VILLANUEVA MARIO ALBERTO

Profesor:MENDEZ
MARTINEZ
MAURICIO

GONZALEZ BECERRIL ALEJANDRO


*ROBLES RECODER ALEJANDRO

Grupo: 3MV6

2 de junio de 2013

UPIITA-IPN

2MV9

Indice
1. Objetivos

2. Introducci
on
2.1. TMS320C6713 DSP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2. Fitros FIR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2
2
3

3. Desarrollo

4. Resultados y Conclusiones

5. Ap
endice A

Procesamiento Digital de Se
nales

Filtro FIR

UPIITA-IPN

1.

2MV9

Objetivos

Dise
nar e Implementar tres filtros (pasa-bajas, pasa-banda y pasa-altas) del tipo Finite Impulse Responce en la
tarjeta de desarrollo SDK6713.

2.

Introducci
on

El Procesamiento Digital de Se
nales (DSP por sus siglas en ingles) es la manipulacion matematica de la informaci
on de una se
nal para modificarla o implementarla en alg
un proceso o estudio.Esta procesamiento esta caracterizado
por la representaci
on en tiempo discreto, frecuencia discreta y otros dominios de se
nal discretos para su posterior
procesamiento.

Los DSP tienen subcampos como el procesamiento de audio y de reconocimiento de voz, de radar y sonar,
estimaciones espectrales, procesamiento de imagenes, control de sistemas, entre otros. EL objetivo principal de un
DSP es la medici
on, el filtrado y/o la compresion de informacion en tiempo continuo del mundo real.

La aplicaci
on de la computaci
on del procesamiento digital de se
nales tiene muchas ventajas como la detecci
on
y correcci
on de un error as como tambien la compresion de datos.

2.1.

TMS320C6713 DSP

El TMS320C6713 DSP es un kit de inicio desarrollado para acelerar el desarrollo de aplicaciones de alta precisi
on. El kit usa conexi
on USB. Ambos los dise
nadores experimentados como los principiantes pueden iniciarce
inmediatamente mediante CodeComposer Studio software el cual incluye DSP/BIOS y as como cuadros de trabajo
referenciados.
El C6713 DSK permite descargar y correr codigo rapidamente as como usar informacion en tiempo real. las
caractersticas son:
Embedded JTAG support via USB
High-quality 24-bit stereo codec
Four 3.5mm audio jacks for microphone, line in, speaker and line out
512K words of Flash and 16 MB SDRAM
Expansion port connector for plug-in modules
On-board standard IEEE JTAG interface
+5V universal power supply

Procesamiento Digital de Se
nales

Filtro FIR

UPIITA-IPN

2.2.

2MV9

Fitros FIR

El filtrado de se
nales es una de las operaciones mas usadas en cualquier sistema de procesamiento de se
nales.
Hoy en da estos filtros pueden implementarse de manera digital en tiempo real en tarjetas de procesamiento de
se
nales, tales como las DSP. Un filtro digital como el de tipo FIR opera en se
nales de tiempo discreto, esto requiere
del uso de ADC pra capturar la se
nal de entrada externa, procesar las muestras de entrada y enviar el resultado
mediante un DAC.
Existen muchas tecnicas para el dise
no de los Filtros FIR, una tecnica muy com
unmente usada es aquella que
utiliza las series de Fourier, est
as series aplicadas en sistemas discretos quedan ejemplificadas como la circunvoluci
on
de la siguiente ecuaci
on.
y(n) = h(k)x(n k)

(1)

Para k = 0 hasta N 1. Si la entrada es el impulso unitario x(n) = (0), la salida sera y(n) = h(n). Un filtro de
con coeficientes N h(0), h(1), ..., h(N 1), y N muestras de entrada x(n), x(n 1), ..., x(n (N 1)). La muestra
de entrada al tiempo n es x(n) y las muestras de retardos son x(n 1), ..., x(n (N 1)). Este tipo de filtro es del
tipo recursivo, es decir, requiere de entradas pasadas.
La ecuaci
on utilizada es una convoluci
on en tiempo entre los coeficientes y las muestras de entrada, que es un
equivalente a una multiplicaci
on en el dominio de la frecuencia.

3.

Desarrollo
Las libreras que debemos incluir son las siguientes:

csi6713.lib
dsk6713bsi.lib
rts6700.lib
Adem
as de los siguientes archivos y cabeceras:
vectors_poll.asm
c6713desk.cmd
dsk6713_aic23.h
La configuraci
on de registros para la obtencion de muestras mediante los canales de audio:
Uint32 fs = DSK6713_AIC23_FREQ_8KHZ;
DSK6713_AIC23_CodecHandle manejador;
DSK6713_AIC23_Config configuracion = {
0x0017, /* 0 DSK6713_AIC23_LEFTINVOL Left line input channel volume */
0x0017, /* 1 DSK6713_AIC23_RIGHTINVOL Right line input channel volume */
0x01f9, /* 2 DSK6713_AIC23_LEFTHPVOL Left channel headphone volume */
0x01f9, /* 3 DSK6713_AIC23_RIGHTHPVOL Right channel headphone volume */
0x0011, /* 4 DSK6713_AIC23_ANAPATH Analog audio path control */
0x0000, /* 5 DSK6713_AIC23_DIGPATH Digital audio path control */
0x0000, /* 6 DSK6713_AIC23_POWERDOWN Power down control */
0x0043, /* 7 DSK6713_AIC23_DIGIF Digital audio interface format */
0x0081, /* 8 DSK6713_AIC23_SAMPLERATE Sample rate control */
0x0001 /* 9 DSK6713_AIC23_DIGACT Digital interface activation */
};
Procesamiento Digital de Se
nales

Filtro FIR

UPIITA-IPN

2MV9

En MATLAB se generaron los vectores de coeficientes h(N ) de los filtros; Mediante el comando filterbuilder,
que lanzar
a un asistente de dise
no de filtros FIR, a continuacion se muestran los vectores de coeficientes para tres
distintos filtros:
#define NPB 142 //Coeficientes Filtro Pasa banda de 5 kHz
short h3[NPB]={-18,-2,5,16,28,34,31,15,-11,-42,-67,-77,-65,-29,23,78,118,128,101,42,
-35,-107,-152,-156,-117,-45,36,101,132,123,81,27,-15,-30,-15,15,35,22,
-36,-129,-225,-277,-244,-106,120,377,582,651,529,215,-228,-683,-1008,
-1083,-847,-332,343,992,1422,1485,1131,431,-438,-1235,-1730,-1766,-1315,
-489,491,1353,1855,1855,1353,491,-489,-1315,-1766,-1730,-1235,-438,431,
1131,1485,1422,992,343,-332,-847,-1083,-1008,-683,-228,215,529,651,582,
377,120,-106,-244,-277,-225,-129,-36,22,35,15,-15,-30,-15,27,81,123,132,
101,36,-45,-117,-156,-152,-107,-35,42,101,128,118,78,23,-29,-65,-77,-67,
-42,-11,15,31,34,28,16,5,-2,-18};
#define NLB 43 //Coeficientes Filtro Pasa bajas de 600 Hz
short h4[NLB]={-79,-68,222,548,364,-204,-275,303,425,-332,-599,375,858,
-409,-1245,439,1906,-460,-3366,474,10393,15905,10393,474,-3366,-460,1906,
439,-1245,-409,858,375,-599,-332,425,303,-275,-204,364,548,222,-68,-79};
y por u
ltimo:
#define NHB 109 //Coeficientes Filtro Pasa bajas de 6 kHz
short h5[NHB]={-253,520,-24,-188,-165,-70,30,101,124,96,31,-49,-113,-135,-101,-22,76,151,
169,116,7,-118,-206,-216,-132,19,180,283,276,147,-61,-270,-389,-355,-161,130,
407,547,469,172,-251,-639,-817,-666,-181,504,1140,1436,1151,186,-1369,-3232,
-5007,-6279,26027,-6279,-5007,-3232,-1369,186,1151,1436,1140,504,-181,-666,
-817,-639,-251,172,469,547,407,130,-161,-355,-389,-270,-61,147,276,283,180,19,
-132,-216,-206,-118,7,116,169,151,76,-22,-101,-135,-113,-49,31,96,124,101,30,
-70,-165,-188,-24,520,-253};
A continuaci
on se muestran las variables utilizadas de cada filtro para la convolucion en tiempo discreto o en
transformada Z.
int yn = 0; //salida del filtro
short dly[NPB]; //Muestras de retraso
short dly1[NLB];
short dly2[NHB];
short vol; //Variable del DIP
short i; //Variables del Filtro
El algortmo utilizado e implementado de la transformada de Fourier del Filtro FIR se muestra a continuaci
on:
dly[0]=x; //Muestra de entrada
yn = 0; //Inicializacion de muestra de salida
for (i = 0; i< N; i++)
yn += (h[i] * dly[i]); //y(n) += h(i)* x(n-i)
for (i = N-1; i > 0; i--) //Empieza desde el fin del buffer
dly[i] = dly[i-1]; //se actualiza el vector de retrasos
y1= (4*(yn >> 15)); //Salida escalada para tomar los bits m
as significativos
En el algoritmo anterior genera una salida acumulada de las muestras de entrada en una convoluci
on, esta
convoluci
on es la multiplicaci
on de los coeficientes N del vector h(N). Para cada filtro existe un vector diferente
Procesamiento Digital de Se
nales

Filtro FIR

UPIITA-IPN

2MV9

hx(NX); debido a que implementaremos tres filtros FIR, mediante la obtencion de los valores del DIP y un switchcase se genera la se
nal filtrada. La lectura de las muestras de entrada es mediante el uso de los dos canales, con una
frecuencia de muestreo a 8kHz.
vol=(DSK6713_DIP_get(0))+(DSK6713_DIP_get(1)<<1)+(DSK6713_DIP_get(2)<<2)+(DSK6713_DIP_get(3)<<3);
while(!DSK6713_AIC23_read(manejador, &x1));
while(!DSK6713_AIC23_read(manejador, &x2));
As como tambien la escritura del valor filtrado:
// write the sample to both channels
while(!DSK6713_AIC23_write(manejador, y1));
while(!DSK6713_AIC23_write(manejador, y1));

4.

Resultados y Conclusiones

Existen muchas ventajas del filtrado digital respecto al analogico, tales como una mayor rentabilidad en componentes, mayor exactitud y menor sensibilidad a las temperaturas y ruidos. Ademas las caractersticas del filtro,
tales como frecuencia, ancho de banda, y el tipo de filtro son muy faciles de modificar.
La elaboraci
on del filtro digital result
o un poco difcil ademas de que fue necesario mucha investigacion de filtros,
implementaci
on del algoritmo en el DSP as como la obtencion de los coeficientes para cada filtro en MATLAB, sin
embargo el c
odigo final result
o ser muy sencillo y de facil entendimiento y aplicacion; Estas simplificaciones son de
gran ayuda para el dise
no futuro de filtros m
as complejos y de mas cantidad de frecuencias.

Referencias
[1] S.M. Sze, VLSI Technology, Ed. Mcgraw-Hill.
[2] C.Y. Chang and S.M. Sze, ULSI Technology, Ed. Mcgraw-Hill, 1996
[3] S. Wolf and R.N. Tauber, Silicon Processing for the VLSI era Volume 1-process technology, Ed. Lattice Press,
[4] B.G. Streetman and S. Banerje, Solid State Electronic Devices Fifth edition, Prentice Hall, 2000

Procesamiento Digital de Se
nales

Filtro FIR

UPIITA-IPN

5.

2MV9

Ap
endice A
C
odigo completo del programa utilizado.

#include "dsk6713.h"
#include "dsk6713_aic23.h"
Uint32 fs = DSK6713_AIC23_FREQ_8KHZ;
DSK6713_AIC23_CodecHandle manejador;
DSK6713_AIC23_Config configuracion = {
0x0017, /* 0 DSK6713_AIC23_LEFTINVOL Left line input channel volume */
0x0017, /* 1 DSK6713_AIC23_RIGHTINVOL Right line input channel volume */
0x01f9, /* 2 DSK6713_AIC23_LEFTHPVOL Left channel headphone volume */
0x01f9, /* 3 DSK6713_AIC23_RIGHTHPVOL Right channel headphone volume */
0x0011, /* 4 DSK6713_AIC23_ANAPATH Analog audio path control */
0x0000, /* 5 DSK6713_AIC23_DIGPATH Digital audio path control */
0x0000, /* 6 DSK6713_AIC23_POWERDOWN Power down control */
0x0043, /* 7 DSK6713_AIC23_DIGIF Digital audio interface format */
0x0081, /* 8 DSK6713_AIC23_SAMPLERATE Sample rate control */
0x0001 /* 9 DSK6713_AIC23_DIGACT Digital interface activation */
};
#define NPB 142 //length of filter
short h3[NPB]={-18,-2,5,16,28,34,31,15,-11,-42,-67,-77,-65,-29,23,78,118,128,101,42,
-35,-107,-152,-156,-117,-45,36,101,132,123,81,27,-15,-30,-15,15,35,22,
-36,-129,-225,-277,-244,-106,120,377,582,651,529,215,-228,-683,-1008,
-1083,-847,-332,343,992,1422,1485,1131,431,-438,-1235,-1730,-1766,-1315,
-489,491,1353,1855,1855,1353,491,-489,-1315,-1766,-1730,-1235,-438,431,
1131,1485,1422,992,343,-332,-847,-1083,-1008,-683,-228,215,529,651,582,
377,120,-106,-244,-277,-225,-129,-36,22,35,15,-15,-30,-15,27,81,123,132,
101,36,-45,-117,-156,-152,-107,-35,42,101,128,118,78,23,-29,-65,-77,-67,
-42,-11,15,31,34,28,16,5,-2,-18};
#define NLB 43 //length of filter
short h4[NLB]={-79,-68,222,548,364,-204,-275,303,425,-332,-599,375,858,
-409,-1245,439,1906,-460,-3366,474,10393,15905,10393,474,-3366,-460,1906,
439,-1245,-409,858,375,-599,-332,425,303,-275,-204,364,548,222,-68,-79};
#define NHB 109 //length of filter
short h5[NHB]={-253,520,-24,-188,-165,-70,30,101,124,96,31,-49,-113,-135,-101,-22,76,151,
169,116,7,-118,-206,-216,-132,19,180,283,276,147,-61,-270,-389,-355,-161,130,
407,547,469,172,-251,-639,-817,-666,-181,504,1140,1436,1151,186,-1369,-3232,
-5007,-6279,26027,-6279,-5007,-3232,-1369,186,1151,1436,1140,504,-181,-666,
-817,-639,-251,172,469,547,407,130,-161,-355,-389,-270,-61,147,276,283,180,19,
-132,-216,-206,-118,7,116,169,151,76,-22,-101,-135,-113,-49,31,96,124,101,30,
-70,-165,-188,-24,520,-253};
int yn = 0; //initialize filters output
short dly[NPB]; //delay samples
short dly1[NLB];
short dly2[NHB];
short vol;
short i;
Procesamiento Digital de Se
nales

Filtro FIR

UPIITA-IPN

2MV9

Int16 process_sample(Int16 aux);//----------------------------------------------------------------------

void main()
{
/* These variables are used to access the hardware */
Uint32 x1,x2;
Int16 y1;
float x,y;
manejador = DSK6713_AIC23_openCodec(0,&configuracion);
DSK6713_AIC23_setFreq(manejador, fs);
//DSK6713_init();
DSK6713_LED_init(); //init LED from BSL
DSK6713_DIP_init(); //init DIP from BSL
while(1) {
vol=(DSK6713_DIP_get(0))+(DSK6713_DIP_get(1)<<1)+(DSK6713_DIP_get(2)<<2)+(DSK6713_DIP_get(3)<<3);
while(!DSK6713_AIC23_read(manejador, &x1));
while(!DSK6713_AIC23_read(manejador, &x2));
x = ((Int16)x1 + (Int16)x2)/2.0;

switch (vol)
{
case 15:
y1=x;
break;
case 14:
dly[0]=x; //input newest sample
yn = 0; //initialize filters output
for (i = 0; i< NPB; i++)
yn += (h3[i] * dly[i]); //y(n) += h(i)* x(n-i)
for (i = NPB-1; i > 0; i--) //starting @ end of buffer
dly[i] = dly[i-1]; //update delays with data move
//output_sample(yn >> 15); //scale output filter sample
y1= (4*(yn >> 15));

break;
case 13:
dly1[0]=x; //input newest sample
yn = 0; //initialize filters output

Procesamiento Digital de Se
nales

Filtro FIR

UPIITA-IPN

2MV9

for (i = 0; i< NLB; i++)


yn += (h4[i] * dly1[i]); //y(n) += h(i)* x(n-i)
for (i = NLB-1; i > 0; i--) //starting @ end of buffer
dly1[i] = dly1[i-1]; //update delays with data move
y1= (yn >> 15);
break;
case 11:
dly2[0]=x; //input newest sample
yn = 0; //initialize filters output
for (i = 0; i< NHB; i++)
yn += (h5[i] * dly2[i]); //y(n) += h(i)* x(n-i)
for (i = NHB-1; i > 0; i--) //starting @ end of buffer
dly2[i] = dly2[i-1]; //update delays with data move
y1= (yn >> 15);
break;
default:
y1=0;
}

// write the sample to both channels


while(!DSK6713_AIC23_write(manejador, y1));
while(!DSK6713_AIC23_write(manejador, y1));
};

Procesamiento Digital de Se
nales

Filtro FIR

Potrebbero piacerti anche