hades.models.ttl74
Class SN74189

java.lang.Object
  extended byhades.simulator.SimObject
      extended byhades.models.ttl74.SN74189
All Implemented Interfaces:
java.lang.Cloneable, ContextToolTip, Memory, java.io.Serializable, Simulatable

public class SN74189
extends SimObject
implements Memory

SN74189 - a static RAM of 16x4 bits. The RAM has combined R/NW control line, tri-state outputs, and nCS chip select. Ports are single bits of type StdLogic1164. Note that the data outputs are inverted in the 74189 chip - that is, the information read out of the chip is the inverse of the information stored in the chip. Use the 74219 chip if you prefer non-inverted data outputs.

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. When R/NW is low, the RAM continuously writes the input data to the storage location selected by the input address.

Clicking 'edit' on the RAM model will open a dialog window which allows selection of the initial RAM data file only.

See Also:
Serialized Form

Field Summary
protected  MemoryEditorFrame MEF
           
static int N_ADDRESS_INPUTS
           
static int N_DATA_INPUTS
           
(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
SN74189()
          SN74189 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.
protected  void getAdress()
           
 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 SN74189 from a String.
 void initRAM()
           
 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.
 long parseLongOrXXX(java.lang.String s)
           
 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

MEF

protected MemoryEditorFrame MEF

TRISTATED

public static final int TRISTATED
See Also:
Constant Field Values

UNDEFINED

public static final int UNDEFINED
See Also:
Constant Field Values

N_ADDRESS_INPUTS

public static final int N_ADDRESS_INPUTS
See Also:
Constant Field Values

N_DATA_INPUTS

public static final int N_DATA_INPUTS
See Also:
Constant Field Values

t_access

public static final double t_access
See Also:
Constant Field Values

t_tristate

public static final double t_tristate
See Also:
Constant Field Values

t_undefined

public static final double t_undefined
See Also:
Constant Field Values

resourcename

java.lang.String resourcename
Constructor Detail

SN74189

public SN74189()
SN74189 constructor

Method Detail

needsExternalResources

public boolean needsExternalResources()
we use one external resource: the data file to initialize the RAM contents.

Overrides:
needsExternalResources in class SimObject

getExternalResources

public java.lang.String[] getExternalResources()
return a String[] array of length 1 with our RAM contents file.

Overrides:
getExternalResources in class SimObject

initRAM

public void initRAM()

printSramContent

public void printSramContent()

getResourcename

public java.lang.String getResourcename()
Specified by:
getResourcename in interface Memory

setResourcename

public void setResourcename(java.lang.String s)
Specified by:
setResourcename in interface Memory

initialize

public boolean initialize(java.lang.String s)
initialize a SN74189 from a String. Currently, the String should contain the following things: the SN74189 versionId, and the Java resource-name of the RAM datafile to parse, e.g.
       1002 /hades/examples/b-tutorial/ampel-43.rom
    

Overrides:
initialize in class SimObject

write

public void write(java.io.PrintWriter ps)
Overrides:
write in class SimObject

parseRAM

public void parseRAM(java.lang.String resourcename)

parse

public boolean parse(java.io.BufferedReader br)
parse RAM data from a file specified via its Java 1.1 resourcename. If the file is not found or contains illegal data, the RAM is re-initialized to the all-invalid state.

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.

Specified by:
parse in interface Memory

parseLongOrXXX

public long parseLongOrXXX(java.lang.String s)

setDataAt

public void setDataAt(int address,
                      long value)
Specified by:
setDataAt in interface Memory

getDataAt

public long getDataAt(int address)
Specified by:
getDataAt in interface Memory

getAddrOffset

public int getAddrOffset()
Description copied from interface: Memory
utility method to support systems with different memory components mapped into a single address space at different offsets. Note that the value returned is just used for displaying the addresses in the GUI (e.g. MemoryHexEditorField or MRCanvas), while the simulation uses the raw adresses (always starting at 0).

For 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.

Specified by:
getAddrOffset in interface Memory

getBitsPerWord

public int getBitsPerWord()
Description copied from interface: Memory
return the number of bits per word in this memory. This should typically be in the range 1 .. 64.

Specified by:
getBitsPerWord in interface Memory

setBitsPerWord

public void setBitsPerWord(int n_bits)
                    throws java.lang.Exception
Specified by:
setBitsPerWord in interface Memory
Throws:
java.lang.Exception

getSize

public int getSize()
Description copied from interface: Memory
get the number of words in this memory.

Specified by:
getSize in interface Memory

setSize

public void setSize(int n_words)
             throws java.lang.Exception
Specified by:
setSize in interface Memory
Throws:
java.lang.Exception

resize

public boolean resize(int n_words,
                      int n_bits_per_word)
               throws java.lang.Exception
Specified by:
resize in interface Memory
Throws:
java.lang.Exception

canChangeSize

public boolean canChangeSize()
Specified by:
canChangeSize in interface Memory

getDataArray

public long[] getDataArray()
Specified by:
getDataArray in interface Memory

setDataArray

public void setDataArray(long[] data)
Specified by:
setDataArray in interface Memory

merge

public boolean merge(java.io.BufferedReader reader)
Specified by:
merge in interface Memory

addMemoryListener

public void addMemoryListener(MemoryListener ML)
Specified by:
addMemoryListener in interface Memory

removeMemoryListener

public void removeMemoryListener(MemoryListener ML)
Specified by:
removeMemoryListener in interface Memory

getHexString

protected java.lang.String getHexString(long value,
                                        int n_chars)

save

public boolean save(java.io.PrintWriter PW)
Specified by:
save in interface Memory

getConfigDialog

public PropertySheet getConfigDialog()
Specified by:
getConfigDialog in interface Memory

configure

public void configure()
Description copied from class: SimObject
create and display a 'ConfigDialog' to set the parameters for a SimObject. The default ConfigDialog for the base class (SimObject) itself is empty except for the 'instance name' of the SimObject.

Overrides:
configure in class SimObject

getPropertySheet

public java.awt.Component getPropertySheet()
Description copied from class: SimObject
return a reference to the 'property sheet' or configuration window for this SimObject. We cast the return value to an AWT Component, but typically you can expect either a hades.gui.PropertySheet or an java.awt.Window (Dialog or Frame).

Overrides:
getPropertySheet in class SimObject

elaborate

public void elaborate(java.lang.Object arg)
elaborate(): This method is called by the simulation engine to initialize the simulation object.

Specified by:
elaborate in interface Simulatable
Overrides:
elaborate in class SimObject

evaluate

public void evaluate(java.lang.Object arg)
evaluate(): called by the simulation engine on all events that concern this object. The object is responsible for updating its internal state and for scheduling all pending output events.

Specified by:
evaluate in interface Simulatable
Overrides:
evaluate in class SimObject
Parameters:
arg - an arbitrary object argument

getAdress

protected void getAdress()

dbg

public void dbg(java.lang.String msg)

toString

public java.lang.String toString()
toString() - the usual info method

Overrides:
toString in class SimObject