public void SetMemoryAddress(IByte address) { MemoryAddressRegister.Set = true; MemoryAddressRegister.Apply(address); MemoryAddressRegister.Set = false; Apply(); }
public void MemoryAddressRegisterInputs() { DataBus bus = new DataBus(); SignalBus signals = new SignalBus(); Register memoryAddress = new MemoryAddressRegister(bus, signals); bus.Value = 0xF; signals.MI = true; memoryAddress.ReadFromBus(); Assert.AreEqual(0xF, memoryAddress.Value); }
public void MemoryInputsDataToAddressDefinedInRegister() { DataBus bus = new DataBus(); SignalBus signals = new SignalBus(); Register memoryAddress = new MemoryAddressRegister(bus, signals); Memory ram = new Memory(bus, signals, memoryAddress); bus.Value = 255; memoryAddress.Value = 0xF; signals.RI = true; ram.ReadFromBus(); Assert.AreEqual(255, ram.Get(0xF)); }
public void MemoryOutputsDataByAddressInRegister() { DataBus bus = new DataBus(); SignalBus signals = new SignalBus(); Register memoryAddress = new MemoryAddressRegister(bus, signals); Memory ram = new Memory(bus, signals, memoryAddress); ram.Store(0xF, 255); memoryAddress.Value = 0xF; signals.RO = true; ram.WriteToBus(); Assert.AreEqual(255, bus.Value); }
/** * @brief Links all the component so they * can be used in micro instructions. */ public void LinkCPUcomponents( ProgramCounter PC, MemoryAddressRegister MAR, MemoryDataRegister MDR, InstructionRegister IR, GeneralPurposeRegisterA GPA, GeneralPurposeRegisterB GPB, ProcessStatusRegister PSR, MemoryListControl memory, ArithmeticLogicUnit ALU, Clock clock, BusControl busSystem) { this.PC = PC; this.MAR = MAR; this.MDR = MDR; this.IR = IR; this.GPA = GPA; this.GPB = GPB; this.PSR = PSR; this.memory = memory; this.ALU = ALU; this.clock = clock; this.busSystem = busSystem; }