同步模块
某些应用(如振动或声音测量)需要通道之间的高电平(低于100nS)同步。本节讨论基于增量Σ的模块和扫描(SAR)模块的时序和同步。任何未被归类为三角积分的NIC系列I/O模块都被归类为SAR。
同步增量西格玛模块
要同步CompactRIO硬件中的增量西格玛模块,需要物理共享过采样时钟并在所有模块之间启动触发。可以在许多模块的手册规格部分找到通道之间和模块之间的相位匹配规格。基于增量西格玛的模块可以同步,即使它们不是相同的型号。
1. 选择其中一个模块“主”,将时钟导出到背板。其他模块设置为从背板导入此时钟。无论选择哪个模块作为主模块,都会覆盖时基和可用速率。例如,如果系统需要51.2k速率,请选择NI9234或NI9232。如果想要50k速率,请选择NI9237。可以从LabVIEW项目探索器中模块的右键菜单访问的属性窗口修改导入/导出属性。无法以编程方式设置导入/导出设置,因为此信息已编译。
图6.11.从所选主模块导出时钟,然后从所有要同步的后续模块中选择时钟
2.在框图上,为每个I/O模块创建一个属性节点,并使用数据速率枚举指定速率,如图6.12所示。请注意,即使I/O模块共享相同的采样率,也必须为每个属性节点创建一个唯一的数据速率枚举(右键单击每个模块的属性节点并选择“创建常量”)。这可确保枚举整数与特定I/O模块的预期速率正确匹配。
3.为每个I/O模块创建一个启动触发器,并将它们放入同一I/O节点中。这可确保正确路由启动触发器。
4.将所有同步模块的所有通道读数放在同一个I/O节点中,如图6.12所示。使用此过程,可以混合和匹配任何现有的同步增量-Σ模块。
图6.12.Synchronizing NI9233 Modules.lvpj的框图
在LabVIEW FPGA中同步不同Δ-Σ模块的最佳方法是将每个模块的I/O节点放在同一个WhileLoop中。如果将不同模块的I/O节点并行放置While循环,则必须解决其他启动延迟问题。还需要考虑每个模块的群延迟,因为模块在同一循环中同时采集数据。查看知识库4DAEUNNQ:How to Compensate for Different Group Delays With C Series Modules in LabVIEWFPGA,了解有关此主题的提示。
同步按需模块
此过程比增量-Σ模块更容易,因为没有要共享的过采样时钟。这些模块由源自FPGA上编程I/O节点的转换脉冲计时。要同步转换脉冲,请将所有通道读取或更新放在同一个I/O节点调用中。可以在同一I/O节点中混合模拟输入、模拟输出和数字通道,且偏差最小。
同步多路复用模块
共享相同型号的多路复用模块在通道中移动时以“锁定步骤”运行。每个模块上的通道0与通道1到n同步。这比教学更具信息性,因为多路复用应用程序很少受到通道间延迟的影响。
同步三角积分和扫描(SAR)模块
将增量西格玛模块与SAR(非增量西格玛)模块同步稍微复杂一些。这是因为Δ-Σ模块有自己的时基,而SAR模块是FPGA时钟的从属模块。从编程角度来看,三角积分模块的环路时序由数据速率节点决定;而SAR模块的环路时序是使用FPGA环路定时器确定的。将增量-Σ与SAR模块同步的最佳方法是针对增量-Σ计时设计应用程序(类似于图6.13),然后将SAR模块的I/O块添加为单独的I/O节点,如图6.13所示。这需要将SAR模块同步到增量Σ模块时钟。
注意:基于Δ-Σ的模块和SAR模块不应共享相同的FPGAI/O节点,因为它们串联执行并限制系统的最大数据速率。
图6.13.用于混合应用的FPGAI/O节点(三角积分和SAR模块)
当应用需要三角积分和SAR模块之间的多速率同步时,应用变得更加复杂。由于这些模块具有不同的时基,因此当它们分成两个或多个以多个速率执行的循环时,它们无法共享时钟。最好的选择是将它们分成多个环路,然后预计时基之间会随着时间的推移而发生一些漂移,此外还有由不同的启动时间引起的相位偏移
需要说明的是,上述的例程和文档,都是可以下载的,双击即可打开,其中压缩文件是可以采用粘贴复制的方式,拷贝到硬盘上。这不是图片,各位小伙伴看到后尝试一下,这个问题就不用加微信咨询了。有关LabVIEW编程、LabVIEW开发等相关项目,可联系们。附件中的资料这里无法上传,可去公司网站搜索下载。
楼主最近还看过