From f3b00e2c2e8b42fd0a778443e9b5626dda755ea6 Mon Sep 17 00:00:00 2001 From: lshprung Date: Mon, 19 Oct 2020 20:18:13 -0700 Subject: Post-class 10/19 --- 12.md | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 12.md (limited to '12.md') diff --git a/12.md b/12.md new file mode 100644 index 0000000..dbdb31c --- /dev/null +++ b/12.md @@ -0,0 +1,76 @@ +[\<- Overflow, comparison, and the design of an ALU](11.md) + +--- + +# Latches + +## A circuit that remembers + +### Sequential Circuits + +- Circuits that have "memory" + - A subset of the inputs control whether the output is "allowed" to change + - Otherwise the output will hold its "state" +- In the circuit below, we want On to assert when Set asserts, and to stay asserted even if Set goes back to 0; Reset will clear + +![diagram](12.1.png) + +### Inverters in a feeback loop + +- Wires will hold onto value forever => memory + +![diagram](12.2.png) + +- But how to get a value onto one of the wires? + +### Controlling the feedback loop + +- The control signal affects the output + - If control = 0, NOR gate acts like an inverter + - If control = 1, output is 0 + +![diagram](12.3.png) + +--- + +## The SR latch + +- Qa is primary output (Qb is the inverse) + - (S)et Qa to 1, or (R)eset to 0 + +![diagram](12.4.png) + +--- + +## Synchronizing with a clock signal + +### Using sequential circuits + +- A latch can hold one bit of info (state) +- Typically we want to hold onto multiple bits of info + - A counter is a typical example +- A 2-bit counter cycles thru 00, 01, 10, 11, then back to 00, 01, etc. +- Generally we want the two bits to change at the same time + - How to do this? + +### Using a Clock for Control + +- Most designs use a clock to "synchronize" when the sequential elements can change state +- In the circuit below, the output can only be changed when Clk "enables" S and R + +![diagram](12.5.png) + +### Use a D input instead of SR + +- If S and R happen to assert at the same time, the output becomes a function of which deasserts last + - This may be unknown or unintentional +- Don't really need both S and R + - If we're trying to change the output, we generally know if it should be 0 or 1 +- Define a single input, D, that is passed to the output + +### D Latch + +![Circuit](12.6.png) +![Characteristic table](12.7.png) +![Graphical symbol](12.8.png) +![Timing diagram](12.9.png) -- cgit