Domino Computing

Matt Parker built a domino adder of four or five bits out of 10,000 dominos.  Inspired by this, we offer a smaller scale activity that gets across some of the key points–and more.

We’ll build gates and describe their behavior with truth tables.  See the handout for additional activities.

The following video shows the execution of a “p and not q” gate.  Both input dominoes are pressed, and one of the domino chains prevents the other from propagating:

Domino chains propagate a signal: falling (TRUE) or standing (FALSE).  When chains interact, a signal propagating in one chain controls whether or not a signal can propagate in another chain, and we have boolean gates—the building blocks of most computers.   A boolean gate takes in some input signals and produces some output signals which are typically different from the input.

  • Make some gates out of domino chains.  Describe the input/output relationship informally.
  • Describe gates by truth tables and fill in truth tables in the handout.
  • Find complete sets of gates—any truth table at all can be implemented using only gates from a complete set.  Show that the relatively simple “p and not q gate and the OR gate form a complete set.
  • Describe some non-boolean things to do, like delay, crossover (p, q in and q, p out), and more.  Where would you need these things?  How would you do it?

See Domino Handout.

One thought on “Domino Computing

  1. Here’s a way to make an exclusive or from just “p AND NOT q“, OR, and splitter gates.

    In levels, from (p, q), make (p, p OR q, q), then

    (p OR q) AND NOT p, (p OR q) AND NOT q

    then the OR of these.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s