Ask HN: I'd like to learn how to build a computer
8 comments
imho: Stop wasting your time understanding PCs. If you're still curious just follow the link trails: http://en.wikipedia.org/wiki/Personal_computer
You'll land here: http://en.wikipedia.org/wiki/Von_Neumann_architecture or here http://en.wikipedia.org/wiki/Harvard_architecture
1) Create your own computable language or understand binary
2) Think of ways to store/load and process the data in that language
2.1) Think of ways to add/remove data from the storage
3) Create different concepts that embody that idea
4) Now you can start building it, or 3D-Printing your idea
If you're a developer, you can even write a simulation before building it physically. There are many tools for this, two I know are: http://www.monolithic3d.com/simulators.html and http://ozark.hendrix.edu/~burch/logisim/index.html
You'll land here: http://en.wikipedia.org/wiki/Von_Neumann_architecture or here http://en.wikipedia.org/wiki/Harvard_architecture
1) Create your own computable language or understand binary
2) Think of ways to store/load and process the data in that language
2.1) Think of ways to add/remove data from the storage
3) Create different concepts that embody that idea
4) Now you can start building it, or 3D-Printing your idea
If you're a developer, you can even write a simulation before building it physically. There are many tools for this, two I know are: http://www.monolithic3d.com/simulators.html and http://ozark.hendrix.edu/~burch/logisim/index.html
The best book for this is "Elements of Computing System" by Noam Nisan and Shimon Schocken. It starts from basic gates and then higher to build more complex parts. The book website provides all the necessary emulators and programming tools that help you to build a emulated computer and then build OS and application softwares on top of it. I have not really gone through the whole book and practiced what it wants to teach us because of my busy academic schedules but hope to complete it someday soon.
Google "NAND2tetris" or NAND to Tetris
A professor from tel aviv university has done just this - using a virtual hardware emulator there are twelve courses
(Approx one full term of study) starting with NAND gates and building nor gates etc, progressing to arithmetic units, CPUs, compilers and eventually writing a game based on a oo language. It's exciting for me (there is a book and I am still early days) but really it's where I would recommend starting
There are a couple of ted talks too
There are a couple of ted talks too
The google talk video is like a more detailed version of the TED talks. https://www.youtube.com/watch?v=IlPj5Rg1y2w&feature=gv
Brilliant! I was tempted to build a CPU using logic gates, but in the interests of brevity thought an OTS processor was the better idea. Will check out that talk for sure however!
Petzold's "Code" starts at pretty much nothing and ends up with a programmable computer made using transistors. It's far more primitive than what you want to end up with (that is, you intend to start with an OTS microprocessor and build around that) but it's certainly useful knowledge.
Pretty fun, but maybe not as educational as it might be. No modern microprocessor looks or functions much like the Z80. You could build a 'telephone' with a carbon mike and diaphram speaker and it would tell you as much about the cellular telephone system.
Ahhhh, I meant educational in the embedded device sort of realm... Although ill be honest, it's more for fun than anything else :)
Oh! Thats an entirely different matter. The Z80 is very cool, many different versions to choose from. It benefits from a very regular machine code (simple register fields, 2- or 5-bit opcode field), you can memorize it in half an hour.
And its still used embedded. My son wrote a simulator for a Z80 version that's flying on Juno (Jupiter space mission). It was coupled with an FFT engine for processing ice-penetrating radar signals. Lots of fun. SpaceX was interested in him out of college, but that was mostly an IT position.
Anyway of all the embedded systems I've used, I am fondest of the Z80 architecture. Good choice!
And its still used embedded. My son wrote a simulator for a Z80 version that's flying on Juno (Jupiter space mission). It was coupled with an FFT engine for processing ice-penetrating radar signals. Lots of fun. SpaceX was interested in him out of college, but that was mostly an IT position.
Anyway of all the embedded systems I've used, I am fondest of the Z80 architecture. Good choice!
One of my favorite Z80 clones was, I think, the Z800(?). It had several register sets you could explicitely switch between. For instance, one for the timer interrupt, one for the main thread, one for a serial thread. Hyperthreads, years before anybody else had them! But it never caught on.
I built my own Z80 based micro to power a micro-mouse. Shoot me an email telling me what you already know, and I'll tell you what you need to read up and and get started with.
Expect an email tomorrow (Australian time) :)
I'm doing the same thing at the moment! Good luck!
I put some links up on my site here:
http://www.bencollier.info/links
I put some links up on my site here:
http://www.bencollier.info/links
You should head over to hackaday.com . They have posts about people doing this type of thing.
I've been researching hobby and retro computers from the 70's and 80's, and want to expand both my rudimentary electronic skills as well as my knowledge of computers at their very core.
What I'd like to do is build a computer around the Z80 processor (or the 68k, unsure yet). I mean, from scratch. But I'm unsure where to start!
There are some books on Amazon that cover this hobby, do you recommend any in particular?
The plan is to build my own homebrew computer, just like you had to in the 70's, and then build a rudimentary operating system for it (I have bult toy OSes for x86 already).
Where do I get started?