为什么我从FPGA模拟输入读取的二进制数值很大?



硬件: CompactRIO

问题:

我在我的FPGA代码中查看超过我的模拟设备输入范围的原始二进制数据,为什么会出现这种情况?

 



解答:

与预期的值相比,从24位模拟模块采集到的原始二进制数据(比如4.29E+9)或者数值可能会很大。如果从模块读取的值为负数时,这种数值(很大的值)就会发生。对模拟读取而言,FPGA的I/O节点输出是I32型的数据。如果这个I32的值从模块I/O读节点传输到例如 DMA写函数 ,在主机VI中进行读取,结果输出将为U32,并且得到一个出乎预期的很大的值。在很多cRIO的范例中,其可以通过Binary to Nominal VI进行校正。你也可以使用To Long Integer函数来校正这个问题。





注意 :如果你安装了NI-RIO2.4或者后续版本的驱动,你应该考虑使用定点数据类型,其内嵌数据类型的校验,不需要上述的转换操作。



相关链接:
KnowledgeBase 4JGA2HLX: Using Fixed-Point Data Types with Integer Based IP in LabVIEW FPGA 8.5.x
KnowledgeBase 4L5B754H: Switching Between Calibrated Fixed-Point and Raw Integer Modes for CompactRIO I/O
KnowledgeBase 4SSHTLKG: Where Can I Find The Binary to Nominal VI?

附件:





报告日期: 01/31/2008
最近更新: 09/06/2012
文档编号: 4HUDE84H