设计主控VI从DMA通道中读取数据是实现DMA应用的一个重要部分。

注: 本主题讨论的设计适用于从FPGA终端传输数据至主控计算机的应用。

选择设计

下表总结了某些有用的设计:

使用场景 设计 优点 缺点

发生下列一个或多个场景的应用:

  • FPGA以未知的速率获取数据。
  • 数据采集的起始时间未知;例如,硬件设备触发器以未知或不规律的时间间隔采集数据。
  • 执行其他任务前必须从缓冲区读取全部数据。
阻隔
  • 最简的编程设计。
  • 数据吞吐量高于任意轮询设计。
  • 主控VI可读取全部元素数量或不读取。连线该数值至调用方法函数的“FIFO.读取”方法。
  • 对于某些终端,等待元素数量变为可用时,主控VI不能执行其他任务。对于上述终端,如用户在实时系统上运行主控VI,主台式机系统可能暂时无法访问该实时系统。关于DMA限制的详细信息,见终端硬件文档。
数据记录应用,FPGA以未知的速率获取数据,但主控计算机以未知或不规律的速率读取数据。 轮询可变数量的元素 主控VI可在数据可用于读取时,立即读取任意数量的元素。 与块设计比较:
  • 读取数据耗时更长。
  • 数据吞吐量更低。

在应用可继续执行前需要读取已知固定大小的数据,但等待数据变为可用时必须完成其他任务的应用程序。例如,假设一个将1024个元素处理为一个单帧数据的应用,该应用同时必须发送命令至另一个终端。定时轮询设计当数据可用时从缓冲区读取数据,数据不可用时发送必需的命令。

如FPGA需要获取未知或不规律速率的数据,该设计同样有用。

轮询固定数量的元素 等待数据变为可用时,主控VI可执行其他顺序任务。
  • 主控VI可读取全部元素数量或不读取。连线该数值至调用方法函数的“FIFO.读取”方法。
  • 与块设计比较:
    • 读取数据耗时更长。
    • 数据吞吐量更低。

编程主控VI

考虑下列FPGA VI:

该VI通过下列方式表示数据采集:以预定义的速率测量FPGA设备的温度并写入该温度值至FPGA DMA缓存。下文显示了读取该数据的范例主控VI。

阻隔

轮询可变数量的元素

注意,元素数量VI读取变化的方式基于上一次读取数据后剩余元素的数量。

轮询固定数量的元素