When Neuroscience labs in the University of Montreal were required to port a "legacy" ISA-based data acquisition system to a National Instruments Multifunction DAQ PCI-based system, the software engineer sought out a means to speed up the process whilst ensuring that performance was not compromised. WinDriver provided a user-friendly tool that would enable easy user-mode development of PCI drivers running under Windows 2000 while meeting the performance requirements of the system.
The in-house project for the Neuroscience Group at the University, to be part of the department's custom-made software family, includes data acquisition, experiment control and video analysis applications that had previously been developed in-house. This particular project was a real-time data acquisition application used in several research labs that are part of the CRSN (Centre de Recherche en Sciences Neurologiques - Neurological Science Research Center) at the University of Montreal. The research labs conduct experiments in which data is acquired in different configurations for each particular experiment. The software application (called Sinai) had to be generic in that it had to fit the data configuration acquisition for each type of experiment.
The application was written with Visual C++. The application is split into 3 major components: the main .EXE file, a DLL that is responsible for all the calls to the hardware, and an interrupt routine that sits in a driver. This application was originally based on an ISA data acquisition board running Windows 98 and had been used by members of the Neuroscience Group for several years. In order to interface to newer PCI boards and use Windows 2000/XP, a new DLL & Driver needed to be written. WinDriver was chosen to help in the transition. WinDriver's is well integrated with Visual C++ - an important factor for the department when making their driver development tool choice.
The software is interrupt-driven real-time data acquisition software using National-Instruments (NI) DAQ PCI-boards. High performance was an important criteria as the system has to handle a massive amount of data and processing in real-time. For example acquire/store to disk/display on screen- of multiple groups of channels simultaneously, with each group consisting of 1 to 64 channels of analog data at between 1 to 100Khz sample rate. Some of the data must be analyzed in real-time for event detection, and output some analog/digital control signals with less than 1 ms accuracy. Experiments can last from a few seconds to a few hours and, in most cases, also need to be synchronized to different external events (e.g TTL signals or video time-code generators).
![]() |
The most important factor when deciding to purchase WinDriver was performance, and the "Kernel Plug-in" technology was the selling point. For example, IRQ (interrupt request) events are generated by the PCI cards at rates that range from 1 to 5 Khz. As data must be collected and analyzed in real time and control signals must be outputted if needed, constant & fast response times (low latency) to the IRQs are required. Windriver is exceptionally fast in relaying the IRQ requests to the ISR (Interrupt Service Routine). The following is a configuration example of a particular experiment where two groups of channels need to be continuously acquired. The first one consists of 2 channels at 50Khz, and the second one has 40 channels at 1Khz. 'Spike-trigger-averaging' on frames of data is done with the first group. These groups are shown with a scope-like display on the screen, and are also saved to disk files. Large buffers and a communication structure are allocated in the DLL with WinDriver and are shared with the Kernel Plug-In. This way, the ISR can directly fill these buffers and keep the main application updated (no data copying or message passing necessary).
To conclude, a quote from Philippe Drapeau, the Neuroscience lab software engineer at the University of Montreal and developer of the data acquisition application: "WinDriver provided ease of use and satisfied our performance requirements. Furthermore, the Jungo support team provided excellent support. After trying the initial 2 months free technical support that came with the initial purchase of WinDriver, we decided to get the 'support-subscription' and it was really worth it. The Jungo support team is really outstanding in answering technical questions & resolving driver development problems."
