|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objecthades.simulator.SimObject
hades.models.rtl.RAM_256x8
RAM_256x8 - a subclass of SimObject that models a static RAM of 256 by 8 bits. Ports are single bits of type StdLogic1164. The RAM has separate nWE, nME, and nCS lines.
The behaviour is modeled similar to typical ASIC SRAM macrocells. The RAM outputs are tri-stated and the input disabled as long as nCS is high. RAM outputs and the whole RAM contents are lost, whenever one of the control-lines is undefined.
On the rising edge of nME, the RAM latches the current value of the address inputs. If nWE is high during a nME cycle, the data from the selected RAM location appears on the data outputs after t_access. For a write cycle, hold nWE low during a nME cycle. The value from the data input lines is written to the selected address, as soon as the first of either nWE or nME goes low.
Clicking 'edit' on the RAM model will open a dialog window which allows selection of the initial RAM data file only.
| Field Summary | |
protected MemoryEditorFrame |
MEF
|
(package private) java.lang.String |
resourcename
|
static double |
t_access
|
static double |
t_tristate
|
static double |
t_undefined
|
static int |
TRISTATED
|
static int |
UNDEFINED
|
| Fields inherited from class hades.simulator.SimObject |
classloader, console, debug, editor, name, parent, ports, propertySheet, simulator, symbol, versionId, visible |
| Constructor Summary | |
RAM_256x8()
RAM_256x8 constructor |
|
| Method Summary | |
void |
addMemoryListener(MemoryListener ML)
|
boolean |
canChangeSize()
|
void |
configure()
create and display a 'ConfigDialog' to set the parameters for a SimObject. |
void |
dbg(java.lang.String msg)
|
void |
elaborate(java.lang.Object arg)
elaborate(): This method is called by the simulation engine to initialize the simulation object. |
void |
evaluate(java.lang.Object arg)
evaluate(): called by the simulation engine on all events that concern this object. |
int |
getAddrOffset()
utility method to support systems with different memory components mapped into a single address space at different offsets. |
int |
getBitsPerWord()
return the number of bits per word in this memory. |
PropertySheet |
getConfigDialog()
|
long[] |
getDataArray()
|
long |
getDataAt(int address)
|
java.lang.String[] |
getExternalResources()
return a String[] array of length 1 with our RAM contents file. |
protected java.lang.String |
getHexString(long value,
int n_chars)
|
java.awt.Component |
getPropertySheet()
return a reference to the 'property sheet' or configuration window for this SimObject. |
java.lang.String |
getResourcename()
|
int |
getSize()
get the number of words in this memory. |
boolean |
initialize(java.lang.String s)
initialize a RAM_256x8 from a String. |
void |
initRAM()
|
protected void |
latchAdress()
|
boolean |
merge(java.io.BufferedReader reader)
|
boolean |
needsExternalResources()
we use one external resource: the data file to initialize the RAM contents. |
boolean |
parse(java.io.BufferedReader br)
parse RAM data from a file specified via its Java 1.1 resourcename. |
void |
parseRAM(java.lang.String resourcename)
|
void |
printSramContent()
|
void |
removeMemoryListener(MemoryListener ML)
|
boolean |
resize(int n_words,
int n_bits_per_word)
|
boolean |
save(java.io.PrintWriter PW)
|
void |
setBitsPerWord(int n_bits)
|
void |
setDataArray(long[] data)
|
void |
setDataAt(int address,
long value)
|
void |
setResourcename(java.lang.String s)
|
void |
setSize(int n_words)
|
java.lang.String |
toString()
toString() - the usual info method |
void |
write(java.io.PrintWriter ps)
|
| Methods inherited from class hades.simulator.SimObject |
constructDynamicSymbol, copy, getBindkey, getClassLoader, getDebug, getEditor, getFullName, getName, getParent, getPort, getPorts, getResourceAsStream, getSimulator, getSymbol, getSymbolResourceName, getToolTip, getVersionId, isVisible, keyPressed, message, mousePressed, needsDynamicSymbol, setClassLoader, setConsole, setDebug, setEditor, setName, setParent, setPorts, setSimulator, setSymbol, setVersionId, setVisible, tearDown |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Field Detail |
protected MemoryEditorFrame MEF
public static final int TRISTATED
public static final int UNDEFINED
public static final double t_access
public static final double t_tristate
public static final double t_undefined
java.lang.String resourcename
| Constructor Detail |
public RAM_256x8()
| Method Detail |
public boolean needsExternalResources()
needsExternalResources in class SimObjectpublic java.lang.String[] getExternalResources()
getExternalResources in class SimObjectpublic void initRAM()
public void printSramContent()
public java.lang.String getResourcename()
getResourcename in interface Memorypublic void setResourcename(java.lang.String s)
setResourcename in interface Memorypublic boolean initialize(java.lang.String s)
1002 /hades/examples/b-tutorial/ampel-43.rom
initialize in class SimObjectpublic void write(java.io.PrintWriter ps)
write in class SimObjectpublic void parseRAM(java.lang.String resourcename)
public boolean parse(java.io.BufferedReader br)
Each line of the RAM data file should contain the address and the corresponding data in hex format, seperated by a colon, e.g. '0001:D3' or '03FF:20'.
The alternative DigLOG compact format, e.g. '0000:000102030405060708090A0B0C0D0E0F' is also accepted.
The RAM model will issue a warning message, if the same location is written multiple times.
parse in interface Memory
public void setDataAt(int address,
long value)
setDataAt in interface Memorypublic long getDataAt(int address)
getDataAt in interface Memorypublic int getBitsPerWord()
Memory
getBitsPerWord in interface Memory
public void setBitsPerWord(int n_bits)
throws java.lang.Exception
setBitsPerWord in interface Memoryjava.lang.Exceptionpublic int getSize()
Memory
getSize in interface Memory
public void setSize(int n_words)
throws java.lang.Exception
setSize in interface Memoryjava.lang.Exception
public boolean resize(int n_words,
int n_bits_per_word)
throws java.lang.Exception
resize in interface Memoryjava.lang.Exceptionpublic boolean canChangeSize()
canChangeSize in interface Memorypublic long[] getDataArray()
getDataArray in interface Memorypublic void setDataArray(long[] data)
setDataArray in interface Memorypublic boolean merge(java.io.BufferedReader reader)
merge in interface Memorypublic void addMemoryListener(MemoryListener ML)
addMemoryListener in interface Memorypublic void removeMemoryListener(MemoryListener ML)
removeMemoryListener in interface Memory
protected java.lang.String getHexString(long value,
int n_chars)
public boolean save(java.io.PrintWriter PW)
save in interface Memorypublic void configure()
SimObject
configure in class SimObjectpublic java.awt.Component getPropertySheet()
SimObject
getPropertySheet in class SimObjectpublic void elaborate(java.lang.Object arg)
elaborate in interface Simulatableelaborate in class SimObjectpublic void evaluate(java.lang.Object arg)
evaluate in interface Simulatableevaluate in class SimObjectarg - an arbitrary object argumentprotected void latchAdress()
public void dbg(java.lang.String msg)
public java.lang.String toString()
toString in class SimObjectpublic int getAddrOffset()
MemoryFor example, the D*CORE processor used in our T3 practical course uses one ROM mapped to addresses 0x000..0x6FFF with address offset 0, a RAM mapped to addresses 0x8000..0xFFFF with address offset 0x8000, and IO components mapped to 0x7000..0x7FFF. Standard memory components will usually return 0 here.
getAddrOffset in interface Memorypublic PropertySheet getConfigDialog()
getConfigDialog in interface Memory
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||