Digital I/O

cancel
Showing results for 
Search instead for 
Did you mean: 

PCI-6534 and NI-DAQ: simultaneous I/O with 10 MHz gives underflow error

My project:
I am building an automated test equipment with the PCI-6534, NI-DAQ and LabWindows/CVI. I have configured two groups using the NI-DAQ function DIG_Grp_Config:
device=1, group=1, 16-bit group, A and B, input port
device=1, group=2, 16-bit group, C and D, output port
With the functions DIG_Block_PG_Config and DIG_Trigger_Config I select pattern generation, internal request, time base, interval, hardware start trigger, for group 1 and group 2.
I initiate transfer of data using DIG_Block_Out and DIG_Block_In. The PCI-6534 performs simultaneous I/O upon my hardware trigger.
I check for the completion of the transfer using DIG_Block_Check.

My results:
With transfer rate = 5 MHz and
simultaneous I/O of
16 000 000 items DIG_Block_Check returns okay (0).
With transfer rate = 10 MHz and simultaneous I/O of
16 000 000 items DIG_Block_Check of group 2 returns underFlowError (-10843).
With transfer rate = 10 MHz and simultaneous I/O of
1 500 items DIG_Block_Check returns okay (0).
With transfer rate = 20 MHz and simultaneous I/O of
1 500 items DIG_Block_Check of group 2 returns underFlowError (-10843).
With transfer rate = 20 MHz and simultaneous I/O of
16 items DIG_Block_Check returns okay (0).

My questions:
My buffer of output data completely fits into the 32 MB of onboard memory. By default, NI-DAQ loads the SCARAB with the complete data buffer. Therefore the PCI bus is irrelevant to the operation. Why do I get an underflow error? Why is the performance better with 1 500 items?
Thanks Martin
0 Kudos
Message 1 of 3
(3,437 Views)
Martin;

By default the NI-DAQ driver will load the SCARAB only once, meaning that if you keep generating data after the SCARAB is filled up completely, there will be some data transfer.

To do that independently of the system data transfer, you need to enable the on board loop. By doing that, you will dump the whole data points content to the SCARAB, and from that point on, the loop is done on board.

Hope this helps.
Filipe A.
Applications Engineer
National Instruments
0 Kudos
Message 2 of 3
(3,436 Views)
Filipe,
I only generate 16 000 000 items once, therefore I expect the SCARAB to be filled only once. The onboard loop cannot help me because I perform simultaneous I/O. Thus, if I loop the output pattern, my input pattern will be larger than 16 000 000 items. This will cause an overflow error for the input pattern.

Meanwhile, I have checked the NI knowledge data base. The article "how many samples of data can I store in the onboard memory of the PCI-6534" gives a hint: "If you are doing two strobed operations at the same time and the total size of the two groups is greater than 16-bits, the rates are no longer guaranteed.." (See http://digital.ni.com/public.nsf/3efedde4322fef19862567740067f3cc/da52dd262285520686256a470065e589?OpenDocument)

In m
y opinion, I am performing two strobed 16-bit operations at the same time i. e. 16-bit input and 16-bit output. Therefore I tried simultaneous 8 - b i t I/O. This worked at 10 MHz but gave UnderflowError at 20 MHz.

I think the onboard memory of the PCI-6534 is large enough to perform the operation without interaction with the PCI-bus. My question is: Where do the above mentioned restrictions come from? Is the rate 10 MHz for simultaneous 8-bit I/O guaranteed?

Thanks Martin
0 Kudos
Message 3 of 3
(3,436 Views)