diff options
author | lshprung <lshprung@yahoo.com> | 2020-10-21 12:59:06 -0700 |
---|---|---|
committer | lshprung <lshprung@yahoo.com> | 2020-10-21 12:59:06 -0700 |
commit | f78c180eb9d5a74d2cc7dd009954891ec5cd635e (patch) | |
tree | 7a3c708db9726a1da1e7792dca5a71260b67fb61 /13.md | |
parent | f3b00e2c2e8b42fd0a778443e9b5626dda755ea6 (diff) |
Post-class 10/21
Diffstat (limited to '13.md')
-rw-r--r-- | 13.md | 100 |
1 files changed, 100 insertions, 0 deletions
@@ -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) |