示例#1
0
        public void LoopDevice()
        {
            var ffs = new DFlipFlop(c, f).Unfold(ff => new DFlipFlop(c, ff), max: 8).ToArray();

            ffs[0].Inputs[0] = new Inverter(ffs[ffs.Length - 1]);


            for (int i = 0; i < 8; i++)
            {
                c.Go();
                for (int j = 0; j < i; j++)
                {
                    Assert.IsTrue(ffs[j][0]);
                }
            }

            for (int i = 0; i < 8; i++)
            {
                c.Go();
                for (int j = 0; j < i; j++)
                {
                    Assert.IsFalse(ffs[j][0]);
                }
            }
        }
示例#2
0
        public void ShiftRegister()
        {
            var ffs = new DFlipFlop(c, f).Unfold(ff => new DFlipFlop(c, ff), max: 8).ToArray();

            ffs[0].Inputs[0] = t;

            for (int i = 0; i < 8; i++)
            {
                c.Go();
                for (int j = 0; j < i; j++)
                {
                    Assert.IsTrue(ffs[j][0]);
                }
            }
        }
示例#3
0
        public void DFlipFlop()
        {
            DFlipFlop ff = new DFlipFlop(c, t, true);

            Assert.IsTrue(ff[0]);

            ff.Inputs[0] = f;
            c.Go();
            Assert.IsFalse(ff[0]);

            c.Go();
            Assert.IsFalse(ff[0]);

            ff.Inputs[0] = t;
            c.Go();
            Assert.IsTrue(ff[0]);
        }
示例#4
0
        public void DFlipFlopTest()
        {
            var a      = new Switch();
            var button = new Button();
            var mem    = new DFlipFlop();

            a.AttachTo(mem, 0);
            button.AttachTo(mem, 1);

            Assert.IsFalse(mem.OutState());
            Assert.IsTrue(mem.GetPortState(1));

            a.State = true;
            button.Click();

            Assert.IsTrue(mem.OutState());
            Assert.IsFalse(mem.GetPortState(1));

            a.State = false;
            button.Click();

            Assert.IsFalse(mem.OutState());
            Assert.IsTrue(mem.GetPortState(1));
        }
示例#5
0
文件: Program.cs 项目: fossabot/Silo
        private static void Main()
        {
            var a = new Switch();
            var b = new Switch();
            var c = new Switch();

            #region AndGate

            Console.WriteLine("AND Gate Test");
            Console.WriteLine("------------------------");

            var inv = new Inverter();

            b.AttachTo(inv, 0);

            var andGate = new AndGate();

            a.AttachTo(andGate, 0);
            inv.AttachTo(andGate, 1);

            a.State = true;
            b.State = true;

            Console.WriteLine(andGate);

            b.State = false;
            Console.WriteLine(andGate);

            #endregion

            #region 8 bit input

            Console.WriteLine("\n8 bit input");
            Console.WriteLine("------------------------");

            var inp = new EightBitInput {
                State = 200
            };

            Console.WriteLine(inp);

            #endregion

            #region FullAdder

            Console.WriteLine("\nFull Adder");
            Console.WriteLine("------------------------");

            a.State = false;
            b.State = false;

            var add = new FullAdder();

            a.AttachTo(add, 0);
            b.AttachTo(add, 1);
            c.AttachTo(add, 2);

            a.State = true;

            Console.WriteLine(add);

            b.State = true;

            Console.WriteLine(add);

            b.State = false;
            c.State = true;

            Console.WriteLine(add);

            #endregion

            #region 8 bit Adder

            Console.WriteLine("\n8 bit Adder");
            Console.WriteLine("------------------------");

            var in1 = new EightBitInput();
            var in2 = new EightBitInput();

            var add1 = new EightBitAdder();

            in1.AttachTo(add1);
            in2.AttachTo(add1, 8);

            in1.State = 10;
            in2.State = 5;

            Console.WriteLine(add1);

            var display = new EightBitDisplay();
            add1.AttachToAll(display);
            Console.WriteLine(display);

            #endregion

            #region Dual 8 bit adder

            Console.WriteLine("\nDual 8 bit Adder");
            Console.WriteLine("------------------------");

            var in3 = new EightBitInput();
            var in4 = new EightBitInput();

            var add2 = new EightBitAdder();

            in3.AttachTo(add2);
            in4.AttachTo(add2, 8);

            in3.State = 4;
            in4.State = 11;

            var add3 = new EightBitAdder();

            add1.AttachToAll(add3);
            add2.AttachToAll(add3, 8);

            var display2 = new EightBitDisplay();
            add3.AttachToAll(display2);
            Console.WriteLine(display2);

            #endregion

            #region D FlipFlop with pseudo clock

            Console.WriteLine("\nD FlipFlop with pseudo clock");
            Console.WriteLine("------------------------");

            var d   = new DFlipFlop();
            var val = new Switch();
            var clk = new Switch();

            val.AttachTo(d, 0);
            clk.AttachTo(d, 1);

            val.State = true;
            clk.State = true;
            Console.WriteLine(d);

            val.State = false;
            clk.State = false;
            clk.State = true;
            Console.WriteLine(d);

            #endregion

            #region D Flip Flop with real clock

            Console.WriteLine("\nD Flip Flop with real clock");
            Console.WriteLine("------------------------");

            var clk1 = new Clock(1.Hz());
            clk1.AttachTo(d, 1);
            val.State = true;
            Console.WriteLine(d);
            Thread.Sleep(2000);
            Console.WriteLine(d);

            val.State = false;
            Console.WriteLine(d);
            Thread.Sleep(2000);
            Console.WriteLine(d);

            #endregion

            #region SR Flip Flop with pseudo clock

            Console.WriteLine("\nSR Flip Flop with pseudo clock");
            Console.WriteLine("------------------------");

            var sr  = new SRFlipFlop();
            var sr1 = new Switch();
            var sr2 = new Switch();
            var sr3 = new Switch();

            sr1.AttachTo(sr, 0);
            sr2.AttachTo(sr, 1);
            sr3.AttachTo(sr, 2);

            sr1.State = true;

            sr3.State = true;
            sr3.State = false;

            Console.WriteLine(sr);

            sr2.State = true;

            sr3.State = true;
            sr3.State = false;

            Console.WriteLine(sr);

            sr1.State = false;

            sr3.State = true;
            sr3.State = false;

            Console.WriteLine(sr);

            #endregion
        }