ADSIS8300¶
Overview¶
This is an areaDetector driver for SIS8300 family of digitizers from Struck Innovative Systeme. It has been tested on the SIS8300-L(2) and SIS8300-KU AMCs. ADSIS8300 driver inherits from asynNDArrayDriver. The driver exposes digitizers controling and monitoring features as a collection of EPICS records. Its primary use is with the generic firmware image from the vendor. The driver can also be inherited by the higher level areaDetector drivers that might work on specific firmware images such as for BPM or BCM systems.
Prerequisites¶
Linux kernel driver sis8300drv.
Functionality¶
The ADSIS8300 driver controls digitizer features such as clock source and frequency, trigger source, data acquisition, data transfer, and many more.
EPICS records¶
Apart from the the EPICS records inherited from the NDArrayBase.template
file,
the ADSIS8300 driver defines additional EPICS records, specific to the SIS8300 board
and its data channels.
Board wide EPICS records¶
These records are defined in the sis8300.template
file. They contain board
specific records.
Record name | Description | Record type | Access | Asyn driver info |
---|---|---|---|---|
$(P)$(R)DevicePathR | Linux device path (/dev/sis8300-X). | waveform XXX use stringin? | read | SIS8300.DEVICE_PATH |
$(P)$(R)MemorySizeR | AMC memory size in MB. | longin | read | SIS8300.MEMORY_SIZE |
$(P)$(R)MessageR | Driver status/error message. | waveform | read | SIS8300.DRIVER_MESSAGE |
$(P)$(R)NumSamples, $(P)$(R)NumSamplesR | Number of samples to acquire. Limits AAA .. BBB. | longout, longin | write, read | SIS8300.NUM_SAMPLES |
$(P)$(R)ClockSource, $(P)$(R)ClockSourceR | Clock source selection:
|
mbbo, mbbi | write, read | SIS8300.CLOCK_SOURCE |
$(P)$(R)ClockDivider, $(P)$(R)ClockDividerR | Clock divider value. Limits 1 .. 32. | longout, longin | write, read | SIS8300.CLOCK_DIVIDER |
$(P)$(R)TriggerSource, $(P)$(R)TriggerSourceR | Trigger source selection:
|
mbbo, mbbi | write, read | SIS8300.TRIGGER_SOURCE |
$(P)$(R)TriggerExternalLine, $(P)$(R)TriggerExternalLineR | Physical trigger line selection, only applies when using external trigger source with $(P)$(R)TriggerSource:
|
mbbo, mbbi | write, read | SIS8300.TRIGGER_EXTERNAL_LINE |
$(P)$(R)TriggerDelay, $(P)$(R)TriggerDelayR | Number of pre-trigger samples. Limits 0 .. -2046. XXX remove? | longout, longin | write, read | SIS8300.TRIGGER_DELAY |
$(P)$(R)TriggerRepeat, $(P)$(R)TriggerRepeatR | Number of trigger repetitions:
|
longout, longin | write, read | SIS8300.TRIGGER_REPEAT |
$(P)$(R)IrqPoll, $(P)$(R)IrqPollR | Acquisition done status determined by polling firmware register:
It is preferred to set $(P)$(R)IrqPoll to No for custom firmware builds, as this improves CPU performance. By not using the register polling software relies on firmware to report acquisition done status using the DAQ interrupt. Note that for the stock Struck firmware $(P)$(R)IrqPoll has to be set to Yes. |
bo, bi | write, read | SIS8300.IRQ_POLL |
$(P)$(R)Reset | XXX remove? what does this reset? | bo | write | SIS8300.RESET |
$(P)$(R)RtmType, $(P)$(R)RtmTypeR | RTM type selection:
Used only as an indicator for setting up attenuators if found on the RTM. XXX this seems to be possible only for DWC8300-LF with BPM application?! And there the attenuators are controlled by a different set of registers/PVs… consider removing this PV! |
mbbo, mbbi | write, read | SIS8300.RTM_TYPE |
$(P)$(R)SamplingFrequency, $(P)$(R)SamplingFrequencyR | ADC sampling frequency. If $(P)$(R)ClockSource is set to Internal then sampling frequency is derived from on-board oscillator value (250 MHz) divided by the $(P)$(R)ClockDivider value. The value is seen in the $(P)$(R)SamplingFrequencyR. For any other $(P)$(R)ClockSource selection user is required to enter the applied sampling frequency into $(P)$(R)SamplingFrequency and will also be seen in the $(P)$(R)SamplingFrequencyR. Limits AAA .. 125 MHz. | ao, ai | write, read | SIS8300.SAMPLING_FREQUENCY |
$(P)$(R)TickValueR | Time between two ADC samples. Derived from ADC sampling frequncy $(P)$(R)SamplingFrequencyR. | ai | read | SIS8300.TICK_VALUE |
$(P)$(R)AsynIO | See Asyn module | asyn |
Data channel EPICS records¶
These records are defined in the sis8300-channel.template
file. They contain per channel
specific records.
Record name | Description | Record type | Access | Asyn driver info |
---|---|---|---|---|
$(P)$(R)Name | Channel name. | stringout | ||
$(P)$(R)Control, $(P)$(R)ControlR | Channel enable / disable control. If channel is not enabled sample data will not be transferred from AMC memory to PV buffer. | bo, bi | write, read | SIS8300.CH.CONTROL |
$(P)$(R)Attenuation, $(P)$(R)AttenuationR | Attenuator value for I2C chip found on DWC8300-LF RTM. | ao, ai | write, read | SIS8300.CH.ATTENUATION |
$(P)$(R)InternalTriggerLength, $(P)$(R)InternalTriggerLengthR | longout, longin | write, read | SIS8300.CH.INTERNAL_TRIGGER_LENGTH | |
$(P)$(R)InternalTriggerCondition, $(P)$(R)InternalTriggerConditionR | bo, bi | write, read | SIS8300.CH.INTERNAL_TRIGGER_CONDITION | |
$(P)$(R)InternalTriggerOff, $(P)$(R)InternalTriggerOffR | longout, longin | write, read | SIS8300.CH.INTERNAL_TRIGGER_OFF | |
$(P)$(R)InternalTriggerOn, $(P)$(R)InternalTriggerOnR | longout, longin | write, read | SIS8300.CH.INTERNAL_TRIGGER_ON |