Ejemplo n.º 1
0
        public ALU()
        {
            inverterBusA.BusOutput += muxerBusA.BInput;
            inverterBusB.BusOutput += muxerBusB.BInput;

            maxGateA.Output += muxerBusA.InputSelect;
            maxGateB.Output += muxerBusB.InputSelect;

            shiftDownGateA.Output += maxGateA.BInput;
            shiftDownGateB.Output += maxGateA.BInput;

            muxerBusA.BusOutput += tryteAdder.ABusInput;
            muxerBusA.BusOutput += maxBus.ABusInput;
            muxerBusA.BusOutput += minBus.ABusInput;

            muxerBusB.BusOutput += tryteAdder.BBusInput;
            muxerBusB.BusOutput += maxBus.BBusInput;
            muxerBusB.BusOutput += minBus.BBusInput;

            tryteAdder.CarryOut += InvokeOverflowOutput;

            minBus.BusOutput     += muxerBus2.AInput;
            tryteAdder.BusOutput += muxerBus2.BInput;
            maxBus.BusOutput     += muxerBus2.CInput;

            muxerBus2.BusOutput += muxerBusF.AInput;
            muxerBus2.BusOutput += muxerBusF.BInput;
            muxerBus2.BusOutput += inverterBusOutput.BusInput;

            inverterBusOutput.BusOutput += muxerBusF.CInput;

            for (int i = 0; i < muxers.Length - 1; i++)
            {
                muxers[i].Output += muxers[i + 1].BInput;
            }

            muxers[7].Output += InvokeSignedOutput;

            muxerBusF.BusOutput += (s, tryte) =>
            {
                for (int i = 0; i < muxers.Length; i++)
                {
                    muxers[i].InputSelect(s, tryte[i + 1]);
                }

                muxers[0].BInput(s, tryte[0]);

                InvokeOutput(s, tryte);
            };



#if DEBUG
            ComponentTools.SetComponentNames(this);
#endif
        }
Ejemplo n.º 2
0
        public TryteMemory()
        {
            for (int x = 0; x < TRIBBLE_SIZE; x++)
            {
                for (int y = 0; y < TRIBBLE_SIZE; y++)
                {
                    TryteRegisterCircuit regComp = new TryteRegisterCircuit(_DataBus, _ReadWriteEnableWire, _XRails[x], _YRails[y]);

                    regComp.BusOutput += (s, t) => BusOutput?.Invoke(this, t);

                    _Addresses[x, y] = regComp;
                }
            }

            int c = 0;

            for (int i = -1; i < 2; i++)
            {
                for (int j = -1; j < 2; j++)
                {
                    for (int k = -1; k < 2; k++)
                    {
                        Muxer             muxer     = new Muxer(inputStateA: Trit.Neg, inputStateC: Trit.Pos);
                        TritMatchCircuit3 matchGate = new TritMatchCircuit3((Trit)i, (Trit)j, (Trit)k);
                        matchGate.Output += muxer.InputSelect;
                        muxer.Output     += _XRails[c].Input;
                        _XRailMatch[c]    = matchGate;

                        muxer             = new Muxer(inputStateA: Trit.Neg, inputStateC: Trit.Pos);
                        matchGate         = new TritMatchCircuit3((Trit)i, (Trit)j, (Trit)k);
                        matchGate.Output += muxer.InputSelect;
                        muxer.Output     += _YRails[c].Input;
                        _YRailMatch[c]    = matchGate;

                        c++;
                    }
                }
            }

#if DEBUG
            ComponentTools.SetComponentNames(this);
#endif
        }
Ejemplo n.º 3
0
        public TrortALUExp()
        {
            #region old
            inverterBusA.BusOutput += muxerBusA.BInput;
            inverterBusB.BusOutput += muxerBusB.BInput;

            maxGateA.Output += muxerBusA.InputSelect;
            maxGateB.Output += muxerBusB.InputSelect;

            shiftDownGateA.Output += maxGateA.BInput;
            shiftDownGateB.Output += maxGateA.BInput;

            muxerBusA.BusOutput += adder.ABusInput;
            muxerBusA.BusOutput += maxBus.ABusInput;
            muxerBusA.BusOutput += minBus.ABusInput;

            muxerBusB.BusOutput += adder.BBusInput;
            muxerBusB.BusOutput += maxBus.BBusInput;
            muxerBusB.BusOutput += minBus.BBusInput;

            adder.CarryOut += InvokeOverflowOutput;

            minBus.BusOutput += muxerBus2.AInput;
            adder.BusOutput  += muxerBus2.BInput;
            maxBus.BusOutput += muxerBus2.CInput;

            muxerBus2.BusOutput += muxerBusF.AInput;
            muxerBus2.BusOutput += muxerBusF.BInput;
            muxerBus2.BusOutput += inverterBusOutput.BusInput;

            inverterBusOutput.BusOutput += muxerBusF.CInput;

            for (int i = 0; i < muxers.Length - 1; i++)
            {
                muxers[i].Output += muxers[i + 1].BInput;
            }

            muxers[4].Output += InvokeSignedOutput;

            muxerBusF.BusOutput += (s, trort) =>
            {
                for (int i = 0; i < muxers.Length; i++)
                {
                    muxers[i].InputSelect(s, trort[i + 1]);
                }

                muxers[0].BInput(s, trort[0]);

                InvokeOutput(s, trort);
            };
            #endregion


            dmA  = new DeMuxer(Trit.Neu, Trit.Pos);
            dmB  = new DeMuxer(Trit.Neu, Trit.Pos);
            dmOp = new DeMuxer(Trit.Neu, Trit.Pos);
            dm3  = new DeMuxer(Trit.Neu, Trit.Pos);
            dm4  = new DeMuxer(Trit.Neu, Trit.Pos);
            dm5  = new DeMuxer(Trit.Neu, Trit.Pos);



#if DEBUG
            ComponentTools.SetComponentNames(this);
#endif
        }