09-18-2018 02:56 PM
I am having trouble when acquiring OCT signal using a National Instrument Board, model NI 5761R: NI 5761 Multi Sample CLIP (14 bits resolution, 250MS/s sampling rate ) with FPGA target PxIe-7965R (RIO0). I am using a laser source that sweeps at a rate of 100KHz to obtain a single a-scan. Given the 250 MS/s DAQ and the 100KHz sweeping rate, the maximum sample points I can acquire is 2500 points per a-scan (or per Trigger). Right now I am only acquiring 1000 points per a-scan which is equivalent to 100MHz sampling rate.
I set the compilation frequency of the IO Module clock 0 to 125MHz and the Top-level clock is configure to 100MHz clock . And the DRAM FIFO (128 bits) is configured to the Top-Level clock.
So my question what is the reason that I am not acquiring the maximum data points or why my program is not running at 250MS/s ? What is wrong with this code? I am using labview version of 2011. I have attached screenshot of my program. I would appreciate any suggestion and advice you may have. Thank you so much in Advance.
09-19-2018 04:51 PM
Hello Bnyam,
Could you explain further what you mean when you wrote: "the maximum sample points I can acquire is 2500 points per a-scan (or per Trigger). Right now I am only acquiring 1000 points per a-scan which is equivalent to 100MHz sampling rate."
The first part of that makes sense to me, but I'm not quite sure what you mean with the second half. Do you see the expected signal but just represented with fewer points? How did you determine that the 1000 points acquired were evenly spread in the a-scan period? Can you check the behavior with a test signal (1Hz sine wave works well for this)?
There could be a couple of things going wrong here. I feel that the most likely is that you're overwriting data in your FIFOs. This would be obvious you new what data to expect when acquiring.
09-19-2018 05:33 PM
I suggest looking at the example that comes with LabVIEW for this hardware. It will give you a better idea on how the code is supposed to look to acquire 250 MS/sec
09-21-2018 12:18 PM - edited 09-21-2018 12:20 PM
Thank you Jon for your reply and let me explain things in detail. The DAQ waits for a-scan trigger coming from the swept laser source to start acquiring samples . i.e. at the the falling edge of the trigger, the DAQ starts acquiring data points that represent a-scan.I have attached screenshot of my A-scan Trigger. Because the laser source sweeps at a rate of 100KHz, the duration of each a-scan is 10usec. The maximum data points,M, the DAQ can acquire can be related to the sampling rate, fs, of the DAQ and sweeping rate ,fsweep, of the laser as follows.
M= fs/fsweep.
So substituting all, we expect M to be M=2500 ( this is the maximum data points we can obtain with the 250MS/s DAQ). Right now I am acquiring only 1000 points per Trigger. That means my DAQ is acquiring the sample points at fs=100MHz. Also, as you mentioned it above, yes I can see the expected signal but it is represented with fewer points.
09-21-2018 01:52 PM
Thank you so much Terry and Jon ! I followed the example that comes with the labview and for the time being, I modified my program to a single channel so that the DAQ is now acquiring signal from a single channel AI 0. as a result, things look much better, my DAQ is now acquiring signal at rate of 250MS/s (or/and 2500 points in my case). The problem was, as my understanding goes, in the previous program I was only collecting datas at the “ AI 0 Data N “ subchannel and ignored the AI 0 Data N-1. In my current program, I join the datas (AI 0 Data N and AI 0 Data N-1 ) using the (hi.lo) and input them into a FIFO. At the host ,I interleaved them to obtain the desired signal. However, I still have doubts. first I am not sure if I am doing it right. second, I have some coercion dots on the input to the FIFO (on both FPGA and Host). I have attached screenshot of my program. I marked this coercion with a Red circles. how is this gonna affect the obtained signal (can this one limits me from obtaining the entire signal?), how can I select the appropriate data type . The data type of all the FIFO's in my program is u32. Thank you again.