使用cRIO FPGA接口模式进行多通道的电压采集时RT端收到的每一路波形的形状和数据速率均不正确

更新 Aug 26, 2026

适用于

硬件

  • cRIO-9056
  • NI-9231
  • NI-9234

软件

  • LabVIEW FPGA Module

问题详述

      我对cRIO-9056上的模拟输入模块NI 9231和NI 9234以FPGA接口编程模式进行多路通道的数据采集,并用DMA FIFO传输数据到RT端。我确认所有模块已经使用共同的主时基源。FPGA和RT的大致程序代码如下图片。

      程序运行下来的波形形状和实际数据速率都异常:

      根据我的数据设置,每次从FIFO读取节点中读出的每一路波形理应恰好是一个完整周期,但实际的波形却大于一个周期。

      把波形放大来看是如下的形状,大部分的数据点是零,固定间隔有一个非零的数值,这些非零的数值点连起来形成了正弦波形的包络线。

      这个异常可能是什么原因?

       

      解决方案

      该现象最可能的原因是多路通道的某个或者某几个通道在数据传递路径被漏掉了。例如下图:在从FPGA I/O节点读取每个通道的电压时,Mod2模块的AI0通道因为疏忽没有连入创建数组节点的输入端,导致了数据交织传输以及还原提取后的数据点错位。

      修正连线之后,波形的形状和数据速率就都正常了。