Difference between revisions of "CSC270 Exercises on FSM"
(→Exercise #2) |
(→Exercise #4) |
||
Line 34: | Line 34: | ||
D0 = Q0' | D0 = Q0' | ||
D1 = Q0 XOR Q1 | D1 = Q0 XOR Q1 | ||
− | D2 = Q1 XOR Q0 | + | D2 = Q1 XOR Q2 |
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | <font color = "white"> | ||
+ | <tt> | ||
+ | # implements a simple sequencer | ||
+ | # | ||
+ | |||
+ | def main(): | ||
+ | # assume we start in a state where all 3 flip-flops are outputing 0 | ||
+ | D0 = 0 | ||
+ | D1 = 0 | ||
+ | D2 = 0 | ||
+ | |||
+ | for t in range( 20 ): | ||
+ | Q0 = D0 | ||
+ | Q1 = D1 | ||
+ | Q2 = D2 | ||
+ | |||
+ | if t==0: | ||
+ | print "%2s %2s %2s %2s" % ( "t", "Q0", "Q1", "Q2" ) | ||
+ | print "----|------------" | ||
+ | |||
+ | print "%2d %2d %2d %2d" % ( t, Q0, Q1, Q2 ) | ||
+ | |||
+ | D0 = 1 - Q0 | ||
+ | D1 = Q0 ^ Q1 | ||
+ | D2 = Q1 ^ Q2 | ||
+ | |||
+ | |||
+ | main() | ||
+ | |||
+ | </tt> | ||
+ | </font> | ||
==Exercise #5== | ==Exercise #5== | ||
* Same question, but solve it with Python. | * Same question, but solve it with Python. |
Revision as of 16:38, 28 February 2011
--D. Thiebaut 15:24, 28 February 2011 (EST)
Exercise #1
- Implement a sequencer (FSM) which activates 3 Lights: a green light, a yellow light, and a red light. The behavior of the FSM is the following:
- the green light stays on for 30 seconds, then
- the yellow light comes on and stays on for 30 seconds, then
- the red light comes on and stays on for 30 seconds, then we repeat the pattern.
- There is only one light on at a given time.
Exercise #2
- Same as Exercise 1, but this time the behavior is the following
- the green light comes on after the red light and stays on for 30 seconds,
- the yellow light comes on and stays on for the next for 15 seconds,
- the red light comes on after the yellow light for 30 seconds.
Exercise #3
- Create a "true" frequency divider that divides by 4.
Exercise #4
- What is the state diagram of the 3-flip-flop circuit with the following equations:
D0 = Q0' D1 = Q0 XOR Q1 D2 = Q1 XOR Q2
- implements a simple sequencer
def main():
# assume we start in a state where all 3 flip-flops are outputing 0 D0 = 0 D1 = 0 D2 = 0
for t in range( 20 ): Q0 = D0 Q1 = D1 Q2 = D2
if t==0: print "%2s %2s %2s %2s" % ( "t", "Q0", "Q1", "Q2" ) print "----|------------"
print "%2d %2d %2d %2d" % ( t, Q0, Q1, Q2 ) D0 = 1 - Q0 D1 = Q0 ^ Q1 D2 = Q1 ^ Q2
main()
Exercise #5
- Same question, but solve it with Python.