mqdc

Name

mqdc -- Support for MESYTEC MQDC32 module

Synopsis


mqdc create name ?option value...?
mqdc config  name option value?..?
mqdc cget  name ?option?            
        

DESCRIPTION

The MQDC32 is a 32 channel charge sensing ADC. The mqdc allows users to create and use modules that support it.

OPTIONS

-base vme-address

Configures the module's base address. This must match the base address set in the module's rotary switches. If not explicitly configured (not recommended), this defaults to 0

-id id-8bits

This programs the unique 8 bit value that will appear in the data to identify it came from this module. Each module should be given a unique -id value. If not explicitly configured, (not recommended) this defaults to 0

-timestamp enabled | disabled

The module allows a timestamp or event sequence number to be put in the trailer for data from the module. If this option is not explicitly configured, it defaults to disabled which results in event sequence numbers being placed in the data.

-usethresholds enabled | disabled

If enabled, threshold values, programmed via the -threshold option are used to zero suppress the data from the module. If not explicitly configured, this defaults to enabled During testing it may be useful to turn this to disabled in order to check the actual pedestal values so that you know how to set the thresholds.

-thresholds 32-element-list

Provides a list of 32 thresholds, one for each channel. List element 0 is the threshold for channel 0 and so on. Each threshold must be in the range 0-0x1fff. If -usethresholds is enabled, channels with conversions below their thresholds are suppressed from the data returned for an event. If not configured, the default value is a list of 32 zeroes which, effectively, turns off zero suppression when -usethresholds is enabled.

-ipl IRQ-level

If useing the module to trigger a list with interrupts, this should be programmed with the interrupt priority level the module should use when making an interrupt request on the backplane. The default, if not configured is 0 which is suitable for use with the FRIB mvlc readout system. An value of zero disables interrupts. Values of 1-7 enable interrupts and define the IRQ line on which th module will request an interrupt.

-vector interrupt-status-id

If interrupts are being used, this configures the status id (vector) the module will put on the bus in response to an interruprt acknowledge (IACK). Legal values are 0-255. If not explicitly configured, this will default to 0.

-irqthreshold words

If interrupts are used, this determines the minimum number of words that must be buffered in the FIFO before an interrupt is requested. Valid values are between 0 and 0xffff. If not configured, this defaults to 1 which means that, if interrupts are enabled, the mdoule will interrupt as soon as any data hits the FIFO.

-multievent off | on | limited

Determines the multi-event readout mode. The default, if not configured is off. If limited is used then each read will return at most -maxtransfers words. on implies that a read, if large enough will transfer all of the data in the FIFO.

-maxtransfers words

When -multievent is limited, this determines the maximum number of words that can be transferred from the FIFO in a single read. Valid values 0-0xffff and the default, if not explicitly programmed is 1.

-countevents on | off

If not configured, this defaults to off. If on, one of the module registers, that counts the amount of data present will count events, not words. Note that at this point, that has no effect on readout as the transfer size is not determined by that register.

-skipberr on | off

If not configured, this defaults to off. That value is normally correct for FRIB. Off, causes the module to terminate transfers, when there is no more data with a BERR. If enabled, the transfer will transfer all of the requested words but an EOB word will indicate when the rest of the data are not meaningful. See the desription of register 0x6036 in the MQDC32 manual for more information about EOB.

-bankoffsets two-offset-list

Provides a shift of the data from the module by as much as +/- 1000. The value consists of a shift value for each bank of 16 channels. A value of 128 represents a shift of 0. If not programmed, the default is a two element list with values 128 for both elements, that is zero shift for both banks.

-gatemode common | separate

The module can be run with a common gate or as an effective pair of 16 channel modules. Each 16 channel module group is a bank. In common gate mode all 32 channels share a single gate and a read of the module will only return one packet of data. In separate gate mode, each bank has a separate gate and the module will return two packets of data per event, one for each bank. If not configured, this defaults to common.

-gatelimits two-element-list

Provides limits on the gate widts for each bank. By default, if not configured, this defaults to two elements of 255 which does not limit the gate. For more information about this and a table of values and the gate limits they provide, see the description of register 0x6050 and the next page in MQDC32 manual

-exptrigdelays two-element-list

Sets the experiment trigger delay. this value is in the range 0-0x3fff. If not programmed, this is a list of two zeroes. For more on this see the section: Delayed gating with experiment trigger in MQDC32 manual.

-inputcoupling0 -inputcoupling1 AC | DC

Sets the module's input coupling for bank 0 and 1 respectively. If not programmed, this will default to AC coupling.

-pulser on | off

Enables the test pulser. By default, if not programmed, this is off See, however -pulseramp to set the pulser amplitude.

-pulseramp amplitude

This sets the test pulser amplitude, when it is enabled via -pulser By default the value is 32 if not configured. This should result in conversions at bin 2000. See register 0x6072 in the MQDC32 manual.

-ecltermination on | off

Controls the ECL control bus termination. If the ECL Control lines are bussed, only the last module on the bus should be terminated. If on, the default, the terminators for the module's ECL control bus are enabled. This is only suitable for individually cabled ECL control bus cables.

-ecltiming enabled | disabled

Recall that the module can place a timstamp int the event. The clock that increments the timestamp is either the VME bus 16MHz clock or an external clock that can either be the gate1 input on the ECL bus or the Gate1 NIM input (but not both). If this parameters is enabled, the ECL gate1 input is programmed to provide a clock input and the FC input a timestamp reset. Note that the -timingsource must be set to external for this to mean anything. See, as well -nimtiming and -timingsource

-nimtiming enabled | disabled

If enabled, the NIM Gate1 input can be the source of the timestamp clock. See the discussion of timing in -ecltiming above.

-nimbusy busy | rcbus | full | overthreshold

Programs the meaning of the Busy output. If busy, then the output is asserted when the the module is busy. Note that in individually gated mode, this is asserted only when both banks are busy. rcbus allows the module to control Mesytec modules that support the Mesytec control bus. While we have support software for several modules we recommend, instead the use of Mesycontrol software along with an MRCC as the firmware in the controlled modules changes too rapidly for us to keep up with controls requirements. full indicates the module multi event buffer is full and overthreshold that the module's FIFO has more words than the -irqthreshold.

-timingsource external | vme

Sets the source of the timestamp clock. vme, the default if not configured, uses the VME backplane 16MHz clock to increment the timestamp counter. external requires that either -nimtiming or -ecltiming be enabled, (but not both), in which case, they provide the clock.

-timingdivisor divisor

This value is a scaledown factor for the timestamp clock. Note that 0 means 65536 and values can be in the range 0-0xffff. If not configured, this defaults to 1.

-resetlogic never | begin_run | extern_oneshot

Determines when the internal counters, including the timestamp are reset to zero. If never the counters run continously from power up. If begin_run (the default if not configured), the counters are cleared as the run is starting. Note that no attempt is made to synchronize this clear with the clear of other modules. In fact, there will be skew from with the modules earlier in the stack being cleared first. If extern_oneshot an external clear is used. Note that in the case the module is in a madchain modules programmed for begin_run clear have timestamps synchronously cleared but that will not synchronize with the clears of modules not in the same chain or not capable of being in chains. The most releable way to get a common clear is to use an external clear signal.

-multlowerlimit0 multiplicity

If the banks are run with a common gate, this represents the lower limit of the multiplicity filter for all channels. If separately, this represents the lower multiplicity limit for bank 0 (channels 0-15). If not configured, the default is 0.

-multlowerlimit1 multiplicity

IF the banks are run with separate gates, this is the lower limit of the multiplicity filter for bank 1 (channels 16-31). If common gates are used, this is ignored. If not configured, this parameter is set to 0.

-multupperlimit0 -multupperlimit1 multiplicity

See the previous two options. These parameter set the upper multiplicity limit for the multiplicity filter. As with the low limits, -multupperlimit0 is used when the banks are not split with separate gates. The default values, if not configured are 32 for -multupperlimit0 and 16 for -multupperlimit1. If I were using the module and running in split gates, I would probably set -multupperlimit0 to 16 just to be safe.

SEE ALSO