From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

Driver Development Kit (DDK)

cancel
Showing results for 
Search instead for 
Did you mean: 

Analog out DMA performance problems

I have attached bus analyzer trace of a pxi-6281 in a pxi-1042 crate connected to a windows pc via a pxi-8336 mxi-4 connection. It shows very poor utilization of the pci bus during a d/a operation, using the ni-daqmx test panel in the measurement and automation explorer. I setup the d/a test panel to generate a sine wave output with a 1 MHz update rate. Does this look normal? If you look at a typical transfer of d/a data, it's spending more than 90% of its time doing retries until it is finally able to do a burst of 8 32bit data transfers. The bus analyzer was in the pxi-1042 crate with the pxi-6281.
0 Kudos
Message 11 of 13
(5,000 Views)
I have access to a bus analzyer now, and am starting to look at the pxi-6281 analog output dma performance problem. What I see is, with my driver under linux, the pxi-6281 is transferring the analog output data with pci "memory read multiple" commands and not doing any bursts. In contrast, with the same board under windows with the NI driver, it does "memory read" commands with typically 8 cycle bursts.

Also, when I look at a pxi-6713 in the same crate as the pxi-6281 (and also using my linux driver) it does "memory read" commands with 8 cycle bursts. So what is different about the m-series board which would make them do "memory read multiple" and no bursts, instead of "memory read" with bursts? My driver does set the burst enable bit in the mite's channel control register (as evidenced by the 6713 successfully bursting).

Incidentally, when doing analog input the pxi-6281 with my linux driver, it also does not burst. This is less of a problem, since it still has a decent transfer rate in this direction even without burst transfers, since it doesn't get all the pci retries like it does when doing analog output.
0 Kudos
Message 12 of 13
(4,854 Views)
My bus analyzer has revealed the magic mojo requried to enable dma burst transfers on the pxi-6281. You have to set the bits 0x600 in the undocumented mite register at offset 0x28. For the 6713, the bits were already set at power-up. For the 6281, they were not, and they must be set before the 6281 will do dma bursts.
Message 13 of 13
(4,831 Views)