A Field-Programmable Gate Array (FPGA) is a Very Large Scale Integration (VLSI) silicon chip containing a large array of components and wires. Switches distributed throughout the chip determine how each component behaves, and how they connect to the wires. By configuring these switches, an FPGA's behaviour is determined by the user `in the Field' rather than at the chip factory. In RAM-based FPGAs, the switches are electronic, and have their settings determined by bits of memory onboard the chip. The Xilinx XC6200 [21] is the first such device ideally suited to evolutionary work [19], and a simplified view of it is given in Figure 1. It can be interfaced to a host computer so that its configuration memory can be written to by software just like normal computer memory. An Evolutionary Algorithm (EA) running on the computer can write to the FPGA's configuration memory, setting the electronic switches, and thus creating a physically real electronic circuit. This circuit can be evaluated according to its real-world performance at a task, and successively modified by the EA of choice (eg. a genetic algorithm (GA) [7, 4, 5], evolutionary programming [3], evolution strategies [13] or genetic programming [8, 9]) until satisfactory performance is achieved. Figure 2 depicts the operation of a simple GA applied in this way.
Figure 1: A simplified view of the XC6216
FPGA. Only those features used later in the experiments are shown. Top:
A
corner of the
array of blocks; Below: the
internals of an individual cell, showing the function unit at its centre. The
symbol
represents
a multiplexer -- which of its four inputs is connected to the output (via an
inversion) is controlled by the configuration memory. Similar multiplexers are
used to implement the user-configurable function F.
Figure 2: Evolving an
FPGA configuration using a simple genetic algorithm.
Note that in this evolutionary process of automatic circuit design, there is no simulation, modelling, or analysis of the circuit. The FPGA is not programmed to follow a sequence of instructions, it is configured and then allowed to behave in real-time according to semiconductor physics: evolution is manipulating a physical medium.
The electronic equipment needed is not necessarily bulky or complicated. Figure 3 shows the tiny `Khepera' robot (a common tool in ER [11]) equipped with an XC6216 FPGA onboard. With the FPGA controlling the real robot, behaving in the real world, a simple wall-avoiding behaviour has been evolved. Evolution was by a GA running on a PC connected to the robot by a serial cable, but there was no simulation of the robot or the control circuits. This simple demonstration shows that evolution of FPGA circuits is not necessarily any more complicated or difficult than evolving a software structure such as a simulated ANN.
Figure 3: The miniature Khepera robot. The top two layers are an FPGA extension
turret allowing onboard evolution of electronic control systems. They were
designed by the author, and constructed in collaboration with the Xilinx
Development Corp.