Legal forms y filtros digitales">
Nothing Special   »   [go: up one dir, main page]

Filtro FIR en La Tarjeta de Desarrollo DSK6713

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 24

Prctica #2.

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.

Disear filtros de respuesta finita al impulso (FIR) en Matlab.


Implementar filtros digitales FIR en el DSK de TI TMS320C6713.
Caracterizar con un generador de funciones y un osciloscopio la
respuesta en frecuencia del filtro diseado.
Realizar el filtrado digital de una seal de sonido.

Planteamiento del problema


Se desea disear e implementar cuatro filtros digitales del tipo FIR
en un solo programa que cumpla con los requisitos de frecuencia
especificados a continuacin:

El diseo de los filtros debe realizarse utilizando cualquier funcin


de diseo de filtros FIR de Matlab.
La frecuencia de muestreo para todos los casos ser de 44.1KHz.
El filtro debe funcionar para ambos canales.
Los interruptores dip0 y dip1 seleccionarn cada uno de los
siguientes filtros:
1) Filtro pasa-bajas: dip1=0,dip0=0
a. Fpass= 3.2 kHz
b. Fstop= 4.8 kHz
c. Rizo en la banda de paso menor o igual a 1dB.
d. Atenuacin mnima en la banda de rechazo de 60dB.

Prctica #2. Filtro FIR

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:

La funcin de transferencia tomar el valor 1 para una frecuencia i si


se desea que la seal pase a esa frecuencia, mientras que tomar el
valor 0 si no debe pasar, dicindose que se rechaza la seal.
Los filtros se pueden poner en cascada hasta obtener la funcin que se
necesite.
TIPOS DE FILTROS:
Filtros pasa-bajas

Prctica #2. Filtro FIR

La funcin bsica de un filtro pasa-bajas (LP) es pasar las frecuencias


bajas con muy pocas prdidas y atenuar las altas frecuencias. La Fig. 1
muestra un esquema tpico de especificaciones de un filtro pasa-bajas.
El filtro LP debe pasar las seales entre DC y la frecuencia de corte, con
una atenuacin mxima de Ap dB. La banda de frecuencias entre DC y Wp
se conoce como banda de paso. Las frecuencias por encima de W s
deben tener al menos As dB de atenuacin. La banda de frecuencias
entre Ws y se denomina banda de rechazo y se denomina frecuencia
lmite de la banda de rechazo. La banda de frecuencias entre W s y Wp se
denomina banda de transicin. Los parmetros W s, Wp, Ap y As
describen completamente las especificaciones del filtro LP.

Fig. 1) Especificaciones del filtro pasa-bajas

Una funcin de transferencia de segundo orden que implementa una


caracterstica paso de baja es:

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.

Prctica #2. Filtro FIR

Fig. 2) Especificaciones del filtro pasa-altas

Una funcin de transferencia de segundo orden con caracterstica paso


de alta es

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

Prctica #2. Filtro FIR

Los filtros rechaza-banda (BR) se usan para rechazar una banda de


frecuencias de una seal, como se muestra en la Fig. 4. La banda de
frecuencias a rechazar es la banda de rechazo entre W s1 y Ws2. La banda
de paso se extiende por debajo de Wp1 y por encima de Wp2.

Fig. 4) Especificaciones del filtro rechaza-banda

Una funcin de segundo orden con caracterstica rechaza-banda es

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];

Prctica #2. Filtro FIR

char Direccin[65];
int Ao_de_Nacimiento; } Juanito;
///// Para acceder a un objeto de la estructura se usa:

Juanito.Nombre

Las uniones son un tipo especial de estructuras que permiten almacenar


elementos de diferentes tipos en las mismas posiciones de memoria,
aunque evidentemente no simultneamente.
union [<identificador>]
{<tipo> <nombre_variable>;
<tipo> <nombre_variable>;

}<variable_union>,<variable_union>
Ejemplo:
union un Ejemplo { int A; char B; double C; }
Union Ejemplo;,;

Supongamos que en nuestra computadora, int ocupa cuatro bytes, char


un byte y double ocho bytes. La forma en que se almacena la
informacin en la unin del ejemplo sera la siguiente:

Desarrollo de la prctica

Disear los filtros con las especificaciones sealadas utilizando la


herramienta fdatool (o con las funciones fir1, fir2, firls, etc.) de
Matlab.
Crear los archivos cabecera de los coeficientes de los filtros.
Crear el programa en CCS.
Compile, depure, cargue el programa a la tarjeta y ejectelo.
Introducir la pista de audio (correspondiente a cada uno de los
filtros) proporcionada y compruebe el funcionamiento. Las pistas

Prctica #2. Filtro FIR

de audio que se proporcionan contienen tonos (a manera de ruido)


fuera de la banda de paso.
Graficar la respuesta en frecuencia (magnitud) utilizando un
osciloscopio y un generador de funciones.

Anlisis de resultados

Caracterizacin de los filtros


Vpp= 2v

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)

Prctica #2. Filtro FIR

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)

Prctica #2. Filtro FIR

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)

Prctica #2. Filtro FIR

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.

Prctica #2. Filtro FIR

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

Prctica #2. Filtro FIR

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-

Prctica #2. Filtro FIR

for (k=0; k<=n; k++)


condiciones entonces
{
y_I+=A[k]*x_I[m];
el primer
y_D+=A[k]*x_I[m];
sucesivamente
m--;
}

//Si se cumplen las


// Incrementamos K y lo multiplicamos por
// valor de la tabla de coeficientes y as
// decrementamos m

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];

Prctica #2. Filtro FIR

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--;
}

// Retorno para ver si existe otra


// Filtro pasa-altas D2=0 ^

// Retorno para ver si existe otra


// Filtro pasa-bajas D2=0 ^

Prctica #2. Filtro FIR

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

Diseo de filtros en Matlab con los 3 mtodos mostrados en clase.


clc
clear all
close all
% Diseo de Filtros digitales
% Usando los 3 metodos para los 4 filtros
% METODO DE VENTANAS
% Frecuencia de muestreo= 44.1 KHz

%1) Filtro pasa-bajas


%
Fpass= 3.2 kHz
%
Fstop= 4.8 kHz
%
Rizo en la banda de paso menor o igual a 1dB.
%
Atenuacin mnima en la banda de rechazo de 60dB
b=fir1(50,0.14,rectwin(51));
freqz(b,1)
title(' Filtro pasa-bajas- METODO DE VENTANAS')
figure
%2) Filtro pasa-altas
% 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.

Prctica #2. Filtro FIR


b=fir1(50,0.29,'high',hamming(51));
freqz(b,1)
title(' Filtro pasa-altas- METODO DE VENTANAS')
% 3) Filtro pasa-banda
% 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.
figure(3)
b=fir1(30,[0.14 0.29],rectwin(31));
freqz(b,1,512)
title(' Filtro pasa-banda- METODO DE VENTANAS')
% 4)Filtro rechaza-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.
figure(4)
b=fir1(25,[0.072 0.36],rectwin(26));
freqz(b,1,512)
title(' Filtro rechaza banda - METODO DE VENTANAS')
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Mtodo de muestreo en frecuencia
% Frecuencia de muestreo= 44.1 KHz
%1) Filtro pasa-bajas
%
Fpass= 3.2 kHz
%
Fstop= 4.8 kHz
%
Rizo en la banda de paso menor o igual a 1dB.
%
Atenuacin mnima en la banda de rechazo de 60dB
figure(5)
b=fir2(50,[0,.14,.14,1],[1,1,0,0]);
freqz(b,1,128)
title(' Filtro pasa-bajas - Mtodo de muestreo en frecuencia')

%2) Filtro pasa-altas


% 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.
figure(6)
b=fir2(50,[0,.29,.29,1],[0,0,1,1]);
freqz(b,1)
title(' Filtro pasa-altas - Mtodo de muestreo en frecuencia')
% 3) Filtro pasa-banda
% 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.
figure(7)
b=fir2(30,[0,.072,.14,.29,.36,1],[0,0,1,1,0,0]);
freqz(b,1)

Prctica #2. Filtro FIR


title(' Filtro pasa-banda - Mtodo de muestreo en frecuencia')
% 4)Filtro rechaza-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.
figure(8)
b=fir2(13,[0,.072,.14,.29,.36,1],[1,1,0,0,1,1]);
freqz(b,1)
title(' Filtro rechaza-banda - Mtodo de muestreo en frecuencia')
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Metodo de diseo de Filtros FIR ptimos de fase lineal y rizado

constante.

% Frecuencia de muestreo= 44.1 KHz


%1) Filtro pasa-bajas
%
Fpass= 3.2 kHz
%
Fstop= 4.8 kHz
%
Rizo en la banda de paso menor o igual a 1dB.
%
Atenuacin mnima en la banda de rechazo de 60dB
figure(9)
[N,Fo,Ao,W]=firpmord([0.14,0.21],[1,0],[0.01,0.01])
b = firpm(N,Fo,Ao,W);
freqz(b,1)
title(' Filtro pasa-bajas - Metodo de diseo de Filtros FIR ptimos de fase lineal y rizado
constante.')
%2) Filtro pasa-altas
% 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.
figure(10)
[N,Fo,Ao,W]=firpmord([0.21,0.29],[0,1],[0.03,0.6])
b = firpm(N,Fo,Ao,W);
freqz(b,1)
title(' Filtro pasa-altas - Metodo de diseo de Filtros FIR ptimos de fase lineal y rizado
constante.')
% 3) Filtro pasa-banda
% 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.
figure(11)
[N,Fo,Ao,W]=firpmord([0.072,0.14,0.29,0.36],[0,1,0],[0.01 0.6 0.01])
b = firpm(N,Fo,Ao,W);
freqz(b,1)
title(' Filtro pasa-bandas - Metodo de diseo de Filtros FIR ptimos de fase lineal y rizado
constante.')
% 4)Filtro rechaza-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.
figure(12)
[N,Fo,Ao,W]=firpmord([0.072,0.14,0.29,0.36],[0,1,0],[0.03 0.6 0.03])
b = firpm(N,Fo,Ao,W);

Prctica #2. Filtro FIR


freqz(b,1)
title(' Filtro rechaza-banda - Metodo de diseo de Filtros FIR ptimos de fase lineal y
rizado constante.')

Prctica #2. Filtro FIR

Prctica #2. Filtro FIR

Prctica #2. Filtro FIR

Prctica #2. Filtro FIR

Prctica #2. Filtro FIR

Prctica #2. Filtro FIR

También podría gustarte