Difference between revisions of "CSC270 Exercises on FSM"

From dftwiki3
Jump to: navigation, search
(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.


GYRSequencer1.png


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.


GYRSequencer2.png


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








  1. 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.