Measurement Studio for VC++

cancel
Showing results for 
Search instead for 
Did you mean: 

update rate vs frequency, and FIFO vs local memory using PCI-6731

I am using Visual C++ and PCI-6731 to output sinus signals with different frequencies. The frequency should be update rate divided by buffer size, but is not accurate on higher frequencies.

E.g. a 500K update rate and a buffer size of 1000 gives me a correct frequency of 500Hz. A 595K update rate should give me 595 Hz but gives me approx 625 Hz.

How can I control the frequency of my signals? I want to be able to generate signals up to at least 100 MHz with a 0,01 Hz resolution. Is that possible? Should I use the onboard FIFO buffer, or local memory?

Thanks
0 Kudos
Message 1 of 3
(2,900 Views)
The update rate is not infinitely adjustable. The update rate is set by using one of the on-board clocks and dividing it with a counter to achieve the frequency you request. For instance, if you have a 10MHz clock, dividing it by 16 gives you 625kHz and dividing by 17 gives you 588kHz. Neither is close to the 595kHz you are trying to achieve.

The best way to output sine waves of varying frequency with the 6731 would be to pick a constant update rate and vary the frequency by altering the data you output.

A better way to do function generation would be to get a function generator card such as the NI-5411. It allows generating sine waves at any arbitrary frequency up to 16MHz. If you want
to get faster than that, you will need to look into special-purpose RF function generators.

Hope that helps.

- Tony
0 Kudos
Message 2 of 3
(2,900 Views)
I realised that I wrote 100MHz instead of 100KHz... Thank you for your answer, the problems are now sorted out 🙂
Cheers
0 Kudos
Message 3 of 3
(2,900 Views)