Topic | Reading | Recommended Exercises |
---|---|---|
Combinational Devices | DDCA 2.8 | Exercises 2.25, 2.27-2.29, 2.31 |
Sequential Devices: Latches and Flip-Flops | DDCA 3.1-3.2.6, 3.2.8 | Odd Exercises in 3.1-3.11, 3.10, 3.15 and Interview Question 3.3 |
This week's reading contains a very important message: as computer scientists, we always seek to create
Make sure you understand what high-level task each device presented (multiplexer, decoder, latch, flip-flop) performs. Note, in particular, that the multiplexer implements "choice", but it's the opposite of the kind of choice that we normally use in computer science. When programming, you often say, "if A is True, then do f() else do g()" However, multiplexers implement "do f() and g(). Then, if A is True select the result of f else select the result of g". The work is being done before the choice, rather than after. Why do you think this is?
Next week, we'll talk about how to design finite state machines using these devices, and that gets us, fairly directly, to a basic computer.
This section is fairly sparse, and unlike past weeks, it's important to read this section normally, rather than using exercises to guide you. The primary questions we need to answer are, "What is a [multiplexer/decoder]? Why is it useful?". We'll also spend some time talking about designing combinational logic, like the adder from Section 2.1, the priority encoder in exercise 2.25, and the decoder in 2.27.
In this chapter, we take a big conceptual step from devices that are accessed in series to devices that contains loops. Having a loop allows us to store data (state) and to use state to influence the next step in a computation.
Section 3.2 introduces several related devices. It's very important to understand the difference between a latch (a level-triggered device) and a flip-flop (an edge-triggered device). Section 3.2.3, including Figure 3.8 which displays a master-slave configuration (apologies for the terms used), introduces the difference between these two structures. It's also important to look at the various types of latch/flip-flop -- SR and D (and later, JK) -- and options on these devices (the addition of a clock, enable, and reset). Skim each section, asking yourself, "Why is this particular device/option important? What does it let us do?"
The recommended problems can help you check your understanding about how these devices work (and how to build them). Don't, however, forget to step back to also ask yourself, "Why is this device useful?"