High-Speed Digitizers

cancel
Showing results for 
Search instead for 
Did you mean: 

Choosing a PXIe controller for streaming 200 MBps

ESD,

Have you benchmarked doing transfers the "normal" way, without using DMA?  If setting up DMA transfers creates additional overhead, then for short samples (< ~200 us?) maybe it is not time efficient?

You might be able to test the hypothesis that the overhead of setting up a record transfer is the rate-determining step by watching your CPU load.  I'm just guessing but I don't think the Masonic handshaking for DMA transfers over the PCI bus ought to be keeping the CPU busy the whole time.  If your CPU load is high, then there might be some hope for using C, LabWindows code, or a somehow redesigned VI and getting a higher transfer rate.  If CPU load is low, then the problem is more likely to be low-level and much harder if not impossible to solve.

Just my two, well, one cent.
0 Kudos
Message 11 of 14
(4,669 Views)

Topher C,

 

 

For more info on DMA transfers and our Digitizers check out this forum.  ESD is posting similar questions (as he/she mentioned in his/hers first post on this forum).  

 

 

For continuous acquisition using PXIe technology, the bottleneck of your system will be your disk-write speed.  With a standard PXI controller hard drive the write speed is around 40 MB/s.  However, if you move to a RAID-0 solution then you could possibly achieve speeds up to 600MB/s with a “x4” cabled configuration.

 

 

If you need to stream 153 MB/s, then the PXIe specifications with a RAID-0 “x4” systems sounds like it meets all of the requirements. 

 

 

I found the above information from the following link.

 

 

High-Speed Data Streaming: Programming and Benchmarks 

 

 

It doesn't seem like I can even clear part of an actively streaming record and free up the memory.  Is this true?”

 

 

In LabVIEW or LabWindows/CVI you can set the Enable Records > Memory attribute to be true.  This allows the on-board memory to act as a circular buffer, essentially starting at the beginning when you reach the end of the memory.  Something to keep in mind is that if you are not fetching fast enough then you will lose samples as they will be overwritten eventually.

 

 

I hope this helps!

 
Ryan N
National Instruments
Application Engineer
ni.com/support
0 Kudos
Message 12 of 14
(4,648 Views)

Since we have two subjects on this topic, I'm going to try to answer both questions as completely as possible here.

Re-arm time is not normally affected by PCI bandwidth.  So the digitizer should be able to acquire and store the waveforms just fine, but you may be limited in how long it can sustain that based on how much memory is on the device and how fast you are able to retrieve data.


Normally each channel and record fetched from a digitizer involves starting and stopping a transfer of data from the onboard memory of the device to host memory.  That is, the data is copied on demand because the device can often produce data at a rate that far exceeds the bus bandwidth of the host, and only the requested data is transferred even if many times that are actually stored on the device.  This introduces some transactional overhead.  In NI-Scope 3.3, because of feedback from customers wanting to get multiple records off the digitizer as fast as possible, we added an optimization that made it possible to coalesce these reads into a single board->host transaction to reduce the overhead.

A normal digitizer acquisition tries to maximize the available memory for a record to make the fetch position more flexible.  For example, if a digitizer has 8MB of memory per channel, and you configure the digitizer to capture one record of 1000 points - all 8MB are used for buffering history until the reference trigger occurs (typically the configured analog edge trigger).  By using all the memory, the user can still fetch more history beyond the length of their acquisition - perhaps back to the start of acquisition - as long as the data they want to look at has not been overwritten yet.  If the user specifies more than one record, the available memory is split evenly and maximally across all configured records.

The multirecord fetch optimization reduces the transactional overhead by grabbing more data in one pass (including some extra data that the user did not request).  This is only enabled if the amount of excess data is small.  This can often require the user to configure the digitizer to "Enable Records More Records than Fit in Memory" because the onboard format of data is more compact - it does not spread records out, it allocates a record the minimum size of memory to contain the requested record size, rounded up to the hardware's natural boundaries.

With these optimizations enabled, depending on the original size of fetch and the number of records being fetched at a time, users can see dramatic improvements in the effective transfer rate.  The exact rate is situationally dependent, and if you would like more specific numbers before buying a system, I'd suggest escalating the request through your salesperson.  However, multirecord fetch rates that approach the limits of the bus bandwidth are typical.

This optimization is available on all SMC devices except for the 5105 (presently the 5122, 5124, 5142, 5152, 5114, 5922).  The data format is slightly different on the 5105, so the optimization is not yet available for it - although it is likely that it will be available in a future release of NI-Scope.  If you have a 5105 and are interested in evaluating performance of this optimization before it is generally available, again - please escalate that through your salesperson.

So, for a LabVIEW user wanting to use this - I would recommend testing your application with the niScope property node "Horizontal->Enable Records > Memory" set to True.  The C attribute is NISCOPE_ATTR_ALLOW_MORE_RECORDS_THAN_MEMORY.  This will also disable warnings about configuring the digitizer for an acquisition it cannot store completely in onboard memory, but will enable compact storage of the records.  This property also allows you to free up memory for new records by fetching them out of memory while the acquisition is in progress, enabling you to fetch say 1 million records on a device that only has onboard space for 100,000.


* It is possible for re-arm time to be affected if the PCI bus is being heavily utilized by many devices such that the digitizer is deprived of bus bandwidth to transfer low bandwidth acquisition information.  There is separate, limited onboard memory to queue up this information (whch contains timestamp data about when the records started, stopped and how much data was stored).  For a single board case - this should peak at around 7MB/s for our fastest rearming digitizer triggered at its highest rate.  If the system does get overloaded, the board stalls the start of the record to prevent loss of data.  This should never happen in any reasonable scale system - an 8 slot chassis is clearly fine.  However, if you are rearming many records as fast as possible, this factor will throttle your maximum waveform transfer bandwidth down accordingly.

0 Kudos
Message 13 of 14
(4,644 Views)
As a follow-up. As of NI-Scope 3.5 - the 5105 (and all SMC devices supported by NI-Scope 3.5) support the multirecord optimization.
0 Kudos
Message 14 of 14
(4,188 Views)