CSCI 255 — Flip-Flops and Modules of Truth

In this lab you will experiment with flip-flips and other memory-like modules in Logisim.

The SR, JK, and D flip-flops in Logisim

We’re going to use Logisim to look at properties of common flip-flops illustrated in four Logisim contained in single circuit file that you should download to your computer.

The SR flip-flop with NAND and NOR

First, play with the SR implemented with NAND gates in the SR with NAND circuit. Note that the inputs are labeled S’ and R’. If Logisim supported overlining, these would be labeled S and R. When an input variable is labeled by its inverse, this means the input is negatively asserted; that is, the interesting action occurs when the input is 0. So to set Q to 1, you set S’ to 0; and to reset Q to 0, you set R’ to 0.
SR with NAND

Next, try out the SR with NOR circuit. In this implementation the inputs are positively asserted. Notice that the Q output isn’t where it used to be.
SR with NOR

The D and JK flip-flops

Now, try the JK and D flipflops circuit.
D and JK flip-flips

First, set D to 0 and click the clock twice. You should see that this changes the output of the D flip-flop. Set D back to 1.

There are four (22) different settings for the J and K flip-flops. Try each of these out a few times.

The other flip-flop inputs

Finally, it’s time to solve a puzzle with the Flipflops triggering circuit.
D and JK flip-flips

Note the set and clear (often called reset) inputs at the bottom of the circuit. These are asynchronous inputs. They change the output of a flip-flop independent of the clock. Exercise both of them, but leave them set to 0.

You can now click the clock many times, but nothing will happen until enable is set to 1.

With enable asserted, go through a few clock cycles while changing the D input. Notice when the four flip-flops actually change values in response to changes of the clock or D.

Using only the circuit inputs, get the four flip-flop circuits in a state where the two “edge” flip-flops are 1 and the two “level” flip-flops are 0.

This is a tricky little puzzle.

Alternative approaches to truth tables

You must remember how in the Introducing Logisim lab you implemented the following truth table with Logisim.

inputs output
a b c x
0 0 0 0
0 0 1 0
0 1 0 1
0 1 1 0
1 0 0 1
1 0 1 0
1 1 0 1
1 1 1 1

Reload your circuit. If you can’t find it, download a starter circuit and use ProjectAnalyze Circuit to build the circuit.

Using the multiplexer

Now let’s implement that circuit with a multiplexer. The Multiplexer is in the Plexers group. You want a mux with three select bits.

You’ll have to use the dreaded Splitter to wire in the selector inputs. Wire the three inputs, a, b and c, into the single-bit ends of the splitter. The whole circuit could look something like this before you connect in the mux inputs.
Circuit with mux

Write up the mux implementation and that it agrees with the truth table on all eight possible input combinations.

The quickest way to test all eight is to use the Gray code sequence 000, 001, 011, 010, 110, 111, 101, 100.

Using the ROM

Next implement the circuit with a ROM from the Memory group. Think about how many address and data bits you need.

The part of the circuit with the ROM could look like this:
Circuit with ROM
You will need to set the contents of the ROM to get your circuit to work.

Test your ROM implementation.

Animating with a clock counter

It’s tedious to go through all those eight combinations. Go to the Memory group and pick up a Counter. Set the counter up for 3 data bits. Also, go to Wiring group and bring back a Clock.

The counter has seven ports, but we are only going to use two of them. The counter’s output will be connected to the bus carrying the three inputs. Its clock input is connect to, of course, the clock.
Circuit with counter
To avoid multiple drivers on the bus, you will need to change a, b and c to be output pins.

You need to go to the simulate menu to get the clock to tick. Once it is going, it will go through all eight possible inputs every eight seconds.

Run the clock.