The arbitrary waveform generator has a limit for sample to be less than something like 1E7. Is there a way to have more than that? We are currently trying to build a timed loop for outputting a modulated waveform. The problem right now is that we want to output a 200 ms 50Hz modulated signal on a 3.5MHz carrier and pause for 2 or 3 sec and then loop back. We controlled the 200ms time by calculating the # of samples that a 200ms waveform needs and turn off the generator right after generation. But we can't do 200ms for 3.5MHz carrier since it requires # of samples more than the sample limit.
Digital signal acquisition and generation is designed to work continuously, which (in principle) would require unbounded ("infinite") sizes of data in (for digital output) or out (for digital input). What one usually does is take advantage of periodicity -- if you need to generate a 1KHz sinusoid for "as long as I need it", you can generate 1 second of the sine wave (with, say, 100,000 samples) and output the same waveform over and over.
I don't know the details of Virtual Bench, but the general idea is something like this:
Now it gets interesting. If the waveform doesn't change (i.e. if you want to play the 1KHz sinusoid "forever"), you can tell the hardware to use the same buffer over-and-over, which is called "regeneration", and you need do nothing until you tell the DAQ device to stop. On the other hand, if you want to change the waveform, you can simply fill the buffer with the next set of samples as soon as you tell it to start. Here is where "clocking" comes in -- your buffer has a finite size, so you want to fill it as fast as it empties.
I'm sure there are examples included with Virtual Bench that describe this process. Try them out.
Hi thanks for your reply!
We tried to use that periodicity property of the generator, but here is our problem: The output has to be paused right after 200ms for 3 secs, and to do that we have to use the timed sequences. Right now we have a hard time to keep track of the time that went by in a certain stage. So I guess our question is now how do we know for sure this much of time went by for the outputting stage and how much time is paused? We tried to use the "Measure Elapsed TIme" function. But It does not run in parallel with other stuff in the time sequence. i.e generation of the signal will wait until the counter finish counting.