The GX1649-1 features two mechanisms for Arbitrary Waveform Generation. If the data in a pattern is known completely before the waveform is needed, the data can be loaded to a RAM. When triggered, will continuously output the data looping through the samples until the waveform generator is disarmed. If the data in the pattern is generated ‘on-the-fly’ or if the RAM is too small to fit all of the data at once, the streaming option is a better option, and the on-board FIFO will be used to stream the waveform.
The following figure shows loading a waveform to the RAM:

GX1649-1 Waveform Generation
Configure the ARB group that we will output the waveform from. (GxAoArbSetGroupClock, GxAoArbSetGroupChannels)
Write data to RAM (GxAoArbWriteChannelWaveform)
Arm and Trigger the board to start waveform (GxAoArbArmGroup, GxAoArbTrigGroup)
When the waveform playback is completed, it should be disarmed (GxAoArbArmGroup)
The following figure shows streaming a waveform:

GX1649-1 Streaming a Waveform
Enable group streaming to change the waveform generation sampler to read from the FIFO instead of RAM. (GxAoArbEnableGroupStreaming)
Configure the ARB group that we will output the waveform from. (GxAoArbSetGroupClock, GxAoArbSetGroupChannels)
Write some data to the FIFO. (GxAoArbWriteStreamingData)
Setup the callback procedure that will refill your FIFO as it empties and enable the board to generate interrupts. (GxAoArbSetupStreamingInterrupt, GxAoArbResumeStreamingInterrupt)
Arm and Trigger the board to start waveform (GxAoArbArmGroup, GxAoArbTrigGroup)
When the waveform playback is completed, the interrupt should be disarmed (GxAoArbDisableStreamingInterrupt)