public void Write_PosEdge_NegEdge() { var uut = new InvertorGate(); var input = uut.Input.CreateConnection(); var output = uut.Output.CreateConnection(); input.Write(DigitalLevel.PosEdge); output.Level.Should().Be(DigitalLevel.NegEdge); }
public void Write_Low_High() { var uut = new InvertorGate(); var input = uut.Input.CreateConnection(); var output = uut.Output.CreateConnection(); input.Write(DigitalLevel.Low); output.Level.Should().Be(DigitalLevel.High); }
public void BusDecoderInvertorOr_DecodeOr_OutputActiveWhenEnabled() { const byte Value = 0x10; var decoder = new BusDecoder("decoder"); decoder.AddValue(Value); decoder.Input.ConnectTo(new Bus <BusData8>("bus")); var busInput = decoder.Input.CreateConnection(); busInput.IsEnabled = true; var invertor = new InvertorGate() { Name = "inv" }; invertor.Input.ConnectTo(decoder.Output); var or = new OrGate() { Name = "or" }; or.AddInput().ConnectTo(invertor.Output); var enable = or.AddInput().CreateConnection(); enable.Write(DigitalLevel.High); var output = or.Output.CreateConnection(); busInput.Write(new BusData8(Value)); decoder.Output.Level.Should().Be(DigitalLevel.High); invertor.Output.Level.Should().Be(DigitalLevel.Low); output.DigitalSignal.Level.Should().Be(DigitalLevel.High); enable.Write(DigitalLevel.Low); output.DigitalSignal.Level.Should().Be(DigitalLevel.Low); }
public InputPort AddInputPort(Bus address, Bus data, ushort ioAddress, string name = null) { if (name == null) { name = string.Empty; } var decoder = new BusDecoder(address, name + "-InputAddressDecoder"); decoder.AddValue(ioAddress); AddComponent(decoder); var invertor = new InvertorGate() { Name = name + "-InAddressDecodeInvertor" }; AddComponent(invertor); decoder.Output.ConnectTo(invertor.Input); var or = new OrGate() { Name = name + "-InPortEnableIO" }; or.AddInput().ConnectTo(Model.Cpu.IoRequest); or.AddInput().ConnectTo(Model.Cpu.Read); or.AddInput().ConnectTo(invertor.Output); AddComponent(or); var inputPort = new InputPort(data, name); AddInputPort(inputPort); inputPort.PortEnable.ConnectTo(or.Output); return(inputPort); }
public void Invert_Floating_Floating() { InvertorGate.Invert(DigitalLevel.Floating).Should().Be(DigitalLevel.Floating); }
public void Invert_NegEdge_PosEdge() { InvertorGate.Invert(DigitalLevel.NegEdge).Should().Be(DigitalLevel.PosEdge); }
public void Invert_Low_High() { InvertorGate.Invert(DigitalLevel.Low).Should().Be(DigitalLevel.High); }
protected override void OnInputChanged(DigitalSignalConsumer input, DigitalSignalProvider source) { Output.Write(InvertorGate.Invert(OrFunction())); }