LabVIEWCompactRIO 开发指南第六章43
复用
模块中较昂贵的组件之一是ADC。通过使用多路复用器(也称为多路复用器)通过单个ADC路由多个通道,多路复用模块以比同步模块更低的每通道价格提供更高的通道数。
在学习如何对这些模块进行编程之前,需要了解一些规范级别的详细信息。首先,采样率通常被列为所有通道的总速率组合在一起,也称为聚合速率。从模块硬件的角度来看,所有选定的通道必须以相同的速率运行(总速率除以通道数),但从程序的角度来看,可以使用FPGA处理从选定的通道中删除样本。其次,需要注意的是,多路复用模块中的所有通道之间存在通道间延迟或偏斜。可以在FPGA中实现处理,以通过移位或数据重采样来补偿这种偏斜,但大多数包含多路复路复用模块的系统不会受到这种小偏移的影响。如果基于硬件的相位对准对系统很重要,则应选择具有多个ADC的模块。
可以从多路复用模块的两个主要子集中进行选择:高速和低速。
高速
高速多路复用模块实现双流水线,以增加到机箱的数据吞吐量。使用双管道时,在进程运行两次完整迭代之前,无法返回第一个有效数据。运行前两次迭代以“启动”管道后,后续迭代将开始生成有效数据。使用I/O节点对通道进行采样时,流水线由FPGAI/O节点自动管理,FPGAI/O节点内的通道按数字顺序进行采样,无论它们在节点中出现的顺序如何。如果FPGAI/O节点中的前两个通道请求与模块流水线中存储的两个通道请求不匹配,则在第一个通道采样发生之前存在延迟。这种延迟是由FPGAI/O节点自动更新模块通道采样流水线引起的,这需要两个通道采样周期。如果I/O节点从框图的不同部分寻址同一模块,则可能会发生这种情况。例如,如果在Case结构的“init”情况下,从I/O节点读取通道0、1和2,然后在“获取”情况下,从通道5、6和8读取,则会导致管道更新损失,因为模块已经为通道0、1和2做好准备,并且需要刷新管道。如果此延迟导致问题,解决方法是在同一步骤中获取所有通道,并将通道5、6和8中的数据放入FIFO中,以便稍后调用。
表6.3.高速多路复用模块示例
高速多路复用模块的I/O采样方法
一些高速多路复用模块,如NI9205和NI9206,具有另一种编程方法。这种方法被称为“I/O示例方法”,更难实现,但占用的FPGA空间更少,并且更容易输入到LabVIEW框图上的DMA节点。对模块的这种较低级别的访问不考虑双管道体系结构,因此必须显式丢弃从I/O示例方法返回的前两个数据点,因为它们无效。增加最大难度的步骤是构建通道数组以馈送到采样方法中。可以在NI示例查找器中找到此方法的示例程序NI9205基本I/O采样模式。
低速
低速模块不需要与高速模块相同的带宽量,并且不实现流水线。这使LabVIEW实现变得简单明了。使用低速多路复用模块时,会面临SPI总线模块的警告。
表6.4.低速多路复用模块示例
SPI数字
具有八条以上线路的数字模块超过了直接FPGA通信所允许的引脚数量,因此通过SPI总线进行通信。这些模块在转换脉冲下工作,它们在每次转换时同时锁存输入和更新输出。与任何其他SPI总线模块一样,32通道数字I/O模块上的所有线路都通过相同的通信线路路由到背板。应该使用数据流控制对SPI总线模块的I/O节点调用,以防止同时调用导致抖动。这些调用包括正常的I/O调用以及将线路方向从输入更改为输出的命令。
需要说明的是,上述的例程和文档,都是可以下载的,双击即可打开,其中压缩文件是可以采用粘贴复制的方式,拷贝到硬盘上。这不是图片,各位小伙伴看到后尝试一下,这个问题就不用加微信咨询了。有关LabVIEW编程、LabVIEW开发等相关项目,可联系们。附件中的资料这里无法上传,可去公司网站搜索下载。