/// <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); }
/// <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); } }
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 }