如何在FPGA中将原始数据转换成定点数?



主要软件:
主要软件版本: 8.6.1
主要软件修正版本: N/A
次要软件: N/A

问题: 在FPGA中使用的一个函数只能输出原始数据,但我的I/O节点只能接受定点数,如何将原始数据转换成定点数?

解答:
你需要知道你的I/O节点所需定点数的具体类型。即你需要知道你的定点数的整数长度和字符长度各是多少。

首先你需要将你的原始数据转换成一个足够大的定点数,该定点数要能足够存放整数字段和小数字段。举例来说,对于一个16位的整型数值,你需要将该数值转换成至少含有16位整数字段的定点数。

同样需要保证该定点数有足够位数存放小数部分。举例来说,如果你的I/O节点接受的定点数类型为20位字符长度,5位整数长度,那么你的定点数就至少需要15位小数长度。

接着上面的例子,你的原始数据是16位整型,I/O节点定点数类型为20位字符长度5位整型长度,那么你实际需要的定点数为31位(16为存放原始数据,15位存放小数数据)。



当你的数据被转换成定点数后,你需要将适当的数据位移位至定点数的小数部分。在我们之前的例子中,16位的原始数据 必须包含5位的整数和11位的小数。使用按2的幂缩放VI将定点数的整数位移至小数位(在该例中,VI的输入端为-11)。

最后,你需要将定点数调整至I/O节点指定的数据大小。在我们的例子中,我们的定点数应该具有20位字符长度,5位整型长度。这可以有效的调整超过符号位的整数位,同样可以舍去超过设备支持精度的小数位。

在本KB的例子中,最终的程序框图应该如下所示:



相关链接: KnowlegeBase 4L5B754H: Switching Between Calibrated Fixed-Point and Raw Integer Modes for CompactRIO I/O
NI Developer Zone Community: Convert Sine Wave Generator Raw Output to Fixed Point

附件:





报告日期: 05/05/2009
最近更新: 11/28/2011
文档编号: 4X4J3EMO