Red de conocimiento informático - Conocimiento de Internet de las cosas - Ayúdame a encontrar un artículo sobre filtros.

Ayúdame a encontrar un artículo sobre filtros.

El filtro digital FIR es un método clásico de procesamiento de señales digitales y existen muchos métodos de diseño. Al diseñar un filtro FIR utilizando un chip DSP, primero puede simular el filtro digital FIR en MATLAB y los coeficientes de filtro generados se pueden verter directamente en el DSP para su programación. Al programar, puede utilizar el exclusivo algoritmo de búfer circular de DSP para diseñar filtros digitales FIR, lo que puede reducir en gran medida la complejidad del diseño y hacer que el diseño del filtro sea rápido y simple.

Fir; Fir; algoritmo de búfer circular DSP

1 Introducción

El filtrado juega un papel muy importante en el procesamiento de señales. El filtrado digital es un método básico de procesamiento de señales digitales. En comparación con el filtrado analógico, el filtrado digital tiene muchas ventajas. No sólo puede evitar la variación de voltaje inherente, la variación de temperatura y los problemas de ruido de los filtros analógicos, sino que también cumple con los estrictos requisitos del filtro en cuanto a amplitud y fase. El filtro de respuesta de impulso finito de paso bajo (filtro FIR de paso bajo) tiene sus ventajas únicas. Debido a que el sistema FIR solo tiene puntos cero, el sistema siempre es estable y es fácil lograr una fase lineal, lo que permite realizar un filtrado multicanal. implementado.

2 Estructura básica y método de diseño del filtro FIR

2.1 Estructura básica del filtro FIR

Supongamos A i (i = 0, 1, 2, .. ., n-1) es la respuesta al impulso del filtro y la señal de entrada es x(n). La relación entrada-salida del filtro FIR es la siguiente:

La estructura del filtro FIR. se muestra en la Figura 1:

Figura 1

2.2 Método de diseño del filtro fir

(1) Método de diseño de la función de ventana

Inicio Desde el dominio del tiempo, el infinito ideal hd (n) se corta en h (n) finito con una determinada función de ventana, y h (n) se utiliza para aproximar hd (n) De esta manera, la respuesta de frecuencia H (ejω). ) obtenido está cerca de la frecuencia ideal requerida Sonido Hd(ejω). La ventaja es que es simple y práctico, pero la desventaja es que la frecuencia de corte es difícil de controlar.

(2) El método de diseño de muestreo de frecuencia comienza desde el dominio de la frecuencia, muestrea la respuesta de frecuencia ideal dada HD (EJω) a intervalos iguales y realiza una transformada de Fourier discreta inversa en el h (k) obtenido. Se obtiene H(k), y la respuesta de frecuencia correspondiente H(EJω) se utiliza para aproximar la respuesta de frecuencia ideal HD(EJω). La ventaja es que está diseñado directamente en el dominio de la frecuencia, lo que es fácil de optimizar. La desventaja es que la frecuencia de corte no se puede seleccionar libremente.

(3) Los dos primeros métodos de diseño asistido por computadora de aproximación de ondulación igual tienen errores muy pequeños en los puntos de muestreo de frecuencia, pero los errores en los puntos que no son de muestreo no se distribuyen uniformemente a lo largo del eje de frecuencia. de frecuencia de corte También está sujeto a restricciones innecesarias. Por lo tanto, basándose en la teoría de Chebyshev, se propone un método de diseño asistido por computadora de aproximación de ondulación igual. No sólo puede especificar con precisión los bordes de la banda de paso y la banda de parada, sino que también puede lograr, en cierto sentido, la mejor aproximación a la respuesta de frecuencia deseada.

3 Algoritmo de búfer circular

Para un filtro FIR de N etapas, se abre un búfer de N unidades llamado ventana deslizante en la memoria de datos y se almacenan las últimas N muestras de entrada. en una ventana corredera. Cada vez que se ingresa una nueva muestra, la nueva muestra sobrescribe los datos más antiguos en la ventana deslizante y no es necesario mover otros datos en la ventana deslizante. El registro BK (longitud del búfer en anillo) en el chip se utiliza para el direccionamiento indirecto de la ventana deslizante, y la primera dirección del búfer en anillo es adyacente. A continuación, tome el búfer circular del filtro FIR con N = 5 como ejemplo para ilustrar cómo se abordan los datos en el búfer circular. La estructura del búfer circular de 5 niveles se muestra en la figura, con la dirección de orden inferior en la parte superior.

......

Como se puede ver en lo anterior, aunque los datos antiguos y nuevos en el búfer circular no son sencillos, las ventajas de usar un búfer circular para implementar Z-1 son obvios: no se requiere movimiento de datos y no hay un período extremo de memoria de datos que requiera leer una vez y escribir una vez, por lo que el búfer circular se puede ubicar en cualquier lugar de la memoria de datos (requiere que el búfer lineal esté ubicado en DARAM).

La cuestión clave al implementar el direccionamiento indirecto del buffer circular es: ¿cómo hacer que las primeras posiciones de n unidades de buffer circular sean adyacentes? Para ello, se debe utilizar la memoria BK (longitud de búfer circular) para implementar el direccionamiento indirecto modular.

Los comandos disponibles son:

… *ARx+%; Corrección incremental y de módulo ARX: ADDR = ARX, ARX = CIRC (ARX+1)

… *ARx-%; ARX ​​por módulo: ADDR = ARX, ARX = CIRC (ARX-1)

…* ARx+0%; agregar AR0, modificar ARX según módulo: addr = ARX, ARX = CIRC ( ARX+AR0 ).

…* ARx-0%; restar AR0, modificar ARX por módulo: ADDR = ARX, ARX = CIRC (ARX-AR0).

…*+ARx(lk)%; agregar (lk) y modificar ARX por módulo: addr = CIRC(ARX+lk), ARX = CIRC (ARX+AR0).

El símbolo "circ" es el valor en la memoria BK (longitud del búfer circular) (como el valor N después del filtrado FIR), utilizado para (ARx+1), (ARx+AR0), (ARx -AR0) o (ARx+lk). Esto garantiza que el puntero ARx del búfer circular siempre apunte al búfer circular, de modo que las unidades superior e inferior del búfer circular sean adyacentes.

El algoritmo de direccionamiento del bucle se puede resumir de la siguiente manera:

si 0 índice + tamaño de paso& ltBK: índice = índice + tamaño de paso

De lo contrario, si índice + Paso BK: índice = índice + paso – BK

De lo contrario, si índice+paso & lt; BK: índice = índice + paso + BK

En el algoritmo anterior, el índice es The Puntero de dirección almacenado en el registro auxiliar, el paso es el tamaño del paso (es decir, el valor del índice). El tamaño del paso puede ser positivo o negativo y su valor absoluto es menor o igual a la longitud del búfer circular (BK). Según el algoritmo de direccionamiento circular descrito anteriormente, las primeras celdas del búfer circular pueden ser adyacentes.

Para que el búfer circular funcione correctamente, además del registro de longitud del búfer circular (BK) utilizado para especificar el tamaño del búfer circular, los k bits menos significativos de la dirección inicial del búfer circular deben ser 0. El valor de k satisface la longitud del buffer de microciclo 2k y gt.

4 Implementación del filtro FIR en DSP

El filtro FIR de coeficiente simétrico se usa ampliamente debido a sus características de fase lineal, especialmente en situaciones como módems que requieren una alta distorsión de fase.

Por ejemplo, un filtro FIR con N=8, si a(n)=a(N-1-n), es un filtro FIR simétrico y su ecuación de salida es:

y(n)= A0X(n)+a 1x(n-1)+A2x(n-2)+A3x(n-3)+A3x(n-4)+a 1x(n

Si se reescribe como: y(n)= A0[x(n)+x(n-7)]+a 1[x(n-1)+x(n-6)]+a2[x(n- 2) )+x(n-5]. Se puede ver que el número de operaciones de multiplicación se reduce a la mitad. Esta es otra ventaja del FIR simétrico.

Los puntos clave de la implementación del filtro FIR simétrico C54X son los siguientes:

(1) Abra dos áreas de cálculo del búfer circular en la memoria de datos: el nuevo búfer circular almacena datos nuevos y el búfer circular antiguo almacena datos antiguos. La longitud del búfer circular es. N/2.

(2) Establezca el puntero del búfer circular: AR2 apunta a los datos más recientes en el nuevo búfer circular y AR3 apunta a los datos más antiguos en el búfer circular antiguo

(3. ) Configurado en la memoria del programa

(4) AR2+ AR3 AH (bit alto del acumulador A), AR2-1AR2, AR3-1 AR3. Borre el acumulador B, repita 4. veces (I = 0, 1, 2, 3): ah * coeficiente ai+B B, el puntero del coeficiente (PAR) aumenta en 1. AR2+ AR3AH, AR2 y AR3 disminuyen en 1.

(6) Guardar y generar resultado.

(7) Corrija el puntero de datos para que AR2 y AR3 apunten a los datos más antiguos en el nuevo búfer circular y a los datos más antiguos en el circular anterior. búfer respectivamente.

(8) Reemplace los datos más antiguos en el búfer circular anterior con los datos más antiguos en el búfer circular nuevo y disminuya el puntero del búfer circular anterior en 1.

(9) Introduzca nuevos datos en el nuevo búfer circular para reemplazar los datos más antiguos.

Repita los pasos (4) a (9).

La instrucción FIRS (Filtro de respuesta de impulso finito simétrico) se utiliza para la programación. Los pasos de operación son los siguientes:

FIR Xmem, Ymem, Pmem

. Realizar análisis Pmad

Cuando (RC)0

(B)+(A(32-16))× (Pmem)B es procesado por PAR) b

( (Xmem)+(Ymem))& lt; La memoria de datos se lee dos veces a través de los buses C y D y un coeficiente se lee simultáneamente a través del bus P.

La implementación del filtro FIR en DSP en este artículo se basa en MATLAB y sus ideas de diseño son las siguientes:

(1) El entorno MATLAB genera coeficientes de filtro y datos de entrada y simula el filtrado del proceso de filtrado, visualiza el efecto de filtrado en tiempo real del filtro en datos de entrada dinámicos;

(2) Importe directamente los coeficientes de filtro obtenidos en CCStudio y luego almacene la entrada del filtro datos en el espacio de datos C54x como datos de prueba de entrada de filtro diseñados por CCStudio;

(3) En el entorno CCStudio, use la fórmula de filtro FIR en lenguaje ensamblador para diseñar el programa de filtro FIR y use el. filtrar los coeficientes generados por MATLAB y los datos de prueba de entrada para el cálculo, y utilizar el submenú Ver/Gráfico/Tiempo/Frecuencia en el menú CCStudio para mostrar gráficamente los datos de entrada y los resultados del filtrado (los resultados se muestran en la Figura 2);

Figura 2 (a) Datos de entrada (entrada)

Figura 2(b) Datos filtrados (salida)

Cambie la dirección de datos de entrada del filtro FIR a lectura y escribir la dirección de datos del espacio de E/S externo o el puerto McBSP, o la dirección del búfer incorporado del espacio de datos cambiando la dirección de datos del resultado del filtrado FIR a la dirección de datos de salida del espacio de E/S externo o el puerto McBSP; , O la dirección del búfer incorporada del espacio de datos, se completa el programa de filtrado FIR de datos en tiempo real basado en C54xDSP.

Materiales de referencia:

[1] Cheng Peiqing. Tutorial de procesamiento de señales digitales [M]. Beijing: Prensa de la Universidad de Tsinghua 1999.

[2]Sun Zongying, Xie Honglin. Principios de diseño y aplicación de TMS320C5xDSP [M]. Beijing: Tsinghua University Press. 2002

[3] Chen Yayong et al. Explicación detallada del procesamiento de señales MATLAB [M]. Beijing: People's Posts and Telecommunications Press 2001

[4] Texas Instruments. Guía del usuario de herramientas de lenguaje ensamblador TMS320C54x

[5] Texas Instruments. Guía del programador DSP TMS320C54x