current "done" projects on OpenCores

Dave Long dave.long at bluewin.ch
Sat Nov 18 10:53:30 EST 2006


> There's a company, DRC, that sells a high-performance FPGA board that
> plugs into cpu sockets on multi-cpu motherboards:

That's another virtuous cycle: usually the problem with selling 
accelerator boards is that it normally just takes the problem of 
crunching some ops and turns it into the hassle of feeding the board 
with data and getting the results back.  Presumably the sockets on a 
multi-cpu motherboard are able to communicate in a way that looks much 
more like a coprocessor call than a DMA.

> I expect FPGAs to grow in popularity for general computing.  Perhaps
> some day every computer will have a CPU, RAM, FPGA, and IO.  Will
> programmers study circuit design or will they write code in high level
> languages that can be compiled to the FPGA?  I guess that it would be
> much easier to compile Haskell code to a circuit than C code.

There are several Haskell/FP hardware design languages.  (the only one 
that comes to mind immediately is "Ruby", which is probably far too old 
to be a good example, and is noteworthy mostly for the name collision 
with the software language)

I believe computing HW design is the converse of SW design in that:

- parallel pattern matching is easy, but
- sequential pattern matching (looping) is difficult

If you look at what Horowitz and Hill had to say about how the 
introduction of PLDs made hardware cleaner*, it has many parallels with 
the FP approach to software.  Basically, they liked PLDs because one 
could have inputs (and last register state) flow into the logic, and 
then take the outputs directly out of the registers, 
inputs->logic->registers->output, breaking up the customary feedback 
loop of inputs->logic->registers->logic->outputs and meaning that the 
register clock was synchronous: no longer several gate delays away from 
the ultimate outputs.  (timing and synchronization seem to be to 
hardware what memory and GC are to software)

 From a software point of view, a little ravioli of logic with some 
registers stuffed in the middle and wires going in all directions looks 
very much like an OO view of the world, while a system in which the 
information flow through the logic gates is in one direction, with the 
outputs (and state feedback) provided at a single well-defined place, 
looks much more like an FP view of the world, with IO and State being 
done in monads which are "run" at well defined places.

-Dave

* cf "FPGA end-user programmability: how to achieve?"
http://www.mail-archive.com/kragen-discuss@canonical.org/msg00194.html

also, Dan Piponi's embedded lazy FP led-proto:
http://sigfpe.blogspot.com/2006/06/monadic-lightswitch.html



More information about the Kragen-discuss mailing list