X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=plugins%2Fnet.mograsim.machine%2Fsrc%2Fnet%2Fmograsim%2Fmachine%2Fstandard%2Fmemory%2FModelWordAddressableMemory.java;fp=plugins%2Fnet.mograsim.machine%2Fsrc%2Fnet%2Fmograsim%2Fmachine%2Fstandard%2Fmemory%2FModelWordAddressableMemory.java;h=986dbe5028f7b736696e2d91c789092853f8ef42;hb=7d05144c25daa53e60fc9ed9fd503546a86567f8;hp=0000000000000000000000000000000000000000;hpb=8bed58cd47f4e53a0a83e066d38864aa6875502f;p=Mograsim.git diff --git a/plugins/net.mograsim.machine/src/net/mograsim/machine/standard/memory/ModelWordAddressableMemory.java b/plugins/net.mograsim.machine/src/net/mograsim/machine/standard/memory/ModelWordAddressableMemory.java new file mode 100644 index 00000000..986dbe50 --- /dev/null +++ b/plugins/net.mograsim.machine/src/net/mograsim/machine/standard/memory/ModelWordAddressableMemory.java @@ -0,0 +1,57 @@ +package net.mograsim.machine.standard.memory; + +import net.mograsim.logic.model.model.LogicModelModifiable; +import net.mograsim.logic.model.model.wires.Pin; +import net.mograsim.logic.model.model.wires.PinUsage; +import net.mograsim.machine.Machine; +import net.mograsim.machine.MainMemoryDefinition; +import net.mograsim.machine.ModelMemory; + +public abstract class ModelWordAddressableMemory extends ModelMemory +{ + private final Pin addrPin, dataPin, rWPin; + private CoreWordAddressableMemory memory; + private MainMemoryDefinition definition; + + public ModelWordAddressableMemory(LogicModelModifiable model, MainMemoryDefinition definition, String name) + { + super(model, 120, 150, name, "RAM", false); + this.definition = definition; + + addPin(addrPin = new Pin(model, this, "A", definition.getMemoryAddressBits(), PinUsage.INPUT, getWidth(), 30)); + addPin(dataPin = new Pin(model, this, "D", definition.getCellWidth(), PinUsage.TRISTATE, getWidth(), 50)); + addPin(rWPin = new Pin(model, this, "RW", 1, PinUsage.INPUT, getWidth(), 70)); + + init(); + } + + public MainMemoryDefinition getDefinition() + { + return definition; + } + + public Pin getAddressPin() + { + return addrPin; + } + + public Pin getDataPin() + { + return dataPin; + } + + public Pin getReadWritePin() + { + return rWPin; + } + + public void setCoreModelBinding(CoreWordAddressableMemory memory) + { + this.memory = memory; + } + + public CoreWordAddressableMemory getCoreMemory() + { + return memory; + } +}