fdhwlib  2.0.25
Introduction to Programming with the Register Model

The interface to the DAQ hardware is defined by a number registers, bitfields and registers vectors.

The register model of the DAQ Electronics is implemented in the class Subrack. The class contains two members according to the two types of boards available for the Fluorescence detectors. The function of both boards, is controlled by a number of 32bit wide registers. The following table summaries the availble registers as well as the bit fields defined in the registers. Some registers are combined the 64bit entities. The length of the information in bits can be found in the column "Size".

Single registers and bitfield can be accessed with read and write functions.

unsigned long read();
void write(unsigned long data);

In some cases register vectors are used. This is necesssary to access properties of individual pixels or other items that occure more than once in single board. For these registers an addition element number "N" has to be specified.

unsigned long read(int elem);
void write(int elem, unsigned long data);

In order to retrieve data from longer registers or memories the data is passed by reference. The memory of the required size has to be allocated in the calling function.

void read(unsigned long *data);
void write(unsigned long *data);

Other access options can be found in the class documentation. Follow the links in the "Classes" column to find out about the specific register implementation.

To access the registers given in the register summary table all column in the "Instance" part have to be combined with C-like arrows.

Subrack *s;
s = new Subrack();
// Check for all available slots
s->checkSlots();

s->theSlt->status->read();
s->theSlt->status->powerFail->read();
Slt
InstanceClassesNSize
theSltSubrackBoard, Slt------
controlBaseRegister, SltControlReg32
triggerEnableBaseRegisterItem6
triggerSoftwareBaseRegisterItem1
triggerRightBaseRegisterItem1
triggerLeftBaseRegisterItem1
triggerCameraBaseRegisterItem1
triggerGlobalBaseRegisterItem1
inhibitEnableBaseRegisterItem4
inhibitSoftwareBaseRegisterItem1
inhibitPagesFullBaseRegisterItem1
inhibitGlobalBaseRegisterItem1
inhibitFrontBaseRegisterItem1
ppsEnableBaseRegisterItem1
testPulseEnableBaseRegisterItem2
testPulseSoftwareBaseRegisterItem1
testPulseFrontBaseRegisterItem1
testPulseShapeBaseRegisterItem1
runTestBaseRegisterItem1
testSltBaseRegisterItem1
pciIntEnableBaseRegisterItem1
ledBaseRegisterItem

1

statusBaseRegister, SltStatusReg32
fltIrqBaseRegisterItem1
watchDogErrorBaseRegisterItem1
pixelBusParityErrorBaseRegisterItem1
ppsErrorBaseRegisterItem1
clockErrorBaseRegisterItem4
gpsErrorBaseRegisterItem1
vttErrorBaseRegisterItem1
fanErrorBaseRegisterItem1
softwareIrqBaseRegisterItem1
eventReadyBaseRegisterItem1
pageReadyBaseRegisterItem1
pagesFullBaseRegisterItem1
fltTimeoutBaseRegisterItem1
semaphoreBaseRegisterItem3
inhibitBaseRegisterItem1
inhibitSourceBaseRegisterItem4
inhibitSoftwareBaseRegisterItem1
inhibitPagesFullBaseRegisterItem1
inhibitGlobalBaseRegisterItem1
inhibitFrontBaseRegisterItem1
gps1BaseRegisterItem1
pgs2BaseRegisterItem1
fltStatusBaseRegisterItem1
irqBaseRegisterItem

1

commandBaseRegister, SltCommandReg32
setInhibitBaseRegisterItem1
clearInhibitBaseRegisterItem1
softwaretriggerBaseRegisterItem1
testPulseStartBaseRegisterItem1
configureBaseRegisterItem1
resetSltBaseRegisterItem1
resetFltBaseRegisterItem1
softwareInterruptBaseRegisterItem1
clearCounterBaseRegisterItem1
enableCounterBaseRegisterItem1
disableCounterBaseRegisterItem

1

interruptRequestBaseRegister, SltInterruptReg32
fltIrqBaseRegisterItem1
watchDogErrorBaseRegisterItem1
pixelBusParityErrorBaseRegisterItem1
ppsErrorBaseRegisterItem1
clockErrorBaseRegisterItem4
gpsErrorBaseRegisterItem1
vttErrorBaseRegisterItem1
fanErrorBaseRegisterItem1
softwareIrqBaseRegisterItem1
eventReadyBaseRegisterItem1
pageReadyBaseRegisterItem1
pagesFullBaseRegisterItem1
fltTimeoutBaseRegisterItem

1

interruptMaskBaseRegister, SltInterruptReg32
fltIrqBaseRegisterItem1
watchDogErrorBaseRegisterItem1
pixelBusParityErrorBaseRegisterItem1
ppsErrorBaseRegisterItem1
clockErrorBaseRegisterItem4
gpsErrorBaseRegisterItem1
vttErrorBaseRegisterItem1
fanErrorBaseRegisterItem1
softwareIrqBaseRegisterItem1
eventReadyBaseRegisterItem1
pageReadyBaseRegisterItem1
pagesFullBaseRegisterItem1
fltTimeoutBaseRegisterItem

1

requestSemaphoreBaseRegister332
versionBaseRegister, SltVersion32
fpgaVersionBaseRegisterItem8
docVersionBaseRegisterItem12
projectBaseRegisterItem

4

pixelBusPErrorBaseRegister32
pixelBusEnableBaseRegister32
pixelBusTestBaseRegister32
auxBusTestBaseRegister32
debugStatusBaseRegister32
deadTimeBaseRegister, SltLongRegister64
vetoTimeBaseRegister, SltLongRegister64
runTimeBaseRegister, SltLongRegister64
setSecCounterBaseRegister, SltSetSecondCounter32
secCounterBaseRegister32
subSecCounterBaseRegister

32

pageManagerBaseRegister, SltPageManagementReg32
releaseBaseRegisterItem1
oldestPageBaseRegisterItem6
readyBaseRegisterItem1
nextPageBaseRegisterItem6
fullBaseRegisterItem1
freePagesBaseRegisterItem7
resetBaseRegisterItem

1

triggerTimingBaseRegister, SltTimingReg32
endPageDelayBaseRegisterItem11
triggerWindowBaseRegisterItem

3

pageSelectBaseRegister, SltPageSelectReg32
pageNumberBaseRegisterItem6
setPageBaseRegisterItem

1

numberOfPagesBaseRegister32
pageNumbersBaseRegister, SltByteRegister648
eventStatusBaseRegister, SltEventStatusMem64128
timeStampSecBaseRegisterItem32
timeStampSubSecBaseRegisterItem24
allTriggerSourcesBaseRegisterItem5
triggerTimeBaseRegisterItem11
pageStartBaseRegisterItem10
firstTriggerSourceBaseRegisterItem

5

readoutControlBaseRegister, SltReadoutControlReg32
releaseBaseRegisterItem1
enableBaseRegisterItem1
resetBaseRegisterItem

1

readoutStatusBaseRegister, SltReadoutStatusReg32
oldestBufferBaseRegisterItem6
readyBaseRegisterItem1
newBufferBaseRegisterItem6
noBufferBaseRegisterItem1
dmaEndBaseRegisterItem1
busyBaseRegisterItem1
enabledBaseRegisterItem

1

bufferSelectBaseRegister, SltPageSelectReg32
pageNumberBaseRegisterItem6
setPageBaseRegisterItem

1

readoutDefinitionBaseRegister2048x32
tpTimingBaseRegister128x32
tpShapeBaseRegister

512x32

sensorStatusBaseRegister, SltI2CCommandReg32
dataBaseRegisterItem8
commandBaseRegisterItem10
writeReadBaseRegisterItem1
errorBaseRegisterItem1
busyBaseRegisterItem

1

epcsStatusBaseRegister, SltEPCSCommandReg32
dataBaseRegisterItem8
commandBaseRegisterItem10
errorBaseRegisterItem1
busyBaseRegisterItem

1

boardIdBaseRegister, BaseBoardIdReg64
boardIdLowBaseRegisterItem32
boardIdHighBaseRegisterItem16
slotIdBaseRegisterItem5
crcOkBaseRegisterItem

1

eepromControlBaseRegister, SltEEPROMControlReg64
offsetBaseRegisterItem16
lengthBaseRegisterItem

8

eepromBufferBaseRegister, SltByteRegister2568
pixelTriggerBaseRegister14000x32
multiplicityBaseRegister500x32
sltTriggerBaseRegister4000x32
unpackPixelTriggerBaseRegister20000x32
unpackMultiplicityBaseRegister1000x32
adcDataBaseRegister

32768x32

Flt
InstanceClassesNSize
theFlt[n]SubrackBoard, Flt------
statusBaseRegister, FltStatus32
powerFailBaseRegisterItem1
pll1UnlockedBaseRegisterItem1
pll2UnlockedBaseRegisterItem1
abTypeBaseRegisterItem2
interruptSourcesBaseRegisterItem8
interruptRequestBaseRegisterItem

1

controlBaseRegister, FltControl32
standbyBaseRegisterItem1
ledBaseRegisterItem1
testpulseEnableBaseRegisterItem

1

commandBaseRegister, FltCommand32
softwareInterruptBaseRegisterItem1
tpResetBaseRegisterItem

1

versionBaseRegister, FltVersion32
fpgaRevisionBaseRegisterItem8
fpgaVersionBaseRegisterItem8
docVersionBaseRegisterItem12
projectBaseRegisterItem

4

boardIdBaseRegister, BaseBoardIdReg64
boardIdLowBaseRegisterItem32
boardIdHighBaseRegisterItem16
slotIdBaseRegisterItem5
crcOkBaseRegisterItem

1

interruptMaskBaseRegister, FltInterrupt32
configErrorBaseRegisterItem1
syncErrorBaseRegisterItem1
hitrateOverflowBaseRegisterItem1
parameterErrorBaseRegisterItem1
slotIdBaseRegisterItem

5

interruptRequestBaseRegister, FltInterrupt32
configErrorBaseRegisterItem1
syncErrorBaseRegisterItem1
hitrateOverflowBaseRegisterItem1
parameterErrorBaseRegisterItem1
slotIdBaseRegisterItem

5

hitrateMeasureEnableBaseRegister32
pixelTriggerSettingsBaseRegister64
runControlBaseRegister, FltRunControl32
storeDataBaseRegisterItem1
runADCBaseRegisterItem1
runFilterBaseRegisterItem1
runTriggerBaseRegisterItem1
deltaMaxBaseRegisterItem4
filterLengthBaseRegisterItem6
selfTestrBaseRegisterItem

1

statisticSetBaseRegister, FltStatisticControl32
samplesBaseRegisterItem16
offsetBaseRegisterItem12
enableBaseRegisterItem1
accessTestBaseRegister32
hitrateControlBaseRegister, FltHitrateControl32
timeBaseRegisterItem4
windowBaseRegisterItem9
hitrateMarginsBaseRegister, FltHitrateMargins64
marginLBaseRegisterItem10
marginLLBaseRegisterItem10
marginLLLBaseRegisterItem10
marginHBaseRegisterItem10
marginHHBaseRegisterItem10
marginHHHBaseRegisterItem10
offsetBaseRegister32
gainBaseRegister2432
hitrateBaseRegister, FltHitrate2432
hitrateBaseRegisterItem2416
overflowBaseRegisterItem1
testPatternBaseRegister2432
periphStatusBaseRegister, FltPeriphStatus332
pageNumberBaseRegisterItem36
pageReceiverErrorBaseRegisterItem31
statisticUnitErrorBaseRegisterItem31
pll1UnlockedBaseRegisterItem31
pll2UnlockedBaseRegisterItem31
fidBaseRegisterItem34
statisticBaseRegister, FltStatistic2464
sumBaseRegisterItem2425
sumSqBaseRegisterItem, FltSignedItem2432
thresholdBaseRegister, FltThreshold2432
actualBaseRegisterItem2416
previousBaseRegisterItem2416
adcStettingsBaseRegister, FltPeriphRegister332
ramDataBaseRegister241024x32