使用DMA通信时,请考虑下列最佳实践:

最佳实践 详细信息
关于终端如何处理DMA传输的信息,见FPGA终端硬件文档。 DMA的支持和动作随FPGA终端变化。上述区别将影响用户设计应用的方式。
正确设置缓冲区大小并检查上溢和下溢。 DMA缓冲的大小对应用的性能和鲁棒性将产生较大影响。
设计处理下列情况的应用:
  • 在FPGA终端上,FIFO方法节点的超时?显示控件返回TRUE。
  • 在RT终端上,FIFO读取节点的错误输出显示控件返回代码-50400
上述情况指示从其中一个缓冲区读取数据或写入数据时产生错误。如设计应用处理并避免上述情况,应用将具有更高的鲁棒性。
使用FIFO.写入方法从主控计算机传输数据至FPGA终端时,在尝试写入数据至缓冲区前,总是先读取剩余空元素显示控件的值。 用于下一个DMA操作的空元素数量是确保正确的。对于多数FPGA终端,该值对于后序操作有效且以每个后续写入的值的大小递减。但某些FPGA终端每次写入DMA通道后均重新计算该值。如在上述情况下写入通道,由于缓冲区已满,LabVIEW可能丢弃数据。此时写入操作也可能超时。
在主控计算机上使用FIFO.读取方法读取DMA数据时,在尝试从缓冲区读取数据前,总是先读取剩余元素显示控件的值。 使用轮询编程架构,在尝试读取缓冲区的数据前,先读取缓冲区中的剩余元素数量。
配置可编程元素数量前停止FIFO。 如在FIFO运行时配置FIFO的深度,FIFO下次启动时重置并清空FIFO内的全部数据。
交错多通道数据时指定待写入缓冲区的元素数量为通道数量的整数倍。 该设计确保用户可从每个通道读取相同数量的数据。例如,如具有8个I/O通道,且在“FIFO属性”对话框中的请求的元素数量中指定80,缓冲区则为每个通道准备10个采样的空间。
在主机中同时读取或写入大量的数据。 DMA通信将导致计算性的系统开销;因此发送命令或少量的数据将浪费资源。