The functionality of VMUSBReadout is driven by the operating characteristics of the VM-USB itself. For that reason, a short overview of its operating principles will be provided here. Only enough detail is provided concerning the device to understand how to use the VMUSBReadout program. If you would like to know more about its operational characteristics, you can download its manual from the Wiener website.
The VM-USB operates in either interactive mode or data acquisition mode. When in interactive mode, the user can execute VME operations and access the resulting data on the fly. In acquisition mode, on the other hand, the VM-USB acts autonomously according to a predefined set of VME-operation lists, a.k.a. stacks, and their corresponding trigger conditions. When a stack's trigger condition is satisfied, the VM-USB executes the list of VME operations and stores the resulting data in its internal memory buffer for later read out. In this mode the device can no longer be configured and, besides causing stacks to execute or transitioning back to interactive mode, the device will only accept read operations. For this reason, the user must set up these stacks and define the trigger conditions that should elicit their execution prior to entering autonomous data taking mode.
There are three different means by which a stack might be caused to execute. They are:
External logic signal to NIM input 1
Internally-generated, periodic trigger
Furthermore, the device accommodates the definition of 8 separate stacks each with their own trigger condition. In this way, the user can cause different pieces of hardware to be read out in different scenarios. The stacks are enumerated by an index between 0 and 7. Stack 0 is the index of the default event stack that reads out hardware on an event-wise basis and stack 1 is the stack used for scaler readout. The event stack can be triggered by a NIM signal at input 1 or an interrupt, whereas the scaler stack will be triggered by the internally-generated, periodic trigger. The other 6 stacks are used for executing interrupt driven stacks. In VMUSBReadout, stack 7 is used by the slow-controls server for monitoring slow-controlled hardware.