ptolemy.actor.lib.vhdl
Class Register
java.lang.Object
ptolemy.kernel.util.NamedObj
ptolemy.kernel.InstantiableNamedObj
ptolemy.kernel.Entity
ptolemy.kernel.ComponentEntity
ptolemy.actor.AtomicActor
ptolemy.actor.TypedAtomicActor
ptolemy.actor.lib.vhdl.FixTransformer
ptolemy.actor.lib.vhdl.SynchronousFixTransformer
ptolemy.actor.lib.vhdl.Register
- All Implemented Interfaces:
- java.io.Serializable, java.lang.Cloneable, Actor, Executable, FiringsRecordable, Initializable, TypedActor, Changeable, Debuggable, DebugListener, Derivable, Instantiable, ModelErrorHandler, MoMLExportable, Moveable, Nameable
public class Register
- extends SynchronousFixTransformer
A register is a stateful actor with a trigger port that accepts
read requests.
In the fire() method, if there is an event on the trigger
input port, this actor will produce an output event. The value
of the output event will be the previously recorded event
from the input port, or the value of the initialValue
parameter if there has been no previous input event. If, however,
initialValue contains no value, then no output will be
produced. In the postfire() method, if there is an input event on
the input port, then its value is recorded to be used
in future firings as the value of the output.
The inputs can be of any token type, but the output port
is constrained to be of a type at least that of the input
port and the initialValue parameter.
This class extends Sampler. Unlike its base class, this actor
can be used to break dependencies in a feedback loop in that
the input tokens are consumed from the input ports after the outputs
are generated. Another difference is that the Register actor can be
fired when either the trigger port or the input port has a token, while
the Sampler can only be fired when the trigger port receives a token.
Both the input port and the output port are multiports.
Generally, their widths should match. Otherwise, if the width of the
input is greater than the width of the output, the extra
input tokens will not appear on any output, although they will be
consumed from the input port. If the width of the output is
greater than that of the input, then the last few channels of
the output will never emit tokens.
Note: If the width of the input changes during execution, then the
most recent inputs are forgotten, as if the execution of the model
were starting over.
- Since:
- Ptolemy II 4.1
- Version:
- $Id: Register.java 57040 2010-01-27 20:52:32Z cxh $
- Author:
- Edward A. Lee, Haiyang Zheng
- See Also:
Sampler
,
Serialized Form
- Accepted Rating:
- Proposed Rating:
Fields inherited from class ptolemy.kernel.util.NamedObj |
_changeListeners, _changeLock, _changeRequests, _debugging, _debugListeners, _elementName, _isPersistent, _verbose, _workspace, ATTRIBUTES, CLASSNAME, COMPLETE, CONTENTS, DEEP, FULLNAME, LINKS |
Constructor Summary |
Register(CompositeEntity container,
java.lang.String name)
Construct an actor with the given container and name. |
Method Summary |
void |
fire()
If there is a token in the trigger port, emit the previously
seen inputs from the input port. |
void |
preinitialize()
Override the base class to declare that the input and
port does not depend on the output in a firing. |
Methods inherited from class ptolemy.actor.AtomicActor |
_actorFiring, _actorFiring, addActorFiringListener, addInitializable, clone, connectionsChanged, createReceivers, declareDelayDependency, getCausalityInterface, getDirector, getExecutiveDirector, getManager, inputPortList, isFireFunctional, iterate, newReceiver, outputPortList, postfire, prefire, pruneDependencies, recordFiring, removeActorFiringListener, removeDependency, removeInitializable, setContainer, stop, stopFire, terminate, wrapup |
Methods inherited from class ptolemy.kernel.ComponentEntity |
_adjustDeferrals, _checkContainer, _getContainedObject, _propagateExistence, getContainer, instantiate, isAtomic, isOpaque, moveDown, moveToFirst, moveToIndex, moveToLast, moveUp, propagateExistence, setName |
Methods inherited from class ptolemy.kernel.Entity |
_description, _exportMoMLContents, _removePort, _validateSettables, connectedPortList, connectedPorts, containedObjectsIterator, getAttribute, getPort, getPorts, linkedRelationList, linkedRelations, portList, removeAllPorts, setClassDefinition, uniqueName |
Methods inherited from class ptolemy.kernel.util.NamedObj |
_addAttribute, _adjustOverride, _attachText, _cloneFixAttributeFields, _debug, _debug, _debug, _debug, _debug, _getIndentPrefix, _isMoMLSuppressed, _markContentsDerived, _propagateValue, _recordDecoratedAttributes, _removeAttribute, _splitName, _stripNumericSuffix, addChangeListener, addDebugListener, attributeList, attributeList, deepContains, depthInHierarchy, description, description, event, executeChangeRequests, exportMoML, exportMoML, exportMoML, exportMoML, exportMoMLPlain, getAttribute, getAttributes, getChangeListeners, getClassName, getDecoratorAttribute, getDecoratorAttributes, getDerivedLevel, getDerivedList, getDisplayName, getFullName, getModelErrorHandler, getName, getName, getSource, handleModelError, isDeferringChangeRequests, isOverridden, isPersistent, lazyContainedObjectsIterator, message, propagateValue, propagateValues, removeChangeListener, removeDebugListener, requestChange, setClassName, setDeferringChangeRequests, setDerivedLevel, setDisplayName, setModelErrorHandler, setPersistent, setSource, sortContainedObjects, toplevel, toString, validateSettables, workspace |
Methods inherited from class java.lang.Object |
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
input
public TypedIOPort input
- Input for tokens to be added. This is a multiport of fix point
type
Register
public Register(CompositeEntity container,
java.lang.String name)
throws NameDuplicationException,
IllegalActionException
- Construct an actor with the given container and name.
- Parameters:
container
- The container.name
- The name of this actor.
- Throws:
IllegalActionException
- If the actor cannot be contained
by the proposed container.
NameDuplicationException
- If the container already has an
actor with this name.
fire
public void fire()
throws IllegalActionException
- If there is a token in the trigger port, emit the previously
seen inputs from the input port. If there has been no
previous input tokens, but the initialValue parameter
has been set, emit the value of the initialValue parameter.
Otherwise, emit nothing.
- Specified by:
fire
in interface Executable
- Overrides:
fire
in class AtomicActor
- Throws:
IllegalActionException
- If there is no director.
preinitialize
public void preinitialize()
throws IllegalActionException
- Override the base class to declare that the input and
port does not depend on the output in a firing.
- Specified by:
preinitialize
in interface Initializable
- Overrides:
preinitialize
in class SynchronousFixTransformer
- Throws:
IllegalActionException
- Not thrown in this base class.