一种基于cordic算法的除法器的制作方法

文档序号:27681932发布日期:2021-12-01 00:00阅读:615来源:国知局
一种基于cordic算法的除法器的制作方法

1.本发明属于数字信号处理技术领域,具体涉及一种基于cordic算法的除法器。


背景技术:

2.随着科技的发展,在无线通信、语音通信、图像处理等场景下,往往涉及大量的数据处理,而且对数据处理时的计算精度和实时性要求很高。
3.现有的数据处理离不开加减乘除运算,以除法为例,常见的除法器有以下几种:(1)对除数进行直接等效转换的除法器,该除法器虽然实现起来最简单,但其只适合除数固定的场景,应用场景太窄适用性不强;(2)基于线性收敛算法的除法器,该除法器在除数比较小时,处理延时大,实时性不强,不能适应高吞吐率的应用场景;(3)阵列除法器,其采用可控的加减法单元所组成的流水阵列来实现,硬件资源消耗较多;(4)采用cordic算法的除法器,其通过一系列固定的、与运算基数相关的角度的不断偏摆以逼近所需的旋转角度。尽管现有的采用cordic算法的除法器可以较好地解决前三种除法器应用场景窄和硬件消耗多的问题,然而在分母远大于分子时存在精度骤降的问题。


技术实现要素:

4.本发明提供了一种基于cordic算法的除法器,用以解决现有技术中的除法器在分母远大于分子时出现的精度骤降的问题。
5.为解决上述技术问题,本发明提供了一种基于cordic算法的除法器,其包括:
6.输入模块,用于接收分子和分母;
7.位宽获取模块,用于获取输入模块输出的分母,求取分母的有效位宽,有效位宽指的是分母转化成二进制数时除符号位外的有效位数;
8.更新模块,用于接收分母的有效位宽n,根据有效位宽n确定新的分子,并将新的分子做为输入模块中分子的更新值,令输入模块将接收到的分母和更新后的分子传输至除法运算模块,新的分子为2
n
‑1;
9.除法运算模块,基于cordic算法接收到的分子和分母进行除法运算得到商;
10.校正模块,用于获取有效位宽n,将除法运算模块得到的商与输入模块接收的分子相乘,并将相乘后的结果右移n

1位,将右移后的结果作为输入模块中接收的分子和分母的商。
11.上述技术方案的有益效果为:本发明的除法器先利用分母的有效位宽获得新的分子,并求取新的分子和分母的商,在这种情况下,利用新的分子代替原来的分子与分母进行除法运算能够避免对数值相差较大的分子分母求商,进而解决在分母远大于分子时精度骤降的问题,然后将除法运算模块得到的商与输入模块接收的分子相乘,并基于有效位宽将相乘后的结果右移,从而获得输入模块中接收的分子和分母的商。
12.进一步地,为了能够得到准确的有效位宽,本发明提供了一种基于cordic算法的除法器,还包括所述位宽获取模块包括多个比较器、多个与门,多个位与元件和多个位或元
件,通过比较器和对应的与门确定分母所在位宽区间,再通过位与元件使用位与运算过滤出有效位宽所在的位宽值,最后通过位或元件使用位或运算将位宽值提取出来,从而获得有效位宽。
13.进一步地,为了更好地得到准确的有效位宽,本发明提供了一种基于cordic算法的除法器,还包括位宽获取模块在将分母输入比较器之前先将分母转化成无符号数。
14.进一步地,为了提高商的精度,本发明提供了一种基于cordic算法的除法器,还包括所述除法运算模块在进行除法运算前先将接收的分子和分母转化成无符号数。
15.进一步地,为了改善除法器迭代不收敛的问题,本发明提供了一种基于cordic算法的除法器,还包括所述除法运算模块包括比较单元和位移单元,比较单元对接收的分子和分母进行比较,并在分母小于分子时,通过位移单元对分母左移第一设定位数,左移后的分母大于分子。
16.进一步地,为了更好地解决除法器迭代不收敛的问题,本发明提供了一种基于cordic算法的除法器,还包括分母左移的位数为使得位移后的分母大于所述除法运算模块接收的分子的最小位移值。
17.进一步地,为了解决迭代过程中分母多次右移后快速接近0的问题,本发明提供了一种基于cordic算法的除法器,还包括所述位移单元对接收的分子和分母同时左移第二设定位数,所述除法运算模块输出标,标为第二设定位数与第一设定位数的差值。
18.进一步地,为了能够统一分子分母的数据类型,本发明提供了一种基于cordic算法的除法器,还包括所述除法运算模块包括多个选择器,以将分子和分母转化成无符号数。
19.进一步地,为了能够获得移位后的分子与分母的商,本发明提供了一种基于cordic算法的除法器,还包括所述除法运算模块包括迭代计算单元,用于接收经过所述位移单元处理的分子分母,基于cordic算法对分子分母进行设定次数的迭代计算,迭代完成后输出商。
20.进一步地,为了更好地提高计算结果的精度,本发明提供了一种基于cordic算法的除法器,还包括所述校正模块还获取所述除法运算模块输出的标,将标和n

1进行求和,对将相乘后的结果根据求和的结果进行右移。
附图说明
21.图1为本发明的位宽获取模块的电路结构的示意图;
22.图2为本发明的除法运算模块的电路结构的示意图;
23.图3为本发明的除法器与现有除法器的精度对比图。
具体实施方式
24.为了使本发明的目的、技术方案及技术效果更加清楚明白,以下结合附图及具体实施例对本发明进行进一步详细说明。
25.基于cordic算法的除法器实施例:
26.图1为本发明的位宽获取模块的电路结构的示意图。图2为本发明的除法运算模块的电路结构的示意图。
27.在本实施例中,基于cordic算法的除法器包括输入模块、位宽获取模块、更新模
块、除法运算模块和校正模块。输入模块接收分子分母,利用位宽获取模块获取分母的有效位宽,更新模块基于有效位宽获得新的分子,并令输入模块基于新的分子对分子进行更新,然后将更新的分子和接收的分母传输至除法运算模块,在除法运算模块中计算分子和分母的商,校正模块基于有效位宽对商进行右移从而得到输入模块的接收的分子和分母的商。基于本实施例的除法器能够解决现有技术中的除法器在分母远大于分子时出现的精度骤降的问题。
28.具体地,输入模块用于接收分子分母。分子可以用符号a表示。分母可以用符号b表示。分子a和分母b是二进制数或十进制数。位宽获取模块用于获取输入模块输出的分母,求取分母的有效位宽。有效位宽用符号n表示。有效位宽n指的是分母转化成二进制数时除符号位外的有效位数。例如,分母为10,将分母转化至二进制时得到分母00001010,分母00001010最左侧(即最高位)的“0”为符号位,有效位宽为排除符号位后自左侧起第一个非零位开始至最后一位的位数,故有效位宽是“1010”的位数,因此分母10的有效位宽n是4。
29.在本实施例中,位宽获取模块的电路结构如图1所示。如图1所示,有效位宽电路包括选择器、多个比较器、多个与门、多个位与元件和多个位或元件。如图1所示,电路首先通过选择器将输入数据(即分母b)转换成无符号数,然后使用比较器和对应的与门找出分母所在位宽区间,再通过多个位与元件使用位与运算过滤出位宽所在的区间指示值(即位宽值),最后通过多个位或元件使用位或运算将位宽值(即有效位宽n)提取出来。具体地,图1中的输入数据为32位,din[31]表示符号位的数值,din表示各位上的原输入,~din+1’b1表示各位上转化为无符号数后的数值,若din[31]的数值为0,即输入的数值为正数,则选择din中的数据,若din[31]的数值为1,即输入的数值为负数,则选择~din+1’b1中的数据。其中,din_vld表示电路信号,其用于指示当前输入数据是否有效,当din_vld为1表示有效,din_vld为0表示无效,5’d0是指用位宽为5bit的信号表示十进制数0,其中d是十进制(decimal);5是指5个比特,5’d1、5’d2、
……
、5’d32的含义参考5’d0。
[0030]
在本实施例中,更新模块用于接收位宽n,根据有效位宽n获得新的分子,新的分子为2
n

1。例如分母10的有效位宽是4,新分子为23,即新的分子为8。更新模块计算得到新的分子后生产更新指令,并将更新指令和新的分子传输至输入模块中。输入模块收到更新指令后基于新的分子对输入模块中的分子进行更新,然后将更新后的分子和接收到的分母传输至除法运算模块。
[0031]
在本实施例中,除法运算模块对接收的分子和分母进行除法运算得到对应的商。基于上述可知,除法运算模块接收的分子和分母来自于输入模块。由此,利用新的分子代替原来的分子与分母进行除法运算能够避免对数值相差较大的分子分母求商,进而解决在分母远大于分子时精度骤降的问题。
[0032]
在本实施例中,除法运算模块包括比较单元、位移单元和迭代计算单元。
[0033]
比较单元对除法运算模块接收的分子和分母进行比较,并在分母小于分子时,通过位移单元对分母进行左移。具体地,比较单元比较分子和分母,若分母小于分子,则生成分母移位信号;若分母不小于分子,则生成同时移位信号。位移单元用于接收分母移位信号或同时移位信号,若接收分母移位信号,则对分母左移第一设定位数。其中左移第一设定位数后的分母大于输入单元接收的分子。由此,能够解决后续除法器的算法(即cordic算法)迭代不收敛的问题,提高计算精度。对分母左移第一设定位数后同时对分子分母左移第二
设定位数(即对分母左移第一设定位数和第二设定位数,对分子左移第二设定位数)。若接收同时移位信号,则直接对分子分母同时左移第二设定位数。由此,对分子分母同时左移第二设定位数,能够解决后续迭代计算单元在迭代过程中分母多次右移后快速接近0,使得精度下降的问题。其中,第一设定位数可以为能够使得位移后的分母大于所述除法运算模块接收的分子的最小位移值。第二设定位数可以取15。另外,除法运算模块接收的分子和分母在传输至比较单元前可以先将分子和分母转化成无符号数。由此,能够统一分子分母的数据类型,使得分子分母在数据类型相同或不同的情况下均可以利用本发明的除法器进行处理。另外,基于位移单元的移位情况,除法运算模块输出标,标为第二设定位数与第一设定位数的差值。
[0034]
在本实施例中,迭代计算单元基于位移后的分子分母迭代计算单元计算出商。具体地,迭代计算单元用于接收经过位移单元处理的分子分母,基于cordic算法对接收的分子分母进行设定次数的迭代计算,迭代完成后输出商和标。其中设定次数的值等于第二设定位数的值。若第二设定位数取15,则进行迭代的设定次数也取15。商可以用dout表示。标可以用scale。在这种情况下,由于除法运算模块在计算商之前先进行分子分母的移位处理,从而使得本实施例的除法器能够改善现有技术中迭代不收敛和迭代过程中分母的右移导致精度过于快速接近0的问题。本实施例的除法器能够应用于数字信号处理过程中需要使用定点除法运算单元的场景中。
[0035]
在本实施例中,除法运算模块的电路结构如图2所示。如图2所示,电路首先对其输入的分子a(此时a为输入模块更新后的分子,a=2
n
‑1)和分母b,通过2个比较器将分子分母转成无符号数,其中,a表示各位上的原数据类型的分子输入,~a+1表示转化为无符号数后的各位上的分子输入,b表示各位上的原数据类型的分母输入,~b+1表示转化为无符号数后的各位上的分母输入。a[31]表示分子符号位的数值,b[31]表示分母符号位的数值。通过多个比较器比较分子分母的对应位,以获得最低位第1个高电平的序列号,从而得出最小移位值scale_tmp,使得分母左移scale_tmp后恰好比分子大;基于最小移位值scale_tmp对分母进行移位,且对分子分母同时左移15位,即最终分子分母分别左移15位和scale_tmp+15位,将移位后的分子和分母输入到迭代部分电路,a_iter[0]表示初始输入迭代部分电路的分子。b_iter[0]表示初始输入迭代部分电路的分母。使用两个寄存器对分子和商进行寄存并迭代,每次根据当前分子的正负性选择下一次迭代结果是加分支还是减分支;如果是正则选择减法分支,如果是负选择加法分支作为下一次的迭代结果,15次迭代后输出计算结果dout和scale。具体地,如图2中,第i次迭代时的,利用a_iter[i

1]
±
b_iter获得商z[i

1],其中,
“±”
取决于第i

1次迭代时分子的符号位a_iter[i

1][47](由于在迭代之前分子左移了,因此符号位发送变化),当a_iter[i

1][47]为0(即分子为正),则取
“‑”
(即选择减分支),当a_iter[i

1][47]为1(即分子为负),则取“+”(即选择加分支)。然后利用z[i

1]
±
x[i]对当前次的商进行移位得到当次迭代的商z[i]。其中,“z[i

1]
±
x[i]”中的
“±”
取决于第i

1次迭代时分子的符号位a_iter[i

1][47],当a_iter[i

1][47]为0,则取“+”,当a_iter[i

1][47]为1,则取
“‑”
。z[0]=0表示第一次迭代之前的商的值(即商的初始值)。x[i]=1表示每次迭代时x均取1。15次迭代后获得商dout=z[15]。此时除法运算模块输出的标为scale=15

scale_tmp。若除法运算模块接收的分子小于分母,则scale_tmp=0,此时除法运算模块输出的标为scale=15。
[0036]
在本实施例的除法器中的校正模块用于获取位宽获取模块输出的有效位宽n、除法运算模块得到的商和输入模块接收的分子,并将除法运算模块得到的商与输入模块接收的分子相乘,即dout=a*dout_tmp,其中a为输入模块接收的分子,dout_tmp为除法运算模块输出的商。
[0037]
另外,校正模块还获取除法运算模块输出的标scale,将标scale和(n

1)进行求和,得到求和的结果(即scale+(n

1)),对将相乘后的结果右移scale+(n

1)位,移位后的结果为输入模块的接收的分子和分母的商。其中若除法运算模块接收的分子小于分母,则除法运算模块输出的标为第二设定位数,若第二设定位数取15,此时scale的默认输出是15,即scale=15,此时校正模块将相乘后的结果右移n+14位,得到输入模块中接收的分子和分母的商。在这种情况下,校正模块输出的商能够提供更多细节,提高计算精度。
[0038]
基于本实施例的除法器,输入模块接收分子分母,利用位宽获取模块获取分母的有效位宽,更新模块基于有效位宽获得新的分子,并令输入模块基于新的分子对分子进行更新,然后将更新的分子和接收的分母传输至除法运算模块,在除法运算模块中计算分子和分母的商,通过校正模块基于有效位宽对商进行右移获取输入模块的接收的分子和分母的商。在本发明的除法器中在分母远大于分子时,利用分母的有效位宽获得新的分子,并求取新的分子和分母的商,在这种情况下,新的分子相较于原来的分子更加接近于分母,利用新的分子代替原来的分子与分母进行除法运算能够避免对数值相差较大的分子分母求商,进而解决在分母远大于分子时精度骤降的问题。另外在除法运算模块中,将接收的分子分母传输至比较单元进行比较,基于比较结果位移单元将对分母左移第一设定位数后对分子分母同时左移第二设定位数或直接对分子分母同时左移第二设定位数,其中左移第一设定位数后的分母大于输入单元接收的分子。在这种情况下,将分母左移第一设定位数后使其正好大于分子,能够解决后续除法器的算法迭代不收敛的问题,提高计算精度。另外,将分子分母同时左移第二设定位数,能够解决后续迭代计算单元在迭代过程中分母多次右移后快速接近0,使得精度下降的问题。
[0039]
在本实施例中,位宽获取模块的输入是有符号数,位宽获取模块先将有符号数转化成无符号数,然后确定位宽区间。在另一些实施例中,位宽获取模块的输入是无符号数,位宽获取模块之外的模块将有符号数转化成无符号数,然后将无符号数输入位宽获取模块。
[0040]
下面对本实施例的除法器的上述效果进行验证,具体过程如下:
[0041]
假设分母为50000,分子从1到1000,递增进行除法计算。将分母和分子输入到本发明的除法器和现有的除法器中,可以分别得到不同分子下对应的1000个值。基于两种除法器各自的1000个值计算不同除法器的不同值的相对误差,并通过图3进行展示。图3为本发明的除法器与现有除法器的精度对比图。基于图3的相对误差的比较,本发明的除法器的相对误差基本持平,而现有的除法器的相对误差波动较大,由此可见,本发明的除法器相较于现有的除法器的计算结果的精度更加稳定。另外,分子取不同值时本发明的除法器的相对误差均小于10
‑5,而现有的除法器的相对误差普遍高于本发明的除法器的相对误差,且在分子越小的情况下相对误差越高,现有的除法器的相对误差与本发明的除法器相比相差了3~4个量级,甚至更多。由此可见,在分子较小的情况下,本发明的除法器的相对误差性能较好,计算结果的精度更高。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1