通过数值函数在FPGA上执行整数运算。

执行整数数学运算时,结果可能溢出。数学运算结果超出输出数据类型时产生溢出。例如,U8整型的范围是0~255。同时添加2个U8整型产生的结果将超过255(例如,200 + 70)。产生溢出时,当达到数据的最大限制时,结果将被回零重新计数或回绕并返回256的模值。例如,U8整数的结果为270时,将在256时发生回绕并返回结果14。

某些应用中可以利用溢出的回零特性。例如,执行时间测量范例就依赖于溢出的回零特性来正常工作。范例为时间计数器 Express VI配置一个8位的内部计数器大小及以毫秒为单位的计数器单位。时间计数器Express VI的内部计数器达到255 ms时,计数器回零。如第一个时间计数器Express VI返回时间计数器的值为132 ms,待测量的LabVIEW代码的执行时间为140 ms。内部计数器已经回零,且第二个时间计数器Express VI返回时间计数器的值为16 ms。程序框图从132中减去16,此时将产生溢出且结果值为140。

注: 时间计数器Express VI的执行时间为一个周期。在该范例中,如设置计数器单位Ticks而不是mSec,则减法返回的值为141。即使中间序列的LabVIEW代码仅需要140个时钟滴答时间。

使用下列技术避免整数溢出:

  • 评估数值数据类型的使用量。
  • 使用较大的输出数据类型。使用较大的输出数据类型时会占用较多的FPGA终端空间,但能够更快和更便捷的编程FPGA VI,且收到的数据更加精确。
  • 使用“按2的幂缩放”函数减少定点数据输入的整数幅值。如使用带有常量n输入的“按2的幂缩放”函数,该换算不占用任何FPGA资源。但损失了精度并且用户需要仔细编程FPGA VI,以确保所有输入和输出端的值均进行了正确的缩放。
  • 使用“转换为单精度浮点数”函数转换整型数据为单精度浮点型。