一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种适用于浮点格式的复数的近似取模实现电路及方法与流程

2021-10-19 23:28:00 来源:中国专利 TAG:浮点 复数 适用于 近似 电路


1.本发明属于数字信号处理技术领域,具体涉及一种适用于浮点格式的复数的近似取模实现电路及方法。


背景技术:

2.在雷达、通信等领域数字信号处理过程中,所采用的信号数据经常是复数的形式其中包含了幅度信息和相位信息,其中涉及到的各种计算经常需要用到信号的幅度信息就需要进行复数取模运算,常规的复数取模是非线性的,实现起来非常复杂,并且无论是软件实现还是硬件实现的方式都需要消耗大量的运算,运算处理起来较慢,无法满足目前雷达信号处理所需要的实时性。
3.在硬件实现复数取模算法一般采用cordic算法。从广义上讲,cordic算法提供了一种数学计算的逼近方法。由于它最终可分解为一系列的加减和移位操作,故非常适合硬件实现。cordic算法的硬件实现可以分为串行和并行,对于串行算法需要多次的迭代才能完成一次取模运算,而且其加减操作对于浮点数格式数据进行计算时也同样会消耗大量资源。并行cordic算法采用流水线的实现方式,面积很大,实现成本很高,对于连续串行输入数据比较有效,有时候需要很多个时钟周期才能出结果。


技术实现要素:

4.为了解决现有技术中存在的上述问题,本发明提供了一种适用于浮点格式的复数的近似取模实现电路及方法。本发明要解决的技术问题通过以下技术方案实现:
5.第一方面,本发明提供的一种适用于浮点格式的复数的近似取模实现电路包括:浮点数取模模块、浮点数比较模块、浮点数倍数比较模块、参数选择模块、浮点乘法运算模块以及浮点加法运算模块;
6.所述浮点数取模模块,用于对输入浮点数格式的复数取模;
7.所述浮点数比较模块,用于将取模之后的实部和虚部进行比较,确定最大值以及最小值,
8.所述浮点数倍数比较模块,用于确定所述最大值与最小值的倍数关系,基于倍数关系,在预设的多个倍数范围中确定所述倍数关系所在的目标倍数范围;
9.所述参数选择模块,用于确定与目标倍数范围对应的取模系数;
10.所述浮点乘法运算模块,用于基于所述取模系数,分别对所述最大值与所述最小值进行浮点数格式的乘法运算处理,获得最大值的运算结果以及最小值的运算结果;
11.所述浮点加法运算模块,用于将最大值的运算结果与最小值的运算结果进行加法运算,获得单精度浮点数的近似取模运算结果。
12.可选的,所述浮点数取模模块具体用于:
13.对输入浮点数格式的复数的负符号位取反,正符号位保持不变,完成取模。
14.可选的,所述浮点数倍数比较模块,具体用于:
15.对于最大值以及最小值的阶码以及尾码进行分析运算,得两个浮点数的倍数关系。
16.可选的,所述浮点数倍数比较模块,具体用于:
17.计算最大值的阶码与最小值阶码之间的差值;
18.基于所述差值,以及最大值的尾码与最小值的尾码之间的关系,确定最大值与最小值之间的倍数关系。
19.可选的,所述浮点数倍数比较模块,具体用于:
20.基于所述差值,以及最大值的尾码与最小值的尾码之间的关系,使用倍数计算公式,确定最大值与最小值之间的倍数关系;
21.所述倍数计算公式为:
22.i=(a
fa
<b
fa
)?expo_sub

1:expo_sub
[0023]2i
<k<2
i
1
[0024]
其中,a
fa
表示最大值的尾码,b
fa
表示最小值的尾码,expo_sub表示最大值的阶码与最小值阶码之间的差值,k表示倍数。
[0025]
可选的,所述预设的多个倍数范围分别为:
[0026]
1~(1.33~1.55)、(1.33~1.55)~2、2~4、4~8、8~16、16~正无穷。
[0027]
第二方面,本发明提供的一种适用于浮点格式的复数的近似取模实现方法,提供第一方面的复数取模近似算法实现电路,所述复数取模近似算法实现方法包括:将待取模浮点格式的复数输入所述复数取模近似算法实现电路,得到所述待取模的浮点格式的复数的取模近似值。
[0028]
本发明提供的一种适用于浮点格式的复数的近似取模实现电路及方法,通过流水线的方式进行浮点数格式的复数取模运算,数据输出延时可以满足实时性的要求,相比于传统方案降低一半。并且运算方式只有加法和乘法避免了资源消耗过大的开方运算,减少了运算处理所需消耗的资源。该实现电路中的倍数比较模块对于浮点数格式的复数提前进行的划分分组,参数选择模块来选择对应的倍数系数,从而简化现有技术的电路。
[0029]
以下将结合附图及实施例对本发明做进一步详细说明。
附图说明
[0030]
图1是本发明实施例提供的一种适用于浮点格式的复数的近似取模实现电路的结构图;
[0031]
图2是本发明实施例提供的浮点数格式示意图;
[0032]
图3是现有技术的浮点数取模直接运算电路的结构图;
[0033]
图4a是本发明实施例提供5组参数近似取模仿真效果图;
[0034]
图4b表示本发明实施例的算法仿真效果图。
具体实施方式
[0035]
下面结合具体实施例对本发明做进一步详细的描述,但本发明的实施方式不限于此。
[0036]
实施例一
[0037]
如图1所示,本发明提供的一种适用于浮点格式的复数的近似取模实现电路包括:浮点数取模模块、浮点数比较模块、浮点数倍数比较模块、参数选择模块、浮点乘法运算模块以及浮点加法运算模块;
[0038]
所述浮点数取模模块,用于对输入浮点数格式的复数取模;
[0039]
其中,可以对输入浮点数格式的复数的负符号位取反,正符号位保持不变,完成取模。
[0040]
所述浮点数比较模块,用于将取模之后的实部和虚部进行比较,确定最大值以及最小值;
[0041]
所述浮点数倍数比较模块,用于确定所述最大值与最小值的倍数关系,基于倍数关系,在预设的多个倍数范围中确定所述倍数关系所在的目标倍数范围;
[0042]
其中,所述预设的多个倍数范围分别为:
[0043]
1~(1.33~1.55)、(1.33~1.55)~2、2~4、4~8、8~16、16~正无穷。
[0044]
所述参数选择模块,用于确定与目标倍数范围对应的取模系数;
[0045]
所述浮点乘法运算模块,用于基于所述取模系数,分别对所述最大值与所述最小值进行浮点数格式的乘法运算处理,获得最大值的运算结果以及最小值的运算结果;
[0046]
所述浮点加法运算模块,用于将最大值的运算结果与最小值的运算结果进行加法运算,获得单精度浮点数的近似取模运算结果。
[0047]
可以理解,常规的求模运算是非线性的,硬件实现较为复杂,且输出延迟大,消耗资源多,为此,在很多应用场合常采用近似求模算法,通过牺牲一定的精度来获得更快的计算速度和更少的资源消耗。
[0048]
一般情况下,数据求模直接运算的公式为:
[0049][0050]
本发明的复数求模近似算法将上述公式简化为:
[0051]
∣x(t0)|=a|x
i
| b|x
q

[0052]
上述可见,本发明使用复数取模近似算法可以简化计算电路。
[0053]
传统的浮点数取模运算主要是通过直接运算得到的,将复数的虚部和实部进行平方后求和然后再进行开方操作,其电路图如图2所示。依据传统的近似求模电路结构需要同时进行多组参数的运算然后再进行结果比较。
[0054]
参考图1,可以看出本发明的实现电路主体只有两个浮点乘法器和浮点加法器,从本发明的电路结构上也可以看出所消耗的资源比直接进行运算减少了开平方操作。这种电路实现的主要原因是在于倍数比较模块对于数据分组提前进行的划分,然后根据多路参数选择模块来选择对面倍数的参数,简化了电路。
[0055]
本发明提供的一种适用于浮点格式的复数的近似取模实现电路通过流水线的方式进行浮点数格式的复数求模运算,数据输出延时可以满足实时性的要求,并且运算方式只有加法和乘法避免了资源消耗过大的开方运算,减少了运算处理所需消耗的资源。该实现电路中的倍数比较模块对于浮点数格式的复数提前进行的划分分组,参数选择模块来选择对应的倍数系数,从而简化现有技术的电路。
[0056]
实施例二
[0057]
作为本发明一种可选的实施例,所述浮点数倍数比较模块,具体用于:
[0058]
对于最大值以及最小值的阶码以及尾码进行分析运算,得两个浮点数的倍数关系。
[0059]
实施例三
[0060]
作为本发明一种可选的实施例,所述浮点数倍数比较模块,具体用于:
[0061]
计算最大值的阶码与最小值阶码之间的差值;
[0062]
基于所述差值,以及最大值的尾码与最小值的尾码之间的关系,确定最大值与最小值之间的倍数关系。
[0063]
实施例四
[0064]
作为本发明一种可选的实施例,所述浮点数倍数比较模块,具体用于:
[0065]
基于所述差值,以及最大值的尾码与最小值的尾码之间的关系,使用倍数计算公式,确定最大值与最小值之间的倍数关系;
[0066]
所述倍数计算公式为:
[0067]
i=(a
fa
<b
fa
)?expo_sub

1:expo_sub
[0068]2i
<k<2
i
1
[0069]
其中,a
fa
表示最大值的尾码,b
fa
表示最小值的尾码,expo_sub表示最大值的阶码与最小值阶码之间的差值,k表示倍数。
[0070]
浮点数的数据格式如图3,主要由符号位、阶码以及尾码组成,通过阶码求差值,以及尾码比较大小可以得到两个数的倍数关系。我们根据这种倍数划分为5个范围,对应着五种近似求模算法。
[0071]
由于上述简化过程,不可避免会出现一些相对误差,其误差可以表示为:
[0072][0073]
由公式可知,需要改变a和b的数值来让误差达到最小,但是对这个公式进行仿真分析,当只有1组参数时,最小可以达到的误差是3.96%。所以一般情况下,将其函数进行分段计算参数,降低估计误差。
[0074]
已知a和b为浮点数且a>b,k为a与b的倍数关系首先求得其阶码的差值,差值为:
[0075]
expo_sub=a
exp

b
exp
[0076]
再根据两个数据尾码的关系,以及阶码的差量得到其相差的倍数k的关系。根据k的值划分为k>16、4<k<16、2<k<4和1<k<2四个区间,在1<k<2区间内根据尾码信息判断进一步将区间划分为1<k<1.33和1.33<k<2。
[0077]
进一步进行划分的方法如下所示:
[0078]
a=(data_max_r[21:0]>=data_min_r[21:0])&&(data_max_r[22]^data_min_r[22])
[0079]
b=(expo_sub_r==1&&data_max_r[22]==data_min_r[22])
[0080]
mod0_sel=a||b
[0081]
用本发明的实现电路可以进一步将其分成1<k<(1.33~1.5)和(1.33~1.5)<k<2,具体的倍数具体数值有关,这就要求在计算两个区间的时候第一个区间在1~1.5之间和第
二个区间1.33~2的时候都具有精度很高的计算参数。
[0082]
在每个倍数范围,具体的复数求模近似算法的公式如下:
[0083]
当1<k<1.5时:
[0084]
abs_r=0.775175*x
max
0.6356*x
min
[0085]
当1.33<k<2时:
[0086]
abs_r=0.844550*x
max
0.5406*x
min
[0087]
当2<k<4时:
[0088]
abs_r=0.94*x
max
0.35*x
min
[0089]
当4<k<16时:
[0090]
abs_r=0.9899*x
max
0.156*x
min
[0091]
当k>16时:
[0092]
abs_r=x
max
[0093]
本发明通过复数取模近似算法实现电路,可以实现浮点格式的复数近似求模,近似求模过程根据浮点数的数据格式特性,结合5中不同的误差特性曲线的近似求模算法,采用两个浮点乘法器和一个浮点加法器实现了复数取模运算。可以实现0.35%的相对误差,是同类型其他算法精度的2.5~8.5倍,与基于cordic算法进行的取模运算相比,所消耗的时钟周期与资源消耗远远低于后者。
[0094]
实施例五
[0095]
本发明提供的一种适用于浮点格式的复数的近似取模实现方法,提供实施例一至实施例四任一个实施例的复数取模近似算法实现电路,实现方法包括:
[0096]
将待取模浮点格式的复数输入所述复数取模近似算法实现电路,得到所述待取模的浮点格式的复数的取模近似值。
[0097]
参考图4a以及图4b,参考图4a为5条参数近似取模的误差特性曲线,参考图4b为在根据倍数选择参数之后整体算法的误差特性曲线。为了更加直观的显示本发明提供的近似取模方法的效果,请参考表1:
[0098]
表1
[0099]
资源本发明的电路结构直接计算结构lut548968ff10071899dsp56时钟周期2251
[0100]
与直接运算结构相比,表1中展示本发明提供的算法硬件结构与直接运算的硬件结构的资源以及时钟消耗对比。由表1可知,本发明提供的电路结构以及方法在资源以及时钟消耗更少。
[0101]
本发明可以采用现场可编程门阵列(fpga)实现整个近似取模算法,克服了现有技术基于软件实现方式速度慢的问题,使得本发明速度快,硬件成本小,可以适用于图像处理和雷达探测等对数据处理速度要求较高的领域。可以通过流水线的方式进行数据求模运算,数据输出延时为22个时钟周期满足实时性的要求,并且运算方式只有加法和乘法避免了资源消耗过大的开方运算,减少了运算处理所需消耗的资源。浮点数数据格式的复数求
模近似算法,可以应用于浮点数格式复数进行取模运算,并且运算精度为0.32%,相比于同类近似算法精度有了很大的提高。
[0102]
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜