我如何在LabVIEW 8.5.x中使用FIFO 或者Memory时转换我的定点数据?



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

问题: 我在LabVIEW FPGA Module中使用定点数据进行计算。当我需要传递数据时,比如当我向FIFO传递数据或者在memory中储存数据时,我只能从FIFO或者memory中读到整形的数据。我如何能将数据类型转换但是保留小数部分(尾数)以使得数据完整?

解答:

LabVIEW 8.5.x,DMA FIFO 只支持unsigned 32-bit 数据类型, 对于target 和VI-scoped FIFO、以及memory并不支持定点数据类型。如果将定点数据类型直接传入 FIFO 或者memory, the fractional 分数部分将在强制转换成整形的过程中被截断。

为了保留数据中的小数部分,将定点数据转换成和整形数据一样比特数的类型,其比特数和定点的数据比特数长度一致。

为了实现上述要求,需要将传入FIFO或者memory 的定点数据以二进制表示。下面的步骤详细的说明了将一个定点数据通过DMA FIFO传入host的方法,其中使用了U32的数据类型。

 

注意:Target 、VI-scoped FIFO 和memory可以传递多种数据类型。可以通过舍入或者凑整将FIFO 和memory的长度和定点数的数据长度相符。举例来说,如果希望传递一个长度为20的定点数据,使用一个unsigned 32 bit 的FIFO。

FPGA 转换

  1. 使用Number to Boolean Array VI将定点数转换为布尔数组。
  2. 使用Boolean Array to Number VI将布尔数组转换为 unsigned 32-bit 整型数据。
  3. 将Boolean Array to Number的输出连入FIFO Write VI的输入。

Host 转换

  1. 在 the host 一端,,从 DMA FIFO读取一系列元素.。
  2.  在带有索引的for loop中使用Number to Boolean Array VI每次将一个元素转换成布尔数组。
  3. 放置Boolean Array to Number VI 在 for loop中并且将布尔数组Boolean array 连入其输入端。
  4. 右键单击Boolean Array to Number VI 并且选择Properties。改变定点数据的表示法根据FPGA中定点数据设置 Fixed-Point ConfigurationBoolean Array to Numeric Properties

      5.  将定点数据类型通过自动索引连接出。

                         

           注意: 需要知道在FPGA中定点数据的设置以在host 端转换数据类型。

 

将定点数据转化完成之后,在host 端就可以根据需要使用数字类型转换将数据转换成任意一种数据格式。

注意:需要使用Binary Array to Number 并且废除VI的输出类型属性。仅仅使用使用Binary Array to Number,To FXP VI还是会截断数据的分数部分。



相关链接:

附件:





报告日期: 09/26/2007
最近更新: 10/30/2008
文档编号: 4DPGKPKO