Maker Pro
Maker Pro

Steve Jobs Memorial Challenge

I have studied the inner workings of basic computers, and I think I have an idea on how to do this! I shall build a computer that can remember numbers and characters, and even small peices of code! Just like in the days of yore, with Jobs and Woz, I shall make this from scratch! If you can support me in this, everyone who helps gets my finalized schematic, and can do my project themselves! This is gonna be epic!
 

Fish4Fun

So long, and Thanks for all the Fish!
ultrafire3,

Hrmmm, are you planning on building the processor itself? If so, you should give serious consideration to its core features first. For instance bus width, mux inputs, I/O mapping etc. The next step in any modern processor design would be to model the core in an FPGA. Once the model is fully proven and debugged you might consider building it from discrete components, but extreme care must be taken to ensure timing issues are not actualized in the PCB layout.

Simultaneously with the new core design you would need to consider writing a compiler. This in and of itself can be a tremendous task.

To design and build an 8-bit processor core as basic as an AVR ATTINY2313 would likely take a shoe box full of discrete ICs spread out on a 4ft x 4ft PCB and you would be really lucky to get everything synced @ 1mHz.

Not trying to discourage you, but I think you may be biting off a bit more than you realize. Just because you can buy a feature rich µController for a $1 does NOT imply designing one from the ground up is a manageable task. I would urge you to order an FPGA demo board and begin there, if you do a bit of research you can find FPGA dev kits that include several "plug-n-play" processor cores fully synthesized and ready to "drop in". If you begin with a standard core then there will already be compilers and programming tools, perhaps even some open-source ones that would permit you to modify them to correctly reflect any modifications you might make to the standard core.

Fish
 
If you truly want to make a tribute to Steve Jobs, you should work on selling it, not building it.

Bob
 

(*steve*)

¡sǝpodᴉʇuɐ ǝɥʇ ɹɐǝɥd
Moderator
Isn't the Steve Jobs memorial challenge something for lawyers to invent the most bizarre and strange way to sue for violations of "trade dress"?
 
If you're looking to really understand how a computer functions (as in understand it, tooth-and-nail), I wouldn't use an FPGA.

I have several starter boards, and I have a blog where I discuss FPGAs, but if you're looking to get into computer hardware and logic and "how" the processing works, you have to start from the ground up.

This isn't an impossible task - in fact, if you search "homebrew CPU" on Google many results come up which is the bulk of them is guys building CPUs using usually 74-series logic. It may be a massive task, but it is far from impossible in every regard - if you put in the learning time to study how these things work, there's nothing stopping you from building hell, a discrete x86 CPU. Just don't expect it to be small or fast :p

I, for example, designed a 32-bit CPU that could be made with 74's, but never ended up building it because of the cost of boards and the cheap-college-student curse. I'd like to one day. That being said, I suggest you start in one of two ways:

1. Stop looking at a CPU as something that does "black-box" operations to binary code. Look at it as a calculator. Everything a CPU does can be replicated by moving data around and the basic four arithmetic operations (add, subtract, multiply, divide). In fact, from having studied the architecture, you can implement a full-fledged CPU and replicate every "legacy" instruction, even for x86 processors, with a CPU that can only perform incrementing, left and right bit shifting operations (3 of them).

2. Study basic logic. That is, how the individual bits are manipulated, along with timing. Timing is absolutely critical. For example, you need to know how to do things such as have an ALU (arithmetic logic unit) generate a result, but create an input-output setup so that the ALU only loads and stores data on the rising edge of a clock signal. This is basic clock timing.

I've worked much with FPGAs, much with microcontrollers, and a good deal in software, but there was no learning task I enjoyed more than computer logic. Once you have the ground framework for how the computer actually processes, what it actually does to data, it's magical. It takes a lot of the mystery out of what and how a computer does what it does.

Best of luck. If you want guidance, let me know.
 
Last edited:
Top