public DirectedGraphNode Add(BusSlave slave, string ownerName = null) { if (!Visit(slave) || (!slave.IsConnected && !DisplayUnconnected)) { return(FindNode(slave)); } var node = AddNode <BusSlave>(slave.Name, ownerName, SafeNetName(slave)); SetNodeMap(slave, node); if (DisplayValues) { node.Description = slave.Value.ToString(); } if (slave.IsConnected) { Add(slave.Bus); var bid = _idBuilder.NewId <Bus>(slave.Bus.Name); _dgmlBuilder.AddLink(node.Id, bid); } return(node); }
public OutputPort(string name) { Name = name; _portEnable = new DigitalSignalConsumer("PE"); _portEnable.OnChanged += PortEnable_OnChanged; _busSlave = new BusSlave(name + "-Input"); }
public static BusMaster <T> CreateConnection <T>(this BusSlave <T> slave, string busName = null) where T : BusData, new() { var bus = slave.GetOrAddBus(busName); return(new BusMaster <T>(bus, busName)); }
private static Bus <T> Connect <T>(BusMaster <T> master, BusSlave <T> slave, string busName = null) where T : BusData, new() { if (master.IsConnected && slave.IsConnected) { if (master.Bus != slave.Bus) { throw new InvalidOperationException("Both Master and Slave are already connected to different buses."); } return(master.Bus); } Bus <T> bus = null; if (master.IsConnected) { bus = master.Bus; slave.ConnectTo(bus); } else if (slave.IsConnected) { bus = slave.Bus; master.ConnectTo(bus); } return(bus); }
public void Unconnected_ReadValue_DoesNotThrow() { var uut = new BusSlave <BusData8>(); Action test = () => { var l = uut.Value; }; test.ShouldNotThrow(); }
private string SafeNetName(BusSlave slave) { if (slave == null || !slave.IsConnected) { return(null); } return(slave.Bus.Name); }
public BusSlave AddBusInput(string name = null) { var slave = new BusSlave(name); _busInputs.Add(slave); return(slave); }
public void Connected_AllLevelsAreFloating() { var uut = new BusSlave <BusData8>(); var bus = new Bus <BusData8>(); uut.ConnectTo(bus); uut.Value.AssertAllLevelsAre(DigitalLevel.Floating); }
public void TestInitialize() { _uut = new InputPort(); _uut.DataBuffer.Write(new byte[] { Value, Value2 }); _portEnable = _uut.PortEnable.CreateConnection(); var outputBus = new Bus(8); _uut.Output.ConnectTo(outputBus); _output = new BusSlave(outputBus); }
public static BusMaster <T> CreateConnection <T>(this BusSlave <T> slave, string busName = null) where T : BusData, new() { var master = new BusMaster <T>(); var bus = new Bus <T>(busName); slave.ConnectTo(bus); master.ConnectTo(bus); return(master); }
public Memory() { ChipEnable = new DigitalSignalConsumer("CE"); Address = new BusSlave <AddressT>("Address"); Data = new BusMasterSlave <DataT>("Data"); ChipEnable.OnChanged += ChipEnable_OnChanged; Address.OnChanged += Address_OnChanged; Data.Slave.OnChanged += DataIn_OnChanged; long length = (long)Math.Pow(2, Address.Value.Width); _memory = new DataT[length]; }
public static Bus GetOrAddBus(this BusSlave slave, string busName = null) { Bus bus; if (!slave.IsConnected) { bus = new Bus(slave.Value.Width, busName); slave.ConnectTo(bus); } else { bus = slave.Bus; } return(bus); }
public void Write_SingleMaster_SlaveSeesChanges() { var master = new BusMaster <BusData8>(); var slave = new BusSlave <BusData8>(); var bus = new Bus <BusData8>(); master.ConnectTo(bus); slave.ConnectTo(bus); master.IsEnabled = true; var newValue = new BusData8(0); master.Write(newValue); slave.Value.AssertAllLevelsAre(DigitalLevel.Low); }
public static Bus <T> GetOrAddBus <T>(this BusSlave <T> slave, string busName = null) where T : BusData, new() { Bus <T> bus; if (!slave.IsConnected) { bus = new Bus <T>(busName); slave.ConnectTo(bus); } else { bus = slave.Bus; } return(bus); }
public static Bus <T> ConnectTo <T>(this BusMaster <T> master, BusSlave <T> slave, string busName = null) where T : BusData, new() { Bus <T> bus = Connect(master, slave, busName); if (bus == null) { if (busName == null) { busName = master.Name; } bus = master.GetOrAddBus(busName); slave.ConnectTo(bus); } return(bus); }
public BusDecoder() { Output = new DigitalSignalProvider("BusDecoder Output"); _busSlave = new BusSlave("BusDecoder Input"); _busSlave.OnChanged += Bus_OnChanged; }
public OutputPort() { _portEnable = new DigitalSignalConsumer("PE"); _portEnable.OnChanged += PortEnable_OnChanged; _busSlave = new BusSlave("OutputPort Input"); }
public static BusMaster CreateConnection(this BusSlave slave, string busName = null) { var bus = slave.GetOrAddBus(busName); return(new BusMaster(bus, busName)); }