Sitemap

How to Make a Calculator out of Checkboxes

Building a Ripple-Carry Adder with Origami Studio

7 min readJan 16, 2018

--

I spent the better part of 2017 learning Origami Studio, a tool for user interface prototyping. Though Origami was made for UI design, the flow-based programming language immediately reminded me of the logic diagrams I studied years ago in computer architecture classes.

Among the toughest of these was the ripple-carry adder: a diagrammatic monster that, we were promised, added two numbers together.

Press enter or click to view image in full size
Logic diagram for a ripple-carry adder circuit. Supposedly, this adds two numbers together.
Press enter or click to view image in full size
The Origami language is a lot like a logic diagram. Could we use it to visualize a ripple-carry adder?

We’d eventually learn to think of an adder as a binary calculator. But it wasn’t easy figuring this out from a text book in a theory class. And without a practical prototyping tool, you never had the satisfaction of seeing the circuit actually work.

With Origami Studio, I was able to revisit the ripple-carry adder in a hands-on and visual way. This article shows how you, too, can build this binary calculator with Origami, and maybe develop a new appreciation for the computers we use every day.

Wanna follow along? You’ll need a very basic understanding of Origami Studio and its Wireless Broadcaster/Receiver patches. You’ll also need Binary Calculator Kit to install some custom patches.

Binary Calculator Kit

Getting Computers to Understand Numbers

Computers don’t understand anything. Not even numbers. Modern digital computers are essentially a collection of electrochemical on/off switches. But when we combine these switches in certain ways, we can make a computer seem like it understands numbers and math.

Virtually all human cultures represent numbers in a decimal system. This means we count in cycles of ten: 0, 1, 2 … 9. Historically, this comes from the ten fingers on our hands. But numbers don’t have to be represented in cycles of ten. For example, Mickey Mouse has eight fingers, and Dory has two pectoral fins. How might they count?

Press enter or click to view image in full size
Our Hindu-Arabic numeral system has a unique symbol for the first ten numbers 0–9. We’ve reused these numerals for Mickey and Dory, but with a subscript so that they’re not interpreted as the same values. 10 (ten), 10₈ (one-zero, base eight), and 10₂ (one-zero, base two) use the same numerals, but they’re different numbers.

Notice how Dory counts in cycles of two: 0, 1, 10, 11, etc. She uses a binary system based on two numbers: 0 and 1.

Now remember that a digital computer is made up of a bunch of on/off switches. These on/off switches can represent the two binary numbers 1 and 0. When we build a computer, we can group multiple switches to represent binary numbers, which we can then translate to decimal numbers.

Press enter or click to view image in full size
Binary is the common language between people and digital computers.

We often think of binary as the native language of computers, but it’s really a language between people and computers. Binary, like any other notion of numbering, isn’t inherently understood by a computer.

So what is the native language of a digital computer? Switches! And they can take many forms: punched cards, relays, vacuum tubes, plugs, transistors, and even checkboxes in a visual UI.

This is where Origami starts to show its circuit design potential. Origami uses checkboxes to represent Booleans: values that are 0 or 1. We can use Booleans to simulate the switches in our computer.

Press enter or click to view image in full size
These Origami Splitter patches show how Boolean checkboxes translate to the numbers 0 and 1.

A single Boolean can represent only two numbers. To create larger numbers, we combine multiple Booleans.

Press enter or click to view image in full size
This Binary to Decimal patch translates 01101₂ to 13.

The Binary to Decimal patch in Binary Calculator Kit combines multiple binary digits or bits into a larger binary number. The patch then converts this binary number to a people-friendly decimal number.

Binary Math is Decimal Math

The way we show numbers doesn’t change the way math works. Binary math and decimal math give us the same numbers, even if the numbers are represented differently.

Press enter or click to view image in full size
Both sums equal ||||||||| (nine).

But how do we get a computer to do this? To understand how digital computers do math, we need to know a little about how they “think.”

Getting a Computer to Add Numbers

Digital computers make decisions by evaluating conditions that are either true or false. Certain parts of a computer program will run only when a specific condition is true. For example, if an app condition “has new messages” is true, the computer could display a badge on the app icon.

Sometimes a computer needs to consider multiple conditions at once. In these cases, the computer feeds all the conditions into circuits that output “true” or “false” based on how well all the conditions are met. We call these circuits logic gates.

Press enter or click to view image in full size
A few of the logic gates inside a digital computer.

We can see these gates working in Origami with the And and Or patches. Binary Calculator Kit adds a patch for Exclusive Or.

Press enter or click to view image in full size

Just like on/off switches, we can represent true/false conditions as binary numbers. A truth table numerically shows all the possible outcomes of the logic gates. The left side of the table shows all the permutations of inputs A and B. The right side shows the corresponding logic gate outputs.

Press enter or click to view image in full size
AND is 1 only when both inputs are 1. OR is 1 when at least one input is 1. XOR is 1 when exactly one input is 1.

Let’s relate this back to binary addition.

We can break down any binary addition problem into a series of additions between two bits. These additions will output a sum bit and a carry bit, which we can show in a truth table.

Press enter or click to view image in full size
Press enter or click to view image in full size
All the possible sums and carries of A + B.

Now watch what happens when we compare the addition and logic outputs in a single truth table…

Press enter or click to view image in full size
Sum = XOR. Carry = AND.

Notice that Sum matches XOR, and Carry matches AND. This means a computer can add numbers using XOR and AND gates. In other words, we can build a simple addition calculator using only checkboxes!

We can see this for ourselves in Origami, using Exclusive Or and And patches.

Press enter or click to view image in full size

We call this addition circuit a half adder. Binary Calculator Kit bundles all of this in a single Half Adder patch.

Press enter or click to view image in full size

Adding Bigger Numbers Together

Half Adder adds only two bits. If we want to add larger numbers, we need to use several adders together, each representing a column in the addition. For example, if we wanted to add the 4-bit numbers 0101 and 0111, we’d need four adders to total each column.

Press enter or click to view image in full size
An addition problem breaks down into a series of adders.

We can try to make this work with some Half Adders…

Press enter or click to view image in full size
Wrong answer! 0101 + 0111 ≠ 0010. The Half Adder sums don’t include the carry from the previous column.

… but the Half Adders don’t account for the carry bit from the adjacent column. We need a different kind of adder, one that includes the carry bit as an input. We need a full adder.

Press enter or click to view image in full size

The Full Adder patch adds three bits: the two addend bits, plus a third bit that represents the carry from the adjacent column. We can connect the carry bits of multiple Full Adders to create a ripple-carry adder.

Press enter or click to view image in full size
A ripple-carry adder connects a series of full adders by their carry bits.

So what’s going on inside those Full Adders to make this work? Full Adder uses two Half Adders: one for adding the addends, then another for adding the carry. Full Adder also outputs a carry bit if either of its Half Adders outputs a carry bit.

Press enter or click to view image in full size
Inside a Full Adder.

Putting it All Together

Here’s what my complete ripple-carry adder looks like in Origami.

Press enter or click to view image in full size

To operate the adder, you flip the addend checkboxes at top. A visual interface shows how the checkboxes correspond to binary and decimal numbers. It’s pretty neat finally seeing this circuit work!

Press enter or click to view image in full size

Wireless Broadcaster/Receiver patches and patch grouping were essential in making the prototype. These features helped break the circuits down into smaller and more understandable components. They also reduced the number of elements and criss-crossing lines that made the original logic diagrams so hard to read.

Press enter or click to view image in full size
Ripple-carry adder, revisited.

What’s Next?

I won’t be taking up circuit design, but I hope this article inspires some future engineering students with a new tool for learning computer architecture. Origami has built-in patches for AND, OR, and NOT gates, which should allow you to model all the functions of a digital computer.

Press enter or click to view image in full size
Computer memory is made 1 bit at time with basic circuits like this SR Latch. What other circuits might we model with Origami?

And if there are any UI designers who have read this far (whoa!) I hope it was fun taking a closer look at our digital medium. Who knows? As tools like Origami create ways to prototype how things actually work, we might start to blur the line between design and invention.

--

--

No responses yet