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 }
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 }
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 }