Is it possible to make a simple computer entirely with breadboards and basic electronic components? Is it feasible to, for example construct a scientific calculator in this way?
closed as primarily opinion-based by Olin Lathrop, PeterJ, Ricardo, Daniel Grillo, Fizz Sep 29 '15 at 5:29
Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise. If this question can be reworded to fit the rules in the help center, please edit the question.
I'm going to disagree that placing a microcontroller on a breadboard qualifies as building a computer on a breadboard. Except for I/O (such as a keyboard and display), a microcontroller by itself is pretty much a complete computer. Just placing it on a breadboard and connecting up a few wires is trivial and can be done in ten minutes.
When the OP asked, "Is it possible to make a simple computer entirely with breadboards and basic electronic components?", by basic electronic components I think it means something more like this:
Now that's a computer on a breadboard (well, several breadboards), built from basic components. The description of it is here. It's made up of a dozen types of 74LS00 series IC's. (I don''t think we want to go all the way back to transistors; the original PDP-8 was the size of a small refrigerator).
As far as a scientific calculator goes, if you built a general-purpose computer like the one shown above, then it could be programmed as a scientific calculator. Constructing a scientific calculator using only logic IC's (no computer) would be extremely difficult; all the manufactures of calculators like that (Ti, HP etc.) used special large scale IC's. Here's a home-built calculator that uses am early 4-bit calculator IC.
I will agree that if one wants to get a computer up and running as quickly as possible, then using a microcontroller is the way to go. If one wants to really understand how a computer works internally, then building one out of basic ICs is the right path.
It is not only possible, I have actually done it: see https://www.vttoth.com/CMS/projects/47
Here is what the wiring on the backside of one of the breadboards looked like:
Of course it all depends on what components qualify as "basic". In my case, the basic components were 74... series TTL chips, roughly a hundred of them. To build a computer entirely from, say, transistors... that would be much too overwhelming.
Also, my 4-bit computer is really not powerful enough to be used as a scientific calculator, mainly because of limitations of memory (256 4-bit nybbles). However, it is not terribly difficult to extend the address space, perhaps using a paging mechanism, and 4096 nybbles (12-bit addresses) might by enough already, 65536 nybbles (16-bit addresses) for sure.
Yes it's possible, but you'd need a bit more than just a few breadboards to come up with a scientific calculator, depending of course on what you consider a basic component: whether you call a transistor a basic component, or a flip-flop, an EEPROM or just something you can solder out from an old refrigerator.
There are some good answers here, but I'd just like to point out one thing that people often don't consider. Looking at the history of computing devices, the difficulty in building a computer from tree bark and nails is not the CPU nor the ALU. The main problem is memory. Because you need a huge amount of it for the whole stored program concept to work. You can make a CPU from a few flip-flops and NAND gates; for example for a power electronics application with specific constraints, I once designed a microprocessor that uses only 69 flip-flops (4 16-bit registers, 4 flags and 1 state register bit denoting FETCH/EXECUTE). It's implemented in silicon and people write software that runs on it. That's simple and it fits into the size of a drain contact of a power transistor. But the memory needed to store any useful program is much, much bigger.
Early on, the memory was the starting point of the design. You could use bi-stable relays as they did in early telephone exchanges. You could use vacuum tubes or transistors to make flip-flops; and the registers of the CPU usually were implemented this way. But for the program and data storage, paper tapes, magnetic tapes, spinning disks or spinning drums were used. Even acoustic waves on steel wire that are constantly received and retransmitted by the electronics. Anything you can think of that could hold some bits for a reasonable amount of time with reasonable cost. Apollo orbiter and lunar lander computers used coil core memories wound up as ropes. All these need different interface equipment and have a huge impact on what the CPU needs to be like to access those kinds of memories. Semiconductor memory only really appeared in the 1970's, finally dismissing that kind of complexity. But then again, modern dynamic RAMS are not that easy either.
Then there is the added wonderfulness of having to design input-output equpment for the computer. A few light bulbs is fine for some applications but if you need text input/output or something even more complex, you are again facing more difficulties. Punch-card readers, printers and paper terminals were a huge business in their days. A VT100 text mode video terminal from 1978 has much more memory and processing power than your scientific calculator breadboard computer would have.
It is possible, but the complexity and size depends on what you call basic electronic components. An ALU and sequencer logic is a bit complex, but doable. Memory is simple, but the basic pattern must be repeated an very large number of times (think 1000's of times).
Besides the hardware you will also need software that runs on it. As a rough estimate, for a moderately complex CPU (classic 16-bit instructions 8-bit data level) your software effort will be comparable to your hardware effort. (For a more simplistic CPU you'll need more SW effort.) And how are you going to load that SW into your machine?
Bug hunting (and solving) will be an interesting undertaking. I'd advise you to start wrting in VHDL and run that on a simulator, that will be far easier to debug than a bunch of chips and wires.
Two students of mine created a 16-bit CPU with some basic software (including a GCC backend port) in ~ 1 year, starting with VHDL and C code for simulation. The ALU used 74181 chips, memory was static RAM, and they used an atMega to interface between the PC and their computer. The computer was partly on solderless breadbords and partly on PCBs (the 8 16 bit registers). (These two were not average students!)
Yes, it is possible. But you need a microcontroller to do the math. This is an example project. It uses AVR microcontroller and 16×2 LCD display.