Instrument Control (GPIB, Serial, VISA, IVI)

cancel
Showing results for 
Search instead for 
Did you mean: 

How can I improve NI VISA USB raw throughput rate, or speed performance

Hello,
I'm using Visa 4.4, using Visa USB RAW transfers via Visa read, receiving over USB 2.0 from a Cypress 68013A controller, which I'm feeding at 24 MWords/sec (each word is 16 bits). This should yield a theoretical 48 Mbyte/sec transfer rate. I find the actual rate is around 14.7 Mbyte/sec. I am transferring an array of 1 Mbyte, using DMA via an FPGA. The DMA bandwidth is 70 Mbyte/sec. Looking at the Cypress Fifo buffer full output, I see buffer full sequences of:

 

Start transfer: buffer full 260 us, mixed buffer full period: 160 us, full speed transmit: 160us, then buffer full 260 us, mixed buffer full period 160 us, then full speed transmit 160us. This cycle of 580 us continues for the duration of the transmition, regardless of length (which I have varied from 1 Mbyte to 16 Mbyte).

 

At the Visa end, I have a pre-allocated array to put the data in (flow through the Visa USB read vi), and I have tried reading the data in chunks from 64K to to 1 Mbyte. There seems to be a little gain in using bigger chunks, but not much. It is clear that the Visa USB read system is limiting the transfer rate - with every device transmit, there is a minimum latency of 2 USB frames (2 x 125us) before data transfer starts, and then this happens again and again. Some NI product information suggests that transfer rates of 26 Mbyte/sec or 30 Mbyte/sec should be achievable.

 

Is anyone able to explain this, and suggest a work around (we would really like to acheive 30 Mbyte/sec). Other USB devices on the PC are achieving this rate (in particular a USB hard disk).

 

Thanks.

 

Bart

0 Kudos
Message 1 of 2
(4,340 Views)

Hi,

 

As this is a duplicate post, I will post to the one here.

 

Thanks,

 

Todd V.

National Instruments
Applications Engineer
NI Prototyping Community
0 Kudos
Message 2 of 2
(4,315 Views)