You may work with your classmates on these problems. If you work closely with another person, feel free to submit your work jointly. (Two-person teams maximum.) Submit as PDF via Moodle. You may use a digital logic simulator, but neat, hand-written diagrams are just as good, and often better (note, for example, that some of the simulators don't have objects to represent multiplexers, decoders, etc.).
Imagine you have a clock line connected to an oscillator, so the clock line goes steadily up and down from 0 to 1 to 0 to 1.... Each of the following scenarios describes a system whose state changes each time the clock line drops from 1 to 0. For each scenario, your job is to draw a digital logic diagram that takes the clock line as input, and whose behavior is as described in the scenario.
To do this, you may use any of the basic digital logic elements we have discussed in class: multiplexers, decoders, adders, shifters, D-flipflops, 2-dimensional memory arrays, and of course the individual gates NOT, AND, OR, NAND, NOR, and XOR. You may also include as many LEDs as you wish (each LED has a 1-bit input line, and lights up if and only if the input line's value is 1). You may not, however, include multipliers or dividers unless you draw them out in full and make sure the clocking works as intended. (If you find yourself doing so, you might want to think about whether there's a better way to solve your problem.)
Unless otherwise directed by a scenario, you may assume that you can preset the values of all the latches and flipflops in your circuit to whatever value you want them to have at the start. All zeros is nice, but if you need some other initial values, go ahead and say so.
You may also assume that the clock line's cycle time is long enough to allow all the elements in your circuit to stabilize between drops of the clock. The issue of clock cycle time will occupy much of our attention in the coming weeks, but for now, just assume it's long enough for whatever you need. Since most of these scenarios involve the behavior of lights which we're imagining a human being will observe, I'll be imagining a cycle time of something like 1 second.
There are many ways to implement each of these scenarios. Think about how to do so simply and elegantly, when possible. Sometimes a problem just requires brute force, but other times, a bit of cleverness can yield a beautiful solution.