
Reconfigurable computing is the use of in-situ reconfigurable FPGAs as computing devices, in order to accelerate operations which otherwise would be performed by software. A reconfigurable computer consists of a commercially available processor which sits next to a commercially available FPGA. The FPGA can be programmed with a digital circuit which implements the function to be performed, such as a fast square root operation. The processor can then access this function, as if it were in its own instruction set, or in the instruction set of a maths co-proccessor. However, the difference between an FPGA and a co-proccessor is that the FPGA can be reprogrammed with any function required, no matter how bizzare, if that is what the user wants. If the user wishes to calculate f(x) = x2 + 4 very quickly, why shouldn't they be able to? The co-proccessor doesn't support it because it is not going to get called as often as a/b, but an FPGA could support it, since it can be reprogrammed once the function is no longer needed.
It is often said that processors spend 90% of their time doing 10% of the code. This is certainly true of DSP algorithms which consist of compute intensive loops. If we can speed up the inside of the loop with a function in hardware, we can leave the processor free to do loop comparisons and other things its flexibility allows it to do well.
The gate array must be capable of being reconfigured in a very short space of time, or else the speed-up available would be lost by the time spend reconfiguring. Modern devices such as the Xilinx 6200 series are capable of being reprogrammed as quickly as writing to SRAM. In addition, parts of the device can be reprogrammed without disturbing other parts. This is very useful, as it allows us to download functions which will be required in the future whilst current functions are still being used. Also it allows us to quickly load constant registers internal to the design without having to explicitly route through databuses. All in all, a jolly good device, worthy of the acronym RPU - Reconfigurable Proccessing Unit.
I have a general introduction to Lola, and also a library of Lola components that have already been developed. I also have a Java application called Derek, after the late, great Derrick Morris, which allows experimentation with the HotWorks PCI card. The driver routines are lifted directly from WebScope, but it allows a more friendly interface than the little text box at the bottom of the screen for looking at map registers and stuff like that. Derek is very much work in progress; some parts of it do not work yet, such as loading a set of watch variables; if anyone does download it and finds it useful, please e-mail me, and I'll keep you up to date as it develops. As its a Java application, not applet, you will need the JDK from Sun, and then do java Derek on the command line.
I also have a page describing how to clock a circuit for a single cycle using Lola, which is very useful for people designing their own code and circuits, rather than using WebScope.
Alta Vista search on reconfigurable-comput*
Nice introduction to reconfigurable computing from Giga Ops
Scientific American article on [re]configurable computing