If you're interested in experimenting with computer architecture, you may want look at the "bit-slice microprocessor" chips. These implement the most complex portions of a CPU -- the ALU/registers and the microcode program counter/stack/branch logic -- in chunks of 8 bits or so. (To implement a wider address or data word, you line up several alongside each other.) To these you need to add logic to connect the ALU and the uPC together, to connect the uPC to microcode memory, and to connect the ALU to program/data memory and I/O (possibly via a data bus.). It's still a lot of chips, but using those LSI components to handle the hairier portions of the system reduces most of the rest of the machine to simpler concepts and the hassle mostly comes from how many times you have to repeat the same logic across the program/data word. Then you get to write and debug the microcode which implements the processor you actually want to program against, and get that loaded into the microcode memory -- either by burning EPROMs, or by having designed the microcode memory to be writable and coming up with some sort of bootstrap loader scheme. As to whether it's "practical" -- Depends on what you're trying to do. If you need a highly specialized machine, it may be. If you're trying to educate yourself about the deepest levels of computer architecture, it may be. If you're looking to save money, it most emphatically is not; you're giving up *ALL* the efficiencies of scale, all the way down to the CPU level, and giving up all the work that has been done to speed up processors over the past two decades. To get an idea of what's involved: MIT had an excellent one-term class which starts with "look, we can use a transistor as a gate!" and builds up all the essentials of computer architecture from there, one level of abstraction at a time, winding up with the design of a machine very much along the lines I've just been describing, with some features you don't see in "standard" microprocessors. The class notes may be available on their Open Courseware website, and if you're serious about this I *HIGHLY* recommend them as the clearest introduction to the topic that I've seen. And, yes, I've done such a design. Taking one from block-diagram level to actual parts and wiring diagrams was my thesis. Which may give you some idea of the amount of work you're considering.
Select as Best AnswerUndo Best Answer
It entirely depends on what capabilities you want this CPU to have. A few years back (unfortunately, I can't find the link anymore) a guy made a 65xx processor kit as a prototype entirely out of individual transistors. It was a cool project, allowing you to throw switches to set the registers manually, then press a button to advance the clock by one cycle; lights would show you the individual states of each part of the processor at work, as well as to show the output at each data line and the accumulator. Unfortunately, it was prohibitively expensive and failure-prone (which are two reasons we don't use transistors as components for a CPU anymore). If you want to learn how to build one, Ork is pointing the way. I found this .pdf to help you.
You could do it in an FPGA too, but that needs serious tools. Steve
. Building a simple 4-bit computer is fairly easy, but not something I would recommend for a rank novice. . Building a processor that comes anywhere close to being useful as part of a modern desktop computer is out of the question.
Yes, you CAN build a simple processor, after all, ALL computers were once built from logic gates. Look at the Apollo Guidance Computer history here. This was one of the very very first IC based processors. Its an incredible piece of work. klabs.org/history/build_agc/
Whoah. Good luck keeping them interested long enough to make 15000 components Steve ;)
There are a couple of really amazing kids there who'll be well up for it. Steve
Interesting reading, kept me amused for a while. L
Wow! What a project that was!
I help my son's school electronic club - I have this dream of building one with them......
What do you mean by CPU? L