The PNN software is a neural network processing system that classifies Landsat imagery.  Each pixel of an image is studied and the software classifies it as bare land, forest, grassland, water, etc.  Color is used to denote terrain type.  It is a client/server system composed of algorithms implemented in JAVA, C, and FPGA hardware, and is designed to showcase the acceleration potential of FPGA systems when used in scientific data processing. The client provides a user interface and software calculation capabilities, while the server provides FPGA calculation services.

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.
Raw Data Processed ("Classified") Data

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.