Sei sulla pagina 1di 7

UNIDAD PROFESIONAL INTERDISCIPLINARIA EN INGENIERIA

Y TECNOLGIAS AVANZADAS – IPN

PROCESADORES DIGITALES DE SEÑALES


Práctica No. 06

Implementación de filtros digitales FIR

Profr. M. en C. Juan Manuel Madrigal Bravo

Objetivo: Implementación filtros digitales FIR en un procesador digital de señales.

Antecedentes (desarrollar por el estudiante)

Filtros analógicos y digitales


Filtros pasabajas, pasaaltas, pasabanda, rechazabanda
Respuesta al impulso, respuesta en frecuencia, función de transferencia
Respuesta en magnitud normalizada y dB

Material y equipo

1 kit de desarrollo DSK6713


Computadora con CCS v8.x y puerto USB
Micrófono
Audífono
Cable auxiliar 3.5 mm
Matlab

Desarrollo.

1. Verificar que dentro de la carpeta de ti, se encuentren las siguientes subcarpetas en el CCS V8.x:

2. Crear un proyecto con nombre DSP06_FIR.pjt en el Code Composer Studio V8.x. No se admite usar
un proyecto existente.

1/6
UNIDAD PROFESIONAL INTERDISCIPLINARIA EN INGENIERIA
Y TECNOLGIAS AVANZADAS – IPN

PROCESADORES DIGITALES DE SEÑALES


Práctica No. 06

Implementación de filtros digitales FIR

Profr. M. en C. Juan Manuel Madrigal Bravo

3. Verificar que la constante CHIP_6713 esté definida usando la secuencia en el CCS 8.x:

Propiedades → Build → C6000 Compiler → Advanced Options → Predefined Symbols → Pre-define NAME

4. Verificar que esté definido el modelo de acceso de datos de tipo far, usando la siguiente secuencia:

Propiedades → Build → C6000 Compiler → Advanced Options → Runtime Model Options → Data acces
model

5. Agregar al proyecto el archivo: vectors_intr.asm desde zsupport en el cual están contenidos los
vectores de interrupción. (Este archivo forma parte de [3]). En el CCS 8.x este archivo debe copiarse a la
carpeta del proyecto.

6. Agregue las librerías .lib:

En la versión 8.x del CCS agregue las siguientes rutas siguiendo la secuencia: Propiedades→ Build → C6000
Linker → File Search Path → Include Library File
C:\ti\C6xCSL\lib_3x
C:\ti\DSK6713\c6000
C:\ti\ccs710\ccsv7\tools\compiler\c6000_7.4.23\lib

7. Agregar las rutas de las bibliotecas .h:


C:\ti\C6xCSL\include
C:\ti\DSK6713\c6000\dsk6713\include
C:\ti\ccs710\ccsv8\tools\compiler\c6000_7.4.23\include

8. Agregar al proyecto desde zsupport el archivo: C6713dskinit.c en el cual se encuentra el soporte


para las funciones: input_sample, output_sample, comm_intr, etc. (este archivo forma parte de [3]). En el
CCS 8.x este archivo debe copiarse a la carpeta del proyecto.

9. Agregue al proyecto desde zsupport el archivo de comandos del enlazador: c6713dsk.cmd (este
archivo forma parte de [3]). En el CCS 8.x este archivo debe copiarse a la carpeta del proyecto y colocar la
ruta usando la secuencia Propiedades→ General → Linker Command File.

10. Solo para el CCS 8.x copiar el archivo C6713dskinit.h a la carpeta del proyecto.

2/6
UNIDAD PROFESIONAL INTERDISCIPLINARIA EN INGENIERIA
Y TECNOLGIAS AVANZADAS – IPN

PROCESADORES DIGITALES DE SEÑALES


Práctica No. 06

Implementación de filtros digitales FIR

Profr. M. en C. Juan Manuel Madrigal Bravo

11. Crear un archivo que se llame rbfN__FIR.cof e incluya los coeficientes los cuales representan la
respuesta al impulso de un filtro FIR. Este archivo no se necesita agregar al proyecto ya que el programa
principal hace referencia a él. El archivo de coeficientes debe tener el siguiente formato. En el espacio en
blanco coloque el número de coeficientes.

#define N 55 //number of coefficients
float h[N]=
{1.7619E­017, 7.0567E­003, 2.2150E­018,­1.0962E­002, 4.0310E­017,
1.3946E­002, 7.1787E­018,­1.4588E­002, 3.9928E­017, 1.1474E­002,
5.9881E­018,­3.5159E­003,­6.6174E­018,­9.7476E­003,­1.7919E­017,
2.7932E­002,­9.4329E­017,­4.9740E­002, 3.3834E­017, 7.3066E­002,
­3.6228E­017,­9.5284E­002, 3.2194E­017, 1.1365E­001,­2.2165E­017,
­1.2576E­001, 7.8980E­018, 1.3000E­001, 7.8980E­018,­1.2576E­001,
­2.2165E­017, 1.1365E­001, 3.2194E­017,­9.5284E­002,­3.6228E­017,
7.3066E­002, 3.3834E­017,­4.9740E­002,­9.4329E­017, 2.7932E­002,
­1.7919E­017,­9.7476E­003,­6.6174E­018,­3.5159E­003, 5.9881E­018,
1.1474E­002, 3.9928E­017,­1.4588E­002, 7.1787E­018, 1.3946E­002,
4.0310E­017,­1.0962E­002, 2.2150E­018, 7.0567E­003, 1.7619E­017};

12. El núcleo del código en C es el siguiente para implementar el filtrado indicado en la figura es el que se
muestra en la figura siguiente. Observar que la frecuencia de muestreo está a 8 KHz.

#include "dsk6713_aic23.h" // Archivo de soporte para el códec DSK (poner la ruta)


Uint32 fs=DSK6713_AIC23_FREQ_8KHZ; // Frecuencia de muestreo
#include "rbfN55FIR.cof"

//declaración de vectores y variables globales


float x[N];
float yy;
int y;

interrupt void c_int11() //Rutina del servicio de interrupción


{
//declaración de vectores y variables locales
x[0]=input_sample(); //Lectura de una muestra del códec

// ************** coloque aquí la rutina de filtrado de filtrado FIR **************

y=(int) yy;
output_sample(y>>15); //Envío de la muestra filtrada hacia el códec
return;
}
void main()
{
comm_intr(); //Inicializar el codec, DSK y McBSP
while(1); //Bucle infinito a la espera de una interrupción
}

3/6
UNIDAD PROFESIONAL INTERDISCIPLINARIA EN INGENIERIA
Y TECNOLGIAS AVANZADAS – IPN

PROCESADORES DIGITALES DE SEÑALES


Práctica No. 06

Implementación de filtros digitales FIR

Profr. M. en C. Juan Manuel Madrigal Bravo

13. Compilar el proyecto y cargar el código ejecutable en la memoria interna del DSP. Conecte un audífono al
DSK y un micrófono y pruebe el filtro con su propia voz. Describa el efecto sobre su voz de dicho filtro.
(Calificación 6.0).

_________________Voz lejana ______________________________

14. Analizar la señal elpasofs16000Nb16_4.wav para diseñar el filtro FIR apropiado y quitar la interferencia
que posee. Utilizar el toolbox de adquisición de señales de Matlab 2017 para analizar dicha señal en tiempo
real conectando un cable auxiliar a su celular y a la entrada del micrófono de su computadora. Utilice el
siguiente programa:

clear all
fL = 8000;
Fs=16000;
% fr = dsp.AudioFileReader(...
% 'salida_canal.wav',...
% 'SamplesPerFrame',fL);%poner fL/2 en caso de que la Fs de la cancion esté a la mitad de la Fs de
reproduccion
deviceReader = audioDeviceReader(...
'SamplesPerFrame',fL,...
'SampleRate',Fs);
setup(deviceReader);

deviceWriter = audioDeviceWriter(...
'SampleRate',Fs/2);

scope_t_c = dsp.TimeScope(...
'Name','Señal recibida del canal',...
'SampleRate',Fs,...
'TimeSpan',fL/Fs,...
'BufferLength',1e6,...
'YLimits',[-1.1 1.1]);

scope_f_c = dsp.SpectrumAnalyzer(...
'Name','Espectro de señal recibida del canal',...
'SampleRate',Fs,...
'SpectralAverages',1,...
'PlotAsTwoSidedSpectrum',false,...
'RBWSource','Auto');

while 1
signal = deviceReader();
scope_t_c(signal);
scope_f_c(signal);
end
toc
release(udpr);

4/6
UNIDAD PROFESIONAL INTERDISCIPLINARIA EN INGENIERIA
Y TECNOLGIAS AVANZADAS – IPN

PROCESADORES DIGITALES DE SEÑALES


Práctica No. 06

Implementación de filtros digitales FIR

Profr. M. en C. Juan Manuel Madrigal Bravo

15. Una vez diseñado el filtro, obtenga un archivo de coeficientes.

16. Compilar el proyecto y cargar el código ejecutable en la memoria interna del DSP. Conecte un audífono al
DSK y su celular al micrófono del DSK mediante un cable auxiliar y pruebe el filtro. Verifique que la
interferencia se haya eliminado. (Calificación 8.5).
17. Con las herramientas de visualización del CCS, graficar la respuesta al impulso, en frecuencia y en fase
del filtro. (Consulte con el docente este paso). Capture las gráficas obtenidas e inclúyalas en el reporte.

18. Modificar el programa de tal forma que usando los dipswitchs, se pueda seleccionar la salida sin filtrar
(Dip0) y la salida filtrada (Dip1) en tiempo real. Si no se oprime ningún dipswitch no debe haber salida.
(Calificación 10).
19. (Opcional) Implementar todo pero ahora usando poleo en vez de la interrupción 11.

Resultados

 Respuesta de la pregunta 13
 Su propio código de filtrado
 Resultados del análisis del archivo .wav en tiempo y en frecuencia
 Gráficas del filtro FIR diseñado en Matlab (respuesta al impulso, respuesta en frecencia,
respuesta en fase, gráfica de polos y ceros, retardo de grupo).
 Gráficas del filtro FIR visualizado en el CCS V8.x

Cuestionario

1. ¿Para qué se utiliza la interrupción 11?

2. ¿Qué es el poleo (polling)?

3. ¿Para qué sirve la respuesta en fase en un filtro?

4. ¿Para qué sirve el retardo de grupo de un filtro?

5. ¿Para qué sirve el retardo de fase de un filtro?

6. ¿Qué efectos tiene la longitud de un filtro para señales en tiempo real?

7. Investigue acerca de filtros FIR de fase no lineal (ortogonales). Consulte previamente con el docente antes
de responder la pregunta.

8. ¿En qué casos preferimos usar un filtro FIR en comparación con un filtro IIR?

5/6
UNIDAD PROFESIONAL INTERDISCIPLINARIA EN INGENIERIA
Y TECNOLGIAS AVANZADAS – IPN

PROCESADORES DIGITALES DE SEÑALES


Práctica No. 06

Implementación de filtros digitales FIR

Profr. M. en C. Juan Manuel Madrigal Bravo

OBSERVACIONES Y CONCLUSIONES (Escritas a mano por cada miembro del equipo)

6/6
UNIDAD PROFESIONAL INTERDISCIPLINARIA EN INGENIERIA
Y TECNOLGIAS AVANZADAS – IPN

PROCESADORES DIGITALES DE SEÑALES


Práctica No. 06

Implementación de filtros digitales FIR

Profr. M. en C. Juan Manuel Madrigal Bravo

Bibliografía

[1] Code Composer Studio IDE Getting Started Guide, User's Guide. SPRU509f.

[2] F. J. Barrero García, S. L. Toral Marín, M. Ruiz González, Procesadores Digitales de Señal de altas
prestaciones de Texas Instruments, Mc Graw-Hill, 2005.

[3] R. Chassaing, Digital Signal Processing and Applications with the C6713 and C6416 DSK, Wiley-
Interscience, 2005.

[4] S. A. Tretter, “Communication System Design Using DSP Algorithms, with Laboratory Experiments for
the TMS320C6713TM DSK”, Springer 2008.

7/6

Potrebbero piacerti anche