  It has been shown that unclocked, recurrent networks of Boolean gates in
FPGAs can be used for low-SWaP reservoir computing. In such systems, topology
and node functionality of the network are randomly initialized. To create a
network that solves a task, weights are applied to output nodes and learning is
achieved by adjusting those weights with conventional machine learning methods.
However, performance is often limited compared to networks where all parameters
are learned. Herein, we explore an alternative learning approach for unclocked,
recurrent networks in FPGAs. We use evolutionary computation to evolve the
Boolean functions of network nodes. In one type of implementation the output
nodes are used directly to perform a task and all learning is via evolution of
the network's node functions. In a second type of implementation a back-end
classifier is used as in traditional reservoir computing. In that case, both
evolution of node functions and adjustment of output node weights contribute to
learning. We demonstrate the practicality of node function evolution, obtaining
an accuracy improvement of ~30% on an image classification task while
processing at a rate of over three million samples per second. We additionally
demonstrate evolvability of network memory and dynamic output signals.
