您的位置 首页 汽车

一种根据FPGA硬件求解函数的简化办法

摘 要:本文研究了一种运用FPGA进行数据处理的方法,包括:提取输入数据的高log2M个比特位的数据,作为高有效位,根据预先设置的目标函数的计算表格,

摘 要:本文研讨了一种运用FPGA进行数据处理的办法,包括:提取输入数据的高log2M个比特位的数据,作为高有用位,依据预先设置的方针函数的核算表格,查找所述高有用位对应的方针函数值y(n)以及高有用位+1对应的方针函数值y(n+1);提取输入数据的剩下比特位数据,作为低有用位,并将所述低有用位与y(n)和y(n+1)的差值相乘,得到偏移值off(n),将该偏移值与所述高有用位对应的方针函数值y(n)相加,将核算结果作为所述输入数据对应的方针函数值。本办法具有操控简略、结构规矩、单运算周期、核算精度较高的特色,合适于FPGA的数据处理完成。

导言

现场可编程门阵列(FPGA)芯片在许多范畴均有广泛的运用,尤其是在无线通信范畴。FPGA具有极强的实时性和并行处理才能,这使其对信号进行实时处理成为可能。FPGA内部一般都包括逻辑单元(查找表/触发器)、存储单元(BRAM)、乘加单元(MAC)和一些其他的时钟、引脚单元等[1-3]。

现代数字信号处理的首要发展趋势是:算法结构日趋杂乱,核算量大,实时性要求高,并且包括很多的三角函数、开方、对数等杂乱函数的核算。但FPGA内部的乘加单元并不合适直接进行此类函数的核算,需求把各种杂乱函数分解为简略的移位、加法和乘法结构,进而在FPGA中完成[4]。

当时,在FPGA上完成三角函数、开方、对数等杂乱函数的核算,技术范畴最常见的是除法,其次为开方和三角函数,很少触及对数和其他杂乱一些的函数。而在FPGA具体的完成上,此类函数一般选用直接查表法或幂级数打开法,关于三角函数和开方的核算,也会选用CORDIC的核算办法,但这三种办法的运用都有必定的局限性[4]。

1 现有的FPGA完成办法

(1)在FPGA上选用直接查表办法,来完成函数的核算,具有:

长处——通用性强、结构简略;

缺陷——跟着输入位宽的添加,内部存储量的耗费呈指数性添加。

表1给出了不同输入输出位宽所需求的存储单元(BRAM)。

表1 不同输入输出位宽所需求的存储单元

可以看出,输入输出位宽较小时,直接查表法可以满意完成要求,但在数字信号处理范畴,输入输出一般都在16bits以上,这时选用直接查表法就很难满意完成需求。

这儿以开方算法为例进行阐明。选用直接查表法进行开方核算有2种办法。

办法一:在彻底确保精度的条件下,选用直接查表法。若开方为16bits输入16bits输出,在彻底确保精度的条件下,FPGA就需求存储216深度的数据,需求64块18k BRAM的存储空间。而一片中等FPGA一般包括几十块到几百块的18k BRAM存储单元,此刻核算就要用掉大部分的存储单元,显着不满意完成的资源需求。

办法二:下降精度,削减输入位宽,选用直接查表法。

表2 直接查表法开方差错表

可以看出,跟着实践有用输入的添加,核算精度变大,很难满意核算的差错要求。

(2)在FPGA上选用幂级数打开法核算函数。

长处——核算精度可控,多级打开可以到达较高的核算精度;

缺陷——幂级数打开法为了到达较高的精度,需求多级打开,这样就需求选用较多的资源来完成。

以exp为例(0~π/4规模内),选用三角函数幂级数打开法:

若输入为16bits,选用幂级数打开法的核算框图如图1。

从资源方面考虑,三角函数幂级数打开法在FPGA中的完成需求5级乘法和3级加法,考虑每级乘法位宽需求扩展,实践需求FPGA的12个乘法器

(18bitsmes;18bits)资源。此外从差错方面考虑,0~π/4规模内,cosΦ的最大差错为0.046%, sinΦ的最大差错为0.35%。

图 1 幂级数打开法完成exp核算

此外幂级数打开法的运用规模也比较有限,开方、倒数、对数、三角函数的核算可以选用幂级数打开法,但关于等较杂乱的函数核算就不再合适用此办法进行核算。

(3)在FPGA上选用CORDIC法来完成函数的核算。

长处:将杂乱的运算分解为简略移位、加迭代

运算,结构规矩,运算周期可以猜测,比较合适于FPGA完成;

缺陷:一般运用多周期办法,单周期办法资源耗费较高,并且核算仅限于向量旋转、开方等有限的规模。

选用CORCIC核算三角函数,16bits输入,在多周期条件下需求500个左右的LUT/FFs,在单周期条件下,需求1000个左右的LUT/FFs。

2 本文提出的办法

本文在FPGA上选用两级办法进行函数核算:榜首级,直接使用输入数据的高有用位确认核算结果的有用规模;第二级,直接使用输入数据的低有用位进行核算结果的差错调整。本研讨办法充分使用FPGA内部的各种逻辑资源、乘加器(或乘法器)资源和BRAM资源:可以依据FPGA内部BRAM资源的巨细选用相应深度的数据表存储榜首级数据的有用规模;选用FPGA内部的乘加器(或乘法器)资源进行乘加操作。此办法具有操控简略,结构规矩,单运算周期,核算精度较高的特色,合适于FPGA的算法完成。

此外,选用本研讨办法的两级核算的办法,不同函数的核算完成办法共同,只需修正榜首级核算高有用位数据表格中的数据,就可以复用规划,有利于资源共享和模块化完成。

图2 FPGA两级法进行函数的核算

同现有计划的比较剖析:

(1)同直接查表法比较

以开方为例进行,资源和差错的列表如表3。可以看出,在资源和差错方面,本研讨办法在FPGA上完成函数核算优势显着。此外,FPGA可以经过添加存储单元和扩展输出位宽来进一步进步核算精度。

表3 两级核算法开方同直接查表法差错比较表

(2)同幂级数打开法的比较

首要,本问题出的新办法比幂级数打开法的运用规模更广泛。其次,在相同的函数下,以exp的核算为例,本文提出的新办法资源更好,差错更小。在资源方面,FPGA上选用的两级核算办法, 一起核算只需求2个乘法器即可,远远少于幂级数打开法的资源耗费;在差错方面,0~π/4规模内,16bits输入,cosΦ和sinΦ的最大差错都小于10-5,因而此办法差错比幂级数打开法差错要小。

(3)同CORDIC办法比较

首要,本文提出的新办法比幂级数打开法的运用规模更广泛。其次,在相同的函数下,以exp的核算为例,新办法资源耗费相对较少,cosΦ和sinΦ一起核算只需求300个左右的LUT/FFs即可。并且,新办法选用的是单运算周期形式,运算速度更高。

3 完成流程

如图3所示,本论文采纳的完成办法如下:

过程一:依据一维函数的核算,预先生成必定深度的核算表格;

过程二:移位(可选),把数据的高有用位移位成1,添加较小数据的核算精度;

过程三:提取数据的高bits,作为榜首级数据表的地址,得到数据值y(n);

过程四:提取数据的高bits,加1后作为榜首级数据表的地址,得到下一个数据值y(n+1);

过程五:核算差值diff(n)=y(n+1)-y(n);

过程六:提取数据的低bits,作为有用的偏移数据,同核算的差值相乘,得到偏移off(n)=data_lsb(n)*diff(n);

过程七:高位查表数据值y(n)同偏移相加得到核算值out=y(n)+off(n);

过程八:依据过程一的移位逆操作(可选),得到实践输出值。

图3 FPGA两级法求解函数的流程框图

如图4所示,对本研讨办法进行进一步的具体阐明。

关于恣意一个一维函数,若采样点满足密布,那么任何2个采样点之间可以看作是线性关系,可以经过插值的办法来核算。

图4 FPGA两级法求解函数的具体阐明

由图6可得出,南北极法的差错规模更小。

4 定论

在现代数字信号处理方面,FPGA具有极强的实时性和并行处理才能[5]。在FPGA的完成上,本文介绍了现有的直接查表法、幂级数打开法、CORD%&&&&&%核算办法的优缺陷。在此基础上,本文研讨了根据FPGA的南北极核算法,并把它和以上三种办法进行比较,得出南北极算法具有操控简略、结构规矩、单运算周期、核算精度较高的特色。此外,本文具体介绍了南北极算法的完成流程,并举例来进行阐明,使读者可以更好地把握南北极算法。

参考文献

Xilinx-Virtex7 Data Sheets. 2014.11.

Xilinx-Virtex7 User Guides. 2014.11.

Altera-StraTIx V Device Datasheet. 2015.7.

贝耶尔.数字信号处理的FPGA完成(第3版)[M].2011.

John G.Proakis,Dimitris G.Manolakis.数字信号处理DD原理、算法与运用(第四版)[M].

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qiche/156504.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部