-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.cpp
More file actions
81 lines (60 loc) · 2.38 KB
/
main.cpp
File metadata and controls
81 lines (60 loc) · 2.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include <QCoreApplication>
#include "mealyfsm.h"
#include "moorefsm.h"
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
// Mealy FSM example #1
MealyFSM myMealyFSM;
myMealyFSM.setInputSize(2);
myMealyFSM.setOutputSize(1);
myMealyFSM.addState("S0");
myMealyFSM.addState("S1");
myMealyFSM.addState("S2");
myMealyFSM.addState("S3");
myMealyFSM.addState("S4");
myMealyFSM.connect("S0", "S0", "00", "0");
myMealyFSM.connect("S0", "S1", "10", "1");
myMealyFSM.connect("S0", "S2", "11", "1");
myMealyFSM.connect("S0", "S4", "01", "1");
myMealyFSM.connect("S1", "S0", "00", "0");
myMealyFSM.connect("S1", "S1", "x1", "0");
myMealyFSM.connect("S1", "S2", "10", "0");
myMealyFSM.connect("S2", "S1", "0x", "0");
myMealyFSM.connect("S2", "S3", "1x", "1");
myMealyFSM.connect("S3", "S3", "x0", "1");
myMealyFSM.connect("S3", "S4", "x1", "1");
myMealyFSM.connect("S4", "S4", "11", "1");
myMealyFSM.connect("S4", "S0", "10", "1");
myMealyFSM.connect("S4", "S0", "0x", "0");
myMealyFSM.setFailSafe("S0", "0");
myMealyFSM.setCodeSettings(RisingEdge, FallingEdge, Asynchronous, Nanoseconds, Picoseconds);
myMealyFSM.setSignalNames("in", "out", "clk", "rst", "curr_s", "next_s");
myMealyFSM.setModuleName("fsm2hdl_mealy");
myMealyFSM.generateVerilog();
// Moore FSM example #1
MooreFSM myMooreFSM;
myMooreFSM.setInputSize(1);
myMooreFSM.setOutputSize(1);
myMooreFSM.addState("S0", "0");
myMooreFSM.addState("S1", "0");
myMooreFSM.addState("S11", "0");
myMooreFSM.addState("S110", "0");
myMooreFSM.addState("S1101", "1");
myMooreFSM.connect("S0", "S0", "0");
myMooreFSM.connect("S0", "S1", "1");
myMooreFSM.connect("S1", "S0", "0");
myMooreFSM.connect("S1", "S11", "1");
myMooreFSM.connect("S11", "S110", "0");
myMooreFSM.connect("S11", "S11", "1");
myMooreFSM.connect("S110", "S0", "0");
myMooreFSM.connect("S110", "S1101", "1");
myMooreFSM.connect("S1101", "S0", "0");
myMooreFSM.connect("S1101", "S11", "1");
myMooreFSM.setFailSafe("S0");
myMooreFSM.setCodeSettings(RisingEdge, FallingEdge, Asynchronous, Nanoseconds, Picoseconds);
myMooreFSM.setSignalNames("in", "out", "clk", "rst", "curr_s", "next_s");
myMooreFSM.setModuleName("fsm2hdl_moore");
myMooreFSM.generateVerilog();
return a.exec();
}