Building a Modern Computer - Project 1 Review
Written politely 2021-06-10.
I began the project the day after completing the last post. The work happened in spurts with breakthroughs fueling later work.
The First Chips ๐ก
The initial chip, Not, was difficult to figure out what to doโhow to actually implement the logic that I understood into working hdl. I knew what I wanted the chip to do, but I needed to figure out how to write it in hdl. But, after I figured some syntax out, the first few (Not, And, Or, and Xor) were not overly difficult to finish.
Plexing and Flexing ๐ช
Getting to the second section where multiplexors and demultiplexors are used required some more thought to figure out how the sel
ect mechanism worked with the two inputs and single output. Up until this point, the chips have been dealing with only two inputs, so the additional logic of the selector took a minute to wrap my head around. I kept wanting to write if
statements, but that isnโt a thing in this hdl. Remembering that these are chips with wires that feed into each other before finally getting to the output helped to understand the finer points of these chips.
๐ Busses ๐
Writing the busses followed the same learning curve as the first section, as it implemented 16-bit busses for Not, And, Or, and Mux. How should I do these basic operations, but now at scale. Loops would have been great to have in this and would have made the code shorter, but the simplicity of the language for low level of entry is not equipped to handle it, on purpose. Other hdl languages include loops, but the course hdl does not.
Multi-way chips ๐๏ธ
The last 5 chips (Or8Way, Mux4Way16, Mux8Way16, DMuxx4Way, and DMux8Way) were the most elaborate of the bunch and took the most time to complete per item. But, there is an addendum to that statement, because I did them in a simpler way with more code, and later refactored to significantly less code. Higher level thinking is needed to finish coding these last chips.
Summary ๐ญ
Overall, I really enjoyed building these chips and I did it within a week. Working at nights for what bits of time I had, I was able to complete these in ~ 2 hours total time. I am excited to share some of the finding along my journey with the book club on Friday. I am interested to see some of my peerโs solutions to these problems and discuss how things differ and why things were chosen, in addition to the difficulties we each found along the way.
Next Step ๐ช
Next week we will be looking into chapter 2, Boolean Arithmetic and the ALU. I am not sure at this time what ALU is, but I will fill you in next week with my overview. If you are following along, leave a comment below about what you found most intriguing about this project. I would enjoy the company. ๐ป If you are ready, continue on to the next post in this series.
Husband, father, teacher, musician, avid gamer, nature enthusiast, and passionate about the human condition.