public TritMatchCircuit4(Trit t0, Trit t1, Trit t2, Trit t3) { egatea = new EqualityGate(inputStateB: t0) { ComponentName = nameof(egatea) }; egateb = new EqualityGate(inputStateB: t1) { ComponentName = nameof(egateb) }; egatec = new EqualityGate(inputStateB: t2) { ComponentName = nameof(egatec) }; egated = new EqualityGate(inputStateB: t3) { ComponentName = nameof(egated) }; cgate1 = new ConsensusGate(egatea, egateb) { ComponentName = nameof(cgate1) }; cgate2 = new ConsensusGate(egatec, egated) { ComponentName = nameof(cgate2) }; cgate3 = new ConsensusGate(cgate1, cgate2) { ComponentName = nameof(cgate3) }; deMuxer = new DeMuxer(inputState: Trit.Pos); cgate3.Output += deMuxer.InputSelect; shiftDownGate = new ShiftDownGate(); deMuxer.AOutput += shiftDownGate.Input; deMuxer.BOutput += shiftDownGate.Input; shiftDownGate.Output += (s, t) => Output?.Invoke(this, t); deMuxer.COutput += (s, t) => Output?.Invoke(this, t); }
public TritMatchCircuit(Trit i0, Trit i1) { egatea = new EqualityGate(inputStateB: i0); egateb = new EqualityGate(inputStateB: i1); cgate1 = new ConsensusGate(egatea, egateb); deMuxer = new DeMuxer(inputState: Trit.Pos); cgate1.Output += deMuxer.InputSelect; shiftDownGate = new ShiftDownGate(); deMuxer.AOutput += shiftDownGate.Input; deMuxer.BOutput += shiftDownGate.Input; shiftDownGate.Output += (s, t) => Output?.Invoke(this, t); deMuxer.COutput += (s, t) => Output?.Invoke(this, t); }
public MatchGate(Trit i0, Trit i1, Trit t2) { egatea = new EqualityGate(inputStateB: i0); egateb = new EqualityGate(inputStateB: i1); egatec = new EqualityGate(inputStateB: t2); ecomp1 = new EqualityGate(egatec, null, inputStateB: Trit.Pos); cgate1 = new ConsensusGate(egatea, egateb); cgate2 = new ConsensusGate(cgate1, ecomp1); deMuxer = new DeMuxer(inputState: Trit.Pos); cgate2.Output += deMuxer.InputSelect; shiftDownGate = new ShiftDownGate(); deMuxer.AOutput += shiftDownGate.Input; deMuxer.BOutput += shiftDownGate.Input; shiftDownGate.Output += (s, t) => Output?.Invoke(this, t); deMuxer.COutput += (s, t) => Output?.Invoke(this, t); }
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 }