Divisor de Frecuencias en Hardware Evolutivo Christian José Devia 1 [email protected]José Marcio Luna 2 [email protected]Alvaro Betancourt MIng, MSc 3 [email protected]RESUMEN En el presente articulo se describe el desarrollo de una plataforma experimental en hardware evolutivo (Evolvable Hardware, EHW) dentro del proyecto DEEP (Development of an Experimental Evolvable Hardware Platform). Se expone el análisis de los primeros resultados obtenidos durante la evaluación de la plataforma a través de la implementación de un divisor de frecuencias evolutivo. Palabras Claves Hardware Evolutivo, Algoritmos Genéticos, Divisor de Frecuencia, FPGA. 1 Estudiante. Universidad Distrital. Facultad de Ingeniería. Miembro Grupo LAMIC 2 Estudiante. Universidad Distrital. Facultad de Ingeniería. Miembro Grupo LAMIC 3 Profesor. Universidad Distrital. Facultad de Ingeniería. Director Grupo LAMIC
23
Embed
Experimentos en Hardware Evolutivocidc.udistrital.edu.co/investigaciones/documentos/revistacientifica... · en hardware evolutivo (Evolvable Hardware, EHW) dentro del proyecto DEEP
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
En el presente articulo se describe el desarrollo de una plataforma experimental
en hardware evolutivo (Evolvable Hardware, EHW) dentro del proyecto DEEP
(Development of an Experimental Evolvable Hardware Platform).
Se expone el análisis de los primeros resultados obtenidos durante la evaluación
de la plataforma a través de la implementación de un divisor de frecuencias
evolutivo.
Palabras Claves
Hardware Evolutivo, Algoritmos Genéticos, Divisor de Frecuencia, FPGA.
1 Estudiante. Universidad Distrital. Facultad de Ingeniería. Miembro Grupo LAMIC2 Estudiante. Universidad Distrital. Facultad de Ingeniería. Miembro Grupo LAMIC3 Profesor. Universidad Distrital. Facultad de Ingeniería. Director Grupo LAMIC
ABSTRACT
This abstract is aimed at describing the development of an experimental platform
within Evolvable Hardware (EHW) along the DEEP (Development of an
Experimental Evolvable Hardware Platform) project, as well as presenting the
analysis of the outcomes reached from the platform evaluation through the
implementation of an evolvable frequency divider.
Key Words
Evolvable Hardware, Genetic Algorithms, Frequency Divider, FPGA.
I. INTRODUCCIÒN
En los últimos años, las estrategias bioinspiradas han tomado fuerza en el campo
de la ingeniería. Es así como surgen ramas de estudio como la computación
evolutiva [1,2,3,4] que imita operadores naturales como la selección, el cruce y la
mutación de criaturas para resolver complejos problemas multivariables de forma
heurística. Esto, complementado con los últimos desarrollos en dispositivos
lógicos programables como las FPGAs (Field Programmable Gate Array) han dado
lugar a una novedosa disciplina llamada Hardware Evolutivo (Evolvable Hardware,
EHW) [5,6,7]. El EHW es un acercamiento moderno al diseño de circuitos
complejos y a la construcción de hardware adaptativo. Varias de las dimensiones
del EHW están en pleno proceso de exploración.
El proyecto DEEP (Development of an Experimental Evolvable Hardware
Platform), se presenta como una propuesta que da comienzo a la experimentación
en este novedoso campo dentro de la Universidad Distrital, con el fin de realizar
pruebas de tipo académico que permitan examinar su aplicabilidad en el entorno
local.
El presente artículo se organiza como sigue: La sección 2, ilustra la metodología
utilizada en el desarrollo de la plataforma experimental en EHW, se describen los
dos procesos paralelos de diseño que implican un desarrollo de una celda
evolutiva sobre FPGA y una librería de instrumentos virtuales que implementan los
algoritmos genéticos. En la sección 3 se expone el modo como dichos procesos
operan conjuntamente. En la sección 4 se evalúa el desempeño de la plataforma
frente al problema concreto de un divisor de frecuencias evolutivo. Se desarrollan
una serie de ejemplos cuya finalidad es exponer la incidencia de los operadores
genéticos sobre la arquitectura hardware adoptada en la plataforma. Finalmente
en la sección 5 se presentan las conclusiones.
II. METODOLOGÌA
Para llevar a cabo el experimento sobre la FPGA, se hizo necesario el diseño de
una plataforma experimental en EHW. Dicho diseño se compone de dos partes
fundamentales:
• Desarrollo de una librería de instrumentos virtuales (Virtual Instruments, VI)
orientada al diseño, ejecución y evaluación de algoritmos genéticos (AG)
bajo el lenguaje de programación gráfica Labview.
• Diseño de una matriz de celdas evolutivas adecuada para la FPGA, que
facilite el monitoreo de la evolución y las conexiones físicas al interior del
dispositivo.
2.1. Librería de Instrumentos Virtuales para Algoritmos Genéticos:
La librería presenta operadores específicos, seleccionados entre las principales
estrategias evolutivas reportadas y aplicadas en problemas de ingeniería [2, 4],
por lo tanto, se cuenta con una variedad de soluciones que abarcan una buena
cantidad de problemas mediante la combinación de diferentes VIs, y por ende de
diferentes estrategias de evolución.
En el VI de generación de población inicial se determinan parámetros de
codificación de los individuos, la cual, puede ser de tipo binaria, octal, hexadecimal
o decimal, facilitando el proceso de experimentación con diversos tipos de
cadenas [4]. Asimismo, los operadores de selección (por ruleta y por muestreo
estocástico), cruce (con puntos de cruce variable) y mutación (uniforme y no
uniforme) [1,2,4], poseen muchas prestaciones, de tal forma que el usuario accede
a diversas opciones para diseñar el AG que mejor se acomode a sus necesidades.
Esta librería ha sido puesta a prueba en la solución de algunos problemas de
evolución de software como maximización en funciones bidimensionales con
funciones senoidales moduladas, minimización de la función de Ackley y
coincidencia de palabras [4], donde se han obtenido buenos resultados en cuanto
a precisión en las respuestas, tiempos de convergencia y facilidades de operación
hacia el usuario. Esto último se refleja en la interfaz gráfica que dadas las
prestaciones de Labview, conducen a que sea muy amigable para el operador y
además permite realizar cambios de parámetros fácilmente.
2.2. Diseño de una Matriz de Celdas Evolutivas sobre FPGA.
El circuito evolutivo fue especificado mediante lenguaje de descripción de
hardware, VHDL y programado en una FPGA XC4000 de Xilinx [8, 9, 10]. Consiste
en una matriz de cuatro celdas y una memoria RAM que contiene las palabras de
programación e interconexión de las celdas como se puede observar en la figura
1.
La arquitectura de celda se diseñó de tal forma que mediante un gran número de
operaciones lógicas, el proceso evolutivo se lleva a cabo de forma fácil al interior
del dispositivo hardware. Cada celda cuenta con tres unidades lógicas, un flipflop
tipo T y un conjunto de multiplexores. Una celda lógica puede realizar 16
operaciones diferentes, determinadas por la palabra de control proveniente de la
RAM. Para su programación se requieren 16 bits, lo cual lleva a que el circuito
evolutivo quede determinado por una palabra de programación de 64 bits. La
figura 2 ilustra el diagrama de la celda propuesta.
Figura 1. Diagrama esquemático del circuito evolutivo.
La tabla 1 muestra las operaciones de la unidad lógica :
Tabla 1.Tabla de operaciones de la Unidad Lógica.
Código Operación Código Operación0 0 8 a and b1 a nor b 9 a xorn b2 a’ and b A B3 not a B a’ or b4 a and b’ C A5 not b D a or b’6 a xor b E a or b7 A nand b F 1
La figura 3 ilustra las conexiones internas finales dentro de la FPGA.
Figura 2.Diagrama esquemático de una celda.
Figura 3.Esquema de conexiones internas dentro de la FPGA.
2.3. Funcionamiento Conjunto de la Plataforma
Los módulos de hardware y software descritos anteriormente, trabajan en forma
conjunta permitiendo así la evolución intrínseca de hardware mediante la
utilización de un AG.
El AG maneja una población fija de individuos de 64 bits, codificados en cadenas
hexadecimales, los cuales, son descargados a la FPGA por puerto paralelo [11],
para ello se implementó un protocolo de nivel físico que garantiza la sincronía en
la transferencia de datos en las dos direcciones del puerto. De esta forma, cada
individuo modifica el comportamiento del circuito evolutivo produciendo una salida
específica, la cual es realimentada hacia el computador para su posterior análisis
en el AG.
Dependiendo del problema planteado se diseña un VI de aptitud, cuya función es
tomar la señal de salida de la FPGA y determinar que tan apto resulta el individuo
de acuerdo con la solución que aporte su fenotipo. Es decir, dentro de la FPGA se
decodifica del genotipo del individuo en su fenotipo. Este dato de aptitud, permite
escoger de manera probabilística, a qué individuos durante cada generación le
serán aplicados los diversos operadores evolutivos y genéticos.
III. IMPLEMENTACIÓN DE UN DIVISOR DE FRECUENCIAS EVOLUTIVO
La primera propuesta de prueba, para la plataforma experimental en EHW,
consiste en llevar a cabo la evolución de un divisor de frecuencias, que partiendo
de un tren de pulsos de referencia en la entrada del sistema, permita conseguir
arquitecturas digitales que resulten en señales de salida con frecuencias múltiplos
de la original. Dichos múltiplos, por tratarse de un divisor de frecuencias, deben
encontrarse en un rango comprendido entre 0 y 1.
Para todos los experimentos llevados a cabo la señal de entrada consiste en un
tren de pulsos a 60 Hz generado dentro de la FPGA.
3.1. Divisor de Frecuencias a ½ de la frecuencia de entrada
Para este caso se busca obtener la arquitectura necesaria para originar una señal
de 30 Hz a partir de la señal de 60 Hz de entrada al sistema. Dado que el espacio
solución del problema en este caso es grande, se puede concluir que la respuesta
deseada puede darse a través de varios individuos, por lo que el problema puede
tener muchas soluciones.
Evolución divisor de frecuencias Factor=0.5, Población=5, Mutación=100%, Cruce=25%
0
10
20
30
40
50
60
Generaciones
Función P romedio
Función Más Apto
Función Menos Apto
Figura 4Curva de error, Evolución divisor de frecuencias con factor 1/2.
Los parámetros (Factor (de frecuencia) = 0.5, Población (Número de individuos) =