In Part 1 we built a discrete time simulation of NAND gates and “Buffer” devices and were able to get as far as printing the alphabet. I promised at the end we’d introduce input devices, but this post will instead set a more modest goal of printing Hello World. Before we get back to the action there’s going to be some changes for anyone who’s following along, so I need to take some time to explain these changes and why they’re necessary.
For my recently finished Capstone project I used a Raspberry Pi 3B and did most of my work SSHed into the Pi via Rutger’s wifi network. Since that took some time to setup, I’m documenting how I did that here in case its useful to someone else.
I decided to switch this entire blog from jekyll to Hugo, which is the other big player for the static site generators for blogs market. I had been considering this for a while but the real impetus was yesterday when I ran jekyll serve and got an error about a missing ffi_c.so I didn’t know how to solve. I built some confidence up beforehand by reading articles from others who successfully made the switch then jumped into the documentation.
Since I had some free time on my hands I decided to do something I’ve wanted to do for a while and mess around with the Linux kernel. With my time at Rutgers slowly running out, I’ve wanted to do this on their iLabs. These are computers that CS students can use or SSH into and some of them are a lot beefier than I’d buy on my own. This post will be a guide to some of the basic things I did while working on the iLabs.
A NAND gate is a boolean function that is false if both inputs are true, and true otherwise. Since a NAND gate is functionally complete any logic function can be created by connecting together 2-input NAND gates. On digital chips NAND gates can be used for storage, making complicated state machines such as computers. Starting with a basic simulation let’s build the logic of FizzBuzz with NAND gates. Note: Some of the diagrams in this article require monospace box drawing characters, which I’m aware some phones (and maybe some computers) don’t have.