The PNN algorithm was implemented with four different methods to demonstrate the efficiency of each method. It was implemented in software using JAVA and C, and in hardware using single and dual FPGA systems. It was my responsibility to write the JAVA and C programs and drivers to interface the computer with the FPGA hardware. For hardware interfacing, I used Java's native method interface to allow the C drivers to be used by Java programs. Later versions incorporated remote method interfaces capable of running the hardware calculations over the net, utilizing servers equipped with our custom circuitry. Only the JAVA version is supplied here because I wasn't authorized to release the others. For source code, theory, and directions on use, click here.
The results of the experiment in a nutshell, in time to completion: Java 12 minutes, C 8 minutes, single-FPGA 3 minutes, dual-FPGA 1.5 minutes. So, it is possible and desireable to use FPGAs as custom calculating units, even with JAVA, and even in networked situations. As part of this research, I also ported various versions of the PNN algorithm across platorms to various machines and languages.
I wrote this software while working with the Adaptive Scientific Data Processing group; see the ASDP web page for more information.
Click on the images below to see higher resolution pictures.
Another facet of this research was the conversion of existing ground-processing
algorithms for the Terra spacecraft
into FPGA-hybrid processors. This work was successful and resulted
in an order-of-magnitude speed increase.