Chapter 5 Analog Output
© National Instruments Corporation 5-3 NI USB-621x User Manual
– Hardware-timed acquisitions can use hardware triggering.
Hardware-timed operations are buffered. During hardware-timed 
AO generation, data is moved from a PC buffer to the onboard 
FIFO on the USB-621x device using USB Signal Streams before 
it is written to the DACs one sample at a time. Buffered 
acquisitions allow for fast transfer rates because data is moved in 
large blocks rather than one point at a time.
One property of buffered I/O operations is the sample mode. The 
sample mode can be either finite or continuous:
• 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 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 
three methods of continuous generation that control what data 
is written. These methods are regeneration, FIFO 
regeneration, and non-regeneration modes.
Regeneration is the repetition of the data that is already in the 
buffer. Standard regeneration is when data from the PC buffer is 
continually downloaded to the FIFO to be written out. New data 
can be written to the PC buffer at any time without disrupting the 
output.
With FIFO regeneration, the entire buffer is downloaded to the 
FIFO and regenerated from there. Once the data is downloaded, 
ne
w data 
cannot be written to the FIFO. To use FIFO regeneration, 
the entire buffer must fit within the FIFO size. The advantage of 
using FIFO 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.
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.