High-Speed Digitizers

cancel
Showing results for 
Search instead for 
Did you mean: 

How is it possible to acquire a signal with 100MS/s with a time period of 1s with NI PCI 5122?

My task is to acquire a stochastic time signal and calculate the FFT spectrum.
It is necessary to sample this signal with 100MHz and with a time period of 1s, to calculate the a QuasiPeak detector.
If I want to realized it with Labview, i get evertime a storage error?
Is it possible to optimized the Data acquisation??
 
0 Kudos
Message 1 of 4
(7,110 Views)
Oh sorry,
I forgot to say, that I want to realized it with a NI PCI5122 with 256MB RAM.
0 Kudos
Message 2 of 4
(7,105 Views)
First, you need to read the tutorial Managing Large Data Sets in LabVIEW.  This will give you the basics on how to reduce copies so you do not run out of memory.  Then the fun begins.  You need to fetch your data as binary I16 to reduce memory space.  Unfortunately, the canned LabVIEW FFTs all work with doubles.  Converting your data to doubles will take you from 200MBytes to 800MBytes.  One extra copy of an 800MByte data set will run you out of memory.  You have two options, both of which will require some work.
  1. Write your own FFT routine using integer math.  You will need to be careful about overflows and resolution, but you should be able to do this on your whole data set.  Check out Numerical Recipes in C, Press et. al. for algorithms.
  2. Use an FFT routine which only operates on a chunk of the data at once.  I know such routines exist (the guts of them are included in some of our RF software).  Unfortunately, I can't give you much help on this method beyond the fact that I know it is possible.
Remember that you don't have to fetch all the data from the scope at once.  The data will stay there until you initiate another acquisition.  You can think of the scope as another memory buffer.

What you want to do is possible, but it won't be trivial.  Good luck!
Message 3 of 4
(7,100 Views)

To follow up on the previous post.

You have two options, assuming you don't want to write your own FFT.

First, use an FFT algorithm that deals in currency other than double. Various Intel processing libraries have included FFT for short integer and float data types. These libraries are written in C and require an x86 processor. This may be enough headroom to solve your problem. We have used the Intel Signal Processing Library (SPL) for a while but it is no longer available. Intel currently sells the Intel Processing Primitives (IPP) and it has similar functionality. Other C libraries are available for free and may support alternate data types. I think you could insert C node into Labview but I am not real adept at LV.

The other option is to break up your signal by doing a digital heterodyne experiment over small bandwidth chunks of the spectrum and then stitch the result back together (if necessary). You can do this by mixing the signal with a reference in the time domain and the filter and decimate the result. When done correctly you will end up with two data sets (which can be as small as you want) which you can feed into a complex FFT and get the same result as FFT of the entire bandwidth. This is a procedure we have considered but have not implemented. If you search for Agilent digitizer E1437A there is a pretty good description of this method performed in real time onboard on the DSP. This all down in integer math (long).

I should note that if you want to measure a 100 MHz sine wave on a 5122 that you must be careful about filter settings, voltage ranges and temperature. As any of these may push you out of spec.

Good Luck, Greg

Message 4 of 4
(6,926 Views)