Example #1
0
        public void a2_plus_b2(int a2, int b2, int f2, int f3)
        {
            var alu = new TTL74181(TTLGateTypeEnum.Perfect);

            alu.S0.Add(5);
            alu.S1.Add(0);
            alu.S2.Add(0);
            alu.S3.Add(5);
            alu.Cn.Add(5);
            alu.M.Add(0);

            alu.A0.Add(0);
            alu.A1.Add(0);
            alu.A2.Add(a2);
            alu.A3.Add(0);

            alu.B0.Add(0);
            alu.B1.Add(0);
            alu.B2.Add(b2);
            alu.B3.Add(0);

            Assert.True(alu.VerifyAllGateInputsConnected());
            Assert.True(alu.VerifyNoShortedOutputs());

            Assert.Equal(0, alu.F0(0));
            Assert.Equal(0, alu.F1(0));
            Assert.Equal(f2, alu.F2(0));
            Assert.Equal(f3, alu.F3(0));
        }
Example #2
0
        public void f_equals_0(int b0, int b1, int b2, int b3)
        {
            var alu = new TTL74181(TTLGateTypeEnum.Perfect);

            alu.S0.Add(0);
            alu.S1.Add(0);
            alu.S2.Add(5);
            alu.S3.Add(5);
            alu.Cn.Add(0);
            alu.M.Add(5);

            alu.A0.Add(0);
            alu.A1.Add(0);
            alu.A2.Add(0);
            alu.A3.Add(0);

            alu.B0.Add(b0);
            alu.B1.Add(b1);
            alu.B2.Add(b2);
            alu.B3.Add(b3);

            Assert.True(alu.VerifyAllGateInputsConnected());
            Assert.True(alu.VerifyNoShortedOutputs());

            Assert.Equal(5, alu.F0(0));
            Assert.Equal(5, alu.F1(0));
            Assert.Equal(5, alu.F2(0));
            Assert.Equal(5, alu.F3(0));
        }
Example #3
0
        public void a0_plus_b0(int a0, int b0, int f0, int f1)
        {
            var alu = new TTL74181(TTLGateTypeEnum.Perfect);

            alu.S0.Add(5);
            alu.S1.Add(0);
            alu.S2.Add(0);
            alu.S3.Add(5);
            alu.Cn.Add(5);
            alu.M.Add(0);

            alu.A0.Add(a0);
            alu.A1.Add(0);
            alu.A2.Add(0);
            alu.A3.Add(0);

            alu.B0.Add(b0);
            alu.B1.Add(0);
            alu.B2.Add(0);
            alu.B3.Add(0);


            Assert.True(alu.VerifyAllGateInputsConnected());
            Assert.True(alu.VerifyNoShortedOutputs());

            Assert.Equal(f0, alu.F0(0));
            Assert.Equal(f1, alu.F1(0));
            Assert.Equal(0, alu.F2(0));
            Assert.Equal(0, alu.F3(0));
        }
Example #4
0
        public void a3_plus_b3(int a3, int b3, int f3, int cn4)
        {
            var alu = new TTL74181(TTLGateTypeEnum.Perfect);

            alu.S0.Add(5);
            alu.S1.Add(0);
            alu.S2.Add(0);
            alu.S3.Add(5);
            alu.Cn.Add(5);
            alu.M.Add(0);

            alu.A0.Add(0);
            alu.A1.Add(0);
            alu.A2.Add(0);
            alu.A3.Add(a3);

            alu.B0.Add(0);
            alu.B1.Add(0);
            alu.B2.Add(0);
            alu.B3.Add(b3);

            Assert.True(alu.VerifyAllGateInputsConnected());
            Assert.True(alu.VerifyNoShortedOutputs());

            Assert.Equal(0, alu.F0(0));
            Assert.Equal(0, alu.F1(0));
            Assert.Equal(0, alu.F2(0));
            Assert.Equal(f3, alu.F3(0));
            Assert.Equal(cn4, alu.Cn4(0));             // this output is inverted
        }
        public double F4(int timing)
        {
            Alu2.Cn.Add(Alu1.Cn4(timing));
            RunIteration(timing);

            return(Alu2.F0(timing));
        }
        public double F0(int timing)
        {
            RunIteration(timing);

            return(Alu1.F0(timing));
        }