diseño de una arquitectura para la implementacion de un filtro

Anuncio
XV Workshop Iberchip, Buenos Aires - Argentina, 25 - 27 de Marzo de 2009
DISEÑO DE UNA ARQUITECTURA PARA LA IMPLEMENTACION DE UN
FILTRO ADAPTATIVO RLS SOBRE UN FPGA
Jorge Benavides Aspiazu, Walter Calienes Bartra, Carlos Silva Cárdenas
Grupo de Microelectrónica de la Pontificia Universidad Católica del Perú
Sección de Electricidad y Electrónica
[email protected] , [email protected], [email protected]
sistemas basados en algoritmos adaptivos son
implementados en Microcontroladores o Procesadores
Digitales de Señales (DSP), los cuales no cuentan con
una arquitectura adecuada y no logran un procesamiento
en tiempo real [3].
El presente trabajo pretende mostrar una arquitectura
capaz de realizar procesamiento en tiempo real del
algoritmo RLS, para lo cual se plantea el diseño del
mismo en VHDL y su posterior implementación en un
FPGA. La hipótesis inicial para este trabajo es que
aprovechando el paralelismo en el FPGA se pueden
realizar varias tareas del algoritmo en simultáneo como
para lograr una aplicación en tiempo real.
El trabajo está dividido como sigue: La sección 2
explicará los conceptos básicos sobre algoritmos
adaptivos en general, además del algoritmo RLS en
particular. La sección 3 muestra la arquitectura diseñada.
La sección 4 muestra los resultados obtenidos a partir
del diseño planteado y finalmente la sección 5 recoge
las conclusiones obtenidas después de analizar los
resultados.
ABSTRACT
Adaptive systems are becoming an interesting research
field due to their capacity to deal with signals that have
an unpredictable behavior or to model plants with
unknown parameters. Although currently there are
several applications that make use of adaptive algorithms,
the use of a more accurate algorithm like the Recursive
Least Square (RLS) has not been taken into Real Time
applications, due to its extremely high computational
requirements. This paper approaches the problem of
designing an RLS adaptive filter on an FPGA to deal
with Real Time computations. The adaptive filter is
designed to be implemented later on an Altera’s Cyclone
II FPGA.
1. INTRODUCCIÓN
Los sistemas adaptivos en la actualidad han
encontrado su lugar en muchas aplicaciones donde la
capacidad de aprendizaje del sistema es un factor
importante. Estas aplicaciones van desde el
modelamiento de plantas con propiedades desconocidas,
hasta el uso de estos sistemas en filtros capaces de
cancelar el ruido [1].
Existen varios algoritmos para lograr el cálculo de
los coeficientes en un sistema dado, los cuales varían en
complejidad. Entre los más sencillos se encuentra el
algoritmo Least Mean Square (LMS). Este algoritmo es
muy usado debido a su facilidad de implementación y
baja utilización de recursos computacionales [1] [2].
En el otro lado del espectro encontramos al algoritmo
Recursive Least Square (RLS), cuya característica
principal es su gran nivel de precisión en el cálculo de
los nuevos coeficientes debido a que cuenta con la
posibilidad de un factor de ganancia variable, esto se
traduce en algunas aplicaciones como la de control
activo de ruido en mayores niveles de atenuación [1] [2].
Debido a estas características los recursos
computacionales para implementar el algoritmo son muy
grandes, esto imposibilita la utilización del mismo en
aplicaciones en tiempo real. Debido a que la mayoría de
2. CONCEPTOS BASICOS DE ALGORITMOS
ADAPTIVOS
Un sistema adaptivo puede modelarse según lo mostrado
en la figura 1. Como se puede apreciar se tiene una
planta con características definidas, cuya salida es
ingresada al mecanismo adaptivo luego de ser restada de
una señal deseada, con lo que dicho mecanismo puede
calcular los coeficientes nuevos necesarios para adaptar
la respuesta de la planta a la señal deseada. Las
ecuaciones mostradas modelan el funcionamiento de un
sistema adaptivo [3].
23
y (t )
u (t ) * w(t ).................................(1)
e(t )
d (t ) y (t )................................(2)
XV Workshop Iberchip, Buenos Aires - Argentina, 25 - 27 de Marzo de 2009
en cada iteración del algoritmo, lo cual traducido a una
implementación real implica muchos más recursos
computacionales y un mayor tiempo de procesamiento.
Es posible hacer el cálculo de la matriz P(n) mucho más
veloz, ya que lo que interesa para el cálculo es su
diagonal [2].
Para este caso, en el cual se desea cancelar el ruido
acústico, se deberá usar como señal deseada d(n) a la
señal a filtrar y como señal de entrada u(n) al ruido
autocorrelacionado [5]. También se usará una cantidad
de coeficientes de w(n) de N=32 [3] para realizar los
cálculos del filtro.
Figura 1. Diagrama de Bloques de un Modelo Adaptivo
genérico.
3. DISEÑO DE LA ARQUITECTURA
PROPUESTA
Donde u(t) es la señal de entrada, y(t) es la señal de
salida ya filtrada, d(t) es la señal deseada a la salida y
e(t) es el error entre d(t) e y(t). En este caso, la señal de
entrada u(n) pasa a la Planta que contiene los
coeficientes w(n) (un filtro FIR) y devuelve una señal
y(t) cuyo resultado se muestra en (1). En el momento
que la planta entrega el resultado y(t), esta resta a una
señal d(t) y produce una señal de error e(t) cuyo
resultado se muestra en la ecuación (2), la cual es el
parámetro que le permite saber al mecanismo adaptivo
que tan “lejos” se encuentra la planta de tener una
respuesta similar a la señal deseada d(t). Conjuntamente
con la señal u(t) se calculan los nuevos coeficientes w(t)
para la planta usando un Mecanismo Adaptivo de
Control de Coeficientes [4].
Con la descripción de un sistema adaptivo genérico
pasaremos a describir rápidamente el funcionamiento del
algoritmo RLS, el cual está gobernado por cuatro
ecuaciones [1], mostradas a continuación.
K ( n)
.
e( n )
š
A partir de lo mencionado en la parte anterior se inició el
diseño planteando los parámetros para los cuales el
sistema deberá responder. Para el diseño se eligió como
aplicación un sistema de cancelación de ruido acústico,
para lo cual tomaremos las consideraciones de diseño
descritas en [3], utilizando una frecuencia de muestreo
de 40 kHz y un formato de representación del número
de 16 bits en signo magnitud. La decisión de utilizar
signo magnitud es simplemente por el hecho de
simplificar el Hardware de la unidad de procesamiento
aritmético, sin embargo esto no afecta significativamente
el resultado en el cálculo de los coeficientes.
Una vez determinados los parámetros se procedió a
analizar el conjunto de ecuaciones para determinar una
arquitectura capaz de resolver estas ecuaciones.
Utilizando como referencia la arquitectura de [6], se
planteó un arreglo de máquinas de estados finitas (FSM)
capaces de resolver las ecuaciones, con una unidad
aritmética que permita resolver las operaciones básicas
(sumas, restas, multiplicaciones, divisiones) y un arreglo
de memoria para almacenar los resultados. Un esquema
general de la arquitectura es mostrada en la figura 2.
U 1P(n 1)u (n)
.................(3)
1 U 1u + P (n 1)u (n)
/+
d (n) w (n 1)u (n)......................(4)
š
w(n)
w(n 1) K (n)e(n)......................(5)
P ( n)
U 1P(n 1) U 1k (n)u + (n) P(n 1).....(6)
De estas ecuaciones es importante resaltar algunos
elementos, en primer lugar u(n) y w(n) corresponden a
los vectores de señal de entrada y coeficientes
respectivamente. P (n) es la matriz de autocorrelación
inversa de u(n), K(n) es el vector de ganancia de
Kalman y U es el factor de olvido, el cual es un valor
muy cercano a uno.
De la ecuación (5) podemos observar que para el
cálculo de nuevos coeficientes utilizamos el factor de
ganancia de Kalman, este factor permite una mejor
convergencia del sistema, sin embargo como podemos
ver de la ecuación (3) el cálculo de este factor se realiza
Figura 2. Esquema general de la arquitectura propuesta.
La implementación de la Unidad Aritmética (UA) se
realizó de manera modular con lo que se facilita la
modificación de la cantidad de números a operar de
manera sencilla y rápida, dado que las únicas
operaciones necesarias para el algoritmo son las cuatro
operaciones aritméticas básicas. Para la arquitectura
propuesta en este trabajo se propuso calcular 4
operaciones por vez, con lo que el diseño de la UA
queda mostrado en la figura 3.
24
XV Workshop Iberchip, Buenos Aires - Argentina, 25 - 27 de Marzo de 2009
dividendo
cociente
División
divisor
residuo
División
2n
concatenador
Figura 5. Bloque de División
Respecto a la Unidad Central de Control (UCC), esta
se basará en una Máquina de Estado Arbitral (AFSM),
la cual activa a las Máquinas de Estado Operativas
(OFSM) en el momento adecuado. La AFSM sólo se
encarga de activar la OFSM adecuada y recibe una señal
de esta OFSM cuando acaba su operación, pasando a
activar la siguiente OFSM de acuerdo a su secuencia.
Las OFSMs se encargan de realizar cada una de las
operaciones para poder obtener los resultados de las
ecuaciones (3), (4), (5) y (6), además de ordenar la
lectura o escritura de los bloques de RAM, direccionar
los Datos de y hacia la UA y ordenar el “OpCode” de la
UA. Las operaciones de las OFSMs se describen en [6] y
son las siguientes:
Figura 3. Diseño de la UA
Las operaciones de suma y resta son directamente
implementables en Hardware por lo que no se requiere
de una mayor explicación sobre ellas. Por otro lado la
multiplicación y división si requieren una atención
especial pues ambas son de relativa complejidad al
momento de ser llevadas a Hardware.
Para la multiplicación se realizó un diseño que hace
uso de operaciones en serie de sumas y operaciones
lógicas AND, un diseño simplificado se muestra en la
figura 4. La ventaja de utilizar este diseño es que la
utilización de área es menor dado que se utilizan solo
sumadores y compuertas AND.
P (n 1) u (n )
½
°
Den 1 u (n ) Z1 (n )
°
°
K (n ) Z1 (n) / Den
°
WhU (n) w H (n 1)u (n)
°
°
X i (n) d (n ) WhU (n )
¾(7)
W (n) w(n 1) K (n) X i (n)°
°
°
Z 2 (n) u H (n) P (n 1)
°
P (n) P (n 1) Z 2 (n) K (n) °
°
Y W (n ) u ( n)
¿
Z1 ( n )
H
La AFSM realiza estas operaciones en el mismo
orden que se indica en (7), lo cual significa que esta
requiere de once estados (las nueve operaciones, un
estado de Reinicio y un estado de Término de
Ejecución).
Si se utilizan los resultados de las operaciones
mostradas en (7), se puede llegar a la conclusión que se
requieren de once bloques de RAM, las cuales varían de
tamaño dependiendo que si son escalares, vectores o
matrices. Esto se puede inferir de observar el conjunto
de ecuaciones, pero si se observan con cuidado es puede
llegar a la conclusión de que se pueden reutilizar valores
y con esto reducir la cantidad de memoria RAM a usarse
para guardar valores temporales; entonces se modifican
el conjunto de ecuaciones (7) de la siguiente forma:
haciendo Z1(n)=K(n), w(n-1)=W(n) y P(n-1)=P(n).
Entonces:
Figura 4. Diseño simplificado del bloque de
multiplicación [7].
Respecto al bloque de división se utilizó un
algoritmo de desplazamiento de dividendo y divisor [7],
la cual introduce la ventaja de utilizar sólo operaciones
de concatenación y comparación. Para realizar la
división de cada una de las partes de un número (parte
real y parte fraccionaria) se divide primero el dividendo
entre el divisor; luego el residuo de esta división (parte
real) se multiplica por un factor 2n para pasar
nuevamente por el bloque de división y dividirla
nuevamente por el divisor, obteniendo la parte
fraccionaria. La figura 5 muestra un esquema de cómo
está compuesto el bloque de división.
25
XV Workshop Iberchip, Buenos Aires - Argentina, 25 - 27 de Marzo de 2009
Tabla 2. Multiplicación de 16 bits.
½
°
Den 1 u (n) K (n)
°
°
K (n) K (n) / Den
°
H
WhU (n) W (n) u (n)
°
°
X i (n) d (n) WhU (n) ¾(8)
W ( n) W ( n) K ( n) X i ( n) °
°
°
Z 2 ( n) u H ( n) P ( n)
°
P ( n) P ( n) Z 2 ( n) K ( n) °
°
Y W ( n) u ( n)
¿
K ( n)
P ( n ) u ( n)
H
Tipo de
Diseño
Tiempo de
Ejecución
Velocidad
Balanceado
Área
48.091ns
48.091ns
50.798ns
Tipo de
Diseño
Tiempo de
Ejecución
Velocidad
Balanceado
Área
95.363ns
97.517ns
98.001ns
K(n)
WhU(n)
Xi(n)
W(n)
Z2(n)
P(n)
Den
Y
Dimensiones
de la RAM
(N=32)
Nx1
1x1 (escalar)
1x1 (escalar)
Nx1
1xN
NxN
Escalar
Escalar
117.34mW
117.39mW
117.39mW
Elementos
Lógicos
usados
976
970
970
Disipación
de Potencia
117.47mW
117.46mW
117.42mW
Tabla 4. Unidad Aritmética de 16 bits (uno de los cuatro
módulos)
Tipo de
Diseño
Tiempo de
Ejecución
Velocidad
Balanceado
Área
86.360ns
88.678ns
90.827ns
Tabla 1. Bloques de RAM
Valor que
Almacena
Disipación
de Potencia
Tabla 3. División de 16 bits.
Si se observa el conjunto de ecuaciones (8), ahora se
necesitarán sólo 8 bloques de RAM, los cuales manejan
números de 16 bits en signo magnitud y usa una
cantidad de coeficientes de N=32. Las memorias RAM a
usar se detallan en la Tabla 1. El total de bits usados para
implementar el Bloque de RAM será de 17984.
Nombre del
Bloque de
RAM
RAM_K
RAM_WU
RAM_XI
RAM_W
RAM_Z2
RAM_P
RAM_Den
RAM_Y
Elementos
Lógicos
usados
523
509
509
Número de
bits que
almacena
512
16
16
512
512
16384
16
16
Elementos
Lógicos
usados
1662
1621
1621
Disipación
de Potencia
117.59mW
117.81mW
117.74mW
Para el caso de la arquitectura completa, la cual
incluye la UA compuesta de 4 UAs de 16bits, la AFSM,
las 9 OFSMs y el Bloque de RAM, arrojó los resultados
mostrados en la tabla 5.
Tabla 5. Filtro RLS completo.
Adicionalmente hay dos registros que sirven para
sincronizar la entrada de los datos u(t) y d(t). En el caso
de u(t), se toman N muestras para entrar al filtro. Para el
caso de d(t), sólo se toma una muestra (la que está
presente en ese momento) para realizar la operación.
Tipo de
Diseño
Tiempo de
Ejecución
Velocidad
Balanceado
Área
51.136us
53.935us
62.108us
Elementos
Lógicos
usados
6697
6563
6477
Disipación
de Potencia
120.59mW
120.81mW
120.74mW
5. CONCLUSIONES
4. RESULTADOS
El algoritmo RLS es una excelente forma de filtrar
una señal cualquiera usando una señal deseada d(t) como
modelo, pero, lamentablemente, si se implementa usando
las ecuaciones de este filtro tal cual se dan en la teoría,
su implementación en Hardware y costo computacional
se eleva, además de que se requiere de una velocidad de
cálculo muy alta. Los mayores problemas son los
cálculos de la matriz de autocorrelación inversa P(n), la
cual es de NxN, y del vector de ganancia Kalman K(n)
(ya que contiene divisiones de números reales).
Es importante notar que dado que las operaciones
involucradas son operaciones entre vectores y matrices,
significa que existen muchos accesos a memoria los
El diseño del filtro RLS se realizó utilizando el lenguaje
de descripción de hardware VHDL, previamente
validada usando LabVIEW 8 [4], considerando una
descripción genérica y modular, y fue sintetizado usando
las herramientas del Quartus II v.7.2. El dispositivo
utilizado para la implementación fue el FPGA Cyclone
II EP2C35F672C6 de Altera.
Los resultados del proceso de síntesis de la
multiplicación, división y de la UA completa se
muestran en las tablas 2, 3 y 4, en la cuales se puede ver
los resultados entre el uso de un diseño balanceado, de
alta velocidad y de área pequeña.
26
XV Workshop Iberchip, Buenos Aires - Argentina, 25 - 27 de Marzo de 2009
cuales pueden perjudicar el desempeño del sistema. Es
por esto que es recomendable realizar un estudio
minucioso del algoritmo con el objetivo de realizar pasos
en paralelo y optimizar las operaciones de álgebra lineal.
6. REFERENCIAS
[1]“Active Noise Control Systems: Algorithms and DSP
Implementations ”. Kuo, Sen M. and Morgan, Dennis
R. Wiley Series in Telecommunications and Signal
Processing. 1996.
[2]“Comparación
de
algoritmos
feed-forward
adaptativos para el control activo de ruido en un
conducto” M.A.Cugueró, R.S.Sánchez Peña, A.Masip,
B.Morcego, J.Quevedo, V.Puig, T.Pàmies, J.Romeu.
Universitat Politècnica de Catalunya. 2005.
[3]“Diseño de un Procesador para el Cálculo del
algoritmo RLS”. Tesis de Licenciatura. Benavides
Aspiazu, Jorge. Pontificia Universidad Católica del Perú.
2007.
[4]”Simulación de un Filtro Adaptativo RLS para su
Futura Implementación en un ASIC” J. Benavides, W.
Calienes. Pontificia Universidad Católica del Perú,
Electro Electrónica N° 30, 2do Semestre 2008.
[5]“Estudio Comparativo y Aplicaciones de Algoritmos
de Filtrado Adaptable”. Escobar Salguero, Larry
Hipólito. Universidad Nacional Autónoma de México.
2004.
[6]“Implementation of RLS Adaptive Filter Algorithm
Using MaxPlusII Software Tools”. Lakshmanan, Masuri
Othman and Mohamad Alauddin Mohd, Ali. Signal
Processing Research Group. Department of Electrical,
Electronic and Systems Engineering. University
Kebangsaan Malaysia. 2002.
[7] “Circuit Design with VHDL”, Volnei A. Pedroni,
MIT Press, 2004.
27
Descargar