LabVIEW FPGA模块和可重配置的I/O板卡可以用来实现各种自定义接口,其中包括:
- 用于其它测量设备的定时和触发功能
- 数字通信协议
- 开发快速原型或者硬件在环应用中的设备仿真
- AC和DC传感器仿真
除了上述这些应用以外,您还可以使用LabVIEW FPGA来实现脉冲宽度调制(PWM)信号的输入和输出。PWM信号不是仅针对某一类特殊的设备的,而是可以用于各种应用中广泛的测量。本文将告诉您如何使用可重配置的I/O板卡和LabVIEW FPGA模块建立PWM接口。
在传统的方法中,我们使用计数器进行测量和生成PWM信号。然而,为了适应更广泛的计数器应用,硬件的性能和应用程序编程接口(API)做了相应的优化,因而这种优化使得通过传统计数器生成PWM信号的应用程序开发难度变大了。而LabVIEW FPGA允许您使用自定义的硬件和软件接口设计PWM I/O通道,这样就可以很容易地将它们集成到您的测试测量应用中。
2. 脉冲宽度调制脉冲宽度调制(PWM)是一种调制方法,通过使用单个脉冲或者连续脉冲序列的宽度来对一个值进行编码。通常,一个PWM信号使用一个频率恒定且占空比可变的连续方波信号。一个方波的占空比或单个方波脉冲的宽度代表着信号值。该值定义的范围从0到1(或者从0到100%)占空比。这个PWM值对应于一个应用中设定范围的工程值,例如以RPM为单位的一个轮子的转动速度。由于PWM信号的数值范围不是无限的,因此它所对应的工程值也有限定的范围。例如,PWM值从0到1可能对应于传感器从0到8000 RPM。而大于8000的转速值则不能用这个传感器测量。
图1: 脉冲宽度调制(PWM)信号的实例
3. 简单的PWM输入在下面的例子中,使用一个数字I/O线用来采集PWM信号,然后在FPGA上处理提取PWM值。从本质上讲,程序代码会观察相临的上升和下降边沿,并且基于边沿间的时间差,来确定脉冲宽度和脉冲周期。脉冲宽度除以脉冲周期,我们就可以得到PWM值,并从中可以导出对应的工程值。
下面的程序框图显示了一个简单PWM输入的实现方式。该VI监视数字线的下降和上升边沿,并且测量每对边沿之间的时间差。每个阶段的信号的长度被写入前面板上的簇显示控件中,可以通过上位机应用程序查询。PWM信号的频率和占空比是由上位机应用程序中高低电平持续的时间长度计算得到的。通过在上位机应用程序上进行PWM计算,我们可以减少实现该应用所需的FPGA空间,因此,我们可以在一个板卡上实现更大数量的PWM输入或者其它代码。这也减少了循环运行所需的时间,因而够测量更小的脉冲宽度和脉冲周期。
图2:一个简单的PWM输入
为了进一步优化循环的性能,我们将两次循环间的代码连接起来。在第一次循环中,实现了数字脉冲边沿的检测和时间标记,并将时间标签值传递给一对移位寄存器。在下一次循环中,检索时间标签值并计算脉冲长度,然后将它们写入到前面板上的簇显示控件中,以便上位机应用程序检索。将一项 *** 作任务分割成两个循环执行,可以降低整体的循环周期。我们使用前面板上的簇,以确保高电平长度和低电平长度两个值在相同的时间更新,并由上位机应用程序同时读取。
对于简单的PWM输入,通常可以添加一个锁存器,以增强其功能。该锁存器布尔值用于锁存输出寄存器中当前的读数。VI将一直存储数值,在上位机释放锁存器之前,都不会用新的PWM值更新寄存器。利用该功能,可以通过上位机的锁存 *** 作来控制在特定的时间读取测量值。另一个可选的功能,是基于另一个数字信号或者触发来锁存PWM数值,如来自RTSI/PXI触发总线的脉冲信号。相比于从上位机应用程序锁存读值的方式,此功能可以更好地与外部进程同步。
图3:使用锁存器的简单PWM输入
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)