26
Diseño e implementación de Filtros Digitales Mg. Ing. Luis Romero Dr. Ing. Vicente Mut Dr. Ing. Carlos Soria Año 2011

Diseño e implementación de Filtros Digitales - dea.unsj.edu.ardea.unsj.edu.ar/pdselo/Apuntes/Diseno_e_implementacion_de_Filtros... · microcontroladores, como ser PICs y DSPs

Embed Size (px)

Citation preview

Diseño e

implementación de

Filtros Digitales

Mg. Ing. Luis Romero

Dr. Ing. Vicente Mut

Dr. Ing. Carlos Soria

Año 2011

Introducción

Un buen diseño de un filtro digital y su

eficiente implementación en hardware y/o

software es una tarea fundamental en

muchas áreas.

La implementación de filtros digitales en

hardware se realiza a través de dispositivos

microcontroladores, como ser PICs y DSPs.

Estos dispositivos deben ser programados en

lenguaje Assembler y/o lenguaje C.

Contenidos

DSP

Definición y descripción del hardware.

Entorno de Programación

Descripción del entorno de Visual DSP.

Análisis y diseño de filtros

Etapa de simulación en Matlab.

Diseño e implementación de filtros en C

Implementación de los filtros en el DSP

DSP - Definición

Un Procesador Digital de Señales o DSP es:

un sistema basado en un procesador o

microprocesador ,

que posee un juego de instrucciones, un hardware y

un software optimizados para aplicaciones que

requieran operaciones numéricas a muy alta

velocidad.

Debido a esto es especialmente útil para el

procesado y representación de señales

analógicas en tiempo real.

DSP – Aplicación de Filtrado

Si bien puede trabajar con

señales analógicas, por ser

un sistema digital necesitará

un conversor A/D a la

entrada y uno D/A a la salida.

Previo a la conversión, existe un filtro anti-aliasing para

poder muestrear correctamente la señal analógica.

Igualmente a la salida, existirá un filtro anti-aliasing para la

recomposición de la señal analógica.

DSP – Características del

ADSP-21992

Arquitectura Harvard

Instrucciones de 16 bits con 160 MIPS

Conversor A/D de 8 canales con una

resolución de 12 bits

Bloques de memoria RAM para

programa y datos

Salidas PWM

ALU

CPUMemoria de Programa

Memoria de Datos

I/O

Puertos I/O programables

Timers de alta precisión

Interrupciones programables por software

Comunicación serial – RS 232

Conversor D/A

DSP – Conversor A/D

Señal de entrada analógica [-1,1]V

Conversor A/D 12 bits

Frecuencia máxima 80 KHz

Visual DSP: Lenguaje de

Programación

Emplea un híbrido entre Assembler y C

Con esto logra: Eficiencia y memoria de programa

Portabilidad

Tiempo de desarrollo

Funciones de librerías C estándar: cos, sin de math.h

Funciones de librerías DSP: operaciones con matrices, convolución, transformada discreta de Fourier, etc.

Funciones de lectura y escritura de registros: sysreg_read y sysreg_write para registros no mapeados en memoria, y io_space_read y io_space_write para registros mapeados en memoria

Visual DSP: Entorno y archivos

Tipo de Archivos:

Workspace: *.vdw

Project: *.dpj – Contiene archivos:

*.h: declaración de vbles. y fciones.

*.dsp - *.c: implementación de fciones.

*.ldf: utilizado por el enlazador (linker)

Proceso de Compilación y Enlace:

Archivos Compilador Enlazador Cargador

*.c

*.h

*.dsp

*.dpj *.dxe

Visual DSP: Procedimiento

1. Abrir el proyecto de trabajo *.dpj

Visual DSP: Procedimiento

2. Generar el archivo ejecutable (a) y cargarlo

en la memoria RAM del Kit ADSP-21992 (b)

3. Ejecutar el programa cargado

2-(a) 2-(b) 3

Visual DSP: Procedimiento

4. Visualización de datos

Visual DSP: Visualización de

datos

Variables que se

grafican:

x: señal de entrada

y1: salida filtro FIR

y2: salida filtro IIR

Cantidad de puntos:

4096

Visual DSP: Exportar datos

Para exportar los datos a Matlab, hacer click

con el botón derecho sobre el cuadro de la

imagen. Luego exportar como archivo *.txt

Pasos de la Práctica

1) Adquisición de datos.

2) Análisis espectral.

3) Período de muestreo.

4) Diseño de filtros digitales (IIR, FIR).

5) Análisis de estabilidad, respuesta impulsiva y respuesta en frecuencia de los filtros FIR e IIR diseñados.

6) Implementación del filtro.

7) Análisis del resultado obtenido.

Adquisición de datos

max

max

max

max

1

0

max

max

RV

VR

RRR

VV

RLDR

s

o

o

s

V [Volt]

Tiempo [seg.]

Matlab: Análisis de datos

En el entorno de Matlab se realizará la visualización de

los datos digitalizados, y se analizará el contenido

frecuencial de los mismos para ajustar la frecuencia de

muestreo

La rutina a emplear es:

[t,x,y1,y2]=dspFiltro(ts) (en la ventana que se abre elegir Archivo: *.txt)

PARAMETROS – ts: periodo de muestreo

SALIDA –t: tiempo

x: señal

y1: señal filtrada FIR

y2: señal filtrada IIR

Matlab: Análisis de datos

Análisis Espectral

Comandos Matlab

SF=125;

F=0:0.5:SF/2;

H = freqz(x,[1 zeros(1,length(x)-1)],F,SF);

plot(F,abs(H)),grid

plot(F,unwrap(angle(H))),gridFrecuencia [Hz]

abs(X)

Recordar que Frecuencia de Nyquist = 2 fmax

En la práctica SF es 5 o 10 fmax

Criterio para selección de SF

Visual DSP: Modificación de SF

Archivo: SPI_dac.dsp

//Timer: 1 Khz

.VAR Pmuestreo = 0x000a; (valor en hexadecimal del divisor

de tiempo)

//Ejemplo: Pmuestreo = 0x0002; entonces la Frecuencia

muestreo será 1000/Pmuestreo=500 Hz

Diseño de Filtros en Matlab: FIR

[hw] = firwind(TY,A,SF,FP,FS,WIND)

TY= Tipo de filtro, por ejemplo pasa-banda ‘bp’

A= vector con la atenuación en la banda de paso y de rechazo en DB

SF: frecuencia de muestreo en Hz

FP: banda de paso

FS: banda de rechazo

WIND: tipo de ventana, por ejemplo 'hamming'

Ejemplo: hw = firwind(‘lp',[2 30],125,5,30)

hw contiene los coeficientes del filtro FIR

La banda de paso se debe seleccionar de acuerdo a la aplicación particular.

Dada una banda de paso, la banda de rechazo y las atenuaciones respectivas

definen el orden del filtro.

[N,D]= dfdiir(TY,TY1,TY2,A,SF,FP,FS)

TY= Aproximación utilizada, por ejemplo transformación bilineal

TY1= Tipo de filtro, por ejemplo pasa-banda ‘bp’

A= vector con la atenuación en la banda de paso y de rechazo en DB

SF: frecuencia de muestreo en Hz

FP: banda de paso

FS: banda de rechazo

Ejemplo: [N,D] = dfdiir('bw','lp','trap',[2 30],125,5,30)

N y D son los coeficientes de los polinomios num. y den. del filtro IIR

La banda de paso se debe seleccionar de acuerdo a la aplicación particular.

Dada una banda de paso, la banda de rechazo y las atenuaciones respectivas

definen el orden del filtro.

Diseño de Filtros en Matlab: IIR

Análisis de Filtros Diseñados

Estabilidad de filtros IIR:roots (DEN)

ans =

0.7992 + 0.1667i

0.7992 - 0.1667i

¿Es el filtro estable?

Espectro en frecuencia[H,W]=freqz(N,D);

F=W/(2*pi);

plot(F.*SF,abs(H)),grid

dB=20log Vs/Ve

Visual DSP: Carga de filtros

diseñados

Archivo: main.h

//puntos del filtro FIR

#define N 12

//orden+1 del numerador del filtro IIR

#define NUM 3

//orden+1 del denominador del filtro IIR

#define DEN 3

// maximo entre N y NUM

#define MAX 12

Archivo: main.c

// COEFICIENTES DEL FILTRO FIR

double pm a1[] = {

}

// COEFICIENTES NUMERADOR DEL FILTRO IIR

double a[] = {

};

// COEFICIENTES DENOMINADOR DEL FILTRO IIR

double b[] = {

};

Señal medida y filtrada

Señal con ruido (azul)

Señal filtrada por IIR (verde)

Señal filtrada por FIR (rojo).

Análisis de Eficiencia de los

Fitlros

• Para determinar la eficacia del filtrado,

realizaremos el análisis de las siguientes

auto-correlaciones:• Señal de entrada

• Salida FIR

• Salida IIR

• Diferencia salida FIR con señal de entrada

• Diferencia salida IIR con señal de entrada

• Comando a emplear:

plot(xcorr(x,x,coeff)),grid