Diseño e Implementación de una Plataforma
Experimental en Hardware Evolutivo
José Luna, Christian Devia
Laboratorio de Automática Microelectrónica e Inteligencia Computacional. Universidad Distrital Francisco José de Caldas
Carrera 8 No 40-62 Piso 7. Bogotá DC, Colombia [email protected]
http://gemini.udistrital.edu.co/comunidad/grupos/lamic/
Resumen. Este artículo describe el diseño e implementación de una plataforma experimental en hardware evolutivo. Presenta las consideraciones técnicas prin-cipales en la resolución de problemas, tales como la programación parcial de un dispositivo lógico programable, y la ejecución de los experimentos a través del puerto paralelo tipo D. Además, algunos resultados experimentales son presen-tados con el fin de evaluar el desempeño de la plataforma.
Abstract. This paper describes the design and implementation of an experimen-tal evolvable hardware platform. It presents the main technical considerations that overcome some problems, such as the partial configuration of a program-mable logic device, and the experiments execution through the type D parallel port. Furthermore, some experimental results are presented in order to evaluate the performance of the platform.
1 Introducción
El Hardware Evolutivo (EHW, del inglés Evolvable Hardware), es una rama del dise-ño electrónico, en la cual, confluyen los campos de la Ingeniería de Sistemas, la Inge-niería Electrónica y la Biología [1]. Aprovecha las características de adaptabilidad y autoorganización de los sistemas evolutivos naturales [2] y las aplica a problemas de diseño de circuitos electrónicos análogos y digitales.
El esquema habitual de los experimentos en EHW consta de un algoritmo evoluti-vo que interactúa con un arreglo de circuitos básicos interconectados [1], al cual de-nominaremos matriz de celdas. Las conexiones al interior de la matriz son variables, lo que hace posible diferentes combinaciones de conexiones entre circuitos básicos.
En el campo de la electrónica digital, estos circuitos básicos son llamados bloques
de celdas lógicas (CLB, del inglés Cell Logic Blocks) [3], [4]. Se componen de una
red de compuertas y multiplexores que implementan diversos circuitos combinaciona-les. Asociado a la parte combinacional se encuentra con frecuencia un dispositivo de almacenamiento o flip-flop, que permite la implementación de circuitos secuenciales en la CLB.
Estas celdas lógicas pueden estar modeladas en herramientas de diseño asistido por computador (CAD, del inglés Computer Aided Design) como ayuda en procesos de simulación, o se implementan físicamente en dispositivos lógicos programables (PLD, del inglés Programmable Logic Devices). Ejemplo de estos dispositivos son el Field
Programmable Gate Array (FPGA) y el Complex Programmable Logic Device
(CPLD) [4].
Un proceso de evolución en hardware ejecutado en simulación usando una herra-mienta CAD se denomina EHW extrínseco. Si dicho proceso se ejecuta utilizando un PLD en el proceso evolutivo se denomina EHW intrínseco [1], [5]. En EHW extrín-seco se obtienen ventajas en cuanto a la generalidad de los circuitos, pero se tienen problemas para acometer fenómenos fortuitos provocados por radiación electro-magnética y efectos térmicos típicos de los elementos activos. En EHW intrínseco se obtienen circuitos poco generales, es decir, que el desempeño de un circuito varía de un PLD a otro, pero éstos, se acomodan apropiadamente a los factores de ruido en el dispositivo en el que son evolucionados.
El presente artículo describe el diseño de una plataforma experimental especializa-da en EHW intrínseco, dentro del proyecto DEEP (Development of an Experimental
Evolvable Hardware Platform) [6]. Se mencionan algunos detalles técnicos,
sugeren-cias y observaciones puntuales obtenidas del trabajo de consulta e implementación llevado a cabo. El documento se organiza de la siguiente manera: En la sección 2 se presenta el módulo hardware de la plataforma. Se describe la manera de acometer los problemas de configuración parcial y restricción en las conexiones internas del FPGA utilizado. También se presenta el módulo software utilizado en los experimentos. Se ilustran los pormenores del funcionamiento conjunto de los módulos software y hardware descritos. En la sección 3 se presentan los resultados de dos experimentos de evolución intrínseca de hardware ejecutados en la plataforma. Por último, en la sección 4 se presentan las conclusiones.
2 Descripción General de la Plataforma
La plataforma experimental se divide en dos módulos básicos. Un módulo hardware y un módulo software que se explican continuación.
2.1 Módulo Hardware
En este módulo, un FPGA XC4000 de Xilinx es el recurso de hardware configurable en la plataforma. Este dispositivo, puede ser programado en forma repetida, sin em-bargo, no permite configuración parcial. También es posible interconectar las salidas de varias compuertas CMOS a un camino común durante la configuración, lo que puede producir un corto circuito que dañe el dispositivo [1].
En el presente trabajo, los problemas debido a las restricciones descritas fueron re-sueltos implementando un circuito especializado en el FPGA [7], [8]. A dicho circuito se le denominó celda evolutiva [6] y se implementó en código VHDL (del inglés Very
sobre otras familias de FPGA [3], [4]. El circuito de la celda evolutiva se ilustra en Fig. 1.
Como se observa en Fig. 1, la celda consta de dos multiplexores (MUX) de entrada que seleccionan ya sea un dato del exterior de la celda o un dato realimentado de la salida. Dichos multiplexores se conectan a un par de unidades lógicas (UL). Cada unidad puede ejecutar las funciones lógicas que se ilustran en Tabla 1. Las salidas de las dos unidades lógicas se conectan a una tercera, de esta forma, una celda puede eje-cutar un amplio rango de operaciones mediante la combinación de tres funciones ló-gicas.
Se observa que un dispositivo de almacenamiento se ha adicionado a la salida de la última unidad lógica, en este caso un Flip-Flop tipo D. Este elemento permite la evo-lución de circuitos secuenciales. Nótese que los circuitos evolucionados pueden omitir el flip-flop mediante la utilización del multiplexor ubicado en la salida de la celda.
Para que un cromosoma o individuo producido por el AG configure la matriz, es necesario almacenar los genes en una RAM (Random Access Memory). Dicha memo-ria también ha sido implementada en código VHDL. A medida que la memomemo-ria va al-macenando los cromosomas, se modifican las funciones y conexiones internas de la matriz [6].
Fig. 1. Celda evolutiva implementada en el FPGA para evolución intrínseca de hardware. Fue desarrollada usando código VHDL [4], [6]
Además de la matriz de celdas evolutiva y la RAM de configuración, se ha imple-mentado en código VHDL un demultiplexor óctuple de uno a tres. El demultiplexor permite la descarga del cromosoma de configuración en el FPGA, sin que la longitud de dicho cromosoma sea un problema debido a las limitaciones en el número de pines de salida del puerto paralelo tipo D [6]. Una descripción detallada de la manera en que la RAM y el demultiplexor operan se describe en la sección 2.3.
2.2 Módulo Software
El módulo software consta de una biblioteca de VI, desarrollada bajo el lenguaje de programación Labview® [6]. Consiste en un conjunto de VI orientados al diseño y ejecución de AG. Cuenta con 32 operadores genéticos y evolutivos [2], [9], [10],
im-plementados en lenguaje G, los cuales, trabajan con cromosomas codificados en arre-glos unidimensionales de longitud constante. Los cromosomas o individuos forman palabras de control que definen la activación y desactivación de conexiones en la ma-triz de celdas evolutiva, de esta manera, se obtienen los circuitos digitales en el FPGA.
Tabla 1. Tabla de funciones lógicas ejecutadas por cada unidad lógica de la celda evolutiva utilizada. Los códigos hexadecimales corresponden a las palabras binarias de cuatro bits de control que determinan cada función [6]
Código hexadecimal Operación Código hexadecimal Operación 0 0 8 A and B 1 A nor B 9 (A xor B)' 2 A' and B A B 3 A' B A' o 4 A and B' C A 5 B' D A or B' 6 A xor B E A or 7 A nand B F 1 r B B
La selección de los operadores genéticos y evolutivos implementados, se realizó a través de una revisión de experimentos registrados en la literatura [2], [9], [10]. La bi-blioteca no solamente se especializa en experimentación en EHW, sino que permite la implementación de diferentes estrategias evolutivas orientadas a problemas de softwa-re.
Las facilidades que ofrece Labview en su entorno gráfico facilitan el monitoreo y control del desempeño del AG de manera animada y concomitante al proceso a través de los diferentes indicadores y controles digitales.
2.3 Funcionamiento Conjunto de la Plataforma
El módulo software ejecuta el envío de cada uno de los cromosomas de configuración al FPGA con el fin de activar o desactivar las conexiones entre los diversos dispositi-vos que componen la matriz. Esta descarga de los cromosomas se realiza a través del puerto paralelo Tipo D de 25 pines que se encuentra incorporado con frecuencia en los computadores de escritorio.
Para las conexiones a través del puerto paralelo, se emplean 12 bits de salida, de los cuales, ocho se asocian al registro de datos y cuatro al registro de control del puer-to paralelo. Se utilizan cinco bits de entrada asociados al registro de status [6].
El esquema general de comunicación entre el microprocesador y el FPGA se ilustra en Fig. 2. Consta de un demultiplexor óctuple de uno a tres, el cual, envía la informa-ción ya sea a la RAM o a la matriz de celdas evolutiva. El demultiplexor posee una entrada de ocho bits conectada al registro de datos del puerto paralelo, por medio de la cual se envían los cromosomas divididos en segmentos de ocho bits. Dichos seg-mentos del cromosoma se van indizando, de tal manera que la RAM va almacenando el cromosoma por partes. Cuando la memoria posee el cromosoma totalmente carga-do, las conexiones dentro de la matriz de celdas quedan definidas.
Fig. 2. Esquema general de conexiones entre el puerto paralelo tipo D y la FPGA XC4000. Los dispositivos anexos a la matriz de celdas evolutiva como la RAM y el demultiplexor de uno a tres, fueron implementados en la FPGA usando código VHDL [3], [4], [6]
El siguiente paso es enviar los datos de excitación (operandos) a la matriz de celdas evolutiva. El direccionamiento de los bits que indican dirección y datos en memoria, se realiza a través de dos pines del puerto paralelo asociados al registro de control como se observa en Fig. 2.
El sincronismo en la comunicación con el puerto se llevó a cabo con la utilización de un protocolo de nivel físico entre el computador y el FPGA [6]. Este protocolo fue implementado mediante el diseño de una máquina de estados finitos (FSM, del inglés
Finite State Machine) en código VHDL que determina la secuencia de comunicación
entre ambos dispositivos.
3 Experimentos de Prueba
El objetivo de los experimentos de prueba descritos a continuación, es evaluar el fun-cionamiento de la plataforma. Se ilustran los resultados obtenidos de dos experimen-tos a saber: evolución de un circuito sumador completo (full adder) [11], y evolución de un circuito que implementa una FSM de cuatro estados con entrada un bit [12].
3.1 Parámetros de la Evolución
Una síntesis de los principales parámetros considerados en los experimentos ejecuta-dos se ilustra en Tabla 2:
Tabla 2. Resumen de los parámetros considerados en la ejecución de los experimentos de evolución de un sumador completo y una FSM de cuatro estados [11], [12]
Experimento 1 Experimento 2 Sumador Completo FSM Tipo de Codificación Binaria Binaria
Número de Celdas 6 6
Longitud del Cromosoma 96 96
Tamaño de la Población 10 30
No. De Generaciones 10000 3000
No. De Corridas del AG 10 10
Tipo de Cruce Cruce por 10 puntos Cruce por 10 puntos
Probabilidad de Cruce 30% 70% Tipo de Selección Universal Estocástica y Reemplazo Generacional Universal Estocástica y Reemplazo Generacional Tipo de Mutación Uniforme Uniforme Probabilidad de Mutación 10% 2% Función de Aptitud Parámetros
∑
= = 7 0 ) ( i i C x A∑
= =100 0 ) ( i i C x A 3.2 Función de AptitudLa función de aptitud para cada experimento se define en (1).
∑
==
N i iC
x
A
0)
(
(1) Donde:≡
)
(x
A
Es la aptitud del individuox
.≡
C
Es el número de resultados acertados por el circuito determinado por el cro-mosomax
.≡
i
Es el índice de los datos aleatorios de entrada que excitan al circuito.≡
N
Es el número de datos en la secuencia aleatoria de entrada.Como se puede observar en Tabla 2, el valor de es 7 para el experimento del sumador, y es 100 para el experimento de la FSM. Es necesario introducir una se-cuencia de datos fortuitos, para evitar la evolución de circuitos que respondan apro-piadamente a algunas secuencias errando en otras.
N
3.3 Análisis de Resultados en la Evolución de un Sumador Completo
En las diez repeticiones del experimento, se registraron convergencias de los AG en todos los casos. La generación promedio de convergencia del algoritmo fue la 774,
con una desviación de 358.75, que arroja una variación muy alta en el rango de gene-raciones posibles para convergencia.
Este experimento utiliza mutación como su principal operador. Nótese que la pro-babilidad de cruce es baja, mientras que la propro-babilidad de mutación es alta. Con es-tos valores se ilustra que el problema es resuelto por la plataforma con relativa facili-dad y en un tiempo promedio de 2.35 s. El resumen estadístico obtenido de estos resultados se ilustra en Tabla 3 [11].
3.4 Análisis de la Evolución de una Máquina de Estados Finitos
Tanto la entrada del sistema como el reset, deben ser introducidos al azar. La probabi-lidad de activación de reset se ha asignado con un valor esperado de cuatro activacio-nes por cada 100 datos aleatorios de entrada para comprobar secuencias largas.
Se realizaron diez repeticiones del experimento, y todas convergieron en su evolu-ción. En Tabla 3 se observa que el tiempo medio de convergencia es de 474.78 gene-raciones, que es equivalente a 24.21s, con una desviación de 225,61 generaciones. Nótese el corto tiempo que toma procesar cada generación de 30 individuos, teniendo en cuenta que la población completa es evaluada en el FPGA y que a su vez, la matriz es excitada con una secuencia aleatoria de 100 datos [12].
Tabla 3. Resumen de los resultados obtenidos en los experimentos de evolución de hardawre ejecutados sobre la plataforma DEEP [11], [12]
Datos\Experimentos Sumador Completo FSM Aptitud Mejores (Generación 774) 6,78/8 94,22/100 Desviación Estándar Mejores 1,56 9,58 Generación Promedio de Convergencia 774 474,78 Desviación Generación de Convergencia 358,75 225,61 Tiempo Medio por
Generación 3,164 ms 58,4 ms Tiempo Medio de la
Evolución 2,35 s 24,21 s
4 Conclusiones
Se presentan las consideraciones de tipo técnico aplicadas en el desarrollo de una pla-taforma experimental en hardware evolutivo, realizando pruebas experimentales para verificar su correcto funcionamiento.
La implementación de la celda evolutiva permitiendo el uso exclusivo de conexio-nes válidas en el FPGA, garantizó la ejecución de los procesos evolutivos sin peligro de daño en el dispositivo.
Durante los procesos de evolución de hardware se utilizó el puerto paralelo, el cual, posee facilidades de conexión física, no obstante, dados los escasos recursos del puerto se hizo necesaria la implementación del demultiplexor en el FPGA. Esta im-plementación arrojó resultados favorables en los experimentos, tanto en los tiempos promedio de convergencia como a nivel funcional. Esto, complementado con el sin-cronismo implantado a través del protocolo de nivel físico en el FPGA y en el módulo de software, minimiza los tiempos promedio de comunicación entre el microprocesa-dor y el FPGA.
De los experimentos, se concluye que el EHW se muestra como una disciplina prometedora en el campo del diseño electrónico, que está fuera de los paradigmas de diseño convencionales. Se perfila como una herramienta útil en el diseño de circuitos de control en sistemas de alta complejidad.
Referencias
1. Gordon, T., y Bentley P. J.: On Evolvable Hardware En: Soft Computing in Industrial Elec-tronics, S. Ovaska and L. Sztandera Eds. Physica-Verlag, Heidelberg 2002.
2. Martinez J., y Rojas, S,.: Introducción a la informática evolutiva: Un nuevo Enfoque para Resolver Problemas de Ingeniería, Santafé de Bogotá: Universidad Nacional de Colombia. 1999. pp. 185.
3. Villar, E.: VHDL lenguaje estándar de diseño electrónico. Madrid : McGraw – Hill, 1998. 150 p. pp. 13, pp. 15.
4. Brown, S., Zvonko, V.: Fundamentals of Digital Logic with VHDL Design. Singapore : McGraw-Hill, 2000, 828p.
5. Yao X., Higuchi T.: Promises and Challenges of Evolvable Hardware, En: IEEE Trans. Sys-tems, Man, and Cybernetics, Part C: Applications and Reviews, 1999.
6. Luna J., Devia C.: Desarrollo de una Plataforma Experimental en Hardware Evolutivo – DEEP. Bogotá DC, 2004, 154p. Tesis (Pregrado en Ingeniería Electrónica): Universidad Distrital Francisco José de Caldas, Facultad de Ingeniería.
7. Kalganova T., Miller J.: Evolving More Efficient Digital Circuits By Allowing Circuit Lay-out Evolution and Multi-Objective Fitness. In: The First NASA/DoD Workshop on Evolv-able Hardware. 1999. http://citeseer.ist.psu.edu/kalganova99evolving.html
8. Miller J. F., Thomson P., Fogarty T.: Designing Electronic Circuits Using Evolutionary Al-gorithms. Arithmetic Circuits: A Case Study. Dept. of Computer Studies, Napier. Genetic Algorithms and Evolution Strategy in Engineering and Computer Science. 1997. http://citeseer.ist.psu.edu/miller97designing.html
9. Falkenauer E.: Genetic Algorithms and Engrouping Problems. New York : John Wiley, 1998, pp. 220.
10. Gen M., Cheng R.: Genetic Algorithms and Engineering Problems. New York : John Wiley, 1998, pp. 411.
11. Luna , J., Devia C.: Diseño de un Circuito Sumador Completo usando Evolución Intrínseca de Hardware. En : Revista Ingeniería. Vol. 9, no. 2. (2004). p. 20-27. ISSN 0121-750X 12. Luna , J., Devia C.: Diseño de una máquina de estados finitos en hardware evolutivo. En:
CONGRESO INTERNACIONAL DE LA REGIÓN ANDINA. (2º : 2004 : Bogotá). Me-morias del II Congreso Internacional de la Región Andina - ANDESCON 2004. Bogotá : IEEE, 2004. 6p. ISBN 958-33-6534-3