[PREVIOUS] [NEXT] [CONTENTS] ACIS Users Guide, Rev. A [AXAF]

4.0 Instrument Science Activities

This section describes the various activities used to perform routine science operations using the ACIS instrument software.


4.1 Performing a Science Run

The overall process of performing a science run within ACIS is as described in the ACIS Software Requirements Specification (SRS), MIT 36-01103. This section covers some of the implementation details not provided in the SRS, and recapitulates the overall process. (Although, a science run consists of the following overall steps, there are a variety of variants and details which are not addressed by this template, e.g. if and when DEA Housekeeping runs are started):

Within ACIS, there are basically two types of science runs: Timed Exposure Science Runs, and Continuous Clocking Science Runs. In Timed Exposure runs, the CCDs are statically integrated for some period of time, and then the resulting image is "captured" and processed (NOTE: The "capture" step introduces a "smear" integration cycle). In order to avoid overloading the ACIS DEA Power Supply, the "capture" step for each CCD is staggered in time. In Continuous Clocking runs, the CCD rows are continuously shifted, and are only "statically" integrated during the pause while a row is clocked out to the DEA/DPA to be processed. There is no "staggering" in Continuous Clocking mode.

4.1.1 Estimating Minimum Integration Times

4.1.1.1 Continuous Clocking Mode

Description

In Continuous Clocking (CC) mode, the user cannot explicitly set the integration time of each row. Instead, the user can only control the time using the side-effects of the summing parameters, the output register mode, and the number of overclocks parameter within the CC Mode Parameter Block.

The rate at which summed rows are clocked in CC mode is given by:

seconds_per_row = (row_transfers * pixel_clocks_per_transfer) + 
                  underclocks + pixels + dummy_overclocks + overclocks + 
                  end_of_row_marker) / pixel_clocks_per_second

                = (2rowSum * 4 pixel_clocks_per_transfer) +
                  (4 underclocks + n)/m pixels + 4 +
                  (overclockPairsPerNode * 2) +
                  1 end_of_row_marker) / 100,000 pixel_clocks_per_second

where:    "n" is 256 if outputRegisterMode in FULL or DIAG mode and
          "n" is 512 if the outputRegisterMode is AC or BD mode.
and:      "m" is 1 if columnSum == 0, and
          "m" is 2 if columnSum != 0.

The "static" integration time of a summed row (i.e. the time spent integrating the row while the CCDs were not moving the charge within the row) is the row rate, minus the pixel transfer time: (summed rows * 4 pixel clocks/transfer).

Parameters

The parameters which govern the row rate are contained in the Continuous Clocking Parameter Block, defined by the "loadCcBlock" command packet definition:

loadCcBlock: CMDOP_LOAD_CC
{
  ...
  rowSum                = Row Summation Factor  - summed_rows = 2rowSum rows
  columnSum             = Column Summing Factor - column_summing = FALSE
                                                   if columnSum == 0,
                                                   otherwise TRUE
  overclockPairsPerNode = # of overclock pairs  -  number_of_overclocks = 
                                                   overclockPairsPerNode * 2
  outputRegisterMode    = OR Clocking Mode      - output_register_mode
                                                   = FULL, DIAG, AC or BD ...
}
4.1.1.2 Timed Exposure Mode

Description

In Timed Exposure (TE) mode, the user explicitly specifies up to two static integration times, with a duty cycle parameter governing the ratio between the two times, within the TE Mode Parameter Block. Normally, the integration of one exposure overlaps, in time, the transfer of the previous exposure to the DEA/DPA for processing, which usually takes about 3.3 seconds. If, however, the integration time is less than this transfer time, TE mode does not overlap the two, and flushes the charge out of the CCDs prior to each short integration. This achieves the shorter integration time (i.e. less than 3.3 seconds), but reduces the effective exposure time by the time taken to transfer images to the DEA/DPA.

Due to the "staggered" image capture, the minimum integration time that can be specified is governed by the number of CCDs used for the run. The minimum integration time that can be specified, with flushes, is as follows:

1 CCD     - 0.1 second
2 CCDs    - 0.1 second
3 CCDs    - 0.2 seconds
4 CCDs    - 0.2 seconds
5 CCDs    - 0.3 seconds
6 CCDs    - 0.3 seconds

In order to avoid the flushes due to a short integration time, the integration time must be set to be greater than or equal to the time taken to capture (smear time) and transfer an image from the CCD to the DEA/DPA (transfer time). This time depends on a number of clocking parameters:

The minimum non-short integration time that can be specified is as follows:

min_time  = staggered_smear_time + transfer_time

          = ([(1026 rows * 4 pixel_clocks_per_parallel_transfer) *
              ("k" CCDs - 1)] +
             [(subarrayStartRow + 2 overhang_rows) * "k" CCDs *
              4 pixel_clocks_per_parallel_transfer] +
              (2 flushes * [(4 underclocks + "n" pixels) / "m"]) +
             [(subarrayRowCount + 1)/"m" *
              (4 pixel_clocks_per_parallel_transfer +
              [(4 underclocks + "n" pixels) / "m"] +
              4 dummy_clocks +
              (overclockPairsPerNode * 2) +
              1 pixel_clock_per_end_of_row_marker)]
            ) * 1x10-5seconds_per_pixel_clock

where:    "k" is the number of entries in the fepCcdSelect array which 
          are not set to CCD_DESELECT. Since the "smear" time of the 
          current CCD is not counted against its "static" integration 
          time, the expression computes the staggered "smear" time of the 
          remaining CCDs.

and:      "n" is 256 when the outputRegisterMode is FULL or DIAG mode 
          and "n" is 512 when the outputRegisterModeis in AC or BD mode.

and:      "m" is 1 if onChip2x2Summing is 0 and
          "m" is 2 if onChip2x2Summing is not 0

For example, for a configuration with all 6 CCDs, no on-chip summing, a full image of 1024 rows, the output register mode in FULL mode, and 30 overclock pixels per node, the minimum non-short integration time that can be specified is 3.27224 seconds. Since the time must be expressed in 1/10th second increments, this becomes 3.3 seconds.

For another example, consider a configuration with a single CCD, 2x2 on-chip sum, a subarray with 100 rows, starting at row 0, with the output registers in FULL mode, and only 2 overclock pixels per node, the time would be 0.14368 seconds, becoming 0.2 seconds.

Parameters

The parameters which govern the minimum integration times are contained in the Timed Exposure Parameter Block, defined by the "loadTeBlock" command packet definition:

loadTeBlock: CMDOP_LOAD_TE
{
  ...
  fepCcdSelect[6]       = FEP Indexed array of CCD Ids
                          - the number of configured CCDs is the number of 
                            entries in this array which are not set to
                            CCD_DESELECT

  onChip2x2Summing      = 2x2 sum flag
                          - if 0, do not perform on-chip sumation. If not 
                            0, perform 2x2 on-chip summation

  subarrayStartRow      = 1st row of subarray
                          - start_row = subarrayStartRow

  subarrayRowCount      = # rows
                          - # rows in subarray = subarrayRowCount + 1

  overclockPairsPerNode = # of overclock pairs
                          - overclock_pixels = overclockPairsPerNode * 2

  outputRegisterMode    = OR Clocking Mode
                          - outputRegisterMode = FULL, DIAG, AC or BD
  ...
}

4.1.2 Estimating Setup Time

Description

Upon receipt of one of the "Start Science Run" commands, the Science Manager task starts setting up for the run. This setup time varies, depending on the various parameters contained in the parameter block and the state of hardware and software in the system. This section describes the setup process, the approximate time for each step, and a summary of the parameters which affect this time. This section does not describe the time taken to perform a bias-recomputation, and the time taken to telemeter the bias maps. For bias computation and telemetry estimates, see Section 4.2.1 and Section 4.2.2.

The overall steps performed by the Science Manager task are as follows, with time estimates of each step. For simplicity, time estimates of each step are approximated to the second or minute, as appropriate:

4.1.3 Estimating Telemetry Utilization

Description

ACIS manages telemetry buffering using fixed numbers of fixed sized buffers for each type of application, where a telemetry packet must fit into a single buffer, and a single buffer never contains more than 1 packet. ACIS manages the average allocation of telemetry bandwidth by controlling the number and size of buffers allocated for each purpose. The effect is that, although at one moment, the peak allocation may be dominated by one particular application, on the average, each application can utilize its maximum allocation if it needs to, minus inefficiencies due to unused space in the fixed size buffers. If, however, at certain moments, an application does not require its full telemetry allocation, the unused bandwidth can be used by an application requiring more bandwidth. Although the use of fixed size buffers simplified the ACIS design and improved its reliability, it makes the job of estimating telemetry utilization more difficult.

For example, the science data processing applications are allocated 400 buffers of 512 32-bit words each, whereas memory dumps are allocated only 4 buffers of 1023 words each. Assuming that nothing else is being telemetered, that the current science mode always has data to send, filling 70% of each telemetry buffer it uses, and that a dump is in progress and is using 100% of each memory dump buffer, the science task can buffer (ignoring FEP ring-buffers and image buffers for the moment) ((0.7 * 512) * 400) 32-bit words in the ACIS telemetry buffers. The memory server can buffer 4092 words. If the telemetry stream is saturated, and the buffers fill, the science task will consume about 97.3% of the telemetry bandwidth, and the memory server will consume 2.7%.

NOTE: In prior software releases, science had been allocated 200 buffers of 1023 32-bit words. However, most science modes did not usually fill these buffers, and this led to inefficient use of the science buffer allocation.

Buffer Allocations

Table 14 lists the current buffer sizes and allocations for each type of telemetry packet (NOTE: These do not include the ring buffers on each FEP which can buffer up to 8K events each). Note that in some cases, the buffer size exceeds the fixed packet size. This allows patching of the output format without having to modify the buffer size allocation.

Table 14. Telemetry Buffer Allocations
Buffer Pool Buffer Count Buffer Size (bytes) Telemetry Packet Types Packet Size (bytes) Frequency
Bias Thief 20 4092 dataCcBiasMap 1564 If configured to compute and send the map, "n" per science run, where "n" is the number of configured CCDs
dataTeBiasMap 44 + (4 * "n" compressed words) Bad or no compression yields 1 1024-pixel bias row per packet. Excellent compression yields about 8 rows per packet. The system sends 1 map per configured CCD.
DEA House. 8 1024 deaHousekeepingData 20 + (4 * "n" queries) 1 every "sampleRate" seconds
Command Echo 4 2048 commandEcho 520 1 per command
Fatal 1 256 fatalMessage 20 1 per software crash
Memory 1 4092 bepReadReply 28 + (4 * "n" words) vary depending on read, dump, and execute commands
fepReadReply 28 + (4 * "n" words)
pramReadReply 24 + (2 * "n" entries)
sramReadReply 24 + (2 * "n" entries)
bepExecuteReply 24
fepExecuteReply 24
Science 400 2048 dumpedTeBlock <= 820 1 per TE Science Run
dumpedCcBlock <= 724 1 per CC Science Run
dataTeFaint 12 + (16 * "n" events) zero or more per exposure, depending on event rate
dataTeGraded 12 + (7.25 * "n" events)
dataTeFaintBias 12 + (29.5 * "n" events)
dataTeVeryFaint 12 + (40 * "n" events)
dataCcFaint 12 + (6.875 * "n" events)
dataCcGraded 12 + (4.25 * "n" events)
dataTeHist 16 + (4 * "n" bins) In FULL or DIAG mode, ~ 33 packets per "histogramCount" exposures. In AC or BD mode, ~ 17 packets.
dataTeRaw 24 + (4 * "n" compressed words) Bad or no compression yields 1 row per packet. Excellent compression yields about 8 rows per packet.
dataCcRaw
dataBiasError 20 + (4 * "n" bias errors) Zero or more per exposure, depending on corruption rate of bias map
exposureCcRaw 72 "n" per exposure, where "n" is the number of configured CCDs
exposureCcFaint 36
exposureTeFaint 72
exposureTeFaintBias 80
exposureTeHistogram 52
exposureTeRaw 36
scienceReport 48 1 per science run
Startup 1 4092 bepStartupMessage 28 1 per BEP startup
SwHouse 8 3088 swHousekeeping 16 + (12 * "n" reports) 1 every ~64 seconds

4.1.4 Loading Parameter and Window Blocks

ACIS conatins a total of 25 slots to hold various types of control blocks - Te, Cc, 1d 2d and Dea. There are 5 slots reserved for each type of block. The following sections describe these parameter blocks and how they are managed.

4.1.4.1 Timed Exposure Parameter Blocks

Description

Slots

ACIS has five numbered slots in which it stores Timed Exposure Parameter blocks. The parameter blocks are loaded into a particular slot using a "Load TE Block" command packet, where the slot number (0 - 4) is specified in the teBlockSlotIndex field. When parameter block is loaded into a slot, the slot's contents are overwritten by the new block contained in the command. If the instrument is power-cycled or cold-booted (see Section 3.1.3.1, Section 3.1.3.2), the contents of the slots will be restored to their "as-launched" values. A warm- boot (see Section 3.1.3.3), however, retains the contents of the most recently loaded slots.

Checksum

Each parameter block contains a checksum field. The checksum is the bit-wise XOR of each 16-bit word in the command packet following the checksum field (i.e. starting with the lowest address 16-bit word of the parameterBlockId field).

Parameter Block Id

The Parameter Block Identifier is a 32-bit value which can be used by the ground to uniquely identify the parameter block. ACIS reports the value of the Parameter Block Id in all exposure record, bias map, bias error packets and science report packets which used that parameter block for a bias computation and/or science run. In some cases, the Parameter Block used for science run data processing may be different than the parameter block used to compute the bias map used for the run, in which case, the telemetered Bias Parameter Block Id will be different than the main data processing Parameter Block Id (these are distinct fields in the telemetry packets).

NOTE: The intent of the Parameter Block Id is to aid bookkeeping on the ground. ACIS does not use the id internally for any particular purpose, and therefore, the users are free to use the field as they wish.

CCD Selection

The Timed Exposure Parameter Block contains an array of 6 CCD identifiers which are indexed by FEP Id. The user selects which CCDs to use for the science run by assigning the CCD Id to the particular FEP. A FEP can be designated as unused by storing the CCD_DESELECT value in the CCD Id field. Data from a particular CCD may be processed by more than one FEP, but subsequent parameters may conflict (see below). In general, if more than one FEP is processing data from the same CCD, the FEP with the larger FEP Id index will overwrite the parameters used by the lower (NOTE: This is a side-effect. ACIS applies all of the parameters from all of the FEPs, in ascending FEP Id order. The last FEP wins). The affected parameters are the CCD Video Response parameters and the FEP Video Offset parameters. For example, if one configured:

fepCcdSelect[FEP_0]           = CCD_I0
fepCcdSelect[FEP_1]           = CCD_I1
fepCcdSelect[FEP_2]           = CCD_I0
fepCcdSelect[FEP_3 .. FEP_5]  = CCD_DESELECT

and

ccdVideoResponse[FEP_0]       = 0
ccdVideoResponse[FEP_1]       = 0
ccdVideoResponse[FEP_2]       = 1

and

fep0VideoOffset[FEP_0]        = [60,60,60,60]
fep0VideoOffset[FEP_1]        = [60,60,60,60]
fep0VideoOffset[FEP_2]        = [30,30,30,30]

then CCD_I0 would use the low-gain video response (Video Response = 1) and 30 for the video ADC offsets.

On the other hand, the CCD images are captured in the order they first appear in the FEP CCD selection list, so in the above example, CCD_I0 would perform its image-to-frame captures first, followed by CCD_I1.

NOTE: Since the image transfer from the CCD framestores to the DEA/DPA is performed synchronously, images captured earlier spend more time in the CCD framestore. The time taken for each capture is approximately 40ms, so images from the CCD used by FEP_0 would spend 40ms longer in the framestore than images from the CCD used by FEP_1. The user can control this by selecting which CCDs are placed in the low order FEPs. For example, if a particular CCD performs better if its images are retained longer in the framestore, then the user would probably assign it to FEP_0.

If a CCD's video board is not powered, or if its assigned FEP is not powered, or if an error is encountered while setting up for the run, the offending FEP or CCD will not be used for the run. This will not, however, affect the image capture sequence. Because the time spent in the framestore is indirectly configured by the user (i.e. the user may be counting on this behavior for some reason), ACIS attempts to preserve the specified behavior by keeping the relative time delays the same. Unfortunately, this is not true for the video response and video offset parameters. If a FEP is not powered or has encountered an error, the most recent successful FEP's parameters will be used. The user can avoid this problem by ensuring that the video response and offset parameters are the same for all FEPs processing the same CCD during a run.

Processing Modes

The user selects the ACIS processing via the fepMode and bepPackingMode parameters of the loadTeBlock command. The following indicates how the modes are selected, and what other parameters are affected (note that the ignore initial frames, clocking parameters, video offsets and special parameters are always enabled):

Table 15. Timed Exposure Processing Mode Selection
Mode fepMode BEP Packing Mode Telemetry Packets Enabled Parameters
Raw Raw ignored 1. (1) dumpedTeBlock
2. (1) deaHousekeepingData
3a. (1..n) dataTeRaw
3b. (1..n) exposureTeRaw
4. scienceReport
rawCompressionSlotIndex
windowSlotIndex
Histogram Histogram ignored 1. (1) dumpedTeBlock
2. (1) deaHousekeepingData
3a. (17 or 33) dataTeHist
3b. (1..n) exposureTeHistogram
4. (1) scienceReport
histogramCount
Faint 3x3 3x3 Faint 1. (1) dumpedTeBlock
2. (1) deaHousekeepingData
3. (0..n) dataTeBiasMap
4a. (0..n) dataTeFaint
4b. (1..n) exposureTeFaint
5. (1) scienceReport
all bias parameters
fepEventThreshold
fepSplitThreshold
lowerEventAmplitude
eventAmplitudeRange
gradeSelections
windowSlotIndex
Faint with Bias 3x3 3x3 FaintBias 1. (1) dumpedTeBlock
2. (1) deaHousekeepingData
3. (0..n) dataTeBiasMap
4a. (0..n) dataTeFaintBias
4b. (1..n) exposureTeFaintBias
5. (1) scienceReport
Graded 3x3 Graded 1. (1) dumpedTeBlock
2. (1) deaHousekeepingData
3. (0..n) dataTeBiasMap
4a. (0..n) dataTeGraded
4b. (1..n) exposureTeFaint
5. (1) scienceReport
Faint 5x5 5x5 Faint 1. (1) dumpedTeBlock
2. (1) deaHousekeepingData
3. (0..n) dataTeBiasMap
4a. (0..n) dataTeVeryFaint
4b. (1..n) exposureTeFaint
5. (1) scienceReport

Clocking Parameters

TBD - Reference to copy of pramte.doc description of Timed Exposure Clocking

The Timed Exposure Parameter Block contains a set of parameters which controls how the CCDs are clocked, and the format of the resulting images (NOTE: some combinations of these parameters are not supported. Refer to TBD). The clocking parameters are as follows.

Video ADC Offsets

Because the clocking parameters can affect the signal levels measured on the video boards, the Timed Exposure Parameter block specifies the Analog-to-Digital Converter (ADC) video offset levels, which override those stored in the System Configuration Table (see Section 3.3.4). The video offset parameters act inversely to the video chain signal level (i.e. larger values produce a lower offset). The conversion formula for these values is specified in TBD.

NOTE: Because the video offset parameters may affect the signal measurement levels and affect the CCD bias levels, it is recommended that the bias maps be re- computed whenever these parameters are changed, although, if the offsets are adjusted to compensate for changes in the other parameters in order to maintain a consistent bias level, one may not require a bias re-computation.

Bias (and related) Parameters

ACIS re-computes the bias maps whenever one or more of the following conditions are met:

  1. A science run is started and the recomputeBias flag is set in its parameter block

  2. A Bias-Only science run is started (see Section 4.2 )

  3. A science run is started in an event processing mode was requested and either

    • The FEP's bias offsets were corrupt, or

    • The previous Science Run was not a Timed Exposure run, or

    • The radiation monitor had been asserted since the last bias computation

NOTE: Many of the CCD clocking parameters can affect the bias levels of the CCD images, and require re-computation of the map. The instrument software does NOT automatically detect these changes. It is the user's responsibility to determine when the bias maps should be re-calculated, and request computation of the bias maps when needed.

The ignoreInitialFrames parameter indicates how many exposures the FEPs are to throw away prior to computing the bias map. This is to allow for the bias-levels of the CCDs to settle. (NOTE: For data processing, 2 exposures are always discarded, hence, all reported exposure numbers start at 2).

ACIS supports a variety of bias computation algorithms, each requiring a collection of parameters. The algorithm selection and parameters are supplied independently for each FEP in the biasAlgorithmId and biasArg parameters. The details of the algorithms and the effect of the parameters are provided in TBD.

If the ignoreBadPixelMap is 0, ACIS installs the bad pixel map contained in the Bad Pixel Map into the bias maps whenever the maps are re-computed. If the ignoreBadPixelMap is 1, the pixels are not flagged. The same applies to the ignoreBadColumnMap, where the bad columns are retrieved from the Timed Exposure Bad Column Map (see Section 3.5).

If a bias is re-computed, and the trickleBias flag set to a 1, then the bias maps from each used FEP are telemetered prior to the start of data processing. If the trickleBias flag is 0, then the maps are not telemetered. If the maps are trickled, the biasCompressionSlotIndex indicates which compression table to use to pack the data. If the field is set to 255, then the maps will be bit-packed, with no compression. Refer to TBD for a description of the current Huffman compression tables.

NOTE: The maps are sent only when they are re-computed. If trickleBias is 1, but the map wasn't computed as part of the run, the map will not be telemetered at that time. In order to maintain a stable bias-level, the sequencers will continue to clock the CCDs while the maps are telemetered. The FEPs will ignore the clocked data.

Event Selection Parameters

The event selection parameters are only used when the ACIS is configured for Faint 3x3, FaintBias, Graded, or Faint 5x5 modes. The details of the event selection algorithm are provided in TBD. These parameters are:

Raw Image Processing

If the run is performing Raw Mode, then the following parameters are used to filter and telemeter the data:

Special Cases

The DEA Load Override parameter is provided to allow the maintainer to specify an explicit PRAM/SRAM image to load into the sequencers.This parameter causes the software to by-pass the SRAM library, and the on-board PRAM builder, and will ignore all clocking parameters when building the load. It is the user's responsibility to place the load image somewhere in the BEPs data memory, and ensure that the clocking parameters in the parameter block are consistent with the images produced by the explicit load.

NOTE: The DEA sequence checker will still verify that the loaded PRAM/SRAM does not threaten the health of the DEA electronics.

The FEP Load Override parameter can be used by the maintainer to provide alternate software to run in the FEP hardware. It is the user's responsibility to ensure that the FEP load image is stored somewhere in the BEP's data memory, and that the loaded program is compatible with the BEP-FEP protocols expected by the BEP software.

Commands

Summary of Load Timed Exposure Parameter Block (see TBD for an example):

loadTeBlock: CMDOP_LOAD_TE
{
  teBlockSlotIndex      = 0..5      - Specify which slot to load
  checksum              = checksum  - 16-bit wide XOR of remainder of 
                                      packet (illustrated in bold-type)
  parameterBlockId      = id        - Ground selected Parameter Block Id
  fepCcdSelect[6]       = CCD_I0..CCD_S5, CCD_DESELECT
                                    - Array indexed by FEP Id of which
                                      CCD each FEP should use
  fepMode               = Raw, Histogram, 3x3 or 5x5
  bepPackingMode        = Faint 3x3, FaintBias, Graded, Faint 5x5
  onChip2x2Summing      = 0..1      - Select 2x2 on-chip summing
  ignoreBadPixelMap     = 0..1      - Don't load bad pixels after bias
  ignoreBadColumnMap    = 0..1      - Don't load bad columns after bias
  recomputeBias         = 0..1      - Force re-computation of bias
  trickleBias           = 0..1      - Send bias maps after computation
  subarrayStartRow      = 0..923    - First row of subarray
  subarrayRowcount      = 100..1023 - Number of rows in subarray
  overclockPairsPerNode = 0..15     - Number of overclock pairs
  outputRegisterMode    = FULL, DIAG, AC, BD
                                    - Output register configuration
  ccdVideoResponse[6]   = 0..1      - Normal or low-gain, indexed by FEP
  primaryExposure       = 0.1..10s  - Primary static integration time
  secondaryExposure     = 0.1..10s  - Secondary static integration time
  dutyCycle             = 0..15     - Ratio of Secondary to Primary times
  fep*EventThreshold[4] = -4096..4095
                                    - FEP threshold values for each FEP.
                                      Indexed by output node.
  fep*SplitThreshold[4] = 0..4095   - BEP threshold values for data 
                                      from each FEP. Indexed by output node.
  lowerEventAmplitude   = 0..4095   - Minimum event amplitude
  eventAmplitudeRange   = 0..65535  - Maximum amplitude above minimum
  gradeSelections[256]  = 0..1      - Select accepted event grade codes
  windowSlotIndex       = 0..4,255  - Select 2-D window slot
  histogramCount        = 0..65535  - Number of exposures in histogram
  biasCompressionSlotIndex[6] = 0..255
                                    - Compression table for bias maps,
                                      indexed by FEP
  rawCompressionSlotIndex = 0..255  - Compression table for raw images
  ignoreInitialFrames   = 0..65535  - Exposures to drop prior to bias
  biasAlgorithmId[6]    = 0..255    - Bias Algorithm to use, indexed by FEP
  biasArg*[6]           =  value    - Bias Arguments, indexed by FEP
  fep*VideoOffset[4]    = 0..255    - ADC Video Offsets for each FEP,
                                      indexed by output node.
  deaLoadOverride       = 0,pointer - If not 0, BEP Memory pointer to
                                      DEA load image
  fepLoadOverride       = 0,pointer - If not 0, BEP Memory pointer to
                                      FEP load image
}

Science Telemetry

Command Echo on a successful load:

commandEcho: TTAG_CMD_ECHO
{
  arrival            = time command arrived (BEP 10Hz Ticks)
  result             = CMDRESULT_OK (other values indicate an error)

  loadTeBlock: CMDOP_LOAD_TE
  {
    teBlockSlotIndex = 0..5  
    checksum         = checksum
    parameterBlockId = id
    ...
  }
}

If the checksum of the packet doesn't match its contents, the block will not be loaded into the slot, and the Command echo will report the error by setting the result field to CMDRESULT_STORE_ERROR.

NOTE: If the parameter block contains fields which are out of range, or which are illegal in combination with other fields, an attempt to start a science run will abort, with the terminationReason in the Science Report set to SMTERM_PROC_PARM_INVALID, SMTERM_DEA_PARM_INVALID, SMTERM_FEP_PARM_INVALID. However, if the user specifies a set of clocking parameters which are legal, but not supported by the on-board SRAM library, it will appear as DEA error, and the terminationReason will be set to SMTERM_DEA_IO_ERROR.

Warnings

  1. Video Offsets are overrides

    The video offset parameters in the parameter block override those specified in the System Configuration Table (see Section 3.3.4). The video offset parameters in the System Configuration Table are never used.

  2. Use System Configuration to control board power

    The science parameter blocks DO NOT apply or remove power from hardware boards. If a video board or FEP is not powered, it will not be used for the run. If none of the requested boards are powered, the run will be aborted.

  3. Some clocking combinations are not supported

    Certain combinations of clocking parameters cause the software to access SRAM library components which don't exist, and will abort the run. See TBD.

4.1.4.2 2-D Window Parameter Blocks

Description

Slots

ACIS has five slots in which it stores 2-D Window Parameter blocks. The parameter blocks are loaded into a particular slot using a "Load 2D Block" command packet, where the slot is specified in the windowSlotIndex field. When parameter block is loaded into a slot, the slot's contents are overwritten by the new block contained in the command. If the instrument is power-cycled or cold-booted (see Section 3.1.3.1, Section 3.1.3.2), the contents of the slots will be restored to their "as-launched" values. A warm-boot (see Section 3.1.3.3), however, retains the contents of the most recently loaded blocks.

Checksum

Each parameter block contains a checksum field. The checksum is the bit-wise XOR of each 16-bit word in the command packet following the checksum field (i.e. starting with the least-significant 16-bit word of the windowBlockId field).

Window Block Id

The Window Block Identifier is a 32-bit value which can be used by the ground to uniquely identify the parameter block. ACIS sends the value of the Window Block Id in all exposure record packets and science report packets which used the windows for a science run.

NOTE: The intent of the Window Block Id is to aid bookkeeping on the ground. ACIS does not use the id internally for any particular purpose, and therefore, the users are free to use the field as they wish.

Window Definitions

The remainder of the window parameter block contains a series of zero or more window definitions. The number of windows in the block is determined using the command packet length. Each window definition specifies the CCD to which the window applies, the row and column position of the bottom left corner of the window, and the width and height of the window, all in CCD coordinates. Each window also specifies an event amplitude range, which is only used for event processing, and a sample field, which is used for both event processing, and for raw-mode data clipping. Refer to TBD for an explicit description of window processing of event data, and TBD for a description of window processing of raw mode data. ACIS is capable of supporting up to 6 windows for each CCD used for a run. The parameter block can hold up to 49 window definitions, and therefore, is capable of specifying 6 windows for 6 CCDs used for a run. The parameter block may contain windows for CCDs not used in the run, but does not have enough space, however, to specify all 6 windows for all 10 CCDs.

Commands

Summary of Load 2DWindow Block (see TBD for an example):

load2dBlock: CMDOP_LOAD_2D
{
  windowSlotIndex       = 0..5      - Specify which slot to load
  checksum              = checksum  - 16-bit wide XOR of remainder of 
                                      packet (illustrated in bold-type)
  windowBlockId         = id        - Ground selected Window Block Id
  windows[] =                       - Array of window definitions
  {
    ccdId               = I0..S5    - Identify CCD
    ccdRow              = 0..1023   - Bottom row of window
    ccdColumn           = 0..1023   - Left most column of window
    width               = 0..1023   - Width of window - 1
    height              = 0..1023   - Height of window - 1
    sampleCycle         = 0..255    - Event sample count, or raw 
                                      pixel selection
    lowerEventAmplitude = 0..4095   - Minimum event amplitude
    eventAmplitudeRange = 0..65535  - Maximum amplitude above minimum
  }
  {
    ccdId ...
  }
  ...
}

Science Telemetry

Command Echo on a successful load:

commandEcho: TTAG_CMD_ECHO
{
  arrival                 = time command arrived (BEP 10Hz Ticks)
  result                  = CMDRESULT_OK (other values indicate an error)

  load2dBlock: CMDOP_LOAD_2D
  {
    windowSlotIndex       = 0..5
    checksum              = checksum
    windowBlockId         = id
    windows[] =
    {
      ccdId               = I0..S5
      ccdRow              = 0..1023
      ccdColumn           = 0..1023
      width               = 0..1023
      height              = 0..1023
      sampleCycle         = 0..255
      lowerEventAmplitude = 0..4095
      eventAmplitudeRange = 0..65535
    }
    {
      ccdId ...
    }
  ...
  }
}

If the checksum of the packet doesn't match its contents, the block will not be loaded into the slot, and the Command echo will report the error by setting the result field to CMDRESULT_STORE_ERROR.

NOTE: If the parameter block contains fields which are out of range, or which are illegal in combination with other fields, an attempt to start a science run will abort, with the terminationReason in the Science Report set to SMTERM_PROC_PARM_INVALID.

Warnings

  1. First window in the list hides subsequent windows

    Contrary to how bit-mapped graphics are produced, and paste-up sheets are overlaid on a table, the windows in the parameter block overlap in a queue-like fashion, where the last window in the parameter block is the bottom most window.

  2. Cannot specify 6 windows for all 10 CCDs in 1 block

    The parameter block can only hold up to 49 windows.

  3. Row and Column 0 and 1023 never produce events

    In order to handle the event detection boundary conditions in the Front End Processors, the FEPs never produce events centered on row 0, column 0, row 1023 or column 1023.

  4. Only event centers must be in the window

    For event processing, only the center pixel of the event must be within the window for the event to be processed by the window. In raw mode, any raw pixel which is within the window is processed by the window. The wording in the Software Requirements Specification is a little confusing on this point.

4.1.4.3 Continuous Clocking Parameter Blocks

Description

Slots

ACIS has five slots in which it stores Continuous Clocking Parameter blocks. The parameter blocks are loaded into a particular slot using a "Load CC Block" command packet, where the slot is specified in the ccBlockSlotIndex field. When a parameter block is loaded into a slot, the slot's contents are overwritten by the new block contained in the command. If the instrument is power-cycled or cold- booted (see Section 3.1.3.1 , Section 3.1.3.2), the contents of the slots will be restored to their "as-launched" values. A warm-boot (see Section 3.1.3.3 ), however, retains the contents of the most recently loaded blocks.

Checksum

Each parameter block contains a checksum field. The checksum is the bit-wise XOR of each 16-bit word in the command packet following the checksum field (i.e. starting with the least-significant 16-bit word of the parameterBlockId field).

Parameter Block Id

The Parameter Block Identifier is a 32-bit value which can be used by the ground to uniquely identify the parameter block. ACIS sends the value of the Parameter Block Id in all exposure record, bias map, bias error packets and science report packets which used the parameter block for a bias computation and/or science run. In some cases, the Parameter Block used for science run data processing may be different than the parameter block used to compute the bias map used for the run, in which case, the telemetered Bias Parameter Block Id will be different than the main data processing Parameter Block Id (these are distinct fields in the telemetry packets).

NOTE: The intent of the Parameter Block Id is to aid bookkeeping on the ground. ACIS does not use the id internally for any particular purpose, and therefore, the user's are free to use the field as they wish.

CCD Selection

The Continuous Clocking Parameter Block contains an array of CCDs which are indexed by FEP Id. The user selects which CCDs to use for the science run by assigning the CCD to the particular FEP. A FEP can be designated as unused by assigning the CCD_DESELECT value for the CCD Id field. A CCD may be processed by more than 1 FEP, however, subsequent parameters may conflict (see below). In general, if a more than 1 FEP is processing data from the same CCD, the higher order FEP overwrites the parameters used by the lower (NOTE: This is a side-effect. ACIS applies all of the parameters from all of the FEPs, in FEP order. The last FEP wins). The affected parameters are the CCD Video Response parameters and the FEP Video Offset parameters. For example, if one configured:

fepCcdSelect[FEP_0]           = CCD_I0
fepCcdSelect[FEP_1]           = CCD_I1
fepCcdSelect[FEP_2]           = CCD_I0
fepCcdSelect[FEP_3 .. FEP_5]  = CCD_DESELECT

and

ccdVideoResponse[FEP_0]       = 0
ccdVideoResponse[FEP_1]       = 0
ccdVideoResponse[FEP_2]       = 1

and

fep0VideoOffset[FEP_0]        = [60,60,60,60]
fep0VideoOffset[FEP_1]        = [60,60,60,60]
fep0VideoOffset[FEP_2]        = [30,30,30,30]

then CCD_I0 would use the low-gain video response (Video Response = 1) and 30 for the video ADC offsets.

In Continuous Clocking mode, all the CCDs shift their respective rows in unison, avoiding the staggered capture complexities of Timed Exposure mode.

If a CCD's video board is not powered, or if the FEP is not powered, or if an error is encountered while setting up for the run, the offending item will not be used for the run.

Processing Modes

The user selects which ACIS processing mode to use with the fepMode and bepPackingMode parameters. The following indicates how the modes are selected, and what other parameters are affected (note the ignore initial frames, clocking parameters, video offsets and special parameters are always enabled):

Table 16. Continuous Clocking Processing Mode Selection
Mode fepMode BEP Packing Mode Telemetry Packets Enabled Parameters
Raw Raw ignored 1. (1) dumpedCcBlock
2. (1) deaHousekeepingData
3a. (1..n) dataCcRaw
3b. (1..n) exposureCcRaw
4. scienceReport
rawCompressionSlotIndex
windowSlotIndex
Faint 1x3 1x3 Faint 1. (1) dumpedCcBlock
2. (1) deaHousekeepingData
3. (0 or n) dataCcBiasMap
4a. (1..n) dataCcFaint
4b. (1..n) exposureCcFaint
5. (1) scienceReport
all bias parameters
fepEventThreshold
fepSplitThreshold
lowerEventAmplitude
eventAmplitudeRange
gradeSelections
windowSlotIndex
Graded 3x3 Graded 1. (1) dumpedCcBlock
2. (1) deaHousekeepingData
3. (0..n) dataCcBiasMap
4a. (1..n) dataCcGraded
4b. (1..n) exposureCcFaint
5. (1) scienceReport

Clocking Parameters

TBD - Reference to copy of pramcc.doc description of Continuous Clocking

Continuous Clocking always clocks a collection 512 rows from the CCD to the DEA/DPA. Although the timing relationship between sets of 512 rows is seamless, this unit is used to re-compute average overclocks and adjust the threshold levels, and is treated by the system as an image, or "exposure". The Continuous Clocking Parameter Block contains a set of parameters which control how the CCDs are clocked, and the format of the resulting images (NOTE: some combinations of these parameters are not supported. Refer to TBD). The clocking parameters are as follows:

Video ADC Offsets

Because the clocking parameters can affect the signal levels measured on the video boards, the Timed Exposure Parameter block specifies the Analog-to-Digital Converter (ADC) video offset levels, which override those stored in the System Configuration Table (see Section 3.3.4). The video offset parameters act inversely to the video chain signal level (i.e. larger values produce a lower offset). The conversion formula for these values is specified in TBD.

NOTE: Because the video offset parameters may affect the signal measurement levels and affect the CCD bias levels, it is recommended that the bias maps be re- computed whenever these parameters are changed, although, if the offsets are adjusted to compensate for changes in the other parameters in order to maintain a consistent bias level, one may not require a bias re-computation.

Bias (and related) Parameters

ACIS re-computes the bias maps under one or more of the following conditions:

  1. The recomputeBias flag is set in the parameter block

  2. A Bias-Only run was requested (see Section 4.2 )

  3. An event processing mode and

    • The FEP's bias offsets were corrupt or

    • The previous Science Run was not a Continuous Clocking run or

    • The radiation monitor had been asserted since the last bias computation

NOTE: Many of the CCD clocking parameters can affect the bias levels of the CCD images, and require re-computation of the map. The instrument software does NOT automatically detect these changes. It is the user's responsibility to determine when the bias maps should be re-calculated, and request computation of the bias maps when needed.

The ignoreInitialFrames parameter indicates how many exposures the FEPs are to throw away prior to computing the bias map. This is to allow for the bias-levels of the CCDs to settle. (NOTE: For data processing, 2 exposures are always discarded, hence, all reported exposure numbers start at 2).

ACIS supports a variety of bias computation algorithms, each requiring a collection of parameters. The algorithm selection and parameters are supplied independently for each FEP in the biasAlgorithmId and biasArg parameters. The details of the algorithms and the effect of the parameters are provided in TBD.

If the ignoreBadColumnMap is 0, ACIS installs the bad columns, indicated in the Continuous Clocking bad column map, into the bias maps whenever the maps are re-computed. If the ignoreBadColumnMap is 1, the column pixels are not flagged. (see Section 3.5).

If a bias is re-computed, and the trickleBias flag set to a 1, then the bias maps from each used FEP are telemetered prior to the start of data processing. If the trickleBias flag is 0, then the maps are not telemetered.

NOTE: The maps are sent only when they are re-computed. If trickleBias is 1, but the map wasn't computed as part of the run, the map will not be telemetered at that time.

Event Selection Parameters

The event selection parameters are only used when the ACIS is configured for Faint 1x3 and Graded modes. The details of the event selection algorithm are provided in TBD. These parameters are:

Raw Image Processing

If the run is performing Raw Mode, then the following parameters are used to filter and telemeter the data:

Special Cases

The DEA Load Override parameter is provided to allow the maintainer to specify an explicit PRAM/SRAM image to load into the sequencers.This parameter causes the software to by-pass the SRAM library, and the on-board PRAM builder, and will ignore all clocking parameters when building the load. It is the user's responsibility to place the load image somewhere in the BEPs data memory, and ensure that the clocking parameters in the parameter block are consistent with the images produced by the explicit load.

NOTE: The DEA sequence checker will still verify that the loaded PRAM/SRAM does not threaten the health of the DEA electronics.

The FEP Load Override parameter can be used by the maintainer to provide alternate software to run in the FEP hardware. It is the user's responsibility to ensure that the FEP load image is stored somewhere in the BEP's data memory, and that the loaded program is compatible with the BEP-FEP protocols expected by the BEP software.

Commands

Summary of Load Continuous Clocking Parameter Block (see TBD for an example):

loadCcBlock: CMDOP_LOAD_CC
{
  ccBlockSlotIndex        = 0..5      - Specify which slot to load
  checksum                = checksum  - 16-bit wide XOR of remainder of 
                                        packet (illustrated in bold-type)
  parameterBlockId        = id        - Ground selected Parameter Block Id
  fepCcdSelect[6]         = CCD_I0..CCD_S5, CCD_DESELECT
                                      - Array indexed by FEP Id of which
                                        CCD each FEP should use
  fepMode                 = Raw, or 1x3
  bepPackingMode          = Faint, or Graded
  ignoreBadPixelMap       = 0..1      - Don't load bad pixels after bias
  ignoreBadColumnMap      = 0..1      - Don't load bad columns after bias
  recomputeBias           = 0..1      - Force re-computation of bias
  trickleBias             = 0..1      - Send bias maps after computation
  rowSum                  = 0..9      - Number of rows to sum (powers of 2)
  columnSum               = 0..6      - Number of columns to sum (powers of 2)
  overclockPairsPerNode   = 0..15     - Number of overclock pairs
  outputRegisterMode      = FULL, DIAG, AC, BD
                                      - Output register configuration
  ccdVideoResponse[6]     = 0..1      - Normal or low-gain, indexed by FEP
  fep*EventThreshold[4]   = -4096..4095
                                      - FEP threshold values for each FEP.
                                        Indexed by output node.
  fep*SplitThreshold[4]   = 0..4095   - BEP threshold values for data from
                                        each FEP. Indexed by output node.
  lowerEventAmplitude     = 0..4095   - Minimum event amplitude
  eventAmplitudeRange     = 0..24570  - Maximum amplitude above minimum
  gradeSelections[4]      = 0..1      - Select accepted event grade codes
  windowSlotIndex         = 0..4,255  - Select 1-D window slot
  rawCompressionSlotIndex = 0..255    - Compression table for raw images
  ignoreInitialFrames     = 0..65535  - Exposures to drop prior to bias
  biasAlgorithmId[6]      = 0..255    - Bias Algorithm to use, indexed by FEP
  biasRejection[6]        =  value    - Bias Rejection Level, per FEP
  fep*VideoOffset[4]      = 0..255    - ADC Video Offsets for each FEP,
                                        indexed by output node.
  deaLoadOverride         = 0,pointer - If not 0, BEP Memory pointer to
                                        DEA load image
  fepLoadOverride         = 0,pointer - If not 0, BEP Memory pointer to
                                        FEP load image
}

Science Telemetry

Command Echo on a successful load:

commandEcho: TTAG_CMD_ECHO
{
  arrival            = time command arrived (BEP 10Hz Ticks)
  result             = CMDRESULT_OK (other values indicate an error)

  loadCcBlock: CMDOP_LOAD_CC
  {
    ccBlockSlotIndex = 0..5  
    checksum         = checksum
    parameterBlockId = id
    ...
  }
}

If the checksum of the packet doesn't match its contents, the block will not be loaded into the slot, and the Command echo will report the error by setting the result field to CMDRESULT_STORE_ERROR.

NOTE: If the parameter block contains fields which are out of range, or which are illegal in combination with other fields, an attempt to start a science run will abort, with the terminationReason in the Science Report set to SMTERM_PROC_PARM_INVALID, SMTERM_DEA_PARM_INVALID, SMTERM_FEP_PARM_INVALID. However, if the user specifies a set of clocking parameters which are legal, but not supported by the on-board SRAM library, it will appear as DEA error, and the terminationReason will be set to SMTERM_DEA_IO_ERROR.

Warnings

  1. Video Offsets are overrides

    The video offset parameters in the parameter block override those specified in the System Configuration Table (see Section 3.3.4). The video offset parameters in the System Configuration Table are never used.

  2. Use System Configuration to control board power

    The science parameter blocks DO NOT apply or remove power from hardware boards. If a video board or FEP is not powered, it will not be used for the run. If none of the requested boards are powered, the run will be aborted.

  3. Some clocking combinations are not supported

    Certain combinations of clocking parameters cause the software to access SRAM library components which don't exist, and will abort the run. See TBD.

4.1.4.4 1-D Window Parameter Blocks

Description

Slots

ACIS has five slots in which it stores 1-D Window Parameter blocks. The parameter blocks are loaded into a particular slot using a "Load 1D Block" command packet, where the slot is specified in the windowSlotIndex field. When a parameter block is loaded into a slot, the slot's contents are overwritten by the new block contained in the command. If the instrument is power-cycled or cold- booted (see Section 3.1.3.1, Section 3.1.3.2), the contents of the slots will be restored to their "as-launched" values. A warm-boot (see Section 3.1.3.3), however, retains the contents of the most recently loaded blocks.

Checksum

Each parameter block contains a checksum field. The checksum is the bit-wise XOR of each 16-bit word in the command packet following the checksum field (i.e. starting with the least-significant 16-bit word of the windowBlockId field).

Window Block Id

The Window Block Identifier is a 32-bit value which can be used by the ground to uniquely identify the parameter block. ACIS sends the value of the Window Block Id in all exposure record packets and science report packets which used the windows for a science run.

NOTE: The intent of the Window Block Id is to aid bookkeeping on the ground. ACIS does not use the id internally for any particular purpose, and therefore, the users are free to use the field as they wish.

Window Definitions

The remainder of the window parameter block contains a series of zero or more window definitions. The number of windows in the block is determined using the command packet length. Each window definition specifies the CCD to which the window applies, the column position of the left edge of the window, and the width of the window, all in CCD coordinates. Each window also specifies an event amplitude range, which is only used for event processing, and a sample field, which is used for both event processing, and for raw-mode data clipping. Refer to TBD for an explicit description of window processing of event data, and TBD for a description of window processing of raw mode data. ACIS is capable of supporting up to 6 windows for each CCD used for a run. The parameter block can hold up to the maximum of 60 window definitions (6 windows x 10 CCDs).

Commands

Summary of Load 1DWindow Block:

load1dBlock: CMDOP_LOAD_1D
{
  windowSlotIndex       = 0..5      - Specify which slot to load
  checksum              = checksum  - 16-bit wide XOR of remainder of 
                                      packet (illustrated in bold-type)
  windowBlockId         = id        - Ground selected Window Block Id
  windows[]             =           - Array of window definitions
  {
    ccdId               = I0..S5    - Identify CCD
    ccdColumn           = 0..1023   - Left most column of window
    width               = 0..1023   - Width of window - 1
    sampleCycle         = 0..255    - Event sample count, or raw 
                                      pixel selection
    lowerEventAmplitude = 0..4095   - Minimum event amplitude
    eventAmplitudeRange = 0..24570  - Maximum amplitude above minimum
  }
  {
    ccdId ...
  }
  ...
}

Science Telemetry

Command Echo on a successful load:

commandEcho: TTAG_CMD_ECHO
{
  arrival      = time command arrived (BEP 10Hz Ticks)
  result      = CMDRESULT_OK (other values indicate an error)

  load1dBlock: CMDOP_LOAD_1D
  {
    windowSlotIndex       = 0..5
    checksum              = checksum
    windowBlockId         = id
    windows[] =
    {
      ccdId               = I0..S5
      ccdColumn           = 0..1023
      width               = 0..1023
      sampleCycle         = 0..255
      lowerEventAmplitude = 0..4095
      eventAmplitudeRange = 0..24570
    }
    {
      ccdId ...
    }
  ...
  }
}

If the checksum of the packet doesn't match its contents, the block will not be loaded into the slot, and the Command echo will report the error by setting the result field to CMDRESULT_STORE_ERROR.

NOTE: If the parameter block contains fields which are out of range, or which are illegal in combination with other fields, an attempt to start a science run will abort, with the terminationReason in the Science Report set to SMTERM_PROC_PARM_INVALID.

Warnings

  1. First window in the list hides subsequent windows

    Contrary to how bit-mapped graphics are produced, and paste-up sheets are overlaid on a table, the windows in the parameter block overlap in a queue-like fashion, where the last window in the parameter block is the bottom most window.

  2. Column 0 and 1023 never produce events

    In order to handle the event detection boundary conditions in the Front End Processors, the FEPs never produce events centered on column 0 or column 1023.

  3. Only event centers must be in the window

    For event processing, only the center pixel of the event must be within the window for the event to be processed by the window. In raw mode, any raw pixel which is within the window is processed by the window. The wording in the Software Requirements Specification is a little confusing on this point.

4.1.5 Starting a Science Run

Description

Prior to starting a science run, the user should have powered on the FEPs and Video boards needed for the run (see Section 3.3.2 and Section 3.3.3) and planned and loaded the parameter and window blocks needed for the run (see Section 4.1.1, Section 4.1.2, Section 4.1.3, Section 4.1.4 ). The user initiates a science run using the "Start Science" command packet, where the opcode of the command selects the type of science run to perform, and the blockSlotIndex parameter selects which parameter block to use to configure the run. If the opcode is CMDOP_START_TE, then a Timed Exposure run is performed, and the parameter block is read from the slots reserved for Timed Exposure runs. If the opcode is CMDOP_START_CC, the a Continuous Clocking run is performed, and the parameter block is read from the Continuous Clocking slot array.

Once started, the Science Manager will configure the processing parameters, load the CCD settings into the DEA video boards, load the sequencer memory of the video boards, configure the Front End Processor parameters. It will then "jitter" the video board DACs to clear charge out of the CCDs. If a bias computation is required, the task will command the FEPs to compute a bias, and then start the video board sequencers. Once the bias is complete, the task will stop the sequencers, and will send the bias maps to telemetry, if requested by the "trickleBias" flag. Once the bias maps have been sent, the task will command the FEPs to prepare for data, and re-start the video board sequencers. The FEPs will then ignore the first two images from the CCDs, and then start processing the data from the subsequent exposures, producing data packets and exposure records. The task will continue to do so, until either it is commanded to stop, via a "Stop Science" command, inhibited by the radiation monitor, aborted by a second "Start Science" command (in which case, a new run will be configured and started), or until the run is aborted due to errors (NOTE: The system attempts to degrade gracefully. If a FEP produces an error, it is not used for the remainder of the run. The remaining FEPs, however, will continue to be used. If all of the FEPs are in error, then the run is aborted because there's nothing to do).

Commands

Command to start a Timed Exposure Science Run:

startScience: CMDOP_START_TE
{
  blockSlotIndex = 0..4  - Index Timed Exposure Parameter 
Block Slot
}

Command to start a Continuous Clocking Science Run:

startScience: CMDOP_START_CC
{
  blockSlotIndex = 0..4  - Index Continuous Clocking 
Parameter Slot
}

Engineering Telemetry

When performing a science run, the Software Housekeeping task blinks the LED values between two values, about once a minute (see Section 3.4.3.1).

If system had not watchdog-reset since the last commanded reset:

LED_RUN_SCIENCE_A
LED_RUN_SCIENCE_B

If the system had watchdog-reset:

LED_WD_SCIENCE_A
LED_WD_SCIENCE_B

Science Telemetry

Command Echo on a successful receipt of Timed Exposure start request:

commandEcho: TTAG_CMD_ECHO
{
  arrival          = time command arrived (BEP 10Hz Ticks)
  result           = CMDRESULT_OK (other values indicate an error)

  startScience: CMDOP_START_TE
  {
    blockSlotIndex = 0..4
  }
}

Command Echo on a successful receipt of Continuous Clocking start request:

commandEcho: TTAG_CMD_ECHO
{
  arrival          = time command arrived (BEP 10Hz Ticks)
  result           = CMDRESULT_OK (other values indicate an error)

  startScience: CMDOP_START_CC
  {
    blockSlotIndex = 0..4
  }
}

If a run had been started, and not yet stopped, when the command is received, the "result" field of the echo will contain CMDRESULT_CLOBBERED. In this case, the earlier run will be aborted (NOTE: The FEPs will be reset), and the new run will be configured and started.

If the radiation monitor had been activated, then the start of the run will be deferred until the monitor is de-activated. In this case the "result" field will contain CMDRESULT_INHIBITED.

If the selected parameter block checksum does not match its contents (i.e. has been corrupted), the system will attempt to determine if the run was configured to use the Imaging CCDs or the Spectroscopy CCDs. If any of the CCDs in the fepSelect field of the parameter block choose an Imaging CCD (I0..I3), the system will attempt to use the parameter block contained in slot 0. If not, it will try to default to the parameter block in slot 1. If the default is not corrupt, the intent was for the system to use the default parameter block, and the "result" field will be set to CMDRESULT_CORRUPT_DEFAULT. Due to a "bug" in the software, however, the system will use the most recently configured parameter block for the type of run that was chosen, either Timed Exposure or Continuous Clocking (NOTE: Some might consider this a feature).

If the original parameter block is corrupt, and the selected default parameter block is also corrupt (or they're one and the same), the run will not be started, and the "result" field will contain CMDRESULT_CORRUPT_IDLE.

Since the field ranges within the parameter block are only checked during the set- up stage of the run, after the receipt of the command has been acknowledged via the command echo, if the a parameter contained in the block is invalid or unsupported, the Command Echo will not indicate the problem, and supply a CMDRESULT_OK. Instead, the run will not be started, and a "Science Report" packet will indicate the problem within its terminationReason field.

At the start of the run, the Science Manager will fetch and telemeter the parameter blocks used for the run. In Timed Exposure Mode, the dump appears as:

dumpedTeBlock: TTAG_DUMP_TE
{
  dumped TE Block:
  loadTeBlock: CMDOP_LOAD_TE
  [
    ...
  }
  if windows were used, this is followed by:
  a dumped 2d Window Block, aligned to the next 32-bit word:
  load2dBlock: CMDOP_LOAD_2D
  {
    ...
  }
}

In Continuous Clocking Mode, the dump appears as:

dumpedCcBlock: TTAG_DUMP_CC
{
  dumped CC Block:
  loadCcBlock: CMDOP_LOAD_CC
  [
    ...
  }
  if windows were used, this is followed by:
  a dumped 1d Window Block, aligned to the next 32-bit word:
  load1dBlock: CMDOP_LOAD_1D
  {
    ...
  }
}

Once the parameter blocks have been dumped, the Science Manager acquires and telemeters the DEA Video Board housekeeping information for all CCDs used for the run (NOTE: Unless all 10 video boards are powered on, the analog values in the packet will be of marginal use. They will indicate if the given channel is completely broken, but won't really indicate the level that the DAC was set to). The content and form of this information is described in Section 3.4.6.6.

If a bias map was re-computed, and the "trickleBias" flag was set in the parameter block, the system will telemeter the contents of the computed bias maps of each FEP, in FEP order (i.e. FEP_0 first, then FEP_1, etc.). The Timed Exposure Bias Map telemetry packets are of the form:

dataTeBiasMap: TTAG_SCI_TE_BIAS
{
  biasStartTime        = 100KHz time-stamp at start of bias
  biasParameterId      = Parameter Block Id used for bias
  ccdId                = CCD which produced the map
  fepId                = FEP used to produce the map
  dataPacketNumber     = packet sequence number within this map
  initialOverclocks[4] = DC-offset of bias values, by quadrant
  pixelsPerRow         = number of pixels in each bias map row
  rowsPerBias          = number of rows in the map
  ccdRow               = starting row of data in the packet
  ccdRowCount          = number of rows packed into the packet
  compressiontTableSlotIndex = table slot value used to compress data
  pixelCount           = total number of pixels in the packet
  data[]               = packed or compressed data, as array of 32-bit words
}

The Continuous Clocking Bias Map telemetry packets are of the form:

dataCcBiasMap: TTAG_SCI_CC_BIAS
{
  biasStartTime        = 100KHz time-stamp at start of bias
  biasParameterId      = Parameter Block Id used for bias
  ccdId                = CCD which produced the map
  fepId                = FEP used to produce the map
  data[1024]           = packed 12-bit pixel bias values
}

Once processing data, the Science Manager task produces a series of telemetry data packets, followed by 1 exposure record, for each FEP. The data and exposure packets for the different FEPs are asynchronously interleaved into the telemetry stream. The form of the data and exposure packets vary, depending on the type of mode being run. See Table 15 and Table 16 for cross-references between the type of mode and the resulting telemetry packet types.

Warnings

  1. Command Echo does not check parameter ranges

    Parameter block fields are only checked as they are used to setup for the run. If there is an error in one or more fields, the run may be prematurely terminated, with the Science Report's terminationReason indicating the type of error. ACIS does not explicitly call- out which parameter is in error, however.

  2. Re-starting aborts the earlier run

    If a run is in progress, and a subsequent "Start Science" command is received, the FEPs will be reset and the earlier run will be aborted, after which the new run will be configured and started. Sometimes this takes a long time, and may lead to confusion when a "human" is interacting with the instrument. The condition is indicated in the command echo to the "Start Science" command, and the bi-levels accurately reflect the current state of the instrument.

  3. Re-starting runs may cause a FEP error to be reported

    When a run is re-started, the earlier run is aborted. This abort forces a reset of the FEPs to ensure that nothing gets locked up. If the previous run is interacting with a FEP when the reset is issued, its Science Report may indicate that FEP errors have occured.

  4. Radiation Monitor can inhibit a run

    If a "Start Science" is received while the radiation monitor flag is asserted, the run won't start until the radiation monitor is de-asserted.

  5. Due to a "bug", corrupted blocks will cause the use of the most recent block

    Although the software requirement states that either parameter block slot 0 or 1 will be used in the event that the requested parameter block is corrupted, the system actually re-uses the parameters from the previous run of the same type, either Timed Exposure or Continuous Clocking. The run may fail to start if no runs of the given type have been successfully started since the instrument was last powered on.

  6. See Section 3.4.6.6 Warnings

4.1.6 Stopping a Science Run

Description

The user stops a science run by issuing a "Stop Science" command packet. Upon receipt of the command, the Science Manager task will issue a stop request to the FEPs, and poll them until they indicate that they have no more data to send from the current exposure. Once the current exposure is complete, the Science Manager task stops the sequencers and forms and posts a "Science Report" telemetry packet.

Commands

Command to stop a science run:

stopScience: CMDOP_STOP_SCIENCE
{
  No additional parameters are required
}

Engineering Telemetry

Once a science run is complete, the Software Housekeeping task will revert the LEDs to their idle blinking states (see Section 3.4.3.1).

If system had not watchdog-reset since the last commanded reset:

LED_RUN_IDLE_A
LED_RUN_IDLE_B

If the system had watchdog-reset:

LED_WD_IDLE_A
LED_WD_IDLE_B

Science Telemetry

Once a run terminates, either due to a stop command, a radiation monitor inhibit, or an abort, the Science Manager produces a "Science Report" telemetry packet:

scienceReport: TTAG_SCI_REPORT
{
  runStartTime          = 100KHz time-stamp when data started
  parameterBLockId      = Parameter Block Id used for data
  windowBlockId         = Window Block Id used to filter
  biasStartTime         = 100KHz time-stamp when bias was computed
  biasParameterId       = Parameter Block Id used for bias
  exposuresProduced     = Largest Exposure Number produced by FEPs
  exposuresSent         = Number of exposures telemetered
  biasErrorCount        = Number of bias errors telemetered
  fepErrorCodes[6]      = FEP Error codes, indexed by FEP
  ccdErrorFlags[6]      = Video Board error flags, indexed by FEP
  deaInterfaceErrorFlag = DEA Interface board error flag
  terminationCode       = Reason the run was stopped
}

The FEP Error codes are (likely user-inflicted cases are in bold):

FEP_CMD_NOERR          - no errors detected, the FEP is ok
FEP_CMD_ERR_NO_RUN     - stop received, but it was already stopped.
                         This may occur if many stop commands are
                         issued to the instrument in a row.
FEP_CMD_ERR_UNK_CMD    - Unknown command type. SEU or bug.
FEP_CMD_ERR_PARM_LEN   - Parameter block too long. SEU or bug.
FEP_CMD_ERR_PARM_TYPE  - Unknown parameter block type. SEU or bug.
FEP_CMD_ERR_QUAD_CODE  - Unknown quadrant code. SEU or bug.
FEP_CMD_ERR_BIAS_TYPE  - Bad biasAlgorithmId in parameter block
FEP_CMD_ERR_BIAS_PARM0 - Bad biasArg0 in parameter block.
FEP_CMD_ERR_NROWS      - Bad number of rows. SEU or bug.
FEP_CMD_ERR_NCOLS      - Bad number of columns. SEU or bug.
FEP_CMD_ERR_NOCLK      - Bad number of overclocks. SEU or bug.
FEP_CMD_ERR_NHIST      - histogramCount was zero in Histogram Mode
FEP_CMD_ERR_NO_PARM    - No parameter block loaded. SEU or bug.
FEP_CMD_ERR_BAD_CMD    - Illegal secondary command. SEU or bug.
FEP_CMD_ERR_NO_BIAS    - No bias map stored. SEU or bug
FEP_ERR_LOCK_TIMEOUT   - Time-out on FEP lock. SEU, bug or FEP crash
FEP_ERR_NO_POWER       - FEP is not powered on
FEP_ERR_IS_RESET       - FEP is reset, FEP probably crashed.
FEP_ERR_NO_CMDRING     - FEP program has no command mailbox, 
                         bad fepLoadOverride.
FEP_ERR_REPLY_TIMEOUT  - FEP reply timed-out. FEP probably in the
                         process of crashing but hasn't 
                         watchdogged yet.
FEP_ERR_BAD_REPLY_TYPE - FEP produced bad reply. SEU or bug
FEP_ERR_BAD_MBOX_STATE - FEP mailbox in wrong state. SEU or bug.

The Termination Codes are (normal and user-inflicted cases are in bold):

SMTERM_UNUSED            - Unused. Should never see this one.
SMTERM_STOPCMD           - Commanded to Stop i.e. normal term.
SMTERM_BIASDONE          - Bias-only Run completed
SMTERM_RADMON            - Radiation Monitor was asserted
SMTERM_CLOBBERED         - Clobbered by another start command
SMTERM_FEP_BIAS_START    - FEP Bias Processing did not start
SMTERM_FEP_DATA_START    - FEP Data Processing did not start
SMTERM_CCD_BIAS_START    - Start clock failed. CCDs for bias failed
SMTERM_CCD_DATA_START    - Start clock failed. CCDs for data failed
SMTERM_CCD_BIAS_STOP     - Stop clock failed. CCDs for bias failed
SMTERM_PROC_PARM_INVALID - Processing Parameter out of range
SMTERM_DEA_PARM_INVALID  - DEA Parameter out of range
SMTERM_FEP_PARM_INVALID  - FEP Parameter out of range
SMTERM_FEP_CONFIG_ERROR  - FEP Configuration Error
SMTERM_DEA_IO_ERROR      - I/O errors, or no CCD controllers on
SMTERM_FEP_IO_ERROR      - I/O errors, or no FEPs are on
SMTERM_UNSPECIFIED       - Reason is unspecified

Warnings

  1. Runs stopped due to radiation monitor may re-start later

    Science runs which terminate due to the assertion of the radiation monitor, will re-start once the monitor is de-asserted, unless a "Stop Science" is received.

  2. Runs may abort due to bad parameters

    Invalid parameters will cause a science run to abort during its setup stage. The report will set the termination code to either: SMTERM_PROC_PARM_INVALID , SMTERM_DEA_PARM_INVALID, SMTERM_FEP_PARM_INVALID, or SMTERM_FEP_CONFIG_ERROR.

  3. Stopping runs take time

    Upon receipt of a "Stop Science" command, ACIS attempts to complete the current exposure. If the system is in "Raw" mode, or if there are a large number of events in the exposures, this may take quite a while to finish. If, during that time, another "Start Science" command is received, the stop will be aborted and the FEPs will be reset. Depending on the timing, the resulting termination code may be SMTERM_CLOBBERED, or may indicate some form of FEP error.

  4. exposuresProduced is confusing

    The exposuresProduced field is badly named. Although its name implies that its the number of exposures clocked out of all of the CCDs, it is actually 1 plus the largest exposure number produced by any of the FEPs.

  5. exposuresSent is confusing

    The exposuresSent field indicates the sum of the number of exposures telemetered from all of the FEPs.


[PREVIOUS] [NEXT] [CONTENTS]
James E. Francis
Last modified: Wed Jan 12 13:59:48 EST