Determining the Number of DMA Channels for an NI FPGA Target

Updated Aug 1, 2023

Reported In

Hardware

  • CompactRIO Controller
  • CompactRIO Single-Board Controller

Software

  • LabVIEW FPGA Module

Issue Details

I would like to use Direct Memory Access (DMA) to transfer data from my FPGA target to my host (or vice versa), but I am not sure how many DMA Channels or FIFOs are on my FPGA target.  How can I find out how many are available?

Solution

The table below provides a summary of the number of DMA Channels available on NI FPGA hardware.
Note: The selection of the DMA channel is done automatically in LabVIEW 8.6 FPGA Module and later.
 
 
Model NumberDMA FIFO Channels
FlexRIO 797x32
cRIO-904x
cRIO-903x
cRIO-906x
NI 9147
NI 9149
PCIe-1473
FlexRIO 796x
myRIO
PXIe-782xR
PXIe-784xR
PXIe-785xR
sbRIO-9607
sbRIO-9627
sbRIO-9637
sbRIO-9651
USRP-294xR
16
cRIO-9075
cRIO-9076
sbRIO-9605
sbRIO-9606
sbRIO-9623
sbRIO-9626
sbRIO-9633
sbRIO-9636
NI 9146
5
PCI-5641 IF-RIO
PCI-5640R IF-RIO
4
PXI-795x
Most Other RIO Targets*
3
Note: This might not be a complete list. You can find the number of DMA channels in the specifications of each device. 
Note: With version 2021 of LabVIEW, NI decided to reserve one DMA channel of some PXIe cards (R Series, FlexRIO) for other usages like HMB. Therefore, you can use one DMA channel less than specified in the specification sheet.

Additional Information

With the release of LabVIEW FPGA Module 2011, the number of DMA Channels is now accessible to the user via LabVIEW as well. From the Project Explorer you can discover DMA information about your FPGA targets including CompactRIO, R Series, and FlexRIO. Complete the following steps to access this information:
 
  1. Open your FPGA Project
Edit1.png
  1. Right-click on the FPGA Target and select Properties
Edit#1.png
  1. In the General tab scroll down until you can read the information about Number of DMA Channels
Note: Remember that when you use the FPGA in Scan Mode or Hybrid Mode, two of the DMA channels are reserved for the Scan Engine.

These steps can be followed even if you do not have access to the physical hardware. You can create a project and add your FPGA target to project as New targets or devices instead of Existing targets or devices.