An FPGA implementation of a Microbee
toptensoftware.com
toptensoftware.com
I came home one day and there it was on a little desk just high enough for me to sit at, and I was so excited that we finally had a computer of our own. Mum knelt before it typing incantations on its clicky-clacky keyboard, and suddenly it began to play "When The Saints Go Marching In", and I don't need to describe the sense of wonder I felt because everybody here has had that same wonder at some point in their lives.
I asked her to tell me how she'd done it, and she just smiled and handed me the BASIC programming guide and gave me a hug, and from that moment onward I was hooked. I read that manual back to front a dozen times over, got my hands dirty poking around CP/M, and wrote hundreds of little games and tools and silly programs in the years that I owned my little 'bee.
I'm not exaggerating when I say that the Microbee (and my mum's ability to engage my sense of wonder) literally decided the course my life would take.
Thanks, Microbee, and I love you, mum.
This is kind of off-topic, but what's more interesting to me, conceptually, is the potential for real-time re-flashing. For example, you've got space for 10 CPU cores and 10 GPU cores. When, say, running a web server, you can erase the GPU cores, and use 20 CPU cores instead. When running a game, you could drop down to 5 CPU cores and 15 GPU cores. Or, when doing single-threaded apps, you could opt for a beefy single or dual core.
Also, you could have CPUs that re-wire themselves as part of their workflow. Or, if, for example, a new CPU design comes out - you could upgrade to it without buying new silicon. Hybrid FPGA approaches even exist today - some high-end FPGAs actually come with a hard-wired CPU inside them.
The FPGA Microbee project is only scratching the surface of "FPGA=cool" factor, I think.
I personally would love to have one for doing just this kind of thing for dealing with old software. Think of running old MAC OS stuff on one of these, or even like he's doing right now with the microbee. If done correctly it'd be hardware "accelerated" virtualization of some of the really old hardware.
There also exists flash based FPGAs which have the normal flash wearout problem. One time programmable FPGAs also exist but I don't think they are interesting in this application :-)
For reference, a typical FPGA cell includes a 1-bit flip-flop and an LUT (look-up table). Flip-flops are memory, LUTs simulate the logic.
The vendors haven't really seen this as an area which their customers are interested in. Maybe this has been changing in the recent years with the military's interest in software defined radio, but they probably don't need very rapid reconfigurations so maybe not ..
In the field of sotfware-defined radio, the USRP hardware from the GNU Radio project has an onboard FPGA. It's a great project, lets you deploy most radio stacks with only a few clicks: http://www.gnu.org/software/gnuradio/doc/exploring-gnuradio....
As a software developer I've always had a vague understanding of how computer hardware works, but after building fpgabee I have much deeper understanding. eg 1: I always knew what a VGA controller did, but had know idea how. Now that I've actually built one (albeit in code) it's pretty clear to me now. eg 2: I never really understood why hardware can't be just clocked to higher and higher frequencies... but now I totally get it.
Repeat until Read -> Experiment -> Success.
They say experience is what you get when the unexpected happens... so I guess it's the Fail step that's important.
Can you provide more detail on this?
1. The brand new Microbee Premium Plus Kit (sold out but very cool) http://www.microbeetechnology.com.au/premiumpluskit.htm and 2. The Microbee Software Preservation Project (MSPP) http://www.microbee-mspp.org.au/
(20 years ago or so, the computer lab in the Swedish jr high school I was attending was filled with Microbees for some odd reason. The memories...)