When performing a digital waveform operation, you either can perform software-timed or hardware-timed generations.

Software-Timed Generations

With a software-timed generation, software controls the rate at which data is generated.

Software sends a separate command to the hardware to initiate each update. In NI-DAQmx, software-timed generations are referred to as on-demand timing. Software-timed generations are also referred to as immediate or static operations. They are typically used for writing a single value out, such as a constant digital value.

Hardware-Timed Generations

With a hardware-timed generation, a digital hardware signal controls the rate of the generation. This signal can be generated internally on the USB-6451 or provided externally.

Hardware-timed generations have several advantages over software-timed generations:

  • The time between samples can be much shorter.
  • The timing between samples can be deterministic.
  • Hardware-timed acquisitions can use hardware triggering.

Hardware-timed operations transfer data to the USB-6451 more efficiently by transferring a larger block of data rather than one point at a time, allowing for much higher update rates. The sample mode can be either finite or continuous.

  • Finite sample mode—Generates a specific, predetermined number of data samples. Once the specified number of samples has been written out, the generation stops.
  • Continuous sample mode—Generates 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 different methods of continuous generation that control what data is written. These methods are regeneration, FIFO regeneration, and non-regeneration modes:

  • Regeneration—Repeats 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. Use the NI-DAQmx write property RegenMode to allow (or not allow) regeneration. The NI-DAQmx default is to allow regeneration.
  • FIFO regeneration—Downloads the entire buffer to the FIFO and regenerates it from there. Once the data is downloaded, new 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. Use the NI-DAQmx DO channel property UseOnlyOnBoardMemory to enable or disable FIFO regeneration.
  • Non-regeneration—Does not repeat old data. 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.