【LabVIEW FPGA入门】FPGA中的数学运算

这篇具有很好参考价值的文章主要介绍了【LabVIEW FPGA入门】FPGA中的数学运算。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        数值控件选板上的大部分数学函数都支持整数或定点数据类型,但是需要请注意,避免使用乘法、除法、倒数、平方根等函数,此类函数比较占用FPGA资源,且如果使用的是定点数据或单精度浮点数据仅适用于FPGA终端。

1.整数运算

支持的数据类型:

  • 8位有符号和无符号整数数值
  • 16位有符号和无符号整数数值
  • 32位有符号和无符号整数数值
  • 64位有符号和无符号整数数值

1.1加减法

        【LabVIEW FPGA入门】FPGA中的数学运算,现场可编程门阵列【LabVIEW FPGA】,labview,LabVIEW FPGA

1.2乘除法

        为了节省FPGA资源,最好不直接用FPGA上乘的除法函数。一般可以用 商与余数 和 按2的幂缩放 。(但是在FPGA里,乘法需要先转成二进制做加法运算,再做乘法,除法也是先转成二进制做减法在做除法)

        除法函数可以用商与余数替代,但是这同样会使用较多FPGA资源。

【LabVIEW FPGA入门】FPGA中的数学运算,现场可编程门阵列【LabVIEW FPGA】,labview,LabVIEW FPGA

        乘除法可以用 按2的幂缩放 替代。

【LabVIEW FPGA入门】FPGA中的数学运算,现场可编程门阵列【LabVIEW FPGA】,labview,LabVIEW FPGA

        如果想把数据按非整数缩放,比如0.4。那就需要先乘再缩放。

【LabVIEW FPGA入门】FPGA中的数学运算,现场可编程门阵列【LabVIEW FPGA】,labview,LabVIEW FPGA

2.二进制运算 

【LabVIEW FPGA入门】FPGA中的数学运算,现场可编程门阵列【LabVIEW FPGA】,labview,LabVIEW FPGA

3.定点数运算

        定点数表示用户指定范围和精度内的有理数。定点数的大小在1-64位之间。可配置定点数为带符号或不带符号。

以定点数据类型表示有理数

定点数具有固定个数的整数位和分数位。整数位和分数位分别在二进制点的左、右两侧。由于定点数可指定其确切的位数,故二进制小数点的位置是固定的。

例如,在LabVIEW中,有理数0.5可表示为一个总位数为8、整数位为4的定点数。

有理数 对应的定点数
0.5 0000.1000

在LabVIEW中,同一个有理数也可表示为一个总位数为16、整数位为8的定点数。

有理数 对应的定点数
0.5 00000000.10000000
注:  以定点数表示有理数时,如未指定定点数确切的位数,LabVIEW将调整定点数的位数,尽量避免数据丢失。LabVIEW无法处理大于64位的数字。

 

配置定点数

要将一个数设置为定点表示法,右键单击数据对象,从快捷菜单中选择表示法,改变对象的数据类型。可配置定点数的编码。还可指定定点数是否包括上溢状态,以及数值函数如何处理定点数的上溢和凑整。如要配置一个定点数,右键单击常量、控件,或数值函数,从快捷菜单中选择属性,打开数值属性数值常量属性数值节点属性对话框进行配置。

编码

如要数值的比特数为特定值,需指定定点数的二进制编码方式。

  • 有符号-指定定点数据是否带符号。如选择有符号,则符号位总在表示数据的位字符串的第一位。
  • 无符号-指定定点数据是否有符号。
  • 字长-位字符串的总位数,是LabVIEW表示定点数据时的位数。LabVIEW接受的最大字长为64位。某些终端可能仅支持字长较短的数据。如在终端上打开一个VI而VI包含的定点数大于终端所能接受的字长,则VI出现断线。参考终端的相关文档,确定终端接受的最大字长。
  • 整数字长-指位字符串中LabVIEW用于表示定点数的整数位数,或从最高有效位左侧或右侧的初始位置开始,将二进制小数点移动到最高有效位所需的位数。整数字长的长度可以大于字长,可以为正也可以为负。

例如:

<s, 16, 8>是一个整数位为8的16位有符号数。下图表示一个字长为16、整数字长为8的有符号数。

【LabVIEW FPGA入门】FPGA中的数学运算,现场可编程门阵列【LabVIEW FPGA】,labview,LabVIEW FPGA

1 字长(16位)
2 整数字长(8位)
3 符号位
4 二进制小数点
长整数或负整数字长

如整数字长大于字长,则LabVIEW不保存超过字长的那部分整数位。下图表示一个字长为8、整数字长为10的数。

【LabVIEW FPGA入门】FPGA中的数学运算,现场可编程门阵列【LabVIEW FPGA】,labview,LabVIEW FPGA

1 字长(8位)
2 整数字长(10位)
3 整数位未保存
4 二进制小数点

如整数字长为负,LabVIEW将不保存任何整数位,并且也不保存从二进制小数点算起与负数相同的分数位。下图表示一个字长为8、整数字长为-2的数。

【LabVIEW FPGA入门】FPGA中的数学运算,现场可编程门阵列【LabVIEW FPGA】,labview,LabVIEW FPGA

1 字长(8位)
2 字长-整数字长(8位-2位)
3 分数位未保存
4 二进制小数点
范围

LabVIEW根据用户为定点数指定的编码值计算定点数的范围和delta。

  • 最小值-设置定点数据范围的最小值。
  • 最大值-设置定点数据范围的最大值。
  • Delta-指定范围内数字间的增量。

将光标移动到传递定点数据的连线上时,LabVIEW在即时帮助窗口中以下列格式表示该定点数据的配置情况:

[最小值,最大值]:Delta

例如:

[–4, 4]:1的最小值为–4,最大值为4,delta为1。

定点算术

对指定字长的定点数进行算术运算时,二进制小数点的位置与VI运行之前二进制小数点的位置相同,并无改变。这与浮点数恰好相反,进行浮点数算术运算时,浮点数的二进制小数点或十进制小数点的位置将改变。如算术运算所要求的字长大于定点数的字长,则运算后可能导致数据损失。

LabVIEW将调整数值函数的输出值的字长以尽量避免数据损失。然而,如表示输出值所要求的字长超出了指定的最大范围或LabViEW所允许的64位,则LabVIEW无法避免数据损失。如要配置数值函数的输出设置,右键单击函数,从快捷菜单中选择属性,打开数值节点属性对话框进行配置。

上溢和凑整

对定点数进行算术运算或使用转换为定点数函数将数值数据转换为定点数据时,都可能发生上溢和凑整。通过配置,LabVIEW可避免数值函数输出的定点数发生溢出或凑整。但在某些条件下LabVIEW无法避免溢出或凑整。

例如,将定点值连线数值函数(加、减、乘、平方),LabVIEW将默认为增加输出值的字长以使运算结果得以正常显示。此做法同样适用于浮点值。然而,如避免溢出或凑整所要求的字长超出了LabVIEW可接受的最大字长或用户指定的最大字长,则溢出或凑整可能无法避免。LabVIEW接受的最大字长为64位。

注:  如将一个定点值连接至除函数、倒数函数、平方根函数,因为精度无穷,所以经常会发生凑整状态。

在二进制中无法确切表示的类型周期和值也可能导致溢出或凑整。

溢出

当运算结果在输出类型能表示的值的范围外时,将发生溢出。可为溢出选择下列溢出模式进行处理:

  • 饱和-如输出值大于输出类型可接受范围的最大值,LabVIEW将强制,即对将该值四舍五入至指定的最大值。如值小于可接受范围的最小值,LabVIEW将值强制转换为指定的最小值。
  • 绕回-如输出值在输出类型可接受范围之外,LabVIEW将舍弃输出值的有效位,直到输出值位于输出类型的可接受范围内。该选项要求输出值符合指定的编码方式。如选择该选项便无法指定可接受范围,因为LabVIEW将自动使范围符合编码方式。
注:  通常情况下,饱和模式需要FPGA终端上额外的硬件资源。

将定点数配置为包括上溢状态,确定是否发生上溢。如定点值包括上溢状态,LabVIEW将分配额外的存储空间,用于追踪作为计算结果的定点值是否溢出。将定点数配置为包括上溢状态后,可在定点数控件和常量上显示上溢状态LED。定点值的溢出状态为TRUE时,LED灯亮。也可使用定点溢出?函数确定定点数的上溢状态。定点函数可对定点数字的溢出状态进行操作。

注:  LabVIEW不检查定点数的下溢情况。

使用比较函数比较定点数时,LabVIEW将忽略上溢状态,只比较数值。例如,如使用等于?函数比较上溢状态为TRUE的定点数和数值为1.5,无上溢状态的定点数,LabVIEW将返回TRUE。

如要配置数值函数的输出设置,右键单击函数,从快捷菜单中选择属性,打开数值节点属性对话框进行配置。该对话框用于配置LabVIEW处理溢出和凑整。

凑整

当输入值或运算结果的精度大于输出类型的精度时,将发生凑整。LabVIEW将输入值强制为一个与输出类型精度相同的值。例如,假设输出类型可表示下列连续值st。如运算结果为x,且xst之间,即s<x<t,由于输出类型无法精确表示x,所以需要进行凑整。

可为凑整选择下列凑整模式进行处理:

  • 截断舍入-向下取整到输出类型能表示的最近值。LabVIEW将舍弃值的最低有效位。取整模式的性能最佳,但得到的输出值精度最低。

    例如,如输出值x在连续值st之间,即

    s<x<t

    则LabVIEW将x设为与s相同。
  • 半值向上-取整到输出类型能表示的最近值。如值正位于两个有效值之间,该模式将值取整为两个有效值中较大的一个。LabVIEW在输出值上加上最低有效位的一半,然后截断该值。这种取整模式比阶段模式的输出值更准确,但对性能影响较大。

    例如,如输出值x在连续值st之间,即

    s<x<t

    LabVIEW将x设为等于st二者之中较近的那个值。如x正位于st之间,则LabVIEW将选择使x等于t
  • 奇偶舍入-取整到输出类型能表示的最近值。如取整的值刚好在两个有效值之间,LabVIEW将检查该值中取整后将成为最低有效位的位。如该位为0,该模式将把值取整到两个值中输出类型能表示的较小的值。如该位不为0,该模式将值取整到两个值中较大的值。取整模式对性能的影响最大,但其输出值比截断模式更准确。该模式也将并且中和了进行多次半值向上的取整时可能出现的趋向较大值的倾向。该模式为默认取整模式。

    例如,如输出值x在连续值st之间,即

    s<x<t

    LabVIEW将x设为等于st二者之中较近的那个值。如x正位于st之间,如取整后最小有效位为0时,选择s;如取整后最小有效位不为0时,选择t。如取整后最小有效位不为0时,选择t
注:  取整模式对性能的影响都微乎其微。但是,如在FPGA的终端运行处理溢出的VI,则取整可能会对性能有较大的影响。

 

定点配置对FPGA资源的影响

        在FPGA VI中使用定点数时,为特定函数选择正确的溢出和四舍五入模式非常重要。高吞吐率数学函数和部分数值函数带有配置对话框,可用于模式选择。如能够产生溢出或四舍五入,这些模式将影响FPGA VI所需的FPGA资源量。如不能产生溢出或四舍五入,操作不需要使用额外的FPGA资源。

多数情况下,在函数的配置对话框中勾选匹配至源复选框可避免溢出。如勾选此复选框,LabVIEW将尝试调整输出数据类型的宽度和范围,从而不会产生溢出或四舍五入。但此调整并不适用于所有情况。例如,函数包含除法时会一直产生四舍五入。且某些函数不包含此复选框。

溢出模式的影响

通常溢出模式以下列几种方式影响FPGA资源:

  • 饱和-需要FPGA资源判定输入值是否位于输出类型的范围内并选择返回原始值或饱和值。
  • 截位-所需的FPGA资源少于饱和模式。

四舍五入模式的影响

通常四舍五入模式以下列几种方式影响FPGA资源:

  • 截断舍入-移除位,因此不需要占用FPGA资源。但此模式对于多数数据流将产生最大的平均误差。此模式为整型操作的默认模式。
  • 半值向上(非对称)-添加至输出数据类型的最低有效位。此选项需要一个宽度等于输出数据类型的加法器。
  • 奇进偶舍-所需FPGA资源最多,且在三种舍入模式中生成最长的组合路径。但此模式对于多数数据流可返回统计意义上最正确的结果,因此其为定点数据类型的默认四舍五入模式。
注:  高吞吐率除和高吞吐率倒数函数使用输出值向零取整的四舍五入模式。此模式将输出值四舍五入为数据类型能够表示的最接近的值。如值为整数,LabVIEW进行截断取整。如值为负数,假设至少有一位删除的位不为零,LabVIEW删除最低有效位(LSB)并为剩余的LSB添加符号位。

例如,输出值x位于连续值st之间(s < x < t),如x为正数,LabVIEW设置x等于s。如x为负数,LabVIEW设置x等于t

对于这两个函数,与其它四舍五入模式相比,向零取整使用的FPGA资源最少。不能为这些函数指定不同的四舍五入模式。

如何将定点数缩放到整数的整个范围 

        LabVIEW 中可用于将定点 (FXP)转换 为整数或浮点的 函数有:

  • 定点到整数转换  用于转换整数。
  • 用于转换任何数值数据类型的 定点函数。

 【LabVIEW FPGA入门】FPGA中的数学运算,现场可编程门阵列【LabVIEW FPGA】,labview,LabVIEW FPGA

 

将任意大小的 FXP 缩放为整数

        定点到整数转换可用于将 FXP 数字转换为整数,并且整数的大小将基于 FXP 数字的大小。例如,如果您的 FXP 的字长为 8 位,则会将其转换为 I8,但字长为 9 的 FXP 将转换为 I16。(字和整数字长描述)

        这在某些情况下可能没问题,但是如果我们需要将任何FXP(任何字长)转换为特定大小的整数,例如将任何大小的 FXP 转换为 I16,我们需要将该 FXP 转换为在使用定点到整数转换之前,字长为 16 位:

        1.创建您的初始 FXP 编号,这可以来自 FPGA I/O、常数或控件。 

                如果使用控件或常量,您可以右键单击它,选择“属性”=>“数据类型” 并编辑字长和整数字长。设置 字长 = 4 位,整数字长 = 2 位。

【LabVIEW FPGA入门】FPGA中的数学运算,现场可编程门阵列【LabVIEW FPGA】,labview,LabVIEW FPGA

        2.将 FXP 控件(或常数)连接到 定点 转换函数,并将输出配置设置为 16 位。

        3.右键单击 “到定点” 并选择 “属性”=>“输出配置”将编码设置为带符号, 字长 = 16 位整数字长 = 2 位。这将确保输出设置为 16 位有符号整数 (I16),这意味着 I16 数字的整个范围为 -32768 I16 到 +32767 I16,而无符号 16 位整数 (U16) 的范围为 0 到 65535

【LabVIEW FPGA入门】FPGA中的数学运算,现场可编程门阵列【LabVIEW FPGA】,labview,LabVIEW FPGA

        4.将定点 转换函数的输出连接到定点到整数转换 函数。其输出将是一个 16 位整数,缩放到正确的范围。

将整数转换回 FXP

要转换回定点数,请反转函数。

        1.将整数连接到 整数到定点 函数,

        将已知的 FXP 值连接到整数到定点转换函数 上的 定点类型输入。可以使用控件或常量,只要具有与初始 FXP 数字相同的属性(字和整数字长度)即可确保其以正确的格式转换回来。或者,将初始 FXP 值直接连接到定点类型 输入。 

        注意:它不是 必需的 输入,但建议连接,以便您更好地控制功能。 【LabVIEW FPGA入门】FPGA中的数学运算,现场可编程门阵列【LabVIEW FPGA】,labview,LabVIEW FPGA

 

        2.整数到定点 转换的输出 将是一个 FXP 数字,其属性与初始 FXP 数字相同。文章来源地址https://www.toymoban.com/news/detail-800695.html

【LabVIEW FPGA入门】FPGA中的数学运算,现场可编程门阵列【LabVIEW FPGA】,labview,LabVIEW FPGA

到了这里,关于【LabVIEW FPGA入门】FPGA中的数学运算的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • FPGA的可编程逻辑单元(LUT和寄存器)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结 1.根据PLD器件单片集成度的高低,可将PLD分为低密度可编程逻辑器件和高密度可编程逻辑器件。 2.按器件结构类型划分      

    2024年02月19日
    浏览(51)
  • 零基础学FPGA(八):可编程逻辑单元(基本结构,Xilinx+Altera)

          在写这篇文章之前,对这个专栏做一个补充解释。本来按我之前的想法是,把这个专栏写成一个比较层次化,一层一层慢慢深入的系统化专栏。但是,在工作的时候,刚好在做某一件事,在这个时间段,对这个知识点比较深刻,所以就提前把这篇文章写了,导致此专

    2024年02月01日
    浏览(46)
  • MachXO2系列 FPGA LCMXO2-7000HC-4TG144C-可编程逻辑器件介绍

    莱迪思深力科MachXO2系列LCMXO2-7000HC-4TG144C是高度可配置的串行逻辑器件(PLD),具有低误差,具有和高系统集成等特性。MachXO2系列逻辑密度增加了3倍,嵌入存储增加了10倍,静态降低100倍,而成本降低30%,因此广泛使用在系统中应用如通信架构,计算,高端工业和高端医疗以

    2024年02月10日
    浏览(38)
  • XC6SLX9-2FTG256C 一款Spartan-6系列可编程逻辑FPGA

    详情描述: The Spartan®-6系列提供领先的系统集成能力,以最低的总成本为高容量的应用。 这个13人家庭提供了从3,840到147,443个逻辑单元的扩展密度,其功耗是以前的一半。 Spartan®-6系速度更快,连接更全面。建立在成熟的45 nm低功率铜工艺基础上提供最佳的成本,功率和性能

    2024年04月10日
    浏览(79)
  • 用可编程逻辑器件FPGA LCMXO2-4000HC-6MG132I 实现智能汽车解决方案设计

    LCMXO2-4000HC-6MG132I lattice莱迪斯深力科 MachXO2 可编程逻辑器件 (PLD) 由六个超低功耗、即时启动、非易失性 PLD 组成,可提供 256 至 6864 个查找表 (LUT) 的密度。 MachXO2 系列 PLD 提供多种特性,例如嵌入式块 RAM (EBR)、分布式 RAM 和用户闪存 (UFM),这些特性使这些器件能够用于低成本、

    2024年02月07日
    浏览(40)
  • 可编程逻辑阵列PLA

    一、集成电路的发展和现状        随着电子技术的发展,人类社会已进入数字时代,数字系统广泛应用于计算机、数据处理、通信与测量等领域,在我们日常生活中起着越来越重要的作用。由于数字系统比模拟系统有更高的精确度和可靠性,以前用模拟系统完成的许多任务

    2023年04月08日
    浏览(38)
  • DPU — 完全可编程网络

    类比的,完全可编程平台就像 “智能手机” 一样,手机(硬件)是一个平台,上面的 APP(业务)完全由用户自己决定。 完全可编程的原则: 软件定义一切,硬件加速一切。 业务逻辑可实现。 抽象硬件,编程接口统一。 但实际上,目前的 DPU 产品仍处于 “功能机” 的阶段

    2023年04月08日
    浏览(48)
  • 西电微机原理实验四 可编程并行接口实验

       1. 了解可编程并行接口8255的内部结构。   2. 掌握工作方式、初始化编程及应用。    1. 流水灯实验:利用8255的A口循环点亮发光二极管。   2. 在完成(1)基础上,增加通过读取开关控制流水灯的循环方向和循环方式。    8255是一个通用可编程并行接口电路。它具

    2024年02月05日
    浏览(55)
  • UnityShader——03图形硬件简史与可编程管线

    GPU英文全称Graphic Processing Unit,中文翻译为“图形处理器”,在现代计算机系统中的作用变得越来越重要 20世纪六七十年代,受硬件条件的限制,图形显示器只是计算机输出的一种工具,限于硬件发展水平。人们只是纯粹从软件实现的角度来考虑图形用户界面的规范问题,此

    2024年02月19日
    浏览(41)
  • 可编程逻辑器件之数码管显示实验

    一、实验目标 能够熟练的进行可编程逻辑器件开发,能够通过具体工程需求进行需求分析、模块划分、代码编写、功能仿真、综合分析、板级验证,能够独立正确的进行实验操作,培养学生的工程实践研究能力和动手实践能力,具备借助可编程逻辑器件开发平台和仿真工具科

    2024年02月02日
    浏览(122)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包