High-Speed Digitizers

cancel
Showing results for 
Search instead for 
Did you mean: 

How can I get fast acquisition with 5102 PCI

Hello~

Now,I'm working with digitizer PCI 5102 with measurement studio.
(Platform Windows2000, Pentium3 700MHz, 192MB memory)

The sampling rate is 20MHz, and the record length is 20000, so 1ms data per aquisition.

I want to use this signal for control some process, and I wish the control process loop time is very very short(within 1ms, if possible)

The control loop like this,

while(1)
{
// CheckTime1();

niScope_InitiateAcquisition();

// CheckTime2();

niScope_FetchMeasurement();

// CheckTime3();

...
// Do Something
...

}

then, with RTX timer('TimeCheck' above)

TimeCheck1 ~ TimeCheck2 : about 20 ms
TimeCheck2 ~ TimeCheck3 : about 10 ms

I have some ques
tions.

1. Why is the process so slow?

2. How can I use the data in onboard memory quickly..
(I used Fetch function..(measurement studio)
but is there any method for quick transferring?

3. Is there any method to use the digitizer on RTX platform?

4. Is it needed that the function 'niScope_InitiateAcquisition' must be called per every loop?

5. And How can the time(for data acquisiotn) be shorter?
(if possible, with 5102,
otherwise... how?..)


thank you very much...
0 Kudos
Message 1 of 4
(6,094 Views)
I will try to best answer your questions below:
1. According to your sampling rate and record length, the amount of time required to take data is 1 ms. That does not, however, take into account any overhead associated with initializing the board and transferring the data back to the computer. I will perform some benchmarks to see if 20 ms and 10 ms is reasonable.
2. The fetch binary 8 function would be the fastest way to transfer data.
3. We have not tested our Digitizers on the RTX platform, but I will look into this further.
4. The Initiate function needs to be called every time in order to arm the board for a trigger. If Immediate triggering is being used, the board will start taking data as soon as this function is called.
5. I will perform some bench
marks to see if there are ways to improve this time.

Now a couple of questions for you:
1. Why do you need the 1 ms time requirement? This is probably not realistic since the board needs 1 ms just to acquire the data. You still have to set the board up and transfer the data to computer RAM.
2. What is your application? A brief description will do.
3. If you are needing a real-time system, have you considered LabVIEW Real-Time?

Thanks,
Josh
0 Kudos
Message 2 of 4
(6,094 Views)
Firstly, Thank you very much for your attention about my questions.

here, my answers for yours and some other questions.

1. Of course, 20000 samples with 20MHz acquisition needs 1ms at least. I mean, except this 1ms, fast transferring(onboard memory to host PC memory) is needed within 1ms (if possible, is it possible with 5112?). The transferring time must be shorten as far as possible for my fast control loop.
(very small time, about 10 micro seconds is very nice for me)


2. My application is an electrical process control which need controllablity of micro time scale.
After monitoring analog voltage, some parameters will be changed... this control loop need small loop time.
- no need for exactly continuous
- data lost during my control actio
n is no problem.


3. I don't need exact, deterministic real-time environment. I need just more fast transferring from onboard memory to host PC memory.


Q. Is there any method to transfer the data more quickly wiht PCI bus master or DMA transfering.(from onboard memory to host memory)?
(ex, direct reading from onboard FIFO memory with low level function (like DOS function) without using more time-consuming high level library)

If this is possible, I will execute this function in RTX environment, and I think fast acquision will be possible.


Thanks,
Sin Kwon.
0 Kudos
Message 3 of 4
(6,094 Views)
After performing some benchmarks, the time for Initiate was around 6-8 ms and the time for Fetch was around 2-4 ms. We are currently using DMA transferring to get these numbers, so we are performing these tasks very quickly. The time you are asking for (10 us) is three orders of magnitude less than the numbers I came up with. If that is your goal, I don't believe low-level calls are going to help you.

Another way you could do this application is by using multiple records on a 5112. You could trigger the board every time it needs to take data and only retrieve all of the data from the board at the very end of your acquisition. This operation would be hardware timed, so much faster than your current application. I hope that helps.
0 Kudos
Message 4 of 4
(6,094 Views)