NI cDAQ-9172 User Guide and Specifications 38 ni.com
Buffered Digital Waveform Generation
A buffer is a temporary storage in computer memory for generated
samples. In a buffered generation, data is moved from a host buffer to the
NIcDA Q-9172 onboard FIFO before it is written to the C Series I/O
modules. Buffered generations typically allow for much faster transfer
rates than nonbuffered generations because data is moved in large blocks,
rather than one point at a time. The DO sample clock causes all lines in the
task to update at the same time.
One property of buffered I/O operations is the sample mode. The sample
mode can be either finite or continuous:
Finite—Finite sample mode generation refers to the generation of a
specific, predetermined number of data samples. After the specified
number of samples has been written out, the generation stops.
Continuous—Continuous generation refers to the generation of an
unspecified number of samples. Instead of generating a set number of
data samples and stopping, a continuous generation continues until
you stop the operation. There are several different methods of
continuous generation that control what data is written. These methods
are regeneration, onboard regeneration, and non-regeneration modes:
In regeneration mode, you define a buffer in host memory. The
data from the buffer is continually downloaded to the FIFO to be
written out. New data can be written to the host buffer at any time
without disrupting the output.
With onboard regeneration, the entire buffer is downloaded to the
FIFO and regenerated from there. After the data is downloaded,
new data cannot be written to the FIFO. To use onboard
regeneration, the entire buffer must fit within the FIFO size. The
advantage of using on board regeneration is that it does not require
communication with the main host memory once the operation is
started, thereby preventing any problems that may occur due to
excessive bus traffic or operating system latency.
With non-regeneration, old data is not repeated. New data must be
continually written to the buffer. If the program does not write new
data to the buffer at a fast enough rate to keep up with the
generation, the buffer underflows and causes an error.