Hand-made Web Server, Built From 200 TTL Chips 343
ps writes "Bill Buzbee has constructed a hand-made CPU, complete with
hardware address translation, memory mapped I/O, and DMA, out of 200
74-series TTL chips wired together with thousands of individually wrapped
wires. By using a port of Adam Dunkels' uIP TCP/IP stack to the Magic-1, it
currently serves up live web pages
at an amazing speed of 3 MHz. See the website for photos and
schematics."
Re:3 MHz? (Score:1, Interesting)
Article text (Score:5, Interesting)
Magic-1 is a homebuilt minicomputer. It doesn't use an off-the-shelf microprocessor, but rather has a custom CPU made out of 74 Series TTL chips. Altogether there are more than 200 chips in Magic-1 connected together with thousands of individually wrapped wires. And, it works. Not only the hardware, but there's also a full ANSI C compiler for Magic-1 (retargeted LCC), and a rudimentary homebrew operating system. You can even telnet into Magic-1 and play Original Adventure.
This web site has served as the development repository for the project, and contains lots of pictures documenting the construction, as well as full documentation and diaries stretching back to the project's beginning in 2001. You can also find a few videos of Magic-1 running, including the first time it worked.
Start here, and then check out the Overview and Photo Gallery. To dig deeper, browse through Technical Info, Construction - and if you're really interested, you can even download Magic-1's full schematics.
Magic
In the summer of 1980 I celebrated my freshly minted B.S. in Journalism by blowing most of the cash I collected in graduation gifts on a TRS-80 Model 1 computer. Sitting on the floor of my apartment I fired it up, typed in the sample BASIC program and then "RUN".
"BILL", I responded.
Wow! I was blown away. This was just a machine, but I could interact with it using language that we both understood. As a Liberal Arts graduate with next to no technical background, I found this completely astonishing. Over the next year, I continued to play with my TRS-80 Model 1 while working as a journalist on a small-town Kansas newspaper. I decided that I really wanted to learn more about how computers worked, so I went back to college and picked up a M.S. in Computer Science.
Now, more than 20 years later, I find myself with an urge to touch that magic again by building my own computer from scratch. By "scratch", I mean designing my own instruction set, wire-wrapping a CPU out of a pile of 74 series TTL devices and writing (or porting) my own assembler, compiler, linker, text editor and operating system.
I'm calling this computer the "Magic-1", or M-1 for short. It's a one-address, microprogrammed machine with one-byte opcodes. It features 8/16-bit data operations, functioning on an 8-bit wide data bus with 16-bit addresses (mapped via 2K-byte pages into a 22-bit physical address space). Code and data address spaces can be shared or disjoint, giving each process up to 128K bytes of addressing. User and supervisor modes exist, along with hardware address translation, memory-mapped IO, and support for DMA and externally-generated interrupts. As far as components go, it is built entirely out of 74LS and 74F-series TTL devices plus modern SRAM and old bi-polar PROMs for the microcode store. I designed it to run at 4 Mhz, but missed a couple of critical paths - so ended up at 3 Mhz. Goals
OK, so I understand wanting to do your own CPU, buy why on earth are you doing it this way? I mean, why TTL - why not FPGA? And really, 16-bit virtual addresses in a 22-bit physical address space! What's the deal with that?
I guess any project should start off with some notion what of what you're trying to achieve. My high-level project goals are: bullet
Touch the magic. By this I mean to gain a deeper understanding of how computers work, and specifically computers similar to those of the late 70's and early 80's that first fired my interest. For this reason, the Z80 loomed large in my mind throughout the design process, and running with an 8-bit data bus and 16-bit addresses just seemed right. Although I'm largely trying to use parts that would have been current in that time, I'm not shooting for historical accuracy. My choice of
I'm suspicious of this... (Score:2, Interesting)
Homebrew CPUs (Score:3, Interesting)
Re:Serves up webpages... (Score:2, Interesting)
Re:Serves up webpages... (Score:2, Interesting)
Re:Reminded of a guy who once worked for me (Score:3, Interesting)
Re:Homebrew CPUs (Score:5, Interesting)
LesPaul,
I built a CPU using freeware tools as part of my PhD project. The paper is "A 12-bit 80MS/s Pipelined ADC with Bootstrapped Digital Calibration" published in the IEEE Journal of Solid-State Circuits, May 2005. You can google the title if you want to see the paper. Anyway, I designed a 24-bit microprogramed CPU in 0.25um CMOS to act as the calibration controller of the Analog-to-Digital Converter (ADC). The project was great because I got to design the architecutre of the CPU, the microcode/instruction set, I wrote a custom assembler, etc. I designed the circuits using viewdraw (public domain UNIX schematic capture tool). I designed the logic and tested the circuits using a public domain VHDL simulator (can't remember which one.. alliance maybe?). I laid out the circuit using Magic, a public domain layout editor running on Unix or Linux. The only thing that cost money was fabricating the chip. There is a service called MOSIS (www.mosis.org) that will do multi-project runs to lower the cost for you. I think the cheapest you will get is a couple of thousand bucks for 40 parts or so. Mine was something like $40k but I had high performance analog circuits in a fancy process. Email me if you need more info at carl.grace@yahoo.com
Cheers,
Carl
Re:Blinky Lights (Score:2, Interesting)
Good lord man, you've invented the MINICOMPUTER! (Score:3, Interesting)
You can tell you're getting old when people start reproducing the obsolete crap you're happy as hell to have left behind.