一种浮点除法、开根号硬件计算装置及计算方法与流程
未命名
08-15
阅读:156
评论:0
1.本发明涉及微处理器内的浮点运算技术领域,特别涉及一种浮点除法、开根号硬件计算装置及计算方法。
背景技术:
2.对于dsp处理器,会经常调用信号处理相关函数。当前很多信号处理函数里都有三角函数的调用,通常都是调用系统库函数来实现,执行效率低、周期长、指令多。通过增加三角函数计算装置代替调用系统库函数的方式可以显著提高fft等函数库的运算速率,从而提升性能。三角函数计算装置为常见的三角函数运算提供硬件支持,是浮点运算部件的扩展,通过高效执行控制系统应用中常用的三角运算和算术运算,增强dsp芯片的指令集架构。浮点除法、浮点平方根是作为三角函数计算的其中一部分。
3.目前,浮点处理装置对诸如浮点除法、浮点平方根等计算的功能操作,主要依赖应用软件来实现,只是输出运算结果,对于运算过程中存在的数据异常操作及特殊类型未进行标注,使得运算结果不可靠,无法满足对计算速度可靠性要求较高的场合,当运算结果不可靠时需要重复运算,使得运算实时性差。
4.利用硬件实现时,浮点除法、浮点平方根运算的硬件复杂度比其他基本算术运算(加法器、减法器和乘法器)多,在获得相对较低性能的同时需要更大的面积。采用有效方法对浮点除法、浮点平方根运算的硬件实现进行改进减少资源消耗同时增加功能成为当前运算部件研究方面的重要研究方向。
技术实现要素:
5.为解决上述技术问题,本发明提供了一种浮点除法、开根号硬件计算装置及计算方法,以达到显著的增强dsp芯片对于信号处理相关函数计算的实时性、准确性,同时显著降低硬件资源开销的目的。
6.为达到上述目的,本发明的技术方案如下:
7.一种浮点除法、开根号硬件计算装置,采用16级流水线结构,分成三个部分;
8.第一部分是数据的预处理部分,共1级流水线,包括输入dff、使能控制模块、输入数据预处理模块、前导0检测模块1、前导0检测模块2、8位的加法模块、24位的左移模块、符号位处理模块、特殊数据检测模块和第一级dff;
9.第二部分是迭代部分,总共14级流水线,用于处理尾数除法和开根号迭代运算以及得出指数结果;第二阶段包括指数运算模块和迭代单元;
10.第三部分是最终数据处理部分,共1级流水线,用于特殊数据处理、非规格化处理、5种舍入、规格化以及5种异常标志处理;第三阶段包含非规格化处理模块、符号位计算模块、预处理模块、后处理模块、结果拼接模块和最后一级dff。
11.上述方案中,所述迭代单元包括浮点尾数开根号运算迭代单元和浮点尾数除法运算迭代单元,所述浮点尾数开根号运算迭代单元和浮点尾数除法运算迭代单元共用29位加
法器1、29位加法器2、商值操作模块、舍入位合并模块、迭代控制模块和第二至十五级dff。
12.进一步的技术方案中,所述浮点尾数开根号运算迭代单元还包括尾数处理模块、快速计算模块、取反模块1、取反模块2、mux1、mux2、mux3、mux4、数据处理模块1、数据处理模块2、舍入位计算模块。
13.进一步的技术方案中,所述浮点尾数除法运算迭代单元还包括操作数1预处理模块、操作数2预处理模块、mux5、mux6、mux7、数据处理模块3、数据处理模块4、29位比较器。
14.一种浮点除法、开根号硬件计算方法,包括如下过程:
15.第一阶段:数据预处理阶段
16.输入数据为操作码、操作码有效使能、舍入模式、操作数fa和操作数fb,均寄存在输入dff中;
17.输入dff寄存的操作码和操作码有效使能进入使能控制模块,得出当前浮点除法运算使能信号和浮点开根号运算使能信号;舍入模式直接进入第一级dff;操作数fa和操作数fb进入输入数据预处理模块,进行数据拆分,获得操作数fa和操作数fb的符号位、指数位、尾数位,同时根据使能控制模块的输出进行判断,均无效时则将符号位、指数位、尾数位全部数据置为0;
18.将输入数据预处理模块输出的尾数位输给前导0检测模块1和前导0检测模块2进行前导0检测,获得高位0的个数,传输给8位的加法模块和24位的左移模块;8位的加法模块将该数据与输入数据的预处理模块输出的指数位进行加法计算得到规格化后的指数位;24位的左移模块将该数据作为移位值,对输入数据的预处理模块输出的位数位进行移位,获得规格化后的尾数位;将输入数据预处理模块输出的符号位传输到符号位处理模块,计算fa符号位和fb符号位异或操作结果,得出除法的符号位结果,开根号符号位直接使用fa的符号位;特殊数据检测模块根据输入数据预处理模块的符号位、指数位、尾数位进行正0、负0、正无穷、负无穷、qnan、snan检测得出特殊数据指示信号;
19.将上述的浮点除法运算使能信号、浮点开根号运算使能信号、规格化后的指数和尾数、符号位、特殊数据指示信号均寄存到第一级dff,等待下一级流水线操作;
20.第二阶段:迭代阶段
21.之后分成3条路径,符号位计算、指数位计算、尾数位计算;其中符号位计算由第三阶段完成,指数位计算、尾数位计算由第二阶段完成;
22.对于指数位计算,使用指数运算模块,得出浮点除法fa指数加fb指数再加63的结果,开根号指数运算为fa指数右移一位加fa指数最低位再加127的结果,由于对最低位为奇数时进行了处理,所以利用尾数处理模块,根据fa指数最低位对fa的尾数进行一位的左移,得出准确的指数位;
23.对于尾数位计算,使用迭代单元,具体包括浮点尾数开根号运算迭代单元和浮点尾数除法运算迭代单元,两者使用一种主体框架实现,其中29位加法器1、29位加法器2、商值操作模块、迭代控制模块、舍入位合并模块、第二至第十五级dff进行资源复用,功能相同,使用的操作数不同,具体如下:
24.对于浮点开根号,规格化后的尾数传输到尾数处理模块经过移位调整后进入快速计算模块,获得高2位产生进位和2位数据分别传输到29位加法器1和数据处理模块1,同时获得低2位产生的进位和2位数据分别传输到29位加法器2和数据处理模块2;由于首次进入
循环,所以29位0经过mux1传输到29位加法器1和舍入位计算模块,29位1经过mux2传输到29位加法器1和舍入位计算模块;舍入计算模块根据操作数得出舍入位传输到舍入位合并模块;29位加法器1完成加法运算后得出进位和sum,进位传输到商值操作模块得出第一位商值数据,同时,进位传输到mux4用于从商值操作模块的输出结果和商值操作模块传输到取反模块2后计算输出的结果中选择一个,并将其传输到29位加法器2;sum传输到数据处理模块1完成位拼接操作,之后传输到29位加法器2;29位加法器2完成加法运算后得出进位和sum,进位传输到商值操作模块,得出第一位商值数据,sum传输到数据处理模块2完成位拼接操作;
25.迭代控制模块开始激活,计数器为0,根据第一级dff寄存的使能控制模块输出的浮点除法运算使能信号、浮点开根号运算使能信号其中之一有效时,将第一级dff寄存的使能控制模块、指数运算模块、数据处理模块2、商值操作模块、迭代控制模块和29位加法器2进位的输出寄存到第二级dff中,以上为一个周期实现,之后舍入位合并模块完成舍入位与商值合并,作为尾数输出;开始下一次迭代过程,第二级dff寄存的数据处理模块2的输出经过mux1分别进入29位加法器1和舍入位计算模块;第二级dff寄存的29位加法器2产生的进位作为选择信号,选择第二级dff寄存的商值操作模块的结果或者商值操作模块传输到取反模块2做取反逻辑操作后输出的结果,经过mux2分别传输到29位加法器1和舍入位计算模块;舍入计算模块根据操作数得出舍入位传输到舍入位合并模块;快速计算模块产生的进位和2位数据分别传输到29位加法器1和数据处理模块1,之后操作与上述一致,直至完成第2次迭代,根据上一级dff寄存的使能控制模块输出的浮点除法运算使能信号、浮点开根号运算使能信号其中之一有效时,将上一级dff寄存的使能控制模块、上一级dff寄存的指数运算模块、数据处理模块2、商值操作模块、迭代控制模块和29位加法器2进位的输出寄存到第三级dff中,无效时数据保持不变;之后操作与上述一致,直至第14次迭代,迭代控制模块输出迭代结束信号有效并寄存在第十五级dff中,下一周期时迭代控制模块将内部计数器值置为0,等待下一次运算;以上输出指数结果、尾数结果和迭代结束信号;
26.对于浮点除法,规格化后的尾数分别进入操作数1预处理模块和操作数2预处理模块完成数据拼接,因为首次进入循环,经过mux5、mux6传输到29位加法器1完成加法运算得出进位和sum;进位信号传输到商值操作模块得出第一位商值数据,sum传输到数据处理模块3完成位拼接操作,之后传输到29位加法器2同给传输到29位比较器;sum的最高位传输到mux7作为选择信号将操作数2预处理模块输出数据传输到29位加法器2;
27.29位加法器2完成加法运算后得出进位和sum,进位信号传输到商值操作模块,得出第二位商值数据;sum传输到数据处理模块4完成位拼接操作,之后传输到29位比较器,完成比较操作,得出舍入位;迭代控制模块开始激活,计数器为0;根据第一级dff寄存的使能控制模块输出的浮点除法运算使能信号、浮点开根号运算使能信号其中之一有效时,将第一级dff寄存的使能控制模块、指数运算模块、将数据处理模块4、商值操作模块、迭代控制模块和29位加法器2进位的输出寄存到第二级dff中,以上为一个周期实现,之后舍入位合并模块完成舍入位与商值合并,作为尾数输出;开始下一次迭代过程,第二级dff中寄存的数据处理模块4的输出结果经过mux5传输到29位加法器1,同时第二级dff中寄存的进位传输到mux6作为选择信号,将操作数2预处理模块的数据传输到29位加法器1,之后操作与上述一致,直至完成第2次迭代,根据上一级dff寄存的使能控制模块输出的浮点除法运算使
能信号、浮点开根号运算使能信号其中之一有效时,将上一级dff寄存的使能控制模块、上一级dff寄存的指数运算模块、数据处理模块2、商值操作模块、迭代控制模块和29位加法器2进位的输出寄存到第三级dff中,无效时数据保持不变,之后操作与上述一致,直至第14次迭代;迭代控制模块输出迭代结束信号有效并寄存在第十五级dff中,下一周期时迭代控制模块将内部计数器值置为0,等待下一次运算,以上输出指数结果、尾数结果和迭代结束信号;
28.第三阶段:最终数据处理阶段
29.对于符号位计算,使用符号位计算模块,根据浮点除法运算使能信号和浮点开根号运算使能信号,先处理特殊数据,当不存在特殊数据时处理正常数据,得出符号位数据;
30.当计算的指数位小于0时,则使用非规格化处理模块,进行移位操作处理,输出非规格化数的数据形式给到预处理模块;然后预处理模块,根据第一阶段产生的特殊数据指示信号、使能控制信号对特殊数据进行处理得出指数和尾数结果以及nv异常标志,如果不为特殊值计算则根据第二阶段产生指数和尾数以及非规格化处理模块指数和尾数结果,进行边界值处理,输出第一次结果处理的指数、尾数、舍入位和of和uf异常标志;
31.之后进入后处理模块,根据预处理模块得出的尾数、第一级dff寄存的舍入位和符号位计算模块产生的符号位进行5种舍入操作,存在进位值时对指数进行加1操作;对舍入后的结果进行边界判断,舍入后是否存在上溢和下溢并输出异常标志、指数和尾数;最后结果拼接模块,根据预处理模块产生的指数、尾数和异常标志以及后处理模块输出的异常标志、指数和尾数进行合并处理,将指数、尾数以及符号位计算模块输出进行拼接得出最终的单精度浮点除法和开根号运算结果、5种异常标志,最后与控制使能一起寄存到最后一级dff中。
32.通过上述技术方案,本发明提供的一种浮点除法、开根号硬件计算装置及计算方法具有如下有益效果:
33.本装置为了保证在硬件开销最小的情况下,实现精确的计算功能。为此,本装置首先将浮点除法和浮点开根号的计算进行融合,使得两种计算只需要使用一种计算所需的装置。该装置考虑的是全面的功能实现,包括非规格化操作数处理、浮点尾数在做除法和开根号运算过程中使用全位宽数据进行舍入操作、支持5种舍入情况、支持5种异常标志处理,以此使得本装置在实现浮点除法、开根号计算时,保证计算的最高精度要求,同时得出完善的特殊计算时的标志。
34.由于实现功能全面,导致如果独立实现将会带来非常大的硬件资源开销,为此本装置在实现过程中,进行众多的资源复用。首先是将非规格化操作数处理融入正常的规格化数据流中,以最大限度地共享硬件资源,提高资源复用率;浮点尾数在做除法和开根号运算过程中使用全位宽数据进行舍入操作时,采用较少的逻辑来实现所需功能;本装置通过降低舍入模式处理的复杂度,进行资源复用,提高资源复用率;本装置通过降低异常标志处理的复杂度,进行资源复用,提高资源复用率。综上可知,本装置的优点在于计算精度高、硬件资源小、实现功能全面。
附图说明
35.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现
有技术描述中所需要使用的附图作简单地介绍。
36.图1为本发明实施例所公开的一种浮点除法、开根号装置整体流程框架示意图。
37.图2为本发明实施例所公开的浮点尾数开根号运算迭代装置框架示意图。
38.图3为本发明实施例所公开的浮点尾数除法运算迭代装置框架示意图。
具体实施方式
39.为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照图和表对本发明进行进一步的详细说明。具体实施将以ieee754-2008标准格式的浮点单精度格式为例子,对实施进行具体阐述。该例子可以扩展为m位指数、n位尾数的浮点数据格式运算。
40.首先介绍浮点数据、舍入模式和异常标志处理。浮点数据的具体表示如表1所示,除正常的规格化数之外,针对一些特殊值,在标准中存在特定的表示,特殊值有正0、负0、正无穷大(+inf)、负无穷大(-inf)、非规格化数(denormal)、非数(nan)。非规格化数和非数在浮点运算处理中比较特殊。一般的浮点运算是不支持非规格化数运算的,但在本装置中支持该运算,从而运算精度更高。非数根据尾数位最高位可以分为quiet-nan(qnan)和signaling-nan(snan)两种表示,对于这两种非数在异常标志设置时存在差异。
41.表1浮点格式数据
[0042][0043][0044]
舍入模式的具体含义,见表2所示。总共5种舍入模式,分别是向最近邻到偶数舍入(rne)、向零舍入(rtz)、向负无穷方向舍入(rdz)、向正无穷方向舍入(rup)和向最近邻到最远舍入(rmm)。
[0045]
表2舍入模式含义
[0046][0047]
异常标志设置如下:
[0048]
(1)nv异常标志:
[0049]
如果任意一个操作数为nan,输出结果为canonical-nan即0x7fc00000。如果任意一个操作数属于snan,则需要设置nv异常标志。如果对浮点除法出现计算形式为0/0、inf/inf,浮点开根号出现操作数为负数(不包括负0),输出结果为canonical-nan,设置nv异常标志。
[0050]
(2)dz异常标志:
[0051]
对于浮点除法运算,如果计算形式为a/0,输出结果为inf,设置dz异常标志。
[0052]
(3)of异常标志:
[0053]
当且仅当目标数据范围无界时舍入后浮点结果超过目标格式的最大有限数的大小时,应发出溢出异常信号。默认结果应由舍入方向属性和中间结果的符号确定。rne和rmm舍入使用中间结果的符号将所有溢出进行到inf。rtz舍入以中间结果的符号将所有溢出带到格式的最大有限数。rdn舍入模式将正溢出携带到格式的最大有限数,将负溢出携带到-inf。rup舍入模式将负溢出带到格式的最负有限数,并将正溢出带到+inf。
[0054]
此外,在溢出的默认异常处理下,应设置of异常标志,并发出nx异常标志信号。
[0055]
(4)uf异常标志:
[0056]
ieee 754-2008浮点标准有两种选择,一种是舍入后检测,一种是舍入前检测。本设计采用舍入后检测。在舍入后,当计算为非0的结果(数据范围是无界的)严格位于
±bemin
之间时,这里b为2、emin是最小规格化指数-126,b
emin
是绝对值最小的规格化数。
[0057]
下溢的默认异常处理必须始终交付一个舍入的结果,这可能是零、非规格化数或
±bemin
。绝对值比b
emin
小的数,可以表示为b
emin
或-b
emin
、0和非规格化数,本设计输出采用非规格化数表示。
[0058]
在下溢的默认异常处理下,如果舍入的结果是不精确的,uf标志必须被设置,并且nx异常必须被发送。如果舍入的结果是精确的,则不会设置任何标志,也不会发出uf异常标志信号。
[0059]
(5)nx异常标志:
[0060]
如果一个运算的舍入后结果是不精确的,则nx异常标志必须被发送。
[0061]
接下来具体讲述本装置的实现方案。
[0062]
本发明提供了一种浮点除法、开根号硬件计算装置,采用16级流水线结构,分成三个部分:
[0063]
一、第一部分
[0064]
第一部分是数据的预处理部分,共1级流水线,包括输入dff、使能控制模块、输入数据预处理模块、前导0检测模块1、前导0检测模块2、8位的加法模块、24位的左移模块、符号位处理模块、特殊数据检测模块和第一级dff。
[0065]
输入dff,是时序电路中的边沿敏感触发器,根据操作码有效使能作为使能信号,使能有效时用于寄存输入的操作码、操作码有效使能、舍入模式、fa和fb数据。
[0066]
使能控制模块,根据输入的操作码与操作码有效使能,进行使能运算,得出当前浮点除法运算使能信号和浮点开根号运算使能信号。
[0067]
输入数据预处理模块,根据输入的两个操作数进行数据的符号位、指数位和尾数位的提取。在规格化数的时候,将尾数的隐藏位补一个1,在非规格化数的时候,将尾数的隐藏位补一个0,使数据完整,输出fa和fb的符号位、指数位、尾数位,同时根据使能控制模块的输出进行判断,均无效时则将符号位、指数位、尾数位全部数据置为0。
[0068]
前导0检测模块1,对输入数据预处理模块输出的fa的尾数位进行高位0检测,输出高位0的个数。
[0069]
前导0检测模块2,对输入数据预处理模块输出的fa的尾数位进行高位0检测,输出高位0的个数。
[0070]
8位的加法模块,根据前导0检测1与前导0检测2输出的fa和fb的高位0的个数与输入数据预处理模块输出的fa和fb本身8位指数进行运算,计算指数减去高位0的个数再加1,得出规格化后fa和fb的指数。
[0071]
24位的左移模块,根据前导0检测1与前导0检测2输出的fa和fb的高位0的个数作为移位值,将输入数据预处理模块输出fa和fb的尾数进行左移,获得规格化后的fa和fb的尾数。
[0072]
符号位处理模块,根据使能控制输出的运算使能信号进行判断得出待修正的符号位,操作数据为输入数据预处理模块输出的fa和fb的符号位,对fa和fb的符号位做异或操作得出除法符号位,输出结果fa/fb的符号位和fa符号位送入下一级流水节拍的符号位处理模块。
[0073]
特殊数据检测模块,根据输入数据预处理模块输出fa和fb的符号位、指数位、尾数位。对正0、负0、正无穷、负无穷、snan、qnan进行检测。输出这些特殊值所对应的指示信号。
[0074]
第一级dff,根据使能控制模块输出的浮点除法运算使能信号、浮点开根号运算使能信号作为控制使能,当有一个有效时用于寄存输入dff、使能控制模块、8位的加法模块、24位的左移模块、符号位处理模块、特殊数据指示模块的输出结果,均无效时保持原数据不变。
[0075]
二、第二部分
[0076]
第二部分是迭代部分,总共14级流水线,用于处理尾数除法和开根号迭代运算以及得出指数结果;第二阶段包括指数运算模块、迭代单元。
[0077]
指数运算模块,根据第一级dff寄存的第一阶段中8位的加法模块得出规格化后fa和fb的指数以及使能控制模块得出的控制信号,进行浮点除法或者浮点开根号的指数运算。当浮点数为单精度浮点时,除法指数运算为fa指数加fb指数再加63,开根号指数运算为fa指数右移一位加fa指数最低位再加127的结果。模块输出除法或者开根号的指数运算结果。迭代单元根据控制使能、fa指数和尾数、fb指数和尾数进行运算,除法对fa和fb的尾数进行除法运算,开根号对fa的尾数进行开根号运算,最后输出除法尾数结果和开根号尾数结果,分别为图2和图3所示。
[0078]
如图2和图3所示,为浮点尾数开根号运算迭代单元和浮点尾数除法运算迭代单元。用于fa和fb尾数除法运算,以及对fa的尾数开根号运算。尾数的除法和开根号均采用不恢复余数迭代算法,除法和开根号运算迭代单元共用两个29位加法器、商值操作模块、舍入位合并模块、迭代处理模块和第二至十五级dff,进行资源复用从而减少资源消耗。接下来分别介绍开根号运算迭代单元和除法运算迭代单元。
[0079]
如图2所示,为浮点尾数开根号运算迭代单元,主要包含尾数处理模块、快速计算模块、取反模块1、取反模块2、mux 1、mux2、mux3、mux4、29位加法器1、29位加法器2、数据处理模块1、数据处理模块2、舍入位计算模块、商值操作模块、舍入位合并模块、迭代处理模块和第二至十五级dff。
[0080]
尾数处理模块,根据第一级dff输出的fa的指数最低位对fa的尾数进行一位的左移。
[0081]
快速计算模块,在每一次迭代运算时,根据尾数处理模块的输出,从高位到低位依次取4位数据,分为高2位和低2位以此进行操作,共取14次,尾数处理模块的输出值不够时,通过0进行补全。取出的两个两位数据分别进行逻辑与操作输出进位;取出的两个两位数据分别进行逻辑异或操作输出作为高位与取出的两位数据的低位数据进行取反输出作为低位进行位拼接,整体输出两个两位数据。因此,该模块会分别输出用高2位计算得出的进位和两位结果以及低2位计算得出的进位和两位结果。
[0082]
取反模块1,对第二至十五级dff中寄存的商值操作模块的输出进行取反操作,然后输出结果。
[0083]
取反模块2,对商值操作模块的输出进行取反操作,然后输出结果。
[0084]
mux1,一个选择器单元,根据是否是首次进入循环作为选择信号,选择信号有效时,输出29位0;选择信号无效时,选择第二至十五级dff中寄存的数据处理模块2的输出结果作为输出。
[0085]
mux2,一个选择器单元,根据是否是首次进入循环作为选择信号,选择信号有效时,输出29位1;选择信号无效时,选择mux3的输出结果作为输出。
[0086]
mux3,一个选择器单元,根据第二至十五级dff中寄存29位加法器2输出的进位值进行作为选择信号,选择信号有效时,选择取反模块1的输出作为输出;选择信号无效时,选择第二至十五级dff中寄存的商值操作模块输出作为输出。
[0087]
mux4,一个选择器单元,根据29位加法器1输出的进位作为选择信号,选择信号有效时,选择取反模块2的输出结果进行输出;选择信号无效时,选择商值操作模块输出作为输出。
[0088]
29位加法器1,一个带进位的加法器,第一个操作数使用mux1的输出,第二个操作
数使用mux2的输出,进位值使用快速计算模块输出的较高2位产生的进位。加法器最终得到sum和进位结果也就是商值并进行输出。
[0089]
29位加法器2,一个带进位的加法器,第一个操作数使用数据处理模块1的输出,第二个操作数使用mux4的输出,进位值使用快速计算模块输出的较低2位产生的进位。加法器最终得到sum和进位结果也就是商值并进行输出。
[0090]
数据处理模块1,根据29位加法器1输出的sum与快速计算模块的整体两位输出进行操作,将sum[28]、sum[25:0]、整体两位输出结果进行位拼接,最后进行输出。
[0091]
数据处理模块2,根据29位加法器1输出的sum与快速计算模块的整体两位输出进行操作,将sum[28]、sum[25:0]、整体两位输出结果进行位拼接,最后进行输出。该模块与数据处理模块1功能相同,选择数据不同。
[0092]
商值操作模块根据29位加法器1或29位加法器2产生的进位值,商值进行左移1位,将29位加法器1或29位加法器2产生的进位值作为最低位,最后输出商值。
[0093]
迭代控制模块,使用一个计数器从0开始累加,每一次循环迭代加1,当计数器结果为13时,产生一个迭代结束信号进行输出,并将该值置为0。使用第一级dff寄存的使能控制模块输出浮点除法运算使能信号、浮点开根号运算使能信号作为开始计数的控制使能。
[0094]
第二至十五级dff,第二级dff时根据图1中第一级dff寄存的使能控制模块输出的浮点除法运算使能信号、浮点开根号运算使能信号作为控制使能,当有一个有效时用于寄存图1中第一级dff寄存的使能控制模块、图1中指数运算模块、数据处理模块2、商值操作模块、29位加法器2输出的进位值和迭代控制模块输出数据,均无效时保持原数据不变。第三至十五级dff时根据上一级dff中寄存的使能控制模块输出的浮点除法运算使能信号、浮点开根号运算使能信号作为控制使能,当有一个有效时用于寄存上一级dff寄存的使能控制模块、上一级dff寄存的指数运算模块、数据处理模块2、商值操作模块、29位加法器2输出的进位值和迭代控制模块输出数据,均无效时保持原数据不变。
[0095]
舍入位计算模块根据mux1的输出和mux2的输出进行操作。首先mux2的输出左移一位低位补1,然后与mux1的输出进行加法运算获得sum,根据mux1的最高位作为选择信号,有效时选择sum进行位或操作,无效时选择mux1输出进行位或操作,最后输出舍入位。
[0096]
舍入位合并模块根据商值操作模块的输出商值的最低位与舍入位计算模块产生的舍入位取或操作,输出商值,该值作为第二阶段尾数输出。
[0097]
如图2所示,为开根号运算迭代单元,最后输出尾数除法的商值结果。
[0098]
如图3所示,为除法运算迭代单元,包含操作数1预处理模块、操作数2预处理模块、mux5、mux6、mux7、29位加法器1、29位加法器2、数据处理模块3、数据处理模块4、29位比较器、商值操作模块、迭代控制模块、舍入位合并模块和第二至十五级dff。其中29位加法器1、29位加法器2、商值操作模块、舍入位合并模块、第二至十五级dff以及迭代控制模块与图2中相同名字模块进行资源复用,功能相同,使用的操作数不同。
[0099]
操作数1预处理模块的功能是对图1中第一级dff寄存的fb的尾数进行操作,将1'b0、fb的尾数、1'b1、3'b0进行位拼接输出操作数结果。
[0100]
操作数2预处理模块的功能是对图1中第一级dff寄存的fb的尾数最高位补0然后进行取反,将取反后fb尾数、1'b1、3'b0进行位拼接输出第一个操作数结果,将取反后fb尾数、4'b0进行位拼接输出第二个操作数结果。
[0101]
mux5,一个选择器单元,根据是否是首次进入循环作为选择信号,选择信号有效时,选择操作数1预处理的输出结果作为输出;选择信号无效时,选择第二至十五级dff中寄存的数据处理模块4的输出结果作为输出。
[0102]
mux6,一个选择器单元,根据是否是首次进入循环或者第二至十五级dff中寄存的29位加法器2输出进位作为选择信号,首次进入循环优先级更高,选择信号有效时,选择操作数2预处理输出的第一个操作数结果;选择信号无效时,选择操作数2预处理输出的第二个操作数结果。
[0103]
mux7,一个选择器单元,根据29位加法器1输出的sum的最高位作为选择信号,选择信号有效时,选择操作数2预处理输出的第一个操作数结果;选择信号无效时,选择操作数2预处理输出的第二个操作数结果。
[0104]
29位加法器1,功能一致,与图2相比,所选择的操作数不同。第一个操作数使用mux5的输出,第二个操作数使用mux6的输出。29位加法器1最终得到sum和进位结果也就是商值并进行输出。
[0105]
29位加法器2,功能一致,与图2相比,所选择操作数不同。第一个操作数选择数据处理模块3输出的数据,第二个操作数使用mux7的输出。29位加法器2最终得到sum和进位结果也就是商值并进行输出。
[0106]
数据处理模块3,根据29位加法器1输出的sum进行操作,首先对sum[28]进行取反操作,然后对sum[27:3]、sum[28]取反后数据、3'b0进行位拼接,最后进行输出。
[0107]
数据处理模块4,根据29位加法器2输出的sum和进位进行操作,对sum[27:3]、进位值、3'b0进行位拼接,最后进行输出。
[0108]
29位比较器,对数据处理模块3的数据与数据处理模块4的数据进行比较,相等时,舍入位为0,反之为1。
[0109]
商值操作模块,根据29位加法器1或29位加法器2产生的进位值,商值进行左移1位,将29位加法器1或29位加法器2产生的进位值作为最低位,最后输出商值。
[0110]
迭代控制模块,使用一个计数器从0开始累加,每一次循环迭代加1,当计数器结果为13时,产生一个迭代结束信号进行输出,并将该值置为0。使用第一级dff寄存的使能控制模块输出浮点除法运算使能信号、浮点开根号运算使能信号作为开始计数的控制使能。
[0111]
第二至十五级dff,第二级dff时根据图1中第一级dff寄存的使能控制模块输出的浮点除法运算使能信号、浮点开根号运算使能信号作为控制使能,当有一个有效时用于寄存图1中第一级dff寄存的使能控制模块、图1中指数运算模块、数据处理模块4、商值操作模块、29位加法器2输出的进位值和迭代控制模块输出数据,均无效时保持原数据不变。第三至十五级dff时根据上一级dff中寄存的使能控制模块输出的浮点除法运算使能信号、浮点开根号运算使能信号作为控制使能,当有一个有效时用于寄存上一级dff寄存的使能控制模块输出数据、上一级dff寄存的指数运算模块、数据处理模块4、商值操作模块、29位加法器2输出的进位值和迭代控制模块输出数据,均无效时保持原数据不变。
[0112]
舍入位合并模块根据商值操作模块的输出商值的最低位与舍入位计算模块产生的舍入位取或操作,输出商值,该值作为第二阶段尾数输出。
[0113]
如图3所示,为除法运算迭代单元,最后输出尾数除法的商值结果。
[0114]
三、第三部分
[0115]
第三部分是最终数据处理部分,共1级流水线,用于特殊数据处理、非规格化处理、5种舍入、规格化以及5种异常标志处理;第三阶段包含非规格化处理模块、符号位计算模块、预处理模块、后处理模块、结果拼接模块和最后一级dff。
[0116]
非规格化处理模块,根据第二阶段输出的指数,以其是否小于0作为判断信号,计算指数的绝对值作为移位值,第二阶段输出尾数结果进行右移位操作,最后输出非规格化数表示的指数和尾数结果。
[0117]
符号位计算模块,根据第一阶段产生的特殊数据指示信号与使能控制信号进行特殊值输出的符号处理作为第一优先级进行输出,如果不为特殊值计算则根据第一级dff寄存的使能控制信号选择第一级dff寄存的符号位处理模块输出除法符号位作为输出或者开根号符号位作为输出。
[0118]
预处理模块,根据第一阶段产生的特殊数据指示信号、使能控制信号对特殊数据进行处理得出指数和尾数结果以及nv异常标志,如果不为特殊值计算则根据第二阶段产生指数和尾数以及非规格化处理模块指数和尾数结果,进行边界值处理,输出第一次结果处理的指数、尾数、舍入位和of和uf异常标志。
[0119]
后处理模块,根据预处理模块得出的尾数、第一级dff寄存的舍入位和符号位处理模块产生的符号位进行5种舍入操作,存在进位值是对指数进行加1。对舍入后的结果进行边界判断,舍入后是否存在上溢和下溢并输出异常标志、指数和尾数。
[0120]
结果拼接模块,根据预处理模块产生的指数、尾数和异常标志以及后处理模块输出的异常标志、指数和尾数进行合并处理,将指数、尾数以及符号位计算模块输出进行拼接得出最终的单精度浮点除法和开根号运算结果和5种异常标志。
[0121]
最后一级dff,根据第十五级dff寄存的迭代控制模块输出结果以及第一级dff使能控制模块输出的浮点除法运算使能信号、浮点开根号运算使能信号作为控制使能,当第十五级dff寄存的迭代控制模块输出结果有效且使能控制模块输出的浮点除法运算使能信号、浮点开根号运算使能信号中存在一个有效时用于寄存结果拼接模块产生的运算结果和异常标志数据,无效时进行数据保持。
[0122]
综上可知,对于特殊数据处理只需要第一阶段和第三阶段的处理需要2级流水线,对于正常数据的处理需要第一阶段、第二阶段和第三阶段需要16级流水线处理。
[0123]
一种浮点除法、开根号硬件计算方法,包括如下过程:
[0124]
第一阶段:数据预处理阶段
[0125]
输入数据为操作码、操作码有效使能、舍入模式、操作数fa和操作数fb,均寄存在输入dff中;
[0126]
输入dff寄存的操作码和操作码有效使能进入使能控制模块,得出当前浮点除法运算使能信号和浮点开根号运算使能信号;舍入模式直接进入第一级dff;操作数fa和操作数fb进入输入数据预处理模块,进行数据拆分,获得操作数fa和操作数fb的符号位、指数位、尾数位,同时根据使能控制模块的输出进行判断,均无效时则将符号位、指数位、尾数位全部数据置为0;
[0127]
将输入数据预处理模块输出的尾数位输给前导0检测模块1和前导0检测模块2进行前导0检测,获得高位0的个数,传输给8位的加法模块和24位的左移模块;8位的加法模块将该数据与输入数据的预处理模块输出的指数位进行加法计算得到规格化后的指数位;24
位的左移模块将该数据作为移位值,对输入数据的预处理模块输出的位数位进行移位,获得规格化后的尾数位;将输入数据预处理模块输出的符号位传输到符号位处理模块,计算fa符号位和fb符号位异或操作结果,得出除法的符号位结果,开根号符号位直接使用fa的符号位;特殊数据检测模块根据输入数据预处理模块的符号位、指数位、尾数位进行正0、负0、正无穷、负无穷、qnan、snan检测得出特殊数据指示信号;
[0128]
将上述的浮点除法运算使能信号、浮点开根号运算使能信号、规格化后的指数和尾数、符号位、特殊数据指示信号均寄存到第一级dff,等待下一级流水线操作;
[0129]
第二阶段:迭代阶段
[0130]
之后分成3条路径,符号位计算、指数位计算、尾数位计算;其中符号位计算由第三阶段完成,指数位计算、尾数位计算由第二阶段完成;
[0131]
对于指数位计算,使用指数运算模块,得出浮点除法fa指数加fb指数再加63的结果,开根号指数运算为fa指数右移一位加fa指数最低位再加127的结果,由于对最低位为奇数时进行了处理,所以利用尾数处理模块,根据fa指数最低位对fa的尾数进行一位的左移,得出准确的指数位;
[0132]
对于尾数位计算,使用迭代单元,具体包括浮点尾数开根号运算迭代单元和浮点尾数除法运算迭代单元,两者使用一种主体框架实现,其中29位加法器1、29位加法器2、商值操作模块、迭代控制模块、舍入位合并模块、第二至第十五级dff进行资源复用,功能相同,使用的操作数不同,具体如下:
[0133]
对于浮点开根号,规格化后的尾数传输到尾数处理模块经过移位调整后进入快速计算模块,获得高2位产生进位和2位数据分别传输到29位加法器1和数据处理模块1,同时获得低2位产生的进位和2位数据分别传输到29位加法器2和数据处理模块2;由于首次进入循环,所以29位0经过mux1传输到29位加法器1和舍入位计算模块,29位1经过mux2传输到29位加法器1和舍入位计算模块;舍入计算模块根据操作数得出舍入位传输到舍入位合并模块;29位加法器1完成加法运算后得出进位和sum,进位传输到商值操作模块得出第一位商值数据,同时,进位传输到mux4用于从商值操作模块的输出结果和商值操作模块传输到取反模块2后计算输出的结果中选择一个,并将其传输到29位加法器2;sum传输到数据处理模块1完成位拼接操作,之后传输到29位加法器2;29位加法器2完成加法运算后得出进位和sum,进位传输到商值操作模块,得出第一位商值数据,sum传输到数据处理模块2完成位拼接操作;
[0134]
迭代控制模块开始激活,计数器为0,根据第一级dff寄存的使能控制模块输出的浮点除法运算使能信号、浮点开根号运算使能信号其中之一有效时,将第一级dff寄存的使能控制模块、指数运算模块、数据处理模块2、商值操作模块、迭代控制模块和29位加法器2进位的输出寄存到第二级dff中,以上为一个周期实现,之后舍入位合并模块完成舍入位与商值合并,作为尾数输出;开始下一次迭代过程,第二级dff寄存的数据处理模块2的输出经过mux1分别进入29位加法器1和舍入位计算模块;第二级dff寄存的29位加法器2产生的进位作为选择信号,选择第二级dff寄存的商值操作模块的结果或者商值操作模块传输到取反模块2做取反逻辑操作后输出的结果,经过mux2分别传输到29位加法器1和舍入位计算模块;舍入计算模块根据操作数得出舍入位传输到舍入位合并模块;快速计算模块产生的进位和2位数据分别传输到29位加法器1和数据处理模块1,之后操作与上述一致,直至完成第
2次迭代,根据上一级dff寄存的使能控制模块输出的浮点除法运算使能信号、浮点开根号运算使能信号其中之一有效时,将上一级dff寄存的使能控制模块、上一级dff寄存的指数运算模块、数据处理模块2、商值操作模块、迭代控制模块和29位加法器2进位的输出寄存到第三级dff中,无效时数据保持不变;之后操作与上述一致,直至第14次迭代,迭代控制模块输出迭代结束信号有效并寄存在第十五级dff中,下一周期时迭代控制模块将内部计数器值置为0,等待下一次运算;以上输出指数结果、尾数结果和迭代结束信号;
[0135]
对于浮点除法,规格化后的尾数分别进入操作数1预处理模块和操作数2预处理模块完成数据拼接,因为首次进入循环,经过mux5、mux6传输到29位加法器1完成加法运算得出进位和sum;进位信号传输到商值操作模块得出第一位商值数据,sum传输到数据处理模块3完成位拼接操作,之后传输到29位加法器2同给传输到29位比较器;sum的最高位传输到mux7作为选择信号将操作数2预处理模块输出数据传输到29位加法器2;
[0136]
29位加法器2完成加法运算后得出进位和sum,进位信号传输到商值操作模块,得出第二位商值数据;sum传输到数据处理模块4完成位拼接操作,之后传输到29位比较器,完成比较操作,得出舍入位;迭代控制模块开始激活,计数器为0;根据第一级dff寄存的使能控制模块输出的浮点除法运算使能信号、浮点开根号运算使能信号其中之一有效时,将第一级dff寄存的使能控制模块、指数运算模块、将数据处理模块4、商值操作模块、迭代控制模块和29位加法器2进位的输出寄存到第二级dff中,以上为一个周期实现,之后舍入位合并模块完成舍入位与商值合并,作为尾数输出;开始下一次迭代过程,第二级dff中寄存的数据处理模块4的输出结果经过mux5传输到29位加法器1,同时第二级dff中寄存的进位传输到mux6作为选择信号,将操作数2预处理模块的数据传输到29位加法器1,之后操作与上述一致,直至完成第2次迭代,根据上一级dff寄存的使能控制模块输出的浮点除法运算使能信号、浮点开根号运算使能信号其中之一有效时,将上一级dff寄存的使能控制模块、上一级dff寄存的指数运算模块、数据处理模块2、商值操作模块、迭代控制模块和29位加法器2进位的输出寄存到第三级dff中,无效时数据保持不变,之后操作与上述一致,直至第14次迭代;迭代控制模块输出迭代结束信号有效并寄存在第十五级dff中,下一周期时迭代控制模块将内部计数器值置为0,等待下一次运算,以上输出指数结果、尾数结果和迭代结束信号;
[0137]
第三阶段:最终数据处理阶段
[0138]
对于符号位计算,使用符号位计算模块,根据浮点除法运算使能信号和浮点开根号运算使能信号,先处理特殊数据,当不存在特殊数据时处理正常数据,得出符号位数据;
[0139]
当计算的指数位小于0时,则使用非规格化处理模块,进行移位操作处理,输出非规格化数的数据形式给到预处理模块;然后预处理模块,根据第一阶段产生的特殊数据指示信号、使能控制信号对特殊数据进行处理得出指数和尾数结果以及nv异常标志,如果不为特殊值计算则根据第二阶段产生指数和尾数以及非规格化处理模块指数和尾数结果,进行边界值处理,输出第一次结果处理的指数、尾数、舍入位和of和uf异常标志;
[0140]
之后进入后处理模块,根据预处理模块得出的尾数、第一级dff寄存的舍入位和符号位计算模块产生的符号位进行5种舍入操作,存在进位值时对指数进行加1操作;对舍入后的结果进行边界判断,舍入后是否存在上溢和下溢并输出异常标志、指数和尾数;最后结果拼接模块,根据预处理模块产生的指数、尾数和异常标志以及后处理模块输出的异常标
志、指数和尾数进行合并处理,将指数、尾数以及符号位计算模块输出进行拼接得出最终的单精度浮点除法和开根号运算结果、5种异常标志,最后与控制使能一起寄存到最后一级dff中。
[0141]
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
技术特征:
1.一种浮点除法、开根号硬件计算装置,其特征在于,采用16级流水线结构,分成三个部分;第一部分是数据的预处理部分,共1级流水线,包括输入dff、使能控制模块、输入数据预处理模块、前导0检测模块1、前导0检测模块2、8位的加法模块、24位的左移模块、符号位处理模块、特殊数据检测模块和第一级dff;第二部分是迭代部分,总共14级流水线,用于处理尾数除法和开根号迭代运算以及得出指数结果;第二阶段包括指数运算模块和迭代单元;第三部分是最终数据处理部分,共1级流水线,用于特殊数据处理、非规格化处理、5种舍入、规格化以及5种异常标志处理;第三阶段包含非规格化处理模块、符号位计算模块、预处理模块、后处理模块、结果拼接模块和最后一级dff。2.根据权利要求1所述的一种浮点除法、开根号硬件计算装置,其特征在于,所述迭代单元包括浮点尾数开根号运算迭代单元和浮点尾数除法运算迭代单元,所述浮点尾数开根号运算迭代单元和浮点尾数除法运算迭代单元共用29位加法器1、29位加法器2、商值操作模块、舍入位合并模块、迭代控制模块和第二至十五级dff。3.根据权利要求2所述的一种浮点除法、开根号硬件计算装置,其特征在于,所述浮点尾数开根号运算迭代单元还包括尾数处理模块、快速计算模块、取反模块1、取反模块2、mux1、mux2、mux3、mux4、数据处理模块1、数据处理模块2、舍入位计算模块。4.根据权利要求2所述的一种浮点除法、开根号硬件计算装置,其特征在于,所述浮点尾数除法运算迭代单元还包括操作数1预处理模块、操作数2预处理模块、mux5、mux6、mux7、数据处理模块3、数据处理模块4、29位比较器。5.一种浮点除法、开根号硬件计算方法,其特征在于,包括如下过程:第一阶段:数据预处理阶段输入数据为操作码、操作码有效使能、舍入模式、操作数fa和操作数fb,均寄存在输入dff中;输入dff寄存的操作码和操作码有效使能进入使能控制模块,得出当前浮点除法运算使能信号和浮点开根号运算使能信号;舍入模式直接进入第一级dff;操作数fa和操作数fb进入输入数据预处理模块,进行数据拆分,获得操作数fa和操作数fb的符号位、指数位、尾数位,同时根据使能控制模块的输出进行判断,均无效时则将符号位、指数位、尾数位全部数据置为0;将输入数据预处理模块输出的尾数位输给前导0检测模块1和前导0检测模块2进行前导0检测,获得高位0的个数,传输给8位的加法模块和24位的左移模块;8位的加法模块将该数据与输入数据的预处理模块输出的指数位进行加法计算得到规格化后的指数位;24位的左移模块将该数据作为移位值,对输入数据的预处理模块输出的位数位进行移位,获得规格化后的尾数位;将输入数据预处理模块输出的符号位传输到符号位处理模块,计算fa符号位和fb符号位异或操作结果,得出除法的符号位结果,开根号符号位直接使用fa的符号位;特殊数据检测模块根据输入数据预处理模块的符号位、指数位、尾数位进行正0、负0、正无穷、负无穷、qnan、snan检测得出特殊数据指示信号;将上述的浮点除法运算使能信号、浮点开根号运算使能信号、规格化后的指数和尾数、符号位、特殊数据指示信号均寄存到第一级dff,等待下一级流水线操作;
第二阶段:迭代阶段之后分成3条路径,符号位计算、指数位计算、尾数位计算;其中符号位计算由第三阶段完成,指数位计算、尾数位计算由第二阶段完成;对于指数位计算,使用指数运算模块,得出浮点除法fa指数加fb指数再加63的结果,开根号指数运算为fa指数右移一位加fa指数最低位再加127的结果,由于对最低位为奇数时进行了处理,所以利用尾数处理模块,根据fa指数最低位对fa的尾数进行一位的左移,得出准确的指数位;对于尾数位计算,使用迭代单元,具体包括浮点尾数开根号运算迭代单元和浮点尾数除法运算迭代单元,两者使用一种主体框架实现,其中29位加法器1、29位加法器2、商值操作模块、迭代控制模块、舍入位合并模块、第二至第十五级dff进行资源复用,功能相同,使用的操作数不同,具体如下:对于浮点开根号,规格化后的尾数传输到尾数处理模块经过移位调整后进入快速计算模块,获得高2位产生进位和2位数据分别传输到29位加法器1和数据处理模块1,同时获得低2位产生的进位和2位数据分别传输到29位加法器2和数据处理模块2;由于首次进入循环,所以29位0经过mux1传输到29位加法器1和舍入位计算模块,29位1经过mux2传输到29位加法器1和舍入位计算模块;舍入计算模块根据操作数得出舍入位传输到舍入位合并模块;29位加法器1完成加法运算后得出进位和sum,进位传输到商值操作模块得出第一位商值数据,同时,进位传输到mux4用于从商值操作模块的输出结果和商值操作模块传输到取反模块2后计算输出的结果中选择一个,并将其传输到29位加法器2;sum传输到数据处理模块1完成位拼接操作,之后传输到29位加法器2;29位加法器2完成加法运算后得出进位和sum,进位传输到商值操作模块,得出第一位商值数据,sum传输到数据处理模块2完成位拼接操作;迭代控制模块开始激活,计数器为0,根据第一级dff寄存的使能控制模块输出的浮点除法运算使能信号、浮点开根号运算使能信号其中之一有效时,将第一级dff寄存的使能控制模块、指数运算模块、数据处理模块2、商值操作模块、迭代控制模块和29位加法器2进位的输出寄存到第二级dff中,以上为一个周期实现,之后舍入位合并模块完成舍入位与商值合并,作为尾数输出;开始下一次迭代过程,第二级dff寄存的数据处理模块2的输出经过mux1分别进入29位加法器1和舍入位计算模块;第二级dff寄存的29位加法器2产生的进位作为选择信号,选择第二级dff寄存的商值操作模块的结果或者商值操作模块传输到取反模块2做取反逻辑操作后输出的结果,经过mux2分别传输到29位加法器1和舍入位计算模块;舍入计算模块根据操作数得出舍入位传输到舍入位合并模块;快速计算模块产生的进位和2位数据分别传输到29位加法器1和数据处理模块1,之后操作与上述一致,直至完成第2次迭代,根据上一级dff寄存的使能控制模块输出的浮点除法运算使能信号、浮点开根号运算使能信号其中之一有效时,将上一级dff寄存的使能控制模块、上一级dff寄存的指数运算模块、数据处理模块2、商值操作模块、迭代控制模块和29位加法器2进位的输出寄存到第三级dff中,无效时数据保持不变;之后操作与上述一致,直至第14次迭代,迭代控制模块输出迭代结束信号有效并寄存在第十五级dff中,下一周期时迭代控制模块将内部计数器值置为0,等待下一次运算;以上输出指数结果、尾数结果和迭代结束信号;对于浮点除法,规格化后的尾数分别进入操作数1预处理模块和操作数2预处理模块完
成数据拼接,因为首次进入循环,经过mux5、mux6传输到29位加法器1完成加法运算得出进位和sum;进位信号传输到商值操作模块得出第一位商值数据,sum传输到数据处理模块3完成位拼接操作,之后传输到29位加法器2同给传输到29位比较器;sum的最高位传输到mux7作为选择信号将操作数2预处理模块输出数据传输到29位加法器2;29位加法器2完成加法运算后得出进位和sum,进位信号传输到商值操作模块,得出第二位商值数据;sum传输到数据处理模块4完成位拼接操作,之后传输到29位比较器,完成比较操作,得出舍入位;迭代控制模块开始激活,计数器为0;根据第一级dff寄存的使能控制模块输出的浮点除法运算使能信号、浮点开根号运算使能信号其中之一有效时,将第一级dff寄存的使能控制模块、指数运算模块、将数据处理模块4、商值操作模块、迭代控制模块和29位加法器2进位的输出寄存到第二级dff中,以上为一个周期实现,之后舍入位合并模块完成舍入位与商值合并,作为尾数输出;开始下一次迭代过程,第二级dff中寄存的数据处理模块4的输出结果经过mux5传输到29位加法器1,同时第二级dff中寄存的进位传输到mux6作为选择信号,将操作数2预处理模块的数据传输到29位加法器1,之后操作与上述一致,直至完成第2次迭代,根据上一级dff寄存的使能控制模块输出的浮点除法运算使能信号、浮点开根号运算使能信号其中之一有效时,将上一级dff寄存的使能控制模块、上一级dff寄存的指数运算模块、数据处理模块2、商值操作模块、迭代控制模块和29位加法器2进位的输出寄存到第三级dff中,无效时数据保持不变,之后操作与上述一致,直至第14次迭代;迭代控制模块输出迭代结束信号有效并寄存在第十五级dff中,下一周期时迭代控制模块将内部计数器值置为0,等待下一次运算,以上输出指数结果、尾数结果和迭代结束信号;第三阶段:最终数据处理阶段对于符号位计算,使用符号位计算模块,根据浮点除法运算使能信号和浮点开根号运算使能信号,先处理特殊数据,当不存在特殊数据时处理正常数据,得出符号位数据;当计算的指数位小于0时,则使用非规格化处理模块,进行移位操作处理,输出非规格化数的数据形式给到预处理模块;然后预处理模块,根据第一阶段产生的特殊数据指示信号、使能控制信号对特殊数据进行处理得出指数和尾数结果以及nv异常标志,如果不为特殊值计算则根据第二阶段产生指数和尾数以及非规格化处理模块指数和尾数结果,进行边界值处理,输出第一次结果处理的指数、尾数、舍入位和of和uf异常标志;之后进入后处理模块,根据预处理模块得出的尾数、第一级dff寄存的舍入位和符号位计算模块产生的符号位进行5种舍入操作,存在进位值时对指数进行加1操作;对舍入后的结果进行边界判断,舍入后是否存在上溢和下溢并输出异常标志、指数和尾数;最后结果拼接模块,根据预处理模块产生的指数、尾数和异常标志以及后处理模块输出的异常标志、指数和尾数进行合并处理,将指数、尾数以及符号位计算模块输出进行拼接得出最终的单精度浮点除法和开根号运算结果、5种异常标志,最后与控制使能一起寄存到最后一级dff中。
技术总结
本发明涉及微处理器内的浮点运算技术领域,公开了一种浮点除法、开根号硬件计算装置及计算方法,装置采用16级流水线结构,分成三个部分;第一部分是数据的预处理部分,共1级流水线;第二部分是迭代部分,总共14级流水线,用于处理尾数除法和开根号迭代运算以及得出指数结果;第三部分是最终数据处理部分,共1级流水线,用于特殊数据处理、非规格化处理、5种舍入、规格化以及5种异常标志处理。本发明所公开的装置及方法计算精度高、硬件资源小、实现功能全面,本装置通过降低舍入模式处理的复杂度,进行资源复用,提高资源复用率;在实现浮点除法、开根号计算时,保证计算的最高精度要求,同时得出完善的特殊计算时的标志。同时得出完善的特殊计算时的标志。同时得出完善的特殊计算时的标志。
技术研发人员:高玉鑫
受保护的技术使用者:青岛本原微电子有限公司
技术研发日:2023.04.11
技术公布日:2023/8/14
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
