Waveform Fundamentals Direct DMA

NI Signal Generator

Waveform Fundamentals
Direct DMA

Direct DMA can be used to transfer waveform data to the signal generator onboard memory at rates well beyond the typical 5 to 30 MB/sec range in a standard PC-based architecture. To achieve such high rates, Direct DMA establishes a direct connection between the signal generator onboard memory and a specialized waveform data source. Direct DMA is commonly used to stream waveform data from disk at data rates of greater than 100 MB/s.

In a standard PC-based architecture playback rates to the 5 to 40 MB/sec range are limited by the following factors:

  • Shared data paths through the PCI controller, I/O bus, CPU, and memory that divide down bandwidth
  • Latencies introduced by the operating system and application software managing data flow
  • Non-deterministic operating system management of file I/O

For example, in a standard PC-based architecture, downloading a waveform to the onboard memory of your signal generator requires the following process for every 4,096 byte segment of physical memory:

  1. The signal generator retrieves an address identifying the location of the data segment in the host memory.
  2. The signal generator uses the address to request transfer of the data segment in the host memory.
  3. The signal generator downloads the data to the onboard memory of the signal generator.
  4. Steps 1-3 repeat every 4,096 bytes until the waveform data is fully downloaded.

To download a 16 MB waveform (16,777,216 bytes), this process repeats 4,096 times (16,777,216 bytes/4,096 bytes).

The direct connection established by Direct DMA to the data source is able to minimize or eliminate the factors that limit playback rates. To download data to the onboard memory of the signal generator with Direct DMA, the following process occurs only once:

  1. The signal generator retrieves an address identifying the location of the waveform data source. This address generally refers to a large window of physically contiguous memory.
  2. The signal generator uses the address to contact the waveform data source.
  3. The signal generator requests the data segment and size from waveform data source. In this case, the size requested by the signal generator can be fairly large (for example, 16 MB).
  4. The signal generator downloads the data to the onboard memory of the signal generator from the waveform data source in one operation.

The transfer process is much faster and more efficient because an address to the waveform data is requested once (in this case, the address is to the waveform data source).


Related Topics