Table of Contents Previous Chapter
The SRAM Library provides a set of primitives which direct CCD pixel charge manipulation in support of specific predetermined observational goals.
The following lists the uses of the SRAM Library.
Figure 175 illustrates the relationship used by the Sram Library.
FIGURE 175. Sram Library Relationships
The Sram Library class provides accesses to a catalog of primatives. The primitives provide a set of directives which are implemented by the CCD controller to initiate each step of each action of a series of exposures which make up an observation. These are the directives which cause the shifting of CCD pixel charge out of the CCD for processing. This class uses the services of the DEA Manager to load the library.
This section illustrates the format of an SRAM library table, used to load SRAM and determine where the various SRAM primitives reside once loaded.
struct SramEntry { unsigned index; // Location unsigned count; // Blocks }; struct SramHeader // Catalog of entries accessor function { struct SramEntry idle; // getIdle struct SramEntry imageFrame; // getImageToFrame struct SramEntry frameOReg; // get FrameToOr struct SramEntry oRegONode; // getOrToOn struct SramEntry oRegONode_High; // getOrToOn struct SramEntry oRegONodeX2; // getOrToOnX2 struct SramEntry oRegONodeX2_High; // getOrToOnX2 struct SramEntry oRegONode_Rev; // getOrToOn struct SramEntry oRegONode_High_Rev; // getOrToOn struct SramEntry oRegONodeX2_Rev; // getOrToOnX2 struct SramEntry oRegONodeX2_High_Rev; // getOrToOnX2 struct SramEntry oRegONode_Dis; // getOrToOn struct SramEntry oRegONodeX2_Dis; // getOrToOnX2 struct SramEntry oRegONode_Dis_Rev; // getOrToOn struct SramEntry oRegONodeX2_Dis_Rev; // getOrToOnX2 struct SramEntry oRegONodeSum; // getOrToOnSum struct SramEntry oRegONodeSum_High; // getOrToOnSum struct SramEntry oRegONodeSum_Rev; // getOrToOnSum struct SramEntry oRegONodeSum_High_Rev; // getOrToOnSum struct SramEntry oRegONodeSumX2; // getOrToOnSumX2 struct SramEntry oRegONodeSumX2_Rev; // getOrToOnSumX2 }; struct SramTable { struct SramHeader sramHeader; struct DeaSequenceLoad seqLdBlock; // from cmdif.H };
The library itself consists of a catalog of the CCD control primitives and the primitive sets themselves. When setting up an observation, the selected Sram Library address is provided to the constructor, SramLibrary(). The catalog structure delineates the location of each of the primatives. Each primitive is contained in one or more contiguous data blocks. The library functions, in conjunction with the decision directives, are used in determining the location and length of the primitives which will control each step of an observation in a science run.
Use 1:
The client uses load() which directs the DeaManager.loadSequencers() to load the sets of primitives into preselected memory locations. The catalog, having been properly constructed to indicate the location of the loaded primitives, will be called upon to direct the client to the desired primitive for sequencing of the CCDs.
Use 2:
The two functions, selectGain() and selectOrDirection() provide boolean decision indicators which enable four functions to select and deliver each of eighteen primitives. The default settings are: low gain and forward direction.
Use 3:
The function names are indicative of the primitive they provide. Or and On are output register and output node. X2 indicates a shift of charge from two pixels (default is one pixel). Sum denotes a accumulation of charge at the node. Image to Frame and Frame to Output Register refer to transfer of a row of pixel charge. Idle provides for CCD exposure time.
The client will access the catalog functions to obtain the location and block count of the primitives to be invoked in controlling the CCD output.
Hierarchy:
Superclasses:
none
Implementation Uses:
DeaManager
Public Interface:
Operations:
SramLibrary() getFrameToOr() getIdle() getImageToFrame() getOrToOn() getOrToOnSum() getOrToOnSumX2() getOrToOnX2() load() selectGain() selectOrDirection()
Private Interface:
Has-A Relationships:
SramLibrary
Arguments:
SramTable* catalogAddr
Documentation:
SramLibrary This constructor initializes the SramLibrary instance, where catalogAddr points to the library table to use.
SramLibrary
void
Arguments:
unsigned& index
unsigned& count
Documentation:
This function supplies a set of adjacent SRAM blocks which clock one row from the framestore into the output registers. Upon return, index contain the index of the first SRAM block, and count returns the number of adjacent blocks to use.
SramLibrary
void
Arguments:
unsigned& index
Documentation:
This function returns the index of an SRAM block which is used to integrate the CCDs.
SramLibrary
void
Arguments:
unsigned& index
unsigned& count
Documentation:
getImageToFrame will get a set of adjacent SRAM blocks which transfer one row from the image array to the framestore. On return, index contains the SRAM index to the first block, and count returns the number of adjacent blocks to use.
SramLibrary
void
Arguments:
Boolean discard
unsigned& index
Documentation:
getOrToOn will get an SRAM block which transfers one pixel from the output register to the output node. If discard is BoolFalse, the caller intends to sample the pixels at the output node, and if discard is BoolTrue, the caller intends to discard the pixel. Upon return, index will contain the SRAM index of the block. The supplied block will clock the output registers in the direction indicated by the most recent call to selectDirection() and with the gain specified by the most recent call to selectGain().
SramLibrary
void
Arguments:
unsigned& index
Documentation:
This function supplies an SRAM block which clocks and sums one pixel from the output register into the output node. Upon return, index contains the selected SRAM block. The generated block will use the gain and direction last selected by selectGain() and selectOrDirection(), respectively.
SramLibrary
void
Arguments:
unsigned& index
Documentation:
This function returns an SRAM block which clocks and sums two output register pixels into the output node. Upon returning, index contains the SRAM address of the desired block.
SramLibrary
void
Arguments:
Boolean discard
unsigned& index
Documentation:
This function supplies an SRAM block which clocks two pixels from the output register to the output node (possibly in one SRAM cycle). discard indicates that the caller wants the clocked pixels to be discarded (either at the output node, or via the FEP). Upon return, index contains the SRAM index of the desired block. The supplied block will clock in the direction last specified using selectDirection(), and is timed to generate the gain last chosen using sellectGain().
SramLibrary
Boolean
SramLibrary
void
Arguments:
Boolean high
Documentation:
The selectGain function selects whether or not to use SRAM primitives which return high gain from the output registers. If high is BoolFalse, then use primitives which supply a gain of 1:1. If high is BoolTrue, return use blocks which supply a gain of 4:1 at the output node (sacrificing pulse-height resolution).
SramLibrary
void
Arguments:
Boolean reverse
Documentation:
The selectOrDirection function selects the clocking direction of the output registers. If reverse is BoolFalse, then clock each register half toward their respective output nodes (i.e. use for Full and AC modes). If reverse is BoolTrue, clock each register in the opposite direction (i.e. use for BD and Diagnostic modes).