10/15/2024
I found Turing Complete a while ago and thought it was an interesting game. Paired into a classroom setting, I think it would be a great way for 14 year old children to learn the basics of how computers work. Then, once you get far enough through the game, the class could move on to a strongly typed programming language. When I was in high school I was fortunate to have a teacher that did a very similar thing. For my class it was piecemeal and breadboard based. Using a breadboard and 74LS chips is a great hands on experience, but it is easy to mess up one wire and search for the problem for hours... Using a game like Turing Complete would mean you could focus directly on the digital logic and go faster.
Coming from the digital logic and FPGA fields, there is some additional functionality I would like to see. The one I will talk about today concerns memory.
The game decided to create a single way to save a bit called the "1 Bit memory".
It has a the approximate truth table seen below, except that the concept of the clock is ignored in the game.
This is fine as far as it goes, but it doesn't go far enough. Once you want to build larger things you need the full power of a D-Flip-Flop(DFF) to synchronize when components reset to the initial conditions. Most DFFs you find in the wild actually have asynchronous set and reset control, but this game doesn't really have the concept of asynchronous signals. The truth table for a synchronous DFF can be seen below.
Every FPGA has a customizable DFF married to a look-up-table as the base unit of the FPGA fabric. If we look at the iCE40 FPGAs from Lattice, they have them. Unfortunately stripped down so that you can only have set or reset, but it is there.
Then you zoom into a single logic cell:
LOOK!! A DFF!
Thankfully Turing Complete has a system for creating your own components called "Component Factory". Here is my DFF implementation. It has synchronous set and reset pins (which means the set or reset only happens on the rising edge of the clock).
If we explode it apart so we can see where the wires go, we get the following:
If you're interested in learning about how computers work, I'd encourage you to check out Turing Complete for yourself.
Thanks for reading! Subscribe for free and receive updates and support my work.