INSTITUTO POLITÉCNICO N
ACIONAL
ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA SECCIÓN DE ESTUDIOS DE POSGRADO E INVESTIGACIÓN
UNIDAD CULHUACAN
“Implementación del algoritmo de mínimos cuadrados promediados con error codificado
(ECLMS) en un FPGA”
T E S I S
QUE PARA OBTENER EL GRADO DE
ING. RICARDO JESÚS TRILLO LARES
MAESTRO EN CIENCIAS DE INGENIERÍA EN MICROELECTRÓNICA PRESENTA
ING. RICARDO JESÚS TRILLO LARES
ASESORES:
Dr. JUAN CARLOS SÁNCHEZ GARCÍA Dr. GONZALO DUCHÉN SÁNCHEZ
MEXICO D.F. ENERO
2010
INSTITUTO POLITECNICO NACIONAL
slF!14SECRETARíA DE INVESTIGACIÓN Y POSGRADO ACTA DE REYIS IÓN DE IES/S
En la Ciudad de México D. F. siendo las 13:30 horas del día 09 del mes de diciembre del 2009 se reunieron los miembros de la Comisión Revisora de Tesis designada
por el Colegio de Profesores de Estudios de Posgrado e Investigación de sEPI-ESTME-cULHUAcAN para examinar la tesis de titulada:
"lmplementación del algoritmo de mínimos cuadrados promediados con error codificado (ECLMS) en un FPGA'
Presentada por el alumno:
Trillo Lares Ricardo Jesús
Apellido materno
Con registro:
Después de intercambiar opiniones los miembros de la Comisión manifestaron APROBACTÓN DE LA fESrS, en virtud de que satisface los requisitos señalados por disposiciones reglamentarias vigentes.
LA COMISIÓN REVISOM
Dr. Basilio del Muro Cuellar
SU las
Maestría en Ciencias de Ingeniería en MicroelectrónicaEL PRESI
/NST/TUTO POL/TECN/CO NACIONAL
SECRETARiA DE INVESTIGACION Y POSGRADO
CARTA C/:SION DE DERECHOS
En la Ciudad de Mexico D.F. el dia 9 del mes de dicienlbre del ano 2009, el que suscribe Ricardo Jesus Trillo Lares alumno del Programa de Maestria en Ciencias de Ingenieria en Microelectr6nica con numero de registro 13071843.. adscrito a la Escuela Superior de Ingenieria Mecanica y Electrica campus Culhuacan., manitiesta que es autor intelectual del presente trabajo de 'l'esis hajo la direcci6n del Dr. Juan Carlos Sanchez Garcia y el Dr.
Gonzalo Isaac Duchen Sanchez y cede los derechos del trabajo intitulado "Implementaci6n del algoritmo de mfnimos cuadrados prol11ediados con error codificado (ECLMS) en un FPGA", al Instituto Politecnico Nacional para su difusi6n., con tines academicos y de investigaci6n.
Los usuarios de la informaci6n no deben reproducir el contenido textual., graficas 0 datos del trabajo sin el permiso expreso del autar y/o director del trabajo. Este puede ser obtenido escribiendo a Ia siguiente direcci6n electr6nica \viegraff'-rtgrZrhotmail.com. Si el permiso se otorga, el usuario debera dar el agradecimiento correspondiente y citar la fuente del mismo.
~;Z~2:
..
_rr"-#""'--' ~---
Ricardo Jesus Tr::lo Lares
'\ ~)' 11 hrl' \ I;r' ,.:j
AGRADECIMIENTOS
A mis padres Jesús y Rocío a quienes les dedico este trabajo como una manera de devolver los años de educación para fomentar mi
integridad y madurez.
A mi familia completa, siempre es un placer convivir con gente que espera lo mejor de ti.
A mi escuela IPN ESIME CULHUACAN que incluye a mis asesores y compañeros, quienes me ayudaron a terminar mis estudios de
maestría.
A MCM Telecom mi lugar de trabajo, agradezco la paciencia que tuvieron conmigo para otorgarme el tiempo necesario para concluir
este proyecto de 3 años.
Su servidor, Ricardo Jesús Trillo Lares
RESUMEN
El algoritmo de mínimos cuadrados promediados con error codificado (ECLMS- Error Coded Least Mean Square) es una variante del algoritmo LMS convencional que reduce el número de operaciones de punto flotante disminuyendo su complejidad computacional, obteniendo así menor tiempo de procesamiento.
En esta tesis se presenta la implementación del algoritmo ECLMS en un FPGA Spartan3E XC3S500E basado en un lenguaje de descripción de Hardware formal VHDL, así mismo se presentan los resultados de la implementación del algoritmo utilizando la estructura adaptativa de identificador o modelado de sistema. La tesis muestra también las ventajas y desventajas de la implementación que tiene el dispositivo utilizado (FPGA) en comparación a otro del mercado (DSP) para continuar con futuras investigaciones.
ABSTRACT
The error coded least mean square (ECLMS) is a variant of the conventional LMS algorithm that reduces the number of floating point operations reducing its computational complexity, thus obtaining less processing time.
This work presents the implementation of the algorithm ECLMS in a FPGA (Spartan3 XC3S500E) based on a hardware description
language VHDL, and it presents the results of the implementation of the algorithm using adaptive structure as identifier or system
modeling. This work also shows the advantages and disadvantages of the implementation that has the device used (FPGA) in comparison to other market (DSP) to continue further research.
ÍNDICE
Índice de figuras y tablas V
Acrónimos IX
Introducción XI
Estado del arte XI
Problematización XIII
Objetivo XIII
Justificación XIV
Organización de la Tesis XIV
Referencias XV
CAPIÍTULO I. Algoritmo de mínimos cuadrados promediados con error
codificado (ECLMS) 1
1.1 El algoritmo LMS y sus variantes 2 1.1.1 Algoritmo LMS con cuantización en potencia de dos (Log-Log
LMS) 4
1.1.2 Algoritmo TVSLMS 5
1.1.3 Algoritmo VSLMS 5
1.1.4 Algoritmo CC LMS 6
1.1.5 Algoritmo NLMS 6
1.2 Estructura del filtro adaptativo y ecuación matemática del algoritmo
ECLMS 8
1.2.1 Codificación del error considerando e(n) como una señal
analógica 9
1.2.2 Codificación del error considerando e(n) como una señal
digital 11
1.3 Comparación del algoritmo LMS y ECLMS 13
1.4 Referencias 13
I
CAPÍTULO II. Estructura y funcionalidades de la tecnología de arreglo de compuertas programables en campo (FPGA) e introducción a su
programación utilizando VHDL 15
2.1 Historia y aplicaciones del FPGA 16 2.2 Estructura interna y funcionalidades del FPGA 17 2.2.1 Bloques lógicos configurables (CLBs) 18 2.2.2 Interconexiones programables 20 2.2.3 Bloques de entrada y salida 21 2.3 Software de programación del FPGA 22
2.4 Historia de VHDL 23
2.5 Elementos básicos y estructura de VHDL 24
2.5.1 Entidades (Entity) 24
2.5.2 Arquitectura (Arquitecture) 25 2.5.3 Identificadores 26
2.5.4 Operadores 26
2.5.5 Sentencias 27
2.6 Referencias 29
CAPÍTULO III. Implementación del Filtro Digital Adaptativo con algoritmo ECLMS en un FPGA SPARTAN-3E 31
3.1 Aplicación y alcance de la implementación 32 3.2 Características del FPGA Spartan-3E XC3S500E 32 3.3 Diseño del Filtro Digital Adaptativo en el FPGA 34 3.4 Diseño de programación VHDL del FPGA en combinación al hardware
utilizado de la tarjeta 39
3.4.1 Programa Principal 39
3.4.2 Sistema Desconocido 41
3.4.3 Filtro Digital Adaptativo ECLMS 43
3.4.3.1 Filtro Digital 44
3.4.3.2 Sumador y acoplador de señales al multiplexor 44 II
3.4.3.3 Codificación del error y actualización de pesos 45 3.4.4 Interfaz Entrada y Salida 47
3.4.4.1 Interfaz de Entrada 47
3.4.4.2 Interfaz de Salida 52
3.5 Referencias 56
CAPÍTULO IV. Análisis de resultados de la implementación 57
4.1 Predictor lineal a 4 bits (32 muestras) 58 4.2 Predictor lineal a 5 bits (64 muestras) 61 4.3 Filtro pasa-bajos con atenuador 65 4.4 Resumen de utilización de recursos del FPGA 68 4.5 Comentarios acerca de la implementación del algoritmo adaptativo
ECLMS en un FPGA SPARTAN-3E en comparación con el DSP
TMS320C6713 70
4.4.1 Ventajas 70
4.4.2 Desventajas 71
4.6 Referencias 72
CONCLUSIONES 73
TRABAJO FUTURO 73
ANEXOS
I Especificaciones de los componentes de la tarjeta Digilent 75 II Código del programa desarrollado en VHDL 77
III Artículo publicado 91
III
IV
Índice de figuras y tablas
CAPÍTULO I
Fig. 1.1 Estructura de un predictor lineal con un filtro adaptativo utilizando
el algoritmo LMS 2
Fig. 1.2 Comparación de los algoritmos LMS y Log-Log LMS 4 Fig. 1.3 Comparación de los algoritmos LMS y NLMS 7 Fig. 1.4 Estructura del filtro adaptativo utilizando el algoritmo ECLMS 8 Fig. 1.5 Diagrama de flujo del algoritmo de codificación del error 12 Fig. 1.6 Comparación de los algoritmos LMS y ECLMS 13 CAPÍTULO II
Fig. 2.1 Estructura en bloques del FPGA 17 Fig. 2.2 Composición interna de una celda lógica programable 18 Fig. 2.3 Estructura de lógica combinatoria de un multiplicador de 4 bits por
4 bits 19
Fig. 2.4 Ejemplo de declaración de una entidad en VHDL 24 Fig. 2.5 Ejemplo de declaración de una arquitectura en VHDL 25
Tabla 2.1 Especificaciones de recursos de diferentes familias de FPGA de
Xilinx 20
CAPÍTULO III
Fig. 3.1 Estructura de un identificador de sistema que usa un filtro
adaptativo W(z) 32
Fig. 3.2 Tarjeta Digilent con FPGA Spartan-3E XC3S500E (chip central de
la tarjeta) 34
Fig. 3.3 Estructura de un identificador de sistema que usa un filtro
adaptativo con el algoritmo ECLMS 35 V
Fig. 3.4 Filtro FIR utilizando una estructura transversal 36 Fig. 3.5 Representación posicional de una cadena de números binarios con
punto decimal 37
Fig. 3.6 Estructura del Filtro Digital segmentado en bloques de
programación y hardware 38
Fig. 3.7 Estructura de la Arquitectura Programa Principal 41 Fig. 3.8 Circuito de captura analógico 48 Fig. 3.9 Interfaz serial del amplificador 49 Fig. 3.10 Interfaz serial del CAD 50 Fig. 3.11 Diagrama de flujo de programación VHDL para la importación de
datos 51
Fig. 3.12 Circuito restador utilizando un amplificador operacional 52 Fig. 3.13 Esquema de conectividad del CDA 53 Fig. 3.14 Trama de bits de programación del CDA 53 Fig. 3.15 Diagrama de flujo de programación VHDL para la exportación de
datos 55
Tabla 3.1 Tabla de ganancia del amplificador 49 Tabla 3.2 Código de bits de comando y dirección 54 CAPÍTULO IV
Fig. 4.1 Gráfica de Amplitud/Tiempo de la señal deseada a 4 bits 58 Fig. 4.2 Gráfica de Frecuencia/Tiempo de la señal deseada a 4 bits 58 Fig. 4.3 Gráfica de Amplitud/Tiempo de la señal de salida a 4 bits 59 Fig. 4.4 Gráfica de Frecuencia/Tiempo de la señal de salida a 4 bits 59 Fig. 4.5 Gráfica de Amplitud/Tiempo de la señal deseada y la señal de
salida a 4 bits 60
Fig. 4.6 Gráfica de Amplitud/Tiempo de la señal de error a 4 bits 60 Fig. 4.7 Gráfica de Amplitud/Tiempo de la señal de error a 4 bits
(acercamiento) 61
Fig. 4.8 Gráfica de Amplitud/Tiempo de la señal deseada a 5 bits 62 Fig. 4.9 Gráfica de Frecuencia/Tiempo de la señal deseada a 5 bits 62 VI
Fig. 4.10 Gráfica de Amplitud/Tiempo de la señal de salida a 5 bits 63 Fig. 4.11 Gráfica de Frecuencia/Tiempo de la señal de salida a 5 bits 63 Fig. 4.12 Gráfica de Amplitud/Tiempo de la señal deseada y la señal de
salida a 5 bits 64
Fig. 4.13 Gráfica de Amplitud/Tiempo de la señal de error a 5 bits 64 Fig. 4.14 Gráfica de Amplitud/Tiempo de la señal deseada (filtro pasa-
bajos) a 4 bits 65
Fig. 4.15 Gráfica de Frecuencia/Tiempo de la señal deseada (filtro pasa-
bajos) a 4 bits 66
Fig. 4.16 Gráfica de Amplitud/Tiempo de la señal de salida (filtro pasa-
bajos) a 4 bits 66
Fig. 4.17 Gráfica de Frecuencia/Tiempo de la señal de salida (filtro pasa-
bajos) a 4 bits 67
Fig. 4.18 Gráfica de Amplitud/Tiempo de la señal deseada y la señal de
salida (filtro pasa-bajos) a 4 bits 67 Fig. 4.19 Gráfica de Amplitud/Tiempo de la señal de error (filtro pasa-bajos)
a 4 bits 68
Tabla 4.1 Resumen de utilización de recursos del FPGA para la estructura de identificador de sistema a 4 bits 69
VII
VIII
Acrónimos
FPGA Arreglo de Compuertas Programables en Campo (Field Programmable Gate Array)
VHDL Lenguaje de Descripción de Hardware para los Circuitos de Muy Alta Velocidad (VHSIC y HDL)
VHSIC (Very High Speed Integrated Circuit) HDL (Hardware Description Language)
LMS Mínimos Cuadrados Promediados (Least Mean Square) ECLMS Mínimos Cuadrados Promediados con Error Codificado (Error Coded Least Mean Square)
RLS Mínimos Cuadrados Recursivos (Recursive Least Square) DSP Procesador Digital de Señales
PLD Dispositivos Lógicos Programables (Programmable Logic Devices) ASIC Circuitos Integrados de Aplicación Específica (Application Specific Integrated Circuits)
PROM Memoria Programable de Solo Lectura (Programmable Read-Only Memory)
SRAM Memoria Estática de Acceso Aleatorio (Static Random Acces Memory)
PAL Compuerta Lógica Programable (Programmable Array Logic) VLSI (Very Large Scale Integration)
LUT Tabla de Consulta (Look-Up Table)
OTP Programable Una Vez (One Time Programmables) MTP Programable Varias Veces (Many Time Programmables)
CAD Convertidor Analógico-Digital (ADC – Analogic-Digital Converter) CDA Convertidor Digital-Analógico (DAC – Digital-Analogic Converter) SPI-MISO Interfaz Periférica Serial, Entrada Maestra – Salida Esclava (SPI- Master In, Slave Out)
SPI-MOSI Interfaz Periférica Serial, Salida Maestra – Entrada Esclava (SPI- Master Out, Slave In)
IX
X
INTRODUCCION
En el campo de las telecomunicaciones y el procesamiento de señales, los equipos o dispositivos del mercado actual utilizan en sus componentes los filtros digitales basados en algoritmos adaptativos con el fin de eliminar señales no deseadas dentro de la banda útil de la señal, así como la manipulación de las mismas para sistemas de predicción o modelado.
Hoy día el avance tecnológico busca herramientas en hardware y software para mejorar la fidelidad y velocidad de los sistemas, así como disminuir su complejidad y costo, por tal motivo, diferentes universidades y compañías trabajan en diferentes campos de aplicación para lograr dichos objetivos.
El diseño e implementación de filtros digitales adaptativos se puede realizar usando sistemas de computación programables de bajo consumo de potencia y bajo costo como lo son los arreglos de compuertas programables de campo (FPGA – Field Programable Gate Array) y los procesadores digitales de señales (DSP –Digital Signal Processor).
La línea de investigación sobre procesamiento de señales adaptativo en la que he participado, ha propuesto una mejora en el algoritmo de adaptación LMS que consiste en una codificación del error del mismo, dicho algoritmo es presentado como “Algoritmo de mínimos cuadrados promediados con error codificado (ECLMS)” [1]. Dicha propuesta puede ser reforzada mediante la implementación de la misma en sistemas funcionales con el fin de contribuir al avance tecnológico en el campo de telecomunicaciones y procesamiento de señales ya mencionado.
ESTADO DEL ARTE
Los filtros digitales con algoritmos adaptativos son implementados hoy día en DSPs diseñados para cumplir tareas específicas en el ámbito de audio y video. Dichos dispositivos son implementados en equipos de telefonía, video y multimedia mediante módulos de tarjetas dedicadas únicamente al procesamiento de señales del sistema, donde el sistema los utiliza de diferentes maneras en base a la programación del usuario.
En su mayoría las compañías que diseñan y fabrican DSPs (hardware) lo realizan de manera específica con diferentes limitantes en velocidad y XI
tamaño debido a que deben cumplir diferentes tareas y especificaciones técnicas que solicita el fabricante del sistema o producto final para ser compatible con su sistema operativo (software). La mejora en software de un producto va de la mano con la mejora del hardware, lo que provoca una lentitud en el progreso de desarrollo de software.
Con base a lo anterior, los desarrolladores de hardware han optado en utilizar los FPGA con fines de pruebas para acelerar el desarrollo de DSPs más avanzados o en su defecto utilizar sistemas híbridos con el FPGA como base de un sistema de procesamiento de señales. Hoy día se están realizando comparaciones de diferentes filtros digitales FIR, IIR y adaptativos como el LMS en diferentes DSPs y FPGAs para medir su rendimiento, sin embargo los FPGAs aún tienen limitantes en su utilización de lógica y latencia de configuración [2].
Diferentes universidades en todo el mundo dedican grupos de investigación para el estudio, análisis e implementación de filtros digitales con algoritmos adaptativos en FPGAs, en el congreso ISPACS’06 (Intelligent Signal Processing and Communications, 2006) se tiene una ponencia de Japón donde se implementa el algoritmo LMS y NLMS en un FPGA donde su diseño contempla la utilización de operaciones de punto fijo utilizando el desplazamiento de bits en lugar de una división aritmética con el fin de disminuir el procesamiento del sistema [3].
Los trabajos de investigación de filtros digitales con filtros adaptativos utilizando FPGAs no sólo son utilizados como maquetas sino como soluciones para sistemas o productos finales. En la universidad de Malta se trabaja en sistemas de redes de sensores inalámbricos (WSN- Wireless Sensor Networks), donde se implementa el sistema en un FPGA utilizando el algoritmo LMS para predicción de datos, el FPGA reduce el consumo de energía al reducir al mínimo el número de transmisiones de datos capturados [4].
Con base a las investigaciones y resultados consultadas en estos últimos años, se pretende implementar el algoritmo adaptativo ECLMS en un FPGA, por un lado, el algoritmo es una propuesta que pretende mejorar el rendimiento del sistema mediante la reducción de las operaciones de punto flotante mediante la codificación del error [1], y por otro lado, el FPGA es un dispositivo que pretende minimizar el tiempo de ejecución del sistema con un mínimo consumo de energía.
XII
PROBLEMATIZACION
¿Es el algoritmo ECLMS una buena herramienta para la mejora de los filtros digitales adaptativos en comparación a las variantes del algoritmo LMS ya existentes?
Para responder dicha pregunta es necesario la implementación del algoritmo ECLMS en un sistema computacional medible, es decir, dicho sistema no sólo debe obtener la respuesta para lo que fue diseñado, sino que también debe ser medible en cuestión de velocidad, fidelidad y complejidad computacional con el fin de que pueda ser comparado con otras variantes del algoritmo LMS.
Debido a la tecnología actual en el tema de procesamiento digital y la ventaja de la computación programable, se utilizan los dispositivos DSP y FPGA para implementar el sistema de filtrado digital adaptativo.
Así mismo, este proyecto busca responder las siguientes preguntas de manera concreta. ¿Es el FPGA una buena herramienta para la implementación del algoritmo ECLMS? ¿Cuáles son las ventajas y desventajas de utilizar un FPGA en vez de un DSP?
OBJETIVO
Implementar un filtro digital con algoritmo adaptativo ECLMS en un sistema de audio que trabaja como emulador o identificador de otro sistema desconocido, la implementación se realiza en un FPGA SPARTEN-3E, el cual permitirá obtener la información medible necesaria para evaluar el algoritmo, así como obtener las ventajas y desventajas de la implementación que tiene el dispositivo utilizado (FPGA) en comparación a otro del mercado (como ejemplo el DSP) para continuar con futuras investigaciones.
Con base a lo anterior, el proyecto reflejará la información necesaria para que en futuras investigaciones se pueda realizar la comparación con otras variantes del algoritmo LMS o incluso con otros algoritmos adaptativos utilizados en el procesamiento de señales de audio implementados en un FPGA.
XIII
JUSTIFICACION
Hasta el momento se ha simulado el algoritmo ECLMS mediante la herramienta de software MATLAB y se ha implementado en un DSP TMS320C6713 con resultados medibles satisfactorios, sin embargo, es necesario continuar evaluando el algoritmo con otro tipo de tecnologías que el mercado ofrece o trabaja como lo es el FPGA, que involucra un lenguaje de programación y características de diseño diferentes a las que utiliza el DSP.
Se utiliza el FPGA para la implementación del algoritmo ECLMS debido a su capacidad de implementar una aplicación en hardware mediante VHDL, y proporcionar la oportunidad de explotar la concurrencia inherente de los circuitos digitales, es decir, el dispositivo puede configurarse o dividirse en múltiples subsistemas, todos los cuales podrían funcionar concurrentemente con los demás. Así mismo es reprogramable en campo, el diseño no tiene que soportar más la carga de la flexibilidad para tratar con diferentes aplicaciones, en lugar de eso, un diseño óptimo puede crearse para cada aplicación y cargarse en el FPGA siempre que se requiera.
ORGANIZACIÓN DE LA TESIS
El siguiente trabajo está organizado en cuatro capítulos y un apartado de conclusiones y trabajo futuro.
En el primer capítulo se explica brevemente el algoritmo de adaptación de mínimos cuadrados promediados (LMS) y algunas de sus variantes, así mismo se hace énfasis en el algoritmo de adaptación ECLMS el cual será utilizado en un sistema digital.
En el segundo capítulo se muestra la estructura interna y las funcionalidades del hardware de programación donde se implementará el sistema digital con el algoritmo adaptativo ECLMS, el FPGA. También se explica brevemente los comandos y estructuras básicas del lenguaje de programación de hardware VHDL que es utilizado para la programación del sistema digital en el FPGA.
El tercer capítulo muestra de manera detallada la implementación del algoritmo ECLMS en un sistema de filtrado digital adaptativo con estructura de identificador de sistema mediante el lenguaje VHDL en el FPGA Spartan-3E. Primeramente se muestra el alcance del sistema
XIV
XV
diseñado y las características del FPGA en conjunto con los componentes y periféricos utilizados de la tarjeta que lo acompañan; posteriormente se muestra el diseño de todo el sistema así como la estructura de programación en VHDL en combinación al hardware utilizado.
El cuarto capítulo muestra los resultados de la implementación del sistema, mediante la herramienta de Matlab se generan gráficas de tiempo y frecuencia para su análisis; en este apartado se muestra también los recursos utilizados del FPGA.
Por último, al final se incluyen las conclusiones del trabajo realizado y un apartado de trabajo futuro con base en la misma línea de investigación.
Referencias
[1] J. Velázquez López, Juan Carlos Sanchez Garcia, Héctor Pérez Meana, Tesis “Algoritmo LMS con Error Codificado para Aplicaciones de Filtrado Adaptivo”, Mayo 2007
[2] Sharbari Banerjee, Amitabha Sinha “Performance Analysis of Different DSP Algorithms on Advanced Microcontroller and FPGA”, 2009 Zouk Mosbeh, Lebanon,IEEE
[3] Oba, H. Kim, M. Arai, H. Yokohama Nat. University “FPGA Implementation of LMS and N-LMS Processor for Adaptive Array Applications”, Intelligent Signal Processing and Communications, 2006 [4] Debono, C.J. Borg, N.P., “The Implementation of an Adaptive Data Reduction Technique for Wireless Sensor Networks”, Dept. of Commun.
& Comput. Eng., Univ. of Malta, Msida, Signal Processing and Information Technology, 2008. ISSPIT 2008. IEEE
CAPÍTULO I
Algoritmo de mínimos cuadrados promediados con error codificado (ECLMS)
Los filtros adaptativos digitales son sistemas basados en algoritmos matemáticos los cuales ajustan sus variables de manera automática para obtener una señal deseada, dichos filtros son implementados en hardware o software donde las variables son señales digitales de diferentes características.
En el campo de las telecomunicaciones y el procesamiento de señales, los filtros digitales basados en algoritmos adaptativos son utilizados para eliminar señales no deseadas dentro de la banda útil de la señal [1], ejemplos de dichos sistemas son los canceladores de interferencias (ruido y eco), modelados o identificadores de sistemas y predirectores lineales entre otros.
La manera en que las computadoras realizan las operaciones matemáticas difiere con la aritmética tradicional, debido a que las computadoras manejan operaciones con precisión finita y fija debido al uso de sistema binario y sus recursos de memoria y bus de datos; el uso de valores decimales o de punto flotante, el uso de números positivos y negativos u otras operaciones como valores imaginarios y complejos involucran una serie de algoritmos aritmético-lógicos para obtener los resultados más cercanos a la aritmética real.
Los sistemas basados en filtros digitales adaptativos utilizan diferentes algoritmos de adaptación los cuales ofrecen diferentes velocidades de convergencia y complejidad computacional. El diseño de filtros consiste en la aproximación de una función de transferencia por medio de una lista de coeficientes. La principal característica de estos filtros es que pueden modificar su respuesta durante la operación, con el fin de lograr un comportamiento deseado, para esto es necesario el uso de un algoritmo de adaptación que se encargue de actualizar los coeficientes del filtro.
Los algoritmos de adaptación más conocidos, son el algoritmo RLS (Recursive Least Square – Mínimos Cuadrados Recursivos), y el algoritmo LMS (Least Mean Square – Mínimos Cuadrados Promediados). El algoritmo RLS ofrece mayor velocidad de convergencia con respecto al algoritmo LMS, pero en cuanto a complejidad computacional el algoritmo LMS tiene la ventaja [2].
La mayoría de los filtros adaptivos de la actualidad se implementan por medio de sistemas digitales, debido a que presentan algunas ventajas sobre los filtros analógicos las cuales consisten en: alta 1
confiabilidad, exactitud, y menor sensibilidad a la temperatura y al envejecimiento. Sin embargo los filtros analógicos presentan una velocidad de convergencia mayor que los digitales [1].
El algoritmo de Mínimos Cuadrados Promediados con Error Codificado (ECLMS Error Coded Least Mean Square) es una variante del algoritmo LMS convencional que reduce el número de operaciones de punto flotante disminuyendo su complejidad computacional, obteniendo menor tiempo de procesamiento [4].
1.1 El algoritmo LMS y sus variantes
A continuación se muestra un sistema predictor lineal con un filtro digital adaptativo LMS, el cual cuenta con cuatro terminales, donde x(n) es la señal de entrada, d(n) la señal deseada, y(n) la señal de salida y e(n) la señal de error, la cual es utilizada para adaptar w(n) que son los pesos del filtro adaptativo.
Fig. 1.1 Estructura de un predictor lineal con un filtro adaptativo utilizando el algoritmo LMS
El LMS es un algoritmo adaptativo que encuentra fundamento en la obtención de los coeficientes (pesos) óptimos de un filtro digital lineal mediante la minimización del error cuadrático medio de la señal de error. La siguiente ecuación se conoce como el algoritmo de mínimos cuadrados promediados LMS o algoritmo de Widrow – Hopf [3]. Donde W(n+1) es el peso siguiente, W(n) es el peso actual, μ es el factor de convergencia, X(n) es la señal de entrada al filtro y e(n) es la señal de error.
) ( ) ( )
( )
1
( n W n e n X n
W
(1.1)Para mantener la estabilidad del algoritmo LMS el factor de convergencia μ debe satisfacer:
) ( 0 1
2
n x
N
(1.2) 2
Donde x (n) denota la potencia promedio de la señal de entrada, la cual se estima usando una pequeña cantidad de muestras de la señal, N es el número de elementos de retardo u orden del filtro.
La velocidad de convergencia del filtro adaptativo es Interfaz Entrada y Salida directamente proporcional al factor μ, es decir cuando μ es grande, entonces la velocidad de convergencia es alta, pero el error cuadrático medio es más alto. Ahora cuando μ es pequeño, entonces la velocidad de convergencia se reduce, pero la ventaja que se obtiene es un error cuadrático medio menor. En tal caso coexiste un compromiso entre velocidad de convergencia y error cuadrático medio, haciendo más complicado el uso de este algoritmo en comunicaciones de alta velocidad con una baja tasa de errores [4].
La principal desventaja del algoritmo LMS, es que su convergencia es altamente dependiente de la densidad espectral de la señal de entrada. Cuando la señal de entrada de filtro se caracteriza por tener densidad espectral plana en todo el intervalo de frecuencias, el algoritmo LMS converge más rápido.
Por las características de la ecuación (1.1) del algoritmo LMS, los valores numéricos de la obtención de los nuevos pesos del filtro digital W(n+1) son valores de punto flotante o decimales, esto se debe a que el factor de convergencia también es un valor de punto flotante o decimal basado en la ecuación (1.2), ya que su propósito es aumentar la precisión de los pesos y evitar la divergencia del filtro. Lo anterior provoca que la expresión matemática sea siempre con multiplicaciones de punto flotante, incluso, cuando el algoritmo se estabiliza alcanzando estabilizar los pesos del sistema, el error continúa teniendo un valor numérico decimal muy pequeño que difícilmente llegará a cero.
Como ya se ha mencionado, en sistemas computacionales, el uso de multiplicaciones con punto flotante provoca un mayor número de instrucciones del procesador lo que implica un mayor tiempo de procesamiento, es decir, menor velocidad del sistema.
Durante los avances del filtrado digital adaptativo, se han realizado modificaciones del algoritmo de adaptación en busca de aumentar la velocidad de convergencia y disminuir su complejidad computacional, por lo que el algoritmo LMS se ha modificado en diferentes variantes. A continuación se enuncian algunas de ellas.
3
1.1.1 Algoritmo LMS con cuantización en potencia de dos (Log-Log LMS)
La aportación de esta variante está en la reducción de complejidad computacional utilizando la cuantización a potencia de dos, para que las operaciones se realicen de una manera más rápida por ser palabras más cortas [5]. Para realizar la cuantización a potencia de dos de un número x primero se calcula su logaritmo en base dos y se redondea a un valor entero “r” como se muestra en la siguiente ecuación:
(1.3)
Donde “r” es el exponente al que habrá de elevarse la base dos, entonces el valor cuantizado a potencia de dos de x es:
(1.4) Al realizar la codificación en binario de Q(x), se obtiene una palabra binaria donde solo aparece un 1 lógico, lo cual permite la reducción de operaciones de punto flotante. La expresión mostrada en la ecuación (1.5) corresponde al algoritmo Log-Log LMS [5].
(1.5) La velocidad de convergencia se reduce con la cuantización a potencia de dos porque se pierde información de las magnitudes. A continuación se muestra el error cuadrático medio del algoritmo Log-Log LMS en comparación al LMS [4]:
Fig. 1.2 Comparación de los algoritmos LMS y Log-Log LMS
4
1.1.2 Algoritmo TVSLMS
En este algoritmo se realiza el cálculo del factor de convergencia empleando la potencia promedio de la señal de entrada y el error cuadrático medio [6]. Estas potencias se calculan usando algunas de las muestras. El factor de convergencia queda como se muestra en la siguiente ecuación:
(1.6) Donde ε es una constante positiva la cual debe satisfacer la siguiente ecuación:
) ( )
(
22
n e n
x
(1.7)1.1.3 Algoritmo VSLMS
Cuando la adaptación empieza W(n) está lejos de su valor óptimo, para que la convergencia sea rápida es necesario tener un paso de tamaño grande (el factor de convergencia es directamente proporcional a la velocidad de convergencia e inversamente proporcional al error cuadrático medio), mientras los coeficientes del filtro se acercan a la solución el tamaño del paso debe disminuir para reducir el exceso del error cuadrático medio, para resolver este problema se propone el uso de algoritmos de paso variable, los cuales ajustan el factor de convergencia en cada iteración, con esto se pueden obtener velocidades de convergencia mayores pero la complejidad computacional del algoritmo aumenta.
Para ajustar el tamaño del paso se le asigna a cada coeficiente del filtro un parámetro de paso variante en el tiempo, de manera que el algoritmo LMS toma la siguiente forma [6]:
) ( ) ( ) ( 2 ) ( )
1
( n W
in
in e n X n i
W
i=0,1,…,M–1 (1.8)Donde Wi(n) es el i-esimo coeficiente de W(n) en la iteración “n” y µi(n) está asociado al tamaño del paso. El tamaño del paso se 5
determina con base a los cambios que ocurren en el cálculo de la señal del gradiente instantáneo.
Para elegir el valor óptimo de µ se debe tomar en cuenta los criterios de la siguiente ecuación:
(1.9)
1.1.4 Algoritmo CC LMS
En este algoritmo, el factor de convergencia es proporcional al valor estimado de la primera componente de la correlación cruzada entre la señal de error y la salida del filtro [7], se representa con la siguiente ecuación:
(1.10) Donde su cálculo recursivo se puede hacer como indica la siguiente ecuación:
(1.11)
Al igual a los otros algoritmos, el factor de convergencia debe cumplir los siguientes criterios:
(1.12)
1.1.5 Algoritmo NLMS
La estabilidad y la convergencia de este algoritmo dependen de la longitud del filtro y la potencia de la señal, por lo tanto el factor de convergencia se puede escribir como se muestra en la siguiente ecuación.
6
)
2( 2
1 )
( ) ( 2 ) 1
( n x
Tn x n x n
(1.13) Sustituyendo la ecuación (1.13) en la ecuación original del LMS (1.1) para encontrar la recursión obtenemos:
) ( ) ) ( ( ) ( ) 1
( )
1
( e n n
n x n n x
n W
TX
W
(1.14) En la práctica una manera de asegurar la recursión es usando la siguiente ecuación:
) ( ) ) ( ( ) ) (
( )
1
( e n n
n x n n x
n W
TX
W
(1.15) Donde µ y ε son constantes. La velocidad de convergencia de este algoritmo es mayor que la del LMS, sin embargo su complejidad computacional es 3M+1 multiplicaciones y 3M sumas, la cual es mayor que la del algoritmo LMS.
Las variantes del algoritmo LMS mostradas contribuyen en una mejora en el factor de convergencia, sin embargo, involucran un aumento de operaciones lo que ocasionan un aumento en la complejidad computacional. Por tal motivo existe una propuesta de variante del algoritmo LMS el cual se enfoca en reducir sus operaciones.
A continuación se muestra un comparativo entre el algoritmo LMS y NLMS con respecto al error y al error cuadrático medio [8].
Fig. 1.3 Comparación de los algoritmos LMS y NLMS
7
1.2 Estructura del filtro adaptativo y ecuación matemática del algoritmo ECLMS
Como se pudo ver en el filtro adaptativo con algoritmo LMS, la limitante principal de la implementación de los filtros adaptativos digitales son las operaciones de punto flotante. Es por ello que se propuso realizar la modificación al algoritmo de adaptación, con el propósito de reducir las operaciones de punto flotante. Las ventajas que se pueden obtener con la modificación del algoritmo, es una implementación más simple del filtro adaptativo digital en un circuito integrado y por lo tanto se reduce el tiempo de procesamiento pudiéndose dar aplicaciones de mayor velocidad además de la reducción del consumo en energía o la otra alternativa está en realizar la sobre-adaptación para aumentar la velocidad de convergencia debido a que el tiempo de procesamiento será menor [4].
Para reducir las operaciones de punto flotante en el algoritmo de adaptación, se propone la codificación del error como se indica en la siguiente ecuación:
) ( )]
( [ )
( )
1
( n W n C e n X n
W
(1.16)Donde W(n+1) es el peso siguiente, W(n) es el peso actual, μ es el factor de convergencia, X(n) es la señal de entrada al filtro y C[e(n)] es el error codificado.
La codificación del error se puede realizar de manera externa al filtro digital y al algoritmo de adaptación, al usar un recodificador que se encargará de digitalizar el error y convertirlo de tipo flotante a un valor de punto fijo. De esta manera la estructura del filtro no cambia, ya que las operaciones de codificación se realizan por separado, haciendo al algoritmo LMS con error codificado (ECLMS) compatible con los sistemas adaptativos existentes.
Fig. 1.4 Estructura del filtro adaptativo utilizando el algoritmo ECLMS
8
Entonces con el recodificador del error se elimina el uso de operaciones de punto flotante y ahora se necesitan realizar N multiplicaciones de punto fijo entre el error codificado y el vector de muestras de la señal de entrada, un desplazamiento en el resultado de dicha multiplicación y una suma con los valores anteriores de los pesos [4].
1.2.1 Codificación del error considerando e(n) como una señal analógica
Para realizar matemáticamente la codificación del error en caso de que la señal e(n) sea una señal analógica, se requiere efectuar su digitalización, lo cual se logra empleando la siguiente ecuación.
Res n round e n
e
C
(1.17)Donde “round” es la función de redondeo, e(n) es el error actual del filtro y “Res” es la resolución del codificador analógico-digital.
Así el error que se obtiene de (1.17) es un número entero al que se le asigna un código binario, de esta forma el producto del error y la señal de entrada, se reduce a la utilización de sumas y desplazamientos libres de exponente.
Para el cálculo de la resolución se debe usar la siguiente ecuación:
1 Res 2
e
nmáx
(1.18)
Donde emax es el error máximo probable y n es el número de bits de codificación. Debido a que se desconoce el error máximo, se puede hacer una estimación a partir del valor máximo posible de la señal de entrada al filtro adaptativo, la cual no llega a ser mayor del 90% de la amplitud máxima.
Como se mencionó anteriormente al codificar el error la velocidad de convergencia aumenta, dado que el error inicial que observará el algoritmo será grande haciendo que el algoritmo aumente el tamaño de los pesos de esta forma la velocidad de convergencia aumenta.
Cuando el valor de la resolución es demasiado pequeño, entonces la cantidad de información que se pierde es menor, por lo tanto la velocidad de convergencia es mayor. Así la resolución es
9
inversamente proporcional al número de bits de codificación, entonces para obtener una resolución grande se requiere de un número de bits reducido y para reducir la resolución es necesario un mayor número de bits, pero se debe tener cuidado en elegirlo correctamente ya que una cantidad de bits grande puede hacer que el algoritmo llegue a divergir [4].
Para evitar la divergencia en base al número de bits, se sustituye el proceso de codificación del error en la ecuación (1.16) para obtener lo mostrado en la siguiente ecuación:
) Re (
)]
( ) [
( )
1
( n
s n e n Q
n W X
W
(1.19)Donde Q[e(n)] es la cuantización del error para realizar la codificación. Como se puede observar en (1.19), al realizar el proceso de codificación del error, se afecta al factor de convergencia, lo cual puede traer como consecuencia un aumento en la velocidad de convergencia. Entonces haciendo un cambio de variable:
Res
(1.20)Como se mencionó anteriormente para evitar la divergencia el factor de convergencia debe cumplir con lo establecido en la ecuación (1.2).
Sustituyendo (1.20) en la ecuación (1.2) obtenemos:
) ( 1
0 Res 2
T x
N
(1.21)
Para obtener la relación entre el número de bits y el factor de convergencia, se sustituye la ecuación de la resolución (1.18) en (1.21) con lo cual se genera la siguiente ecuación:
2 1 ( )
0
2max
n x N e
n
(1.22)La ecuación (1.22) nos muestra la relación que existe entre el factor de convergencia y el número de bits usados en la codificación, por lo tanto, a mayor número de bits aumenta la velocidad de convergencia [4].
10
1.2.2 Codificación del error considerando e(n) como una señal digital
La propuesta de solución presentada en el punto anterior realiza la codificación del error de manera externa al algoritmo de adaptación y hasta este momento sólo se ha realizado un análisis matemático de cuál sería su efecto en la velocidad de convergencia y cuáles son las precauciones a tomar para evitar la divergencia.
En este apartado se presenta el algoritmo de codificación del error para implementarse en un sistema digital obteniendo el valor del error e(n) ya como un dato digital de tipo flotante. Con lo expuesto anteriormente, la principal ventaja de realizar la codificación del error en el algoritmo de adaptación LMS es la reducción de las operaciones de punto flotante, lo cual evita el diseño de la unidad lógica y aritmética empleando el estándar de punto flotante y por ende la simplificación del diseño e implementación del filtro adaptativo digital.
Todo esto se puede deducir debido a que los pesos del filtro no requieren de un estándar de punto flotante, porque con la codificación del error no se genera un valor en donde se requiera de precisión para su representación digital, entonces se utiliza un formato posicional con punto decimal convencional.
Recordando el procedimiento necesario para realizar la codificación del error en la ecuación (1.17), en donde el error instantáneo se divide entre la resolución y el resultado se aproxima al valor entero cercano. Entonces la codificación del error se puede escribir de la siguiente forma:
Res n 1 e round n
e
C
(1.23)De la ecuación (1.23) se puede observar que son necesarios dos pasos para la codificación del error, donde el primero es la multiplicación del error instantáneo por el inverso de la resolución, el cual es un valor constante y el segundo paso es el redondeo del resultado para obtener el error codificado como un valor entero [9]. Debido a que el error instantáneo e(n) ya es una señal digital de tipo flotante, el valor del inverso de la resolución será la unidad.
Entonces se puede escribir el proceso de codificación como se muestra en la siguiente ecuación:
e n round C [' n e ]
C (1.24)
11
Donde C’[e(n)] sustituye al producto del error instantáneo y el inverso de la resolución que es de valor 1, logrando una simplificación en el proceso de redondeo.
El redondeo de C’[e(n)] el cual es igual a la cuantización en el proceso de codificación se realiza tomando las siguientes condiciones:
• Cuando la parte decimal es mayor o igual a 0.5 entonces a la parte entera se le suma uno. Esto se realiza cuando el primer bit después del punto decimal es igual a uno en C’[e(n)], por lo tanto se toma la parte entera del error más uno como el valor del error codificado.
• Cuando la parte decimal en C’[e(n)] es menor a 0.5 entonces sólo se toma la parte entera, esto se comprueba revisando el primer bit después del punto decimal y si es igual a cero en C’[e(n)], entonces sólo se toma la parte entera como el error codificado.
De esta forma se puede realizar la codificación del error sin la necesidad de utilizar alguna división, como se puede notar, solamente se requiere de realizar una multiplicación y una bifurcación cuyas operaciones son más fáciles de implementar en un diseño digital o incluso en un sistema programable [4]. A continuación se muestra la figura 1.3 un diagrama de flujo de un sistema programable:
Fig. 1.5 Diagrama de flujo del algoritmo de codificación del error 12
1.3 Comparación del algoritmo LMS y ECLMS
Para comparar el funcionamiento de ambos algoritmos de adaptación, se efectuó la simulación del algoritmo ECLMS y el algoritmo LMS convencional usando la herramienta MATLAB. Los resultados obtenidos se llevaron a cabo simulando un sistema como predictor lineal.
El propósito de comparar el ECLMS contra el algoritmo LMS convencional es con el fin de tener un parámetro de medición en cuanto a velocidad de convergencia y principalmente el error cuadrático medio, el cual es de importancia mantenerlo dentro de los niveles obtenidos con el algoritmo LMS convencional.
La prueba realizada al predictor lineal fue empleando una suma de tonos simples para los dos algoritmos con una relación señal a ruido de 20 dB. El resultado obtenido de la codificación se muestra en la figura 1.4, en donde se puede observar que el algoritmo ECLMS no empeora el comportamiento el error cuadrático medio (MSE – Mean Square Error) del algoritmo LMS, además la velocidad de convergencia es mayor [10].
Fig. 1.6 Comparación de los algoritmos LMS y ECLMS
1.4 Referencias
[1] Héctor Pérez Meana, Mariko Nakano Miyatake, Luis Niño de Rivera, Juan Sanchez Garcia, “Desarrollos Recientes en sistemas adaptivos analógicos”, Revista Científica, Vol. 5 No. 3, July- September 2001
13
[2] J. Gerardo Avalos Ochoa, J. Velázquez López, Juan Carlos Sanchez Garcia, Tesis “Algoritmo LMS con Error Codificado Usando un DSP”, Julio 2008
[3] B. Widrow et al: “The complex LMS algorithm”, Proc. IEEE, Vol.63, April 1975
[4] J. Velázquez López, Juan Carlos Sanchez Garcia, Héctor Pérez Meana, Tesis “Algoritmo LMS con Error Codificado para Aplicaciones de Filtrado Adaptivo”, Mayo 2007
[5] Shivaling S. Mahant-Shetti, Srinath Hosur and Alan Gatherer;
“THE LOG-LOG LMS ALGORITHM”; Acoustic, Speech and Signal Processing, 1997. ICAASSP-97 IEEE; Volumen 3, Abril 1997
[6] Mariko Nakano, Héctor Pérez, Luis Niño de Rivera, Fausto Casco y Juan Carlos Sánchez, “A Time Varying Step Size NLMS Algorithm For Adaptive Echo Canceller Structures”, IEICE Trans on Fundamentals of Electronics, Communications and Computer Science, vol. E78, No. 2, Febrero de 1995
[7] Héctor Pérez Meana, M. Nakano Miyatake, “Algoritmos LMS con factores de convergencia variables en el tiempo”, Revista Científica, vol. 8 No. 3, 2004
[8] Moshe Tarrab, Arie Feuer, “Convergence and Performance Analysis of the Normalized LMS Algorithm with Uncorrelated Gaussian Data”, IEEE TRANSACTIONS ON INFORMATION THEORY, VOL. 34, NO. 4, JULY 1988
[9] J. Velázquez López, Juan Carlos Sánchez García, Héctor Pérez Meana, “Algoritmo LMS modificado para aplicaciones de filtrado adaptivo de rápida velocidad de convergencia”, Proceedings CIECE 2005, Puebla México.
[10] J. Jose Velazquez, Juan G. Avalos, Daniel Espinobarro, Juan C. Sanchez, "Analysis and Implementation of LMS Algorithm with Coding Error in the DSP TMS320C6713," 18th International Conference on Electronics, Communications and Computers (conielecomp 2008), 2008
14
CAPÍTULO II
Estructura y funcionalidades de la tecnología de arreglo de compuertas programables en campo (FPGA) e introducción a su programación utilizando
VHDL
El hardware reconfigurable es un campo de investigación y desarrollo relativamente nuevo, se trata de un intento de superar el tradicional desfase entre hardware y software en el campo de la informática. Existen determinados procesadores diseñados específicamente para una única aplicación que realizan sus tareas específicas mucho más rápido que un procesador tradicional (de propósito general); sin embargo, el ordenador de aplicación específica sólo puede realizar esa tarea especializada con velocidad, y otras aplicaciones se ejecutarán deficientemente o en su defecto no están contempladas en su diseño.
En el pasado se han realizado intentos de mejorar el rendimiento de un ordenador de propósito general añadiéndole algunas capacidades de aplicación específica. El ordenador reconfigurable intenta convertir el ordenador de propósito general en un sistema de aplicación específica configurando o modificando una parte añadida del hardware para ajustarse a la aplicación actual. Este hardware extra se denomina dispositivo reconfigurable.
Los dispositivos reconfigurables permiten a los diseñadores construir parte o todo su diseño en hardware en vez de software.
Exportando funcionalidad al hardware se pueden conseguir significativas mejoras de velocidad porque esa funcionalidad no tiene que dividirse en instrucciones individuales que la unidad computacional traiga, decodifique, etc. Esa funcionalidad se convierte en hardware. La capacidad de implementar una aplicación en hardware proporciona la oportunidad de explotar la concurrencia inherente de los circuitos digitales. Es decir, el dispositivo puede configurarse o dividirse en múltiples subsistemas, todos los cuales podrían funcionar concurrentemente con los demás.
Un sistema de cómputo reconfigurable práctico requiere un ordenador principal. El ordenador principal es el sistema de cómputo que utiliza el sistema reconfigurable, controla el acceso a él y lo programa. Existen diversos métodos de conectar el ordenador principal al dispositivo reconfigurable. El propio dispositivo es un microchip conocido como Arreglo de Compuertas Programables en Campo (FPGA [Field Programmable Gate Array]) [1].
15
2.1 Historia y aplicaciones del FPGA
Los FPGAs son el resultado de la convergencia de dos tecnologías diferentes, los dispositivos lógicos programables (PLDs [Programmable Logic Devices]) y los circuitos integrados de aplicación específica (ASIC).
La historia de los PLDs comenzó con los primeros dispositivos PROM (Programmable Read-Only Memory) y se les añadió versatilidad con los PAL (Programmable Array Logic) que permitieron un mayor número de entradas y la inclusión de registros. Esos dispositivos han continuado creciendo en tamaño y potencia. Los ASIC siempre han sido potentes dispositivos, pero su uso ha requerido tradicionalmente una considerable inversión tanto de tiempo como de dinero.
El paso final era combinar las dos estrategias con un mecanismo de interconexión que pudiese programarse utilizando fusibles, antifusibles o celdas RAM. Los circuitos resultantes son los FPGAs que se utilizan en controladores, codificadores/decodificadores y en el prototipado de circuitos VLSI y microprocesadores a medida.
Los FPGAs fueron inventados en el año 1984 por Ross Freeman y Bernard Vonderschmitt, co-fundadores de Xilinx. Otros vendedores en este mercado son Atmel, Altera, AMD y Motorola.
Los primeros FPGAs se usaron principalmente para hacer partes de diseños hardware que no correspondían a ningún componente existente en el mercado. Las principales ventajas de su uso eran el reducido número de chips comparado con una implementación con circuitos SSI (Small Scale Integration) y la reducida inversión de capital cuando un ASIC a medida era la alternativa. Para muchas aplicaciones de poco volumen el costo de un ASIC no puede justificarse y por eso existe una tendencia creciente para usar una versión FPGA no sólo como prototipo [2].
Con el paso del tiempo, los dispositivos disponibles han aumentado en tamaño y de ese modo más aplicaciones han sido posibles. Un uso interesante de esta tecnología es el prototipado de circuitos a medida completos que tienen una compleja estructura interna, como los procesadores. La mayor parte de los fabricantes de procesadores ahora construyen prototipos con FPGAs en algún punto del proceso de diseño. Una de las compañías que utilizan esta tecnología es Argonaut que emplea FPGAs para prototipar un procesador RISC con instrucciones definidas por el usuario antes de fabricar realmente el diseño final en un ASIC [2].
16
Una vez que el FPGA no es sólo un prototipo surge una interesante posibilidad de incursión en el mercado, ya que el FPGA es reprogramable en campo, el diseño no tiene que soportar más la carga de la flexibilidad para tratar con diferentes aplicaciones, en lugar de eso, un diseño óptimo puede crearse para cada aplicación y cargarse en el FPGA siempre que se requiera.
2.2 Estructura interna y funcionalidades del FPGA
Las herramientas de alto nivel ofrecen tecnología de FPGAs a los ingenieros y científicos que no tienen, o tienen un poco de experiencia en diseño de hardware digital. El proceso de síntesis es bastante complejo y puede hacerle cuestionar cómo funcionan realmente los FPGAs. A continuación se presenta un resumen para entender las partes fundamentales de un FPGA y cómo funciona a fondo.
Cada FPGA está compuesto de un número finito de recursos predefinidos con interconexiones programables para implementar un circuito digital reconfigurable. La siguiente figura muestra la estructura básica interna del chip.
Fig. 2.1 Estructura en bloques del FPGA
Como se puede observar en la figura 2.1, el FPGA internamente se divide en 3 bloques:
Bloques lógicos configurables (CLBs)
17
Interconexiones programables
Bloques de entrada y salida
2.2.1 Bloques lógicos configurables (CLBs)
Las especificaciones del FPGA incluyen la cantidad de bloques de lógica configurables, el número de bloques de lógica de función fija como multiplicadores y el tamaño de recursos de memoria como la RAM en bloque embebida. El chip FPGA tiene muchas otras partes, pero éstas son generalmente las más importantes cuando se seleccionan y comparan FPGAs para una aplicación en particular. A continuación se muestra la composición de una celda lógica configurable o programable.
Fig. 2.2 Composición interna de una celda lógica programable
En el nivel más bajo, los bloques de lógica configurables, como los segmentos o células lógicas, ofrecen 2 componentes básicos: flip- flops y tablas de consulta (LUT [Look-Up Table]).
Los flip-flops son registros binarios de desplazamiento utilizados para sincronizar la lógica y ahorrar estados lógicos entre ciclos de reloj. En cada transición de reloj el flip-flop recibe el valor 1 ó 0 (VERDADERO o FALSO) en su entrada, y conserva esa constante de valor hasta la siguiente transición de reloj. Bajo condiciones normales el FPGA agrega un flip-flop entre cada operación para maximizar el tiempo de propagación disponible para ejecución de cada operación. La excepción a la regla es cuando se agrega código a la estructura de un ciclo temporizado de un solo ciclo. En esta
18
estructura de ciclo especial, los flip-flops se agregan sólo al principio y al final de la iteración del ciclo, y depende del programador las consideraciones de tiempo que tomará [3].
El resto de la lógica del esquemático mostrado en la figura 2.2 se implementa utilizando muy pequeñas cantidades de RAM en forma de LUTs. Es fácil asumir que el número de compuertas de sistema en un FPGA corresponde al número de compuertas NAND y NOR en un chip particular, pero en realidad toda la lógica combinatoria (ANDs, ORs, NANDs, XORs, etc.) es implementada como tablas de verdad dentro de la memoria de la LUT. Una tabla de verdad es una lista predefinida de salidas para cada combinación de entradas [3].
Los FPGAs tienen circuitos multiplicadores integrados, para ahorrar el uso de LUTs y flip-flops en aplicaciones de matemáticas y procesamiento de señales. Lo anterior se debe a que la simple tarea de multiplicar dos números puede consumir muchos recursos, y su implementación en circuitos digitales puede ser compleja [3].
La siguiente figura muestra la imagen del esquemático de una manera de implementar la multiplicación de 4 bits por 4 bits, utilizando lógica combinatoria.
Fig. 2.3 Estructura de lógica combinatoria de un multiplicador de 4 bits por 4 bits
Los FPGAs Virtex-II y Spartan-3 cuentan con multiplicadores de 18 bits por 18 bits, por lo que multiplicar dos números de 32 bits cada uno requiere tres multiplicadores para cada operación.
19
Muchos algoritmos de procesamiento de señales implican la conservación de los números que se están multiplicando, y como consecuencia los FPGAs de más alto rendimiento como el Virtex-5 tienen circuitos multiplicadores acumuladores integrados [3].
A continuación se muestra una tabla donde se muestran las especificaciones de recursos de diferentes familias de FPGA de Xilinx como ejemplo.
Tabla 2.1 Especificaciones de recursos de diferentes familias de FPGA de Xilinx
Para entender mejor estas especificaciones es necesario considerar la manera en que el código está sintetizado en los circuitos digitales. La síntesis es el proceso de convertir lenguajes de programación de alto nivel a nuevas implementaciones de hardware. A cada código sintetizable ya sea gráfico o de texto, le corresponde un esquemático de circuito que describe cómo deben cablearse los bloques lógicos.
2.2.2 Interconexiones programables
Todas las celdas lógicas programables se interconectan mediante una matriz de cables y switches programables. Existen 2 tipos de programación de celdas: OTP (One Time Programmables) y MTP (Many Time Programmables).
En el mercado del diseño en FPGAs es muy importante conocer las ventajas que nos ofrece un dispositivo en relación al otro. Como resulta obvio, un dispositivo OTP no es nada conveniente si
20
estamos desarrollando prototipos experimentales, en este caso la mejor opción es emplear dispositivos MTPs. Un FPGA OTP se dice que es un dispositivo con Lógica No Reconfigurable, debido a que su lógica solamente puede ser configurada en una sola ocasión. Por el contrario, un FPGA MTP es un dispositivo de Lógica Reconfigurable.
Debido a la tecnología de programación, un OTP es básicamente programado mediante una tecnología Antifusible (en inglés Antifuses) que una vez establecidas las conexiones y desconexiones, ya no es posible reestablecer el circuito. Los FPGAs de Actel3 utilizan esta tecnología, que a pesar de su desventaja en la reprogramación, adiciona otras ventajas como lo son: la velocidad de desempeño y la prevención de fallas en el momento en que se descarga una configuración en un dispositivo ISP (Programable en Sistema). Además no requieren de un soporte en hardware adicional para mantener su configuración como en el caso de los SRAM, ya que no son volátiles.
Los FPGAs de Xilinx y los de Altera son MTP programándose mediante tecnología SRAM, por lo que pueden ser Programados en Sistema, a diferencia de los OTP que se programan Fuera de Sistema. Debido a que los SRAM necesitan almacenar su configuración en RAM, son módulos volátiles y requieren en ocasiones una memoria exterior para hacerlo, lo que implica mayor hardware de soporte. Así mismo, se trata de dispositivos más lentos en comparación a los OTP, pero con la gran ventaja de que son completamente reconfigurables y tienen una mayor capacidad de compuertas lógicas [4].
El avance experimentado en los últimos años en el diseño y prestaciones de las celdas de memoria flash ha permitido su incorporación a los dispositivos programables. Los FPGAs basados en celdas flash recogen las ventajas principales de las dos técnicas anteriores situándose en un punto intermedio. Su tamaño es bastante más reducido que el de una celda de SRAM, aunque sin llegar al tamaño reducido de un antifusible; son reprogramables aunque la velocidad de programación es bastante más lenta que en el caso de una SRAM; y son no volátiles, por lo que no necesitan un dispositivos auxiliar para guardar la configuración interna, como en el caso de la SRAM.
2.2.3 Bloques de entrada y salida
La función de un bloque de entrada/salida es permitir el paso de una señal hacia dentro o hacia el exterior del dispositivo. Por este 21