Logikai szimulátor
 Összes Osztályok Fájl Függvények Változók
logic.cpp
Ugrás a fájl dokumentációjához.
1 #include <iostream>
2 #include <list>
3 #include <vector>
4 #include <functional>
5 #include "and_block.hpp"
6 #include "nand_block.hpp"
7 #include "or_block.hpp"
8 #include "inverter_block.hpp"
9 #include "logic_vm.hpp"
10 
11 int main() {
12 
13  // Simple Flip-Flop
14  logic_vm VM("FlipFlop");
15 
16  VM.add(new nand_block("nand1"));
17  VM.element("nand1").add_port("A","input");
18  VM.element("nand1").add_port("B","input");
19  VM.element("nand1").add_port("Y1","output");
20 
21  VM.add(new nand_block("nand2"));
22  VM.element("nand2").add_port("C","input");
23  VM.element("nand2").add_port("D","input");
24  VM.element("nand2").add_port("Y2","output");
25 
26  VM.element("nand1").connect("Y1", VM.element("nand2"), "C");
27  VM.element("nand2").connect("Y2", VM.element("nand1"), "B");
28  VM.element("nand1").set_port("A",true);
29  VM.run(6);
30  VM.element("nand1").set_port("A",false);
31  VM.element("nand1").set_port("D",true);
32  VM.run(6);
33  VM.info();
34 
35  // Ring osc.
36  logic_vm VM2("Ringoszcillator");
37  VM2.add(new inverter_block("inv1"));
38  VM2.element("inv1").add_port("IN","input");
39  VM2.element("inv1").add_port("OUT","output");
40  VM2.add(new inverter_block("inv2"));
41  VM2.element("inv2").add_port("IN","input");
42  VM2.element("inv2").add_port("OUT","output");
43  VM2.add(new inverter_block("inv3"));
44  VM2.element("inv3").add_port("IN","input");
45  VM2.element("inv3").add_port("OUT","output");
46  VM2.element("inv1").connect("OUT", VM2.element("inv2"), "IN");
47  VM2.element("inv2").connect("OUT", VM2.element("inv3"), "IN");
48  VM2.element("inv3").connect("OUT", VM2.element("inv1"), "IN");
49 
50  VM2.element("inv1").set_port("IN",true);
51  VM2.run(10);
52  VM2.info();
53 
54  return 0;
55 }