summaryrefslogtreecommitdiff
path: root/13.md
diff options
context:
space:
mode:
authorlshprung <lshprung@yahoo.com>2020-10-21 12:59:06 -0700
committerlshprung <lshprung@yahoo.com>2020-10-21 12:59:06 -0700
commitf78c180eb9d5a74d2cc7dd009954891ec5cd635e (patch)
tree7a3c708db9726a1da1e7792dca5a71260b67fb61 /13.md
parentf3b00e2c2e8b42fd0a778443e9b5626dda755ea6 (diff)
Post-class 10/21
Diffstat (limited to '13.md')
-rw-r--r--13.md100
1 files changed, 100 insertions, 0 deletions
diff --git a/13.md b/13.md
new file mode 100644
index 0000000..7c9cdf9
--- /dev/null
+++ b/13.md
@@ -0,0 +1,100 @@
+[\<- Latches](12.md)
+
+---
+
+# Flip-flops
+
+## Motivation for flip-flops
+
+### Counting
+
+- A common example of a sequential circuit
+ - We'll learn later how this really works
+
+![diagram](13.1.png)
+
+### Time, and gate delays
+
+- All the timing diagrams we have seen show the output change as soon as the inputs change
+ - Not reality but often a fine abstraction when we only care about logical behavior
+- In reality, it takes some amount of time for a change in an input to "propagate" to a change in the output
+ - This form of propagation delay is called gate delay
+
+### Pass-thru effects
+
+- With a latch, the output can change for the entire time the CLK is asserted
+- What happens if next count logic is "faster" than the time CLK is high?
+ - Uneven counting, probably not what we want
+
+![diagram](13.2.png)
+
+### Avoiding pass-thru effects
+
+- We could shrink the time that CLK is high, but this becomes impractical
+ - Circuitry to generate and distribute CLK is cleaner if high and low phases are equal
+- Use circuit structures that are designed to react to just the "edge" of the clock
+ - Output can only change when CLK goes from low to high (rising edge) or high to low (falling edge)
+ - We call these circuits flip-flops
+
+---
+
+## Master/slave latch
+
+- Note how the clock "port" is drawn
+
+![circuit](13.3.png)
+![timing diagram](13.4.png)
+![graphical symbol](13.5.png)
+
+- The output Q can only change at the "edge" of the clock (the negative edge)
+
+---
+
+## Positive edge-triggered flip-flop
+
+- A more efficient design than master/slave
+
+![circuit](13.6.png)
+![graphical symbol](13.7.png)
+
+### How does it work?
+
+- When clock is low
+ - P1 and P2 are high, isolating Q/!Q
+ - P3 is the same as D and P4 is !D
+- As soon as Clock goes high
+ - If P3 is high (i.e., D is 1)
+ - P1 goes low, setting Q to 1
+ - Gates 1 and 3 are disabled, P4 doesn't matter
+ - If P4 is high (i.e., D is 0)
+ - P2 goes low, resetting Q to 0
+ - Gate 4 is disabled, D doesn't matter
+- When Clock goes low, P1 and P2 go to 1
+
+---
+
+## Summary of latch/flip-flop behavior
+
+### Latch vs flip-flops
+
+![circuit](13.8.png)
+![timing diagram](13.9.png)
+
+### Analogies
+
+- A latch is like a door:
+ - When CLK is high, the door is open
+ - Q does whatever D does while the door is open
+ - When CLK goes low, the door shuts
+ - Q "latches" onto whatever value was on D when the door shut
+- A flip-flop is like a camera
+ - Q is a picture of whatever is on D at the relevant edge (positive edge or negative edge)
+ - Q \*cannot\* change until the next relevant edge
+
+### Setup and Hold Time
+
+- The output "latches" when the CLK transitions (waveform is neg-edge trigger)
+- If D changes close to this time, you might not get a stable output
+ - Like taking a picture and the subject moves
+
+![diagram](13.10.png)