DataQuest Solutions have built up years of experience related to the requirements for very high-speed (MHz) signal capture and waveform generation. Our customers look to us to provide PC instrumentation cards, most usually for installation inside a PC, but also industrial chassis. We also offer complete solutions with cards and software installed. To capture or generate signals at MHz speeds need not be complicated process, certainly no more complicated than at slower sampling speeds, however it does bring with it some extra considerations. What follows is an explanation of these for someone new to this field or for a person who wishes for an update as to the associated technology.
When using analogue to digital (A/D) conversion the binary data that represents the captured signal needs to be transferred, stored and processed,careful consideration has to be made as to the bandwidth limitations of the computers interface with the card. This applies equally to where the programmer needs to do the reverse (i.e. generate a waveform), or indeed when using a digital I/O card and dealing with logic signals. Handling data associated with relatively low speed signals of 1MHz is well within the capabilities of many types of interface such as USB and Ethernet, however once the waveform speed goes above about 1MHz then internal computer fitment is the most common interface to handle the greater data bandwidth requirements and this is the type we will consider here.
DataQuest Solutions tackles the demands of very high-speed data transmission with the PC by using a range of "Spectrum" instrumentation cards which are suitable for the PCI, PCI-X and PCI-Express interfaces. Most computer owners are familiar with PCI , its been around for many years, but the PCI-X version may be less familiar, but can be readily obtained on many motherboards and gives over twice the bandwidth for data transmission. Note - the parallel PCI-X interface should not be confused with PCI-Express (PCIe), it is a completely different interface and uses a very high speed serial data transmission. Choosing PCI, PCI-X or PCI-Express is an important consideration and as everything hinges around the ability of the chosen slot interface to have sufficient bandwidth this is an important point to investigate. Here are some typical transmission speeds with our Spectrum M2i range cards:-
PCI: 100 Mbytes/sec, PCI-X: (high speed PCI) 200 Mbytes/sec, PCIe (PCI-Express single-lane): 130 Mbytes/sec.
Note this is not the theoretical maximum, which is higher, but taking into effect the currently available interface chips and system overheads. Also in PC operating systems the memory management is based on memory pages (normally 4 kByte = 4096 Bytes), during continuous data transfer data is allocated into these pages and different addresses have to be accessed, this slows down the process of streaming data. There is a way to improve this by utilising the drivers for our Spectrum range of high-speed cards, so raising the aforementioned transmission speeds by about 25%. Our Engineers at DataQuest Solutions will be pleased to provide more information on this.
The newest interface, PCI-Express, offers the greatest opportunities in terms of higher speeds in the future, indeed with our Spectrum range of cards PCIe provides the advantage of allowing multiple cards to be used in the same PC without having to share available motherboard transfer bus bandwidth. To calculate how much bus bandwidth your application will require, start by deciding the number of samples per second you wish to record (i.e. the speed), then note your preferred cards A/D or D/A converter resolution. For example to digitise a single waveform with an 8 bit (1 byte) converter at 100 million samples per second, the calculation of the bus transfer bandwidth would be thus:
(Sample rate * converter bytes) / 1048576
(100M samples per sec * 1 byte) / 1048576 = 95.367M bytes per second.
But why divide by 1048576? This is because a "Mega" byte is not 1 million bytes.... it is in fact 1024*1024=1048576 bytes as there are 1024 bytes in a computer kilo byte!
Logically a 16 bit converter (2 bytes) would double the result and the same for the 12 bit or 14 bit converter, as they too need a 16 bit "word" to hold the complete digitised value. A bandwith 95.367M bytes per second is within the bandwidth capabilities of the standard PCI bus, however taking our example above with a higher resolution converter (12, 14 or 16 bits) would certainly require the capabilities of the PCI-X bus to allow constant data streaming, unless that is you are willing to limit your overall acquisition period and rely more on the available instrumentation cards memory. Having the ability to use PCI-X interface is therefore of great benefit. This slot is commonly found on server motherboards, but these can be in a standard format for fitment into an office type of PC.
When data is transferred to or from a card using one the interfaces just mentioned, one of the problems is coping with the temporary effects of PC operating system "housekeeping", where it grabs priority over the card data transfer. To cope with this, memory installed on the cards is used as a temporary FIFO (First In First Out) buffer, so that if a brief interruption does occur during data transfer with the PC, no loss of data will occur. This FIFO buffer holds the extra data until the card has full access again to the PC bus and memory again.
All of our Spectrum M2i cards have at least 256Mbytes of memory as standard and can be upgraded to 4 Giga bytes, but for most situations the standard memory when used as a FIFO buffer has enough room to allow loss free transfer. On the PC the best place to store data, at least temporarily, is PC RAM. Even Giga bytes of PC RAM are of a relatively low cost, so it makes for an economic as well as a fast and efficient system. This brings us to an important point. The majority of MS Windows based PC systems are still 32 bit and as such can work with up to 4 Giga Byte of installed PC RAM, but the operating system will take up at least 0.5 Giga bytes of this and in reality of the remaining address space only 2 Giga bytes might actually be available for signal data! This can be extended however with special options at boot up, but don't rely on more than about 3 Giga bytes in total. Fortunately with the advent of 64 bit Linux and Windows operating systems - for which we can supply drivers, these restrictions need no longer apply and the programmer can work with as much memory as his motherboard can hold - well beyond 4Gbytes and increasing all the time.
Acquired signal data will usually end up being stored Hard Disk Drive (HDD) and with the Spectrum M2i/M3i card driver it is even possible to do this real time with the signal capture going on, however note that the HDD is a bottleneck to really fast data capture. Even the best SATA drive might only work to 50 to 60 Mbytes/sec and perhaps only half this rate in many cases. One way around this is with a RAID system using two or more SATA devices working in parallel, where simultaneous access to multiple disks allows data to be written to or read from a RAID array faster than would be possible with a single drive. Having two drives can nearly double the speed and this set up is called RAID 0. The implications to data transmission we have discussed so far similarly apply to many card types (A/D, D/A and digital I/O) so that a number of cards could be synchronised to work together in the same PC, indeed all Spectrum cards can be used in this way.
Going to the front end of our instrumentation card, signal capture or signal generation needs to be controlled and this is normally done through triggering. This allows a signal to be captured (or generated) only when it is needed, cutting down the amount of data required and thus data rates. This can be software controlled, simply by a screen click, but at mega sample rates triggering is normally controlled by looking at the amplitude of the actual signal, or a separate external digital pulse, or indeed a digital pattern (should the application relates to the use of a digital I/O card). Time stamping of the trigger is often very useful here, particularly if there are multiple trigger events, so events and data can be correlated later. Spectrum hardware has this option.
So we know something of very high-speed signal data, its storage and control and related hardware issues, but it is the software driver that allows the user to set parameters and have overall control of the system. Programming of the installed card(s) can be with many types of text code. It all comes down to the drivers supplied with the instrumentation. The Spectrum drivers are very versatile allowing text code programming in many types of code, most commonly Visual Basic, Delphi and C++, the latter most recommended for best performance and versatility, with many examples provided to get the programming underway. Other third party packages can be used too, these being LabVIEW™, LabWindowsCVI™, MATLAB™, VEE™, DASYLab™ or MS Excel. Every Spectrum card purchased comes with SBench6™, a menu driven signal capture, analysis / measurement software package, complete with a scope type display and easy access to board programmable options, allowing a basic working system to be up and running within a few minutes. This is a very good way to get familiar with a new system or for more demanding applications where study of large data sets is required. For more information about software and programming options for our Spectrum high-speed instrumentation please click here
For more details and advice on putting together a ultra high speed system, DataQuest Solutions are happy to discuss your applications. Please also visit our Web site with its links to datasheets and operation notes for an extensive range of PCI/PCI-X and PCI-Express cards, plus the PXI and compact PCI chassis mounted versions, we provide resolutions 8 to 16 bit, with sampling rates from 1K to 1 Giga samples/second.
Click here for more information about PCI-X.
Click here for more information about PCI-Express.
© Dataquest Solutions 30.01.08. Updated 22.06.12