ProductGPT
Try the custom AI to help you find products that Reddit loves.
If you prefer to read this as a book, the computer is based on the SAP computers (Simple As Possible) in Albert Malvino's book Digital Computer Electronics. The book goes on to describe slightly more complex architectures as well.
Just a heads up for anyone that doesn't care to watch videos, I believe this design is based on the SAP1 (Simple As Possible) computer design, one of the three designs described in the book Digital Computer Electronics by Albert Malvino. We used that book in high school and it's really good at explaining how computers work. I remember building a simulator for the SAP1 and SAP2 at that time, and it was great fun.
https://www.amazon.com/Digital-Design-Computer-Architecture-Harris/dp/0123944244
This book teaches you how to implement a 32-bits MIPS processor with single or multi-cycle design using verilog.
Bebop to Boolean Boogie is pretty good. Very easy and fun book to read. Covers a ton of great entry level topics.
Then move towards something more FPGA specific like
~~Knowing C will probably hurt you more than help you. Forget what you know about C when learning Verilog.~~ You need to approach learning Verilog in a different manner. Verilog is not another top-down procedural language expressing instructions one after another. There are some general programming tenets that still hold true, and attention to detail in regards to syntax is important. But forget about line-by-line procedural execution because that's not how these hardware description languages work. You need to learn DIGITAL DESIGN before you learn Verilog....
EDIT: for clarity and to tighten up my thoughts.
if you want a good understanding of how early 8bit computers work, this is a good read:
Digital Computer Electronics https://www.amazon.com/dp/0074622358/ref=cm_sw_r_cp_api_glt_fabc_19JJH08FEJ4W4Z08RPE7?_encoding=UTF8&psc=1
I agree, particularly with the first paragraph.
Ben's CPU videos coupled with Harris and Harris https://www.amazon.co.uk/Digital-Design-Computer-Architecture-Harris/dp/0123944244 is a great way to get junior EEs started with FPGAs.
I would start from there (CPU), but you won't be missing or struggling with anything if you start from somewhere else, or jump around a bit.
To be fair, Ben Eater's 8-bit computer uses microcoded ROM for control of the processor, which is just one of many control schemes for a processor. Though, that's outside the scope of this comment.
OP, check out Digital Design and Computer Architecture for a good intro after you watch through some of Ben Eater's stuff. I'd HIGHLY recommend doing the questions at the end of each chapter to make sure you actually understand the stuff.
The book mostly covers question 3 (and I guess 4) above. 1 and 2 are, as others have stated, more VLSI questions.
On that front (again, briefly): the chip designers use hardware description languages (like Verilog and VHDL) to describe the functionality of the chip. They then use programs to convert it to an intermediary language called RTL (register transfer logic). They then "lay out" the chip - describe how they want things positioned with respect to one another) and the chip fabricator then uses libraries that they have to transfer the RTL to a series of photolithography masks… you know what. This process is too damned complex to go through right now. Sam Zeloof has a great series of videos on this. He built a chip fabrication set up in his folks' garage when he was in high school. He's insane.
I work with a group of 8th graders who spend last term building this 8-bit computer from scratch.
None of them had ever been close to the metal before - and since it's all on solderless breadboards there were no issues with the parents or admins who get uptight about soldering projects. I plan on using it often - the textbook this project is based on is still in print and on Amazon.
here’s an amazon link to the book i got (Digital Computer Electronics https://www.amazon.com/dp/0028005945/ref=cm_sw_r_cp_apip_yHyYsN4bBKFqR). It honestly serves as a near perfect guide to all this. There are some things that he doesn’t have though, like making the 3 Digit Display for output and some additions in the clock module. For understanding a basic CPU tho, you couldn’t ask for a better book.
I also wouldn't hesitate to recommend Pong Chu's Verilog/VHDL books, which are very practical.
Digital Design and Computer Architecture, Second Edition is another book I recommend because it takes primitives and then successively builds components that are finally integrated to produce a RISC processor (bottom-up).
https://www.amazon.com/Digital-Design-Computer-Architecture-Second/dp/0123944244/
Other links you may want to check out:
https://www.reddit.com/r/ECE/comments/50tlkl/fpga_bookresource_reccomendations/d7c08i8/
I started a wiki as I began learning how to work with FPGAs and the Pocket APIs: https://github.com/agg23/analogue-pocket-utils/wiki
It's a bit lacking now, but it might give you some useful information. Hardware design is very different than programming, so I highly suggest you read some digital design textbooks to get the basics. This Verilog video game book is also highly recommended.
Sounds like cool stuff.
For Zynq specifics and great examples on using Vivado for Zynq SoC development, have you seen the Zynq Book? There is a lot of great information in there.
For bottom up courses on FPGAs I'm not super familiar with any. A great text book which simply covers introductory details on hardware design, FPGAs, and hardware description languages is Digital Design and Computer Architecture by Harris and Harris. Not all chapters of the book are relevant to what you're interested in, but some contain the introductory information I think you're looking for. If you're uninterested in paying for the book, it shouldn't be too difficult to find it online 😉.
Agree with Patterson & Hennesy and they also by chance wrote the graduate textbook as well:
Googling around, it seems that book is also available in Chinese as well. You can have them purchase that with the English version too so they can read at the same time and get the necessary vocabulary in English.
Anyone interested in digital logic and making stuff like this in verilog should check this book out: Designing Video Game Hardware in Verilog https://www.amazon.com/dp/1728619440/ref=cm_sw_r_cp_api_i_4PY49BWNWA6ZN1MSB96V (it taught me more than school ever did about implementing hardware systematically)
Either is fine. CtCI has more generalized strategies. Most of the coding draws from the ACM ICPC and the main book for that is https://www.amazon.com/Programming-Challenges-Steven-S-Skiena/dp/0387001638
However, the entire trick is to code a lot using fundamental CS techniques. The actual book or website really doesn’t matter.
If you are in school I suggest joining the ACM and attending contest practice. Even if you do not make the team you will be working with people who will and they will form a robust job network for your first years after graduation
"nand2tetris" has already been mentioned and I would start there. If you want to play with FPGA stuff to build hardware in software, have a look at https://www.amazon.com/Digital-Design-Computer-Architecture-Harris/dp/0123944244 as a supplementary resource.
Absolutely essential for CMIS 412, but I don't think that's part of the major requirements anymore. Otherwise you don't need to have a firm grasp for anything other than your own personal enrichment.
Anyways, if you want to learn what the class teaches, try picking up Beebop to the Boolean Boogie, which does a much better and more thorough job of covering the same stuff. I think it was actually listed as one of the "additional reading" things in one of the textbook sections, and I have found it enormously helpful.
Sounds like you want to focus on device physics first. Transistor design and performance is determined by photolithography processes and doping of electrons into the physical transistor material. You will need to learn first about the device physics which should be covered in more in depth digital circuit design classes. A good textbook that I used in my studies was CMOS VSLI Design: A Circuit and Systems Perspective. It covers everything from physical device processes to circuit design principles and up to HDL (Verilog, VHDL) design. It is very comprehensive and will be helpful as you take more focused classes on these subjects.
You might like Skiena's et al book.
The online judge that evaluates your solutions can be found here. The websites mentioned in the book don't work.
Honestly, I would never recommend this sort of course to a beginner. For one, there are too many things that can go wrong which would make the learning experience frustrating, but in addition to this, FPGAs are generally a pretty big pain in the rear until you get familiar with them. And, even once you are, they are still a bear. Each family is unique in a variety of ways, the toolchains are pretty terrible, and HDL programming is not at all intuitive without a decent foundation in digital logic, state machines, timing analysis, boolean algebra and probably a few other things I'm missing. And that's ignoring the fact that you have to buy hardware and maybe even software to use them. FPGAs are super fun once you have some experience, but no bueno starting out.
Instead, I'd strongly recommend nand2tetris over this (note, the first half is on coursera for free). It's a rather short course that you could likely get through in semester. The course starts with basic digital logic and shows you how to build a working computer running a real OS from nothing but NAND gatesl. The entire course is done in simulation. This is great as you can focus entirely on the academics. I've recommended this course to novices and experts and never had someone tell me they didn't enjoy it.
By the way, if you are also interested in the physical side of things (electrical engineering), I'd highly recommend "[Bebop to the Boolean Boogie: An Unconventional Guide to Electronics](amazon.com/Bebop-Boolean-Boogie-Unconventional-Electronics/dp/1856175073)"
I highly recommend the course nand2tetris if you're interested in this sort of thing. From there, look into learning HDL (VHDL/Verilog) perhaps on an FPGA development board. If you are interested in books, I highly recommend Bebop Boolean Boogie Unconventional Electronics. That book will walk you through all aspects of electrical and digital design at a practical level.
Ashenden also wrote what I consider the VHDL Bible, so I would assume it's good. But I haven't seen any of this other books (nor this one since it had a plain green cover), so take my advice with a small chunk of salt.
If you want a digestible book to cover computer architecture concepts, Bebop to the Boolean Boogie: An Unconventional Guide to Electronics is a favorite of mine. I found it significantly more useful than any of the true textbooks I've read on the subject.
I don't know how essential this particular aspect of CS is to you with your desired goals, but if you're trying to fill this niche it's a great resource.
This is a fantastic book for ASIC principles. https://www.amazon.com/CMOS-VLSI-Design-Circuits-Perspective/dp/0321547748/ I’d recommend starting here. (Hot take incoming) FPGAs are a “special case” of ASIC design, so the principles are applicable, but maybe restricted to a subset of what’s contained in this book
https://www.amazon.com/Digital-Computer-Electronics-Albert-Malvino/dp/0028005945
This out of print book is soooo good. I recently took an FPGA class and pulled this off my shelf for review after several minutes of frustrated googling
This book is ABSOLUTELY amazing. It really helped me understand it.
Just because people use other words most of the time doesn't mean one word doesn't cover the other.
Storage is memory.
If you read Hennessy & Patterson (and you should) a big feature of the book is the Memory hierarchy which includes mass storage. It even includes off-line storage.
The course Evulrabbitz mentioned is very good, but also very advanced. I think it is helpful to have some understanding of digital design before going in to computer architecture. At least at the level of understanding CMOS transistors and how they are combined to form simple gates, registers, and how those combine to build a simple processor. I hear that nand2tetris does that. I am more of a book learner though, and I recommend this book
From there, I think a lot of the black magic aspect will be gone, and it is easy to dig into more advanced topics at a higher level of abstraction than digital design. That is, pipelining, caching, interconnection networks, etc. For this, Computer Architecture: A Quantitative Approach is the de-facto book. The course linked by Evulrabbitz covers much of the same content as that book, so I would recommend it after getting a little digital design background.
Edit: For me personally, I am a fan of learning some C, then starting at the bottom and working your way up. So, an approach where you work bottom up, but have some experience at the top so you know what you are working towards. I think without the basics of digital design, pipelines and caches will just be black magic. Im not an education professional though, that is just my opinion as a systems programmer and lover of all things low-level.
Currently trying to read through all of the Discworld series, the reading part is easy, but obtaining all 42 books is the hard part :P
Also Digital Computer Electronics by Albert.P.Malvino, which may look like it is complicated, but is really more like an old Computing For Dummies that I'm reading since my country's curriculum doesn't actually teach anything except the basics of electronics and computing :(