Example #1
0
        /// <summary>
        /// Sets the Address that will be written / read from
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="addr">Address to select</param>
        public void AddressInput(object sender, Tryte addr)
        {
            Address = new Tryte(addr);

            for (int i = 0; i < TRIBBLE_SIZE; i++)
            {
                TritMatchCircuit3 mg = _XRailMatch[i];

                mg.InputA(this, addr.T0);
                mg.InputB(this, addr.T1);
                mg.InputC(this, addr.T2);

                mg = _YRailMatch[i];

                mg.InputA(this, addr.T3);
                mg.InputB(this, addr.T4);
                mg.InputC(this, addr.T5);
            }

            //_XRails[Address.LowerTribbleValue + 13].Input(this, Trit.Neu);
            //_YRails[Address.MiddleTribbleValue + 13].Input(this, Trit.Neu);

            //Address = addr;

            //_XRails[Address.LowerTribbleValue + 13].Input(this, Trit.Pos);
            //_YRails[Address.MiddleTribbleValue + 13].Input(this, Trit.Pos);
        }
Example #2
0
        /// <summary>
        /// Sets the Address that will be written / read from
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="addr">Address to select</param>
        public void AddressInput(object sender, Trort addr)
        {
            Address = new Trort(addr);

            for (int i = 0; i < TRIBBLE_SIZE; i++)
            {
                TritMatchCircuit3 mg = _XRailMatch[i];

                mg.InputA(this, addr.T0);
                mg.InputB(this, addr.T1);
                mg.InputC(this, addr.T2);

                mg = _YRailMatch[i];

                mg.InputA(this, addr.T3);
                mg.InputB(this, addr.T4);
                mg.InputC(this, addr.T5);

                mg = _ZRailMatch[i];

                mg.InputA(this, addr.T6);
                mg.InputB(this, addr.T7);
                mg.InputC(this, addr.T8);

                mg = _TRailMatch[i];

                mg.InputA(this, addr.T9);
                mg.InputB(this, addr.T10);
                mg.InputC(this, addr.T11);
            }
        }
Example #3
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
        }