I've written a playback system in C# that uses multi-threading to support a producer/consumer streaming architecture. The producer thread reads complex (IQ) samples from a RAID and passes them into a concurrent queue. The consumer thread takes the data out of the queue and then writes it to the NI-5673 waveform buffer.
The issue I am having is that, once the RFSG has played the data that was initially loaded into the waveform buffer, the RF stream out of the module seems to increase rapidly. I see this issue with both my own code and NI’s example called “ArbitraryWaveformStreaming.2010,” which is downloaded with RFSG-16 .NET 4.0 support. I’ve come to this conclusion after recording a CW tone at a certain frequency for 10 seconds, then increasing the frequency by 100kHz. I repeated this process for the entire recording of 2min at 5MHz bandwidth. Given the amount of memory I chose to allocate for the waveform in the 5673, I calculated that it should take about 21 seconds for the initial waveform load to play. During this time more data would have been added to the buffer so that no underflow could occur. I observed that, at the end of the approx. 21 seconds indicating the end of the initial buffer load, the CW tones jumped in rapid succession to the final frequency that I had recorded. Every tone was seen, but not for the expected 10 seconds. The recording then finished playing with the CW tone held at the final recorded frequency for the remaining ~90 seconds. The NI example was slightly more behaved in that it did not make as many successive jumps, but play was still not smooth and still occurred for the first time after the initial buffer load had been played.
Any ideas as to why the skipping is occurring?