public DynamicAdder(int bits)
        {
            fullAdders = new FullAdder[bits];
            var inputPinSeriesA    = new InputPin[bits];
            var inputPinSeriesB    = new InputPin[bits];
            var outputPinSeriesSum = new OutputPin[bits];

            FullAdder previousFullAdder = null;

            for (var i = 0; i < bits; i++)
            {
                var fullAdder = new FullAdder();

                if (previousFullAdder != null)
                {
                    previousFullAdder.CarryOver.ConnectTo(fullAdder.CarryIn);
                }

                fullAdders[i]         = fullAdder;
                inputPinSeriesA[i]    = fullAdder.InputA;
                inputPinSeriesB[i]    = fullAdder.InputB;
                outputPinSeriesSum[i] = fullAdder.Sum;

                previousFullAdder = fullAdder;
            }

            Overflow = previousFullAdder.CarryOver;

            InputA = new InputPinSeries(inputPinSeriesA);
            InputB = new InputPinSeries(inputPinSeriesB);
            Sum    = new OutputPinSeries(outputPinSeriesSum);
        }
Beispiel #2
0
        public Subtracter8Bit()
        {
            InputA = new InputPinSeries(fullSubtracter1.InputA, fullSubtracter2.InputA, fullSubtracter3.InputA, fullSubtracter4.InputA,
                                        fullSubtracter5.InputA, fullSubtracter6.InputA, fullSubtracter7.InputA, fullSubtracter8.InputA);

            InputB = new InputPinSeries(fullSubtracter1.InputB, fullSubtracter2.InputB, fullSubtracter3.InputB, fullSubtracter4.InputB,
                                        fullSubtracter5.InputB, fullSubtracter6.InputB, fullSubtracter7.InputB, fullSubtracter8.InputB);

            Sub = new OutputPinSeries(fullSubtracter1.Sub, fullSubtracter2.Sub, fullSubtracter3.Sub, fullSubtracter4.Sub,
                                      fullSubtracter5.Sub, fullSubtracter6.Sub, fullSubtracter7.Sub, fullSubtracter8.Sub);

            fullSubtracter1.CarryOver.ConnectTo(fullSubtracter2.CarryIn);
            fullSubtracter2.CarryOver.ConnectTo(fullSubtracter3.CarryIn);
            fullSubtracter3.CarryOver.ConnectTo(fullSubtracter4.CarryIn);
            fullSubtracter4.CarryOver.ConnectTo(fullSubtracter5.CarryIn);
            fullSubtracter5.CarryOver.ConnectTo(fullSubtracter6.CarryIn);
            fullSubtracter6.CarryOver.ConnectTo(fullSubtracter7.CarryIn);
            fullSubtracter7.CarryOver.ConnectTo(fullSubtracter8.CarryIn);

            Overflow = fullSubtracter8.CarryOver;
        }