RF Measurement Devices

cancel
Showing results for 
Search instead for 
Did you mean: 

Configure for IQ.vi - continuous acquisition

The example program "ni5660 - Fetch IQ Data.vi" is configured for continuous acquisition.

 

The Help document of the "Configure for IQ.vi" states that if the "Continuous" option is chosen, that the VI ignores the "time duration" input.  This certainly makes sense...since if you wanted to do Continuous acquisiton, you wouldn't need to define a length of time over which to acquire data.

 

Later in the example program...."Fetch IQ.vi" is called, which goes and grabs data from the digitizer.  This VI has a "# of samples to read" input, which presumeably controls how big a chunk the PC is asking the digitizer buffer for. 

 

Intuition would suggest that in Continuous mode...with the "time duration" input ignored...that if I were to plot the IQ data each time through the 'fetch' loop, that I would end up with data sets the size of "# of samples to read" from the Fetch IQ.vi.


However...this isn't what happens.  If you look at the data that gets plotted...the number of samples IS dependent on the "time duration" input.  And the "# of samples to read" on the Fetch IQ.vi doesn't seem to do anything (though...if you don't set it high enough, you might eventually overrun the buffer).


What's going on here?  It seems like what's really happening is that instead of real continuous acquisition, the digitizer is instead collecting discrete chunks of data, continuously (a big difference!). 

 

For example...if you were to send in an FM signal and put the FM demodulator VI inside the 'fetch' loop....you'd see that over time there are discontinuities which are periodic with the "time duration" input which is supposed to be ignored.  This suggests that there's actually some finite amount of time between digitizer 'chunks' and that things aren't really continuous.


So....does "Continuous" really mean continuous, or does it mean, "the A/D sample a certain amount over and over"?

 

---

Brandon

 

 

 

 

0 Kudos
Message 1 of 5
(6,392 Views)

Hello Brandon,

 

After reading over your post, it looks like you noticed that the sample acquired are dependent upon the time duration. Can you explain how you tested this?

 

I am going to look for the hardware to test this out on my end. If I find any more information about this, I will definitely post it here. Thanks.


Jim St
National Instruments
RF Product Support Engineer
0 Kudos
Message 2 of 5
(6,371 Views)

Open up the example program "ni5660 - Fetch IQ Data.vi" which should be located in ni5660 Examples folder.

 

This VI is already configured for "Continuous" acquisition.

 

Flip over to the "Y" tab and turn "enable plot" on.  Right click the x-axis and uncheck "Auto-scale".  Then set the x-axis value to something like 1ms.

 

Change the "Time duration" control to something smaller...like 200us.  According to the "Configure for IQ.vi"...when set to "Continuous"....it should ignore the "Time duration" input....however if you run the program for different values of "Time duration" (100us, 200us, etc.)...you'll see that the number of samples plotted (and hence the number acquired) DOES change with "Time duration".

 

Furthermore....I believe that the last acquisition point of one fetch is not continuous with the first acquisition point of the next.


To see this for yourself....Open up "RFSG Single Tone Generation.vi" and feed in a single sine wave (say, 10MHz).  Then...within the Fetch loop...create an array of each acquisition "chunk", and then choose to look at the phase component.  i.e....you're creating an array to look at all the chunks together over a long time.

 

If acquisition was truly continuous....you should get some linear relationship of phase over time (if the Tx and Rx were phase locked...it would be 0 slope...but since they aren't...you'll you'll have some slope).  However, you'll see that there are discontinuities that occur periodically with the value of "Time duration" (which is supposed to be "ignored"!).  All the chunks have the same slope (expected), but the fact that the beginning of each chunk appears to "jump" in phase relative to the previous chunk suggests that things are not truly continuous.  I also had the signal generator feed in an FM signal...and put an FM demodulator in the Fetch loop.  Even when you turn the "Reset" option off in the FM demodulator VI, you see a discontinuity in the demodulated frequencies that occur once ever "time duration".

 

These two tests seemed to suggest that acquisition wasn't "truly" continuous....but rather, it was acquiring "discontinuous chunks continuously" (say that 5 times fast!).

 

Could anyone confirm that this is the case?  I feel like I've seen example VI's like FM radios or software defined radios that would seem like they HAD to be REALLY continuous in order to work...but maybe the delay between acquisition chunks is small relative to the message (i.e. audio signal), such that it isn't a big deal for our ears.

 

The only work around I see is to set the "Time duration" value to be very large....like seconds....but you eventually run into buffer size restrictions....which really makes things no different from "Finite Acquisition" in my mind.

 

Thoughts?

 

---

Brandon

0 Kudos
Message 3 of 5
(6,352 Views)

After a bit more testing, I've notcied that my "Number of samples to read" control from the "FetchIQ.vi" was much larger than the product of the sample period and the "Time duration".

 

i.e. if my BW is set at 1.25MHz...the sample rate is 2MS/s (or a dt=500ns per pt).  If the time duration=100us for example....then you would acquire 100us/500ns per pt = 200pts.

 

If this number is less than the number you tell to fetch from the A/D buffer...then this smaller number of points is what gets displayed.  In other words...if you set 10,000pts to fetch from the buffer...but your combination of sample rate and time duration result in a fewer number of points...then you'll only get the smaller number of points back each time through the fetch loop.

 

It's possible then that the discontinuity I was seeing was somehow related to the difference between the number of samples I thought I was fetching...and the number of samples that somehow get put into the buffer?

 

Once the time duration becomes large enough that the number of points is greater than the number of fetch points....then it seems like things behave ok.

 

I think what might help is some info on how the A/D buffer get's "proportioned" by the various inputs (i.e. how samples get into the buffer, and how they get pushed out of the buffer).  Are there some documents on this?

 

---

Brandon

 

0 Kudos
Message 4 of 5
(6,346 Views)

Hello Brandon,

 

After looking into this example, I have found a few things about it.

 

First, you noticed that "I believe that the last acquisition point of one fetch is not continuous with the first acquisition point of the next." From your description in the last post, it seems the that number of samples is less than the length of the record (time duration/distance between pts) it seems to drop samples causing the discontinuity. It seems to me that it moves on to the next record and returns those points. I will need to test this here because this shouldn't happen.

 

I have also found in the example that the context help for the ni5660 Fetch IQ VI states that Continuous IQ is only possible for bandwidths smaller than 1.25MHz. This could also be providing you some of the problem as well. Could you try a smaller bandwidth to see if this problem disappears?

 

As for understanding the buffer and data transfer of the digitizer, it will be best to consult the scope help because the NI 5660 uses one of our older scopes to digitize the signal that has been downconverted. Here is the link to it.


Jim St
National Instruments
RF Product Support Engineer
0 Kudos
Message 5 of 5
(6,333 Views)