Legal forms y filtros digitales">
Filtro FIR en La Tarjeta de Desarrollo DSK6713
Filtro FIR en La Tarjeta de Desarrollo DSK6713
Filtro FIR en La Tarjeta de Desarrollo DSK6713
Filtro FIR
Nmero de prctica: 2
Ttulo de la Prctica: Filtro FIR en la tarjeta de desarrollo
DSK6713
Presentan:
Betanzos Salvador Carlos Alfredo
Figueroa Chvez Vctor Hugo
Jurez Reyes Gerardo
Mndez Beristan Jorge
Objetivos:
Objetivo general.
El alumno implementar y comprobar experimentalmente la
funcin de transferencia de un filtro FIR en la tarjeta de desarrollo
C6713 DSK.
Objetivos particulares.
2) Filtro
a.
b.
c.
d.
3) Filtro
a.
b.
c.
d.
e.
f.
4) Filtro
a.
b.
c.
d.
e.
f.
pasa-altas: dip1=0,dip0=1
Fstop1= 4.8 kHz
Fpass1= 6.4 kHz
Rizo en la banda de paso menor o igual a 3dB.
Atenuacin mnima en la banda de rechazo de 60dB.
pasa-banda: dip1=1,dip0=0
Fstop1= 1.6 kHz
Fpass1= 3.2 kHz
Fpass2= 6.4 kHz
Fstop2= 8 kHz
Rizo en la banda de paso menor o igual a 1dB.
Atenuacin mnima en las bandas de rechazo de 60dB.
pasa-banda: dip1=1,dip0=1
Fpass1= 1.6 kHz
Fstop1= 3.2 kHz
Fstop2= 6.4 kHz
Fpass2= 8 kHz
Rizo en las bandas de paso menor o igual a 3dB.
Atenuacin mnima en la banda de rechazo de 60dB.
Marco Terico.
FILTROS:
Son circuitos caracterizados por una entrada y una salida de forma que
en la salida solo aparecen parte de las componentes de frecuencia de la
seal de entrada. Son por tanto son circuitos que se pueden caracterizar
por su funcin de transferencia H(),cumplindose que:
Filtros pasa-altas
Un filtro pasa-altas (HP) pasa las frecuencias por encima de una
frecuencia dada denominada frecuencia de corte. Tal como se muestra
en la Fig. 2 la banda de paso se extiende desde W p a y la banda de
rechazo desde 0 hasta Ws. Los parmetros Ws, Wp, Ap y As caracterizan
completamente las especificaciones del filtro HP.
Filtros pasa-banda
Un filtro pasa-banda (BP) pasa las seales en una banda de frecuencias
con atenuacin muy baja mientras que rechaza las frecuencias a ambos
lados de esta banda, como se muestra en la Fig. 3. La banda de paso de
Wp1 a Wp2 tiene una atenuacin mxima de Ap dB y las bandas de
rechazo, de DC a y de a W s1 y de Ws2 a tienen una atenuacin mnima
de As dB.
Fig. 3)
del filtro pasa-
Especificaciones
banda
Una funcin
pasa-banda
de
transferencia
orden
con
caracterstica
es
Filtros
rechaza-banda
de segundo
Estructuras de unin en C.
Las estructuras nos permiten agrupar varios datos, que mantengan
algn tipo de relacin, aunque sean distinto tipo, permitiendo
manipularlos todos juntos, usando un mismo identificador, o cada uno
por separado.
struc <identificador de la estructura>
<tipo1><nombre_objeto1,..>;
<tipo2><nombre_objeto2,..>;
...
}
Ejemplo:
struct Persona
{ char Nombre[65];
char Direccin[65];
int Ao_de_Nacimiento; } Juanito;
///// Para acceder a un objeto de la estructura se usa:
Juanito.Nombre
}<variable_union>,<variable_union>
Ejemplo:
union un Ejemplo { int A; char B; double C; }
Union Ejemplo;,;
Desarrollo de la prctica
Anlisis de resultados
f(Hz)
500
1000
1500
2000
2500
3000
3500
4000
4500
5000
5500
6000
f(Hz)
500
1000
Vrms= 652mV
Pasabajas
Vrmsin
(mV)
696
691
672
699
693
668
695
684
682
680
680
673
Pasaaltas
Vrmsin
(mV)
686
687
Filtro Pasa-bajas
800
700
600
500
400
300
200
100
0
Vrmsin (mV)
Vrmsout
(mV)
32
34.4
Vrmsout (mV)
1500
Filtro Pasa-altas
800
700
600
500
400
300
200
100
0
Vrmsin (mV)
2000
2500
3000
3500
4000
4500
5000
5500
6000
6500
7000
7500
8000
8500
9000
9500
687
686
685
683
682
682
678
679
685
675
683
691
671
701
677
669
702
Pasabanda
Vrmsin
(mV)
500
1000
1500
688
684
687
37.6
38.2
39
44.2
48.1
47
50.2
58
143
417
674
708
654
711
680
670
705
Vrmsout
(mV)
26.9
36.6
40.8
Vrmsout (mV)
2000
Filtro Pasa-banda
800
700
600
500
400
300
200
100
0
Vrmsin (mV)
2500
3000
3500
4000
4500
5000
5500
6000
6500
7000
7500
8000
8500
9000
9500
10000
683
64
693
229
678
499
674
728
703
730
683
733
665
735
694
735
686
739
672
537
688
309
687
88.4
688
56.2
685
52.5
685
50.3
685
69.5
683
58.7
Rechaza-banda
Vrmsin
Vrmsout
(mV)
500
1000
691
703
(mV)
689
785
Vrmsout (mV)
1500
Filtro Rechaza-banda
900
800
700
600
500
400
300
200
100
0
Vrmsin (mV)
2000
2500
3000
3500
4000
4500
5000
5500
6000
6500
7000
7500
8000
8500
9000
9500
677
682
690
686
685
684
683
680
680
678
646
661
686
723
667
678
707
Vrmsout (mV)
647
354
127
44.5
43.5
45
40.3
40.7
39.6
39.1
38.2
73.6
342
730
733
653
665
Conclusiones
La implementacin de los filtros en la tarjeta DSK se probaron con distintas
seales de audio que tenan ruido, comprobando as que cumplan su funcin
del filtrado obteniendo el audio sin la seal que lo contaminaba(ruido), puesta
para probar los mismo, sin embargo tambin se observ que en los filtros pasaaltas atenu ms la voz que el sonido de la guitarra, y de igual forma, en el
filtro pasa-banda se atenu ms el ruido y el sonido de la guitarra que la voz,
cumpliendo con esto el objetivo general de la implementacin de los filtros y su
correspondientes pruebas.
Referencias
[1]Rulph Chassaing, Digital Signal Processing and Applications
with the C6713 and C6417 DSK, Ed. John Wiley & Sons.
[2]Vinay K. Ingle, John G. Proakis, Digital Signal Processing Using
MATLAB, Ed. Bookware Companion Series.
[3]Ricardo A. Losada, Digital Filters with MATLAB, The MAthWork
Inc.
[4]John G. Proakis, Dimitris G. Manolakis, Tratamiento Digital de
Seales, Principios y Algoritmos, Ed. Prentice Hall, 3 Edicin.
[5]http://es.scribd.com/doc/82462033/34/Codec-AIC23.
[6]Steven A. Tretter, Communication System Design Using DSP
Algorithms: with laboratory experiments for the
TMS320C6713 DSK.
Apndice
Programa entregado al profesor.
#include <dsk6713.h>
chip
#include <dsk6713_dip.h>
los DIPs
#include "DSK6713_AIC23.h"
soporte del codec-DSK
Uint32 fs=DSK6713_AIC23_FREQ_44KHZ;
// Soporte del
// Soporte de
// Archivo de
// Frecuencia de
muestreo
#include "pasabajas1PDS2.h"
Generadas con Matlab
#include "pasaaltas2PDS2.h"
especificaciones de los
#include "pasabandas2PDS2.h"
#include "rechazabanda4PDS2.h"
#define M 61
coeficientes que nos
#define M1 61
#define M2 55
#define M3 51
// Libreras
// segn las
// filtros
// Numero de
// entrega Matlab
short D2,D3;
// Definimos D2, D3
para los switch
union {short canal[2]; Uint32 estereo;} entrada, salida;
//
Juntamos los 2 canales
short x_I[M]={0}, x_D[M]={0};
// Asignamos un
registro a los valores de entrada
short n=0;
// Apuntador para
inicializar
float y_I, y_D;
// Registros de ayuda para las
salidas
interrupt void c_int11()
servicio de interrupcin
{
register short m,k;
entrada.estereo=input_sample();
informacin
x_I[n]=entrada.canal[0];
0
x_D[n]=entrada.canal[1];
canal 1
y_I=0; m=n; y_D=0;
D2=DSK6713_DIP_get(2);
porque es ms fcil
D3=DSK6713_DIP_get(3);
que el perifrico
if(D2==1 && D3==1)
banda D2=1 ^ D3=1
{
// Rutina de
// Registro de memoria
// Por ambos canales recibimos
// Asignamos X_D a el canal
// Asignamos X_I a el
// Inicializamos todo
// Definimos D2, D3
// revisar la memoria
// Filtro rechaza-
m=M-1;
for(k=n+1; k<=M-1;k++)
{
y_I+=A[m]*x_I[k];
y_D+=A[m]*x_I[k];
m--;
}
salida.canal[0]=(short)y_I;
// forzamos que la salida sea
de tipo short
salida.canal[1]=(short)y_D;
output_sample(salida.estereo);
// Unimos los canales y
llenamos con ceros para
// que sean del mismo tamao
if (++n>M-1){
// Contador que nos da los
coeficientes del filtro
n=0;
// Cunado llega al Coeficiente M se
reinicia
}
return;
// Retorno para ver si
existe otra combinacin
}
if(D2==1 && D3!=1)
// Filtro pasa-banda
D2=1 ^ D3=0
{
for (k=0; k<=n; k++)
{
y_I+=B[k]*x_I[m];
y_D+=B[k]*x_I[m];
m--;
}
m=M2-1;
for(k=n+1; k<=M-1;k++)
{
y_I+=B[m]*x_I[k];
y_D+=B[m]*x_I[k];
m--;
}
salida.canal[0]=(short)y_I*4;
salida.canal[1]=(short)y_D;
output_sample(salida.estereo);
if (++n>M2-1){
n=0;
}
return;
combinacin
}
if(D2!=1 && D3==1)
D3=1
{
for (k=0; k<=n; k++)
{
y_I+=C[k]*x_I[m];
y_D+=C[k]*x_I[m];
m--;
}
m=M1-1;
for(k=n+1; k<=M-1;k++)
{
y_I+=C[m]*x_I[k];
y_D+=C[m]*x_I[k];
m--;
}
salida.canal[0]=(short)y_I;
salida.canal[1]=(short)y_D;
output_sample(salida.estereo);
if (++n>M1-1){
n=0;
}
return;
combinacin
}
if(D2!=1 && D3!=1)
D3=0
{
for (k=0; k<=n; k++)
{
y_I+=D[k]*x_I[m];
y_D+=D[k]*x_I[m];
m--;
}
m=M3-1;
for(k=n+1; k<=M-1;k++)
{
y_I+=D[m]*x_I[k];
y_D+=D[m]*x_I[k];
m--;
}
salida.canal[0]=(short)y_I;
salida.canal[1]=(short)y_D;
output_sample(salida.estereo);
if (++n>M3-1){
n=0;
}
return;
// Retorno para ver si existe otra
combinacin
}
return;
// Regreso a la interrupcin
}
void main()
{
comm_intr();
DSK6713_DIP_init();
while(1);
}
// Programa principal
// Inicializa el DSK, Codec, McBSP
// inicializa los DIP
// Ciclo infinito
constante.