Memory
The logic and arithmetic circuits we’ve seen so far have no memory. They just transform input to output. Can we make circuits that remember? Memory
Matt really likes Sue, but he doesn’t like changing his mind… So: Matt decides to go to the party if Sue decides to go OR if he (Matt) had already planned to go. The Stubborn Guy
Matt decides to go to the party if Sue decides to go OR if he (Matt) had already planned to go. Two inputs to Matt’s decision: Sue, and his own state OR Sue Matt Feedback Wire He Needs Feedback (from Himself)
Matt decides to go to the party if Sue decides to go OR if he (Matt) had already planned to go. If Sue decides to go... OR Sue Matt 1 The Stubborn Guy: Feedback
Matt decides to go to the party if Sue decides to go OR if he (Matt) had already planned to go. If Sue decides to go, Matt will go. OR Sue Matt The Stubborn Guy: Feedback
Matt decides to go to the party if Sue decides to go OR if he (Matt) had already planned to go. If Sue changes her mind… OR Sue Matt The Stubborn Guy: Feedback
Matt decides to go to the party if Sue decides to go OR if he (Matt) had already planned to go. If Sue changes her mind, Matt will still go! Once he decides to go, we can’t get him to change his mind OR Sue Matt The Stubborn Guy: Feedback
Matt doesn’t like Rita Matt decides to go to the party if Sue decides to go OR: If he (Matt) had already planned to go AND Rita decides NOT to go. Enter Rita
Matt doesn’t like Rita Matt decides to go to the party if Sue decides to go OR: If he (Matt) had already planned to go AND Rita decides NOT to go. OR AND Sue Rita Matt Feedback Wire Enter Rita
Matt doesn’t like Rita Matt decides to go to the party if Sue decides to go OR: If he (Matt) had already planned to go AND Rita decides NOT to go. OR AND Sue Rita Matt Enter Rita
Matt doesn’t like Rita Matt decides to go to the party if Sue decides to go OR: If he (Matt) had already planned to go AND Rita decides NOT to go. OR AND Sue Rita Matt Enter Rita
Matt doesn’t like Rita Matt decides to go to the party if Sue decides to go OR: If he (Matt) had already planned to go AND Rita decides NOT to go. OR AND Sue Rita Matt Enter Rita
Matt doesn’t like Rita Matt decides to go to the party if Sue decides to go OR: If he (Matt) had already planned to go AND Rita decides NOT to go. OR AND Sue Rita Matt Enter Rita
Matt doesn’t like Rita Matt decides to go to the party if Sue decides to go OR: If he (Matt) had already planned to go AND Rita decides NOT to go. OR AND Sue Rita Matt 0 – nothing changes: Sue can make Matt go, but cannot make him not go Enter Rita
Matt doesn’t like Rita (maybe together they can make him not go) Matt decides to go to the party if Sue decides to go OR: If he (Matt) had already planned to go AND Rita decides NOT to go. OR AND Sue Rita Matt Enter Rita
Matt doesn’t like Rita Matt decides to go to the party if Sue decides to go OR: If he (Matt) had already planned to go AND Rita decides NOT to go. OR AND Sue Rita Matt Enter Rita
Matt doesn’t like Rita Matt decides to go to the party if Sue decides to go OR: If he (Matt) had already planned to go AND Rita decides NOT to go. OR AND Sue Rita Matt Enter Rita
Matt doesn’t like Rita Matt decides to go to the party if Sue decides to go OR: If he (Matt) had already planned to go AND Rita decides NOT to go. OR AND Sue Rita Matt Enter Rita
Matt doesn’t like Rita Matt decides to go to the party if Sue decides to go OR: If he (Matt) had already planned to go AND Rita decides NOT to go. OR AND Sue Rita Matt Enter Rita
Matt doesn’t like Rita Matt decides to go to the party if Sue decides to go OR: If he (Matt) had already planned to go AND Rita decides NOT to go. OR AND Sue Rita Matt Enter Rita
Matt doesn’t like Rita Matt decides to go to the party if Sue decides to go OR: If he (Matt) had already planned to go AND Rita decides NOT to go. OR AND Sue Rita Matt Enter Rita - no change
What Sue and Rita Can Do Sue can make Matt go, but cannot make him not go Rita can make Matt not go, but cannot make him go
OR AND Set Reset M M becomes 1 if Set is turned on M becomes 0 if Reset is turned on Otherwise (if both are 0), M just remembers its value The (SR) Flip-Flop
M becomes 1 if Set is turned on M becomes 0 if Reset is turned on Otherwise (if both are 0), M just remembers its value S R M The Flip-Flop
D W M What We Really Want Nothing happens unless Write = 1 If Write = 1, then M becomes set to D Once Write = 0 again, M just keeps its value. (It ignores D.) So, to set M to a value and store it as long as desired, set D to that value, then set W to 1 and then back to 0
AND Nothing happens unless Write = 1 S R M D Write The Data Flip-Flop
AND Nothing happens unless Write = 1 If Write = 1, then M becomes set to D Once Write = 0 again, M just keeps its value. (It ignores D.) S R M D Write The Data Flip-Flop
AND Initially, Write = 0. Let’s say M = 1. S R M D Write Using a Data Flip-Flop
AND Initially, Write = 0. Let’s say M = 1. First, set D to desired value, say 0. S R M D Write Using a Data Flip-Flop
AND Initially, Write = 0. Let’s say M = 1. First, set D to desired value, say 0. Then, set Write to 1. S R M D Write Using a Data Flip-Flop
AND Initially, Write = 0. Let’s say M = 1. First, set D to desired value, say 0. Then, set Write to 1. This causes M to be reset to 0. Note use of abstraction with regard to SR flip-flop S R M D Write Using a Data Flip-Flop
AND Initially, Write = 0. Let’s say M = 1. First, set D to desired value, say 0. Then, set Write to 1. This causes M to be reset to 0. Finally set Write back to 0. Now D is irrelevant. S R M D Write ? 1 Using a Data Flip-Flop
If Write = 0, M just keeps its value. (It ignores D.) If Write = 1, then M becomes set to D D Write M The Data Flip-Flop
Are We Done?
When Write = 1, then M = D. If we have some feedback between M and D, then circuit could go haywire. D Write M ?? A Subtle Problem
For example, suppose a NOT gate connects M and D. When Write = 1, M and D keep changing. We have no control. D Write M NOT 1 ? ? A Subtle Problem
We want to control the feedback, so that each time we set Write to 1 and then back to 0, M stores only the last value of D (In this case, M should invert itself once each time we set Write to 1 and back to 0) D Write M NOT 1 ? ? A Subtle Problem
D1D1 W1W1 M1M1 D0D0 W0W0 M0M0 “Outer door” “Inner door” Write Two-Stage System to prevent D ever passing through directly to M (W 0,W 1 connected by NOT, so never 1 at the same time) D M The “Airlock” Flip-Flop
D1D1 W1W1 M1M1 D0D0 W0W0 M0M0 “Outer door” “Inner door” Write We start with Write = 0. Let’s say D is always NOT M; i.e. connected by NOT gate. Start with D = 0, M = 1. D M The “Airlock” Flip-Flop
D1D1 W1W1 M1M1 D0D0 W0W0 M0M0 “Outer door” “Inner door” Write We start with Write = 0. Let’s say D is always NOT M; i.e. connected by NOT gate Start with D = 0, M = 1. D M The “Airlock” Flip-Flop
D1D1 W1W1 M1M1 D0D0 W0W0 M0M0 “Outer door” “Inner door” Write Want to store D in memory. Set Write to 1 D M The “Airlock” Flip-Flop
D1D1 W1W1 M1M1 D0D0 W0W0 M0M0 “Outer door” “Inner door” Write Want to store D in memory. Set Write to 1 “Outer” flip-flop sets M 0 = D 0 = 0 “Inner” flip-flop ignores D 1 since W 1 = 0 D M The “Airlock” Flip-Flop
D1D1 W1W1 M1M1 D0D0 W0W0 M0M0 “Outer door” “Inner door” Write Now, set Write back to 0 D M The “Airlock” Flip-Flop
D1D1 W1W1 M1M1 D0D0 W0W0 M0M0 “Outer door” “Inner door” Write Now, set Write back to 0 Now “Inner” flip-flop sets M = D 1 = 0 D M The “Airlock” Flip-Flop
D1D1 W1W1 M1M1 D0D0 W0W0 M0M0 “Outer door” “Inner door” Write Because of feedback, D might change to (NOT M), which is 1 But Write = 0, so “Outer” flip-flop ignores D, so M 0 stays 0. D M The “Airlock” Flip-Flop
D1D1 W1W1 M1M1 D0D0 W0W0 M0M0 “Outer door” “Inner door” Write So memory does not change until we “toggle” Write. (“toggle” means change from 0 to 1 or vice versa) D M The “Airlock” Flip-Flop
D1D1 W1W1 M1M1 D0D0 W0W0 M0M0 “Outer door” “Inner door” Write This is Real Memory! D M The “Airlock” Flip-Flop
D M W D M W D M W D M W Write Data 1 Data 2 Data 3 Data 4 Memory “Register”: 4 bits
Review We have used the Universal method to build –ALU –Memory Next steps –State machines to computer with memory –Building the computer –Writing a program to use the computer