Dice Game Controller Using SM Chart
Dice Game Controller Using SM Chart
optional
state code
xxx
state_name/
output list
(a) state box
(true
branch) 1
condition
(false
0 branch)
conditional
output list
(c) conditional
output box
S1 / Z1 Z2 one state
link
path a
SM
block
1
X1
link
path b
Z3 Z4
0
0
1
X2
X3
Z5
2
3
n exit paths
S1 / Z1
S1 / Z1
0
X1
X2
Z2
X1
X1
0
0
S2 /
(a)
X2
S3 /
Z2
Z2
S2 /
S3 /
(b)
S0 /
S0 /
A+BC
0
0
1
C
Z1
1
B
0
Z1
(a)
(b)
S0 /
0
X
1
(a) incorrect
S0 /
0
X
1
(b) correct
S0 / Z1
Z2
1
1
X1
1
X2
X3
1
X2
Z2
Z3
Z4
0
Z3
1
Z4
X3
0
S0
Za
Link 1
0
1/0
0/0
0/0
0/Z1
01
S1 / Zb
Link 2
0
1
S2 / Zc 11
Link 3
0
Z1
S1
Zb
1
Z2
1/0
1/Z 2
S2
Zc
S0
S1
S2
S2
S0
S0
St
Load
S1 /
0
Sh
Ad
S2 / Sh
1
S3 / Done
-- (state 3)
Display
Display
1-to-6
Counter
1-to-6
Counter
DiceGame Module
Reset
Adder
Sum
Point
Register
Comparator
Rb
Roll
Test
Logic
D7
Control
D711
D2312
Eq
Sp
Win
Lose
Roll dice
Sum =
7 or 11
Sum =
2,3,or 12
Store sum in
point register
Roll Dice
Sum =
Point
N
N
Sum = 7
Y
Win
Lose
Reset
Reset
S0 /
0
S4 /
Rb
1
Roll
S1 /
S5 /
Roll
1
Rb
1
0
1
D2312
1
1
Reset
Eq
0
D7
0
1
Rb
0
D711
0
S2 / Win
Rb
Sp
S3 / Lose
0
Reset
S2 / Win
1
1
S3 / Lose
S0
Reset/0
Reset/0
Rb/Roll
Rb/0
Reset'/0
S2
Rb'D 711/0
Win
Reset'/0
S1
Rb'D'711D2312 /0 Lose
S4
Rb'/0
Rb'Eq/0
S3
Rb/0
Rb'Eq'D'7 /0
S5
Rb/Roll
Rb'Eq'D 7/0
Rb
Reset
GameTest
CLK
Sum
Roll
Win
Lose
DiceGame
T0 / Rb
0
0
Roll
1
Sum = Sumarray(i)
i=i+1
T1 /
T2 /
0
i>N
Win or
Lose
1
Reset
T3 / (Stop)
Figure 5-20 Simulation and Command File for Dice Game Tester
list /dicetest/ trig1 -NOTrigger sum1 win1 lose1 /dice/point
run 2000
ns
0
100
260
420
580
740
900
1060
1220
1380
1540
1700
1860
delta
+0
+3
+3
+3
+2
+3
+2
+2
+3
+2
+2
+2
+3
trig1
0
0
0
0
1
1
0
1
1
0
1
0
0
sum1
2
7
11
2
4
7
5
6
7
6
8
9
6
win1
0
1
1
0
0
0
0
0
0
0
0
0
1
lose1
0
0
0
1
0
1
0
0
1
0
0
0
0
point
2
2
2
2
4
4
5
5
5
6
6
6
6
S0
S1
S2
S3
A
0
0
0
0
0
1
1
1
B St M K A+ B+ Load Sh Ad Done
0 0 0
0
0
0
0
0
0 1 0
1
1
0
0
0
1 0 0 0
1
0
1
0
0
1 0 1 1
1
0
1
0
0
1 1 1
0
0
0
1
0
0 0 0
1
0
1
0
0
0 1 1
1
0
1
0
0
1 0
0
0
0
0
1
Ad = A'B M
Done = A B
Win
Lose
Roll
Sp
C+
PLA
C
B
B+
A+
D
CK
D
CK
D
CK
A
Clock
Q
Q
Q
000 1
001 1
001 0
0
0
001 0
0
1
001 0
010
0
010
1
011
1
011
0
100 0
100 1
101 0
101 0
101 0
101 1
110
111
Eq A+ B+ C+ Win Lose
0
0
0
0
0
0
0
1
0
0
0
0
1
0
0
1
0
0
0
0
0
1
1
0
0
0
1
0
0
0
0
1
0
1
0
0
0
0
1
0
0
0
0
0
1
0
1
1
0
1
1
0
0
0
0
1
0
1
0
0
0 1
0
0
0
0
0 0
1
1
0
0
1 0
1
0
0
0
1
0
1
0
0
Roll
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
1
Sp
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
AB
00 01
CRb
11
10
CRb
AB
00 01 11
10
CRb
00 01
11
00
X 1
00
R'
00
01
X 1
01
R'
01
11
X 1
11
R'
11
X E2
10
R'
10
10
E1
E1 = D'711 D'2312
E2 = D'7 Eq'
E3
E4
R = Reset
E3 = D
=D
D'
+ D'
+ D'
711
711 2312
711
2312
+
+
D 7 Eq' = Eq D 7
E4 = Eq
10
Register
NSF
NST
Inputs
...
MUX
MUX
OUTPUT
Figure 5-27(a) SM Chart with Moore Outputs and One Test per State
S0 /
Rb
0000
1
S1 / Roll
0001
0
Rb
S11 /
1
S2 / Win
D711
0010
0
S12 /
0100
0
Reset
To S13
1
D
D2312
0011
1
To S3
Figure 5-27(b) Chart with Moore Outputs and One Test per State
S13 / Sp
0101
S3 / Lose
S5 / Roll
Rb
Rb
0110
0111
S4 /
Reset
To S0
1000
0
1001
S51 /
Eq
1
0
1010
S52 /
To S2
D7
1
Rb
D711
D2312
Eq
D7
Reset
0
1
2
3
4
5
6
7
MUX
TEST
S0
0001
S1
0001
S11
0100
S12
0110
S2
0000
S13
0111
S3
0000
S4
1000
S5
1000
S51
0100
S52
0110
TEST
Inputs
...
Next
state
(true)
MUX
Load/Count'
NST
OUTPUT
Figure 5-30(a) SM chart with Serial State Assignment and Added X-states
S0 /
01
Rb'
0000
10
S1 / Roll
0001
0
Rb
S11 /
1
S2 / Win
01
Reset'
10
D711
0010
0
S12 /
1111
0
To S13
D2312
0011
1
To S3
Figure 5-30(b) SM Chart with Serial State Assignment and Added X-state
S13 / Sp 0100
S4 /
10
Rb'
S3 / Lose
1001
0101
Reset'
01
01
10
S5 / Roll 0110
1
Rb
To S0
0111
S51 /
To S2
Sx /
Eq
0
1000
S52 /
D7'
01
10
1010
Rb'
Rb
D711
D2312
Eq
D 7'
Reset'
1
0
1
2
3
4
5
6
7
MUX
TEST
Load / Count'
ABCD TEST
NST
S0
0000
000
0000
Test(2)
= B C'D' + B C D + A
S1
0001
001
0001
Test(1)
= B'C + B C'D' + A D
S11
0010
010
1111
Test(0)
S12
0011
011
1001
NST(3)
= A'B'C + C D + A D
S13
0100
111
0101
NST(2)
S4
0101
000
0101
NST(1)
= A'C D' + B C
S5
0110
001
0110
NST(0)
S51
0111
100
1111
Roll
= A'B'C'D + B C D'
S52
1000
101
0101
SP
= B C'D'
S3
1001
110
1001
Win
= AB
Sx
1010
111
0000
Lose
= A B'D
S2
1111
110
1111
Machine B
(called machine)
IDLE
SOME
STATES
ZA
1
SA/ZA
0
OTHER
STATES
ZB
1
OTHER
STATES
SB/ZB
T0 / En_roll
00
0
01
0
From
Roll Control
Dn_roll
Eq
D 711
T2 / Win
0
10
From
Roll Control
Dn_roll
T2 / Win
To
Roll Control
T1 / En_roll
To
Roll Control
T3 / Lose
D2312
D7
11
0
Reset
1
0
Sp
Reset
S0 /
From
Main Control
En_roll
To
Main Control
Rb
1
S1 /
Dn_roll
Rb
Roll