CN107992284A - 一种可编程器件的除法功能实现方法 - Google Patents
一种可编程器件的除法功能实现方法 Download PDFInfo
- Publication number
- CN107992284A CN107992284A CN201711204143.4A CN201711204143A CN107992284A CN 107992284 A CN107992284 A CN 107992284A CN 201711204143 A CN201711204143 A CN 201711204143A CN 107992284 A CN107992284 A CN 107992284A
- Authority
- CN
- China
- Prior art keywords
- divisor
- dividend
- result
- negative
- effective digital
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/535—Dividing only
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Abstract
本发明提供了一种可编程器件的除法功能实现方法,其特征在于,包括以下步骤:1)当接收除数X和被除数Y后,除数X和被除数Y为32位2进制有符号、数量级为16位且小数也为16位的定点数,对被除数Y进行判断,Y为零时,返回结果零和无异常状态码,当除数X为零时,则返回最大表示值和除零错误状态码;2)对除数X和被除数Y进行正负判断,计算结果正负;除数X和被除数Y为32位有符号数,最高位为符号位;通过判断符号位确定除数X和被除数Y为正数或者负数;当除数X和被除数Y同为正数或者负数时结果为正,否则结果为负。
Description
技术领域
本发明涉及信息处理和微电子领域的处理电路,具体地说,涉及一种除法器的设计和实现方法。
背景技术
在信息处理中,经常会涉及到除法运算,如图形处理中直线段对应区域的顶点坐标计算。在使用可编程器件进行复杂的信息处理时,当今主流可编程器件一般包括硬件乘法器模块和片上存储器模块,可厂商提供的除法器IP实现耗用逻辑资源非常多,难以工程应用,因此经常为了不使用除法而放弃简易的处理方法。当前主流可编程器件厂商提供的除法器IP耗用逻辑资源非常多且不均衡,如一个32位的除法器往往要占用中等规模的高端可编程器件三分之一以上的逻辑资源,但硬件乘法器模块和片上存储器模块却完全不用。
发明内容
本发明目的在于提供一种主要使用当今主流可编程器件乘法器模块和片上存储器模块的除法器方法进行实现,将能够很好解决以上问题。本发明针对该问题,提出了一种通过查找表和插值相结合的除法器方案,主要使用硬件乘法器模块和片上存储器模块,适合于当今主流的可编程器件实现。一个32位除法器,使用少量硬件乘法器模块和片上存储器模块,逻辑资源耗用则少于可编程器件厂商除法器IP的四分之一。
一种可编程器件的除法功能实现方法,包括以下步骤:
1)当接收除数X和被除数Y后,除数X和被除数Y为32位2进制有符号、数量级为16位且小数也为16位的定点数,对被除数Y进行判断,Y为零时,返回结果零和无异常状态码,当除数X为零时,则返回最大表示值和除零错误状态码;
2)对除数X和被除数Y进行正负判断,计算结果正负;除数X和被除数Y为32位有符号数,最高位为符号位;通过判断符号位确定除数X和被除数Y为正数或者负数;当除数X和被除数Y同为正数或者负数时结果为正,否则结果为负;
3)求取除数X和被除数Y的绝对值;在前一步判断出除数X和被除数Y为正数或负数,当Y为正数或0,其绝对值|Y|=Y,当Y为负数,其绝对值|Y|=0-Y,当X为正数,其绝对值|X|=X,当X为负数,其绝对值|X|=0-X;
4)对除数的绝对值|X|与被除数的绝对值|Y|进行归一化处理,计算有效数字及指数,得到|X|的有效数字X1和指数a,|X|=X1*2a,得到|Y|的有效数字Y1和指数b,|Y|=Y1*2b;对|X|和|Y|的逐位进行判断,得到|X|和|Y|的数位为1的最高位位置n,n为小于31的整数,记sign=n-12为数据指数,并对sign≤14的数据进行左移26-n位,对sign>14的数据进行右移n-26位,经过移位后得到有效数字X1和Y1,其中有效数字高16位为整数位,低16位为小数位,有效数字X1和Y1在[210,211)区间;
5)将除数有效数字X1拆分为整数位与小数位之和,即X1=a+x,其中a={X1[31:16],16’h0000},x={16’h0000,X1[15:0]},a代表有效数字整数,x代表有效数字小数位;设定求倒数函数1/X1=f(x)=1/(a+x),可以采用插值算法对f(x)进行拟合,公式如下:
其中整数a在[210,211)区间,(a+1)在(210,211]区间,通过查找预先存储在存储器模块中的1/1024~1/2048倒数表,令a对应1/1024~1/2048倒数表中的序号,获得1/a和1/(a+1)的二进制36bit定点数;倒数表中记录1/1024~1/2048的有效数字,设定指数为-40,即1/a=table(a)*2-40,table(a)为倒数表中a对应的倒数;采用容量为(211-210)*36bit,在存储器模块内选取36kbit的存储空间;采用1/1024~1/2048倒数表查找a和a+1的倒数,通过公式1计算出除数有效数字的倒数1/X1,由于整数位为0,取小数为56位的定点数;
6)将被除数的有效数字Y1与除数的有效数字的倒数1/X1通过乘法器相乘,得到数量级为16位且小数也为56位定点数为乘法结果Z1,得到Z1=Y1/X1;
7)对除数与被除数的指数a、b进行比较,当b>a时,将Z1向左移b-a,当a≤b时,将Z1向右移a-b,得到结果的绝对值|Z|;通过对在第2步中取得除法结果的正负符号进行判断,结果符号为正时,结果Z=|Z|,结果符号为负时,结果为Z=0-|Z|。
本发明实现了一种除法器,通过使用少量硬件乘法器模块和片上存储器模块,即可实现32位除法运算,使用1024个表项线性插值时除法运算相对精度就可达1×2-22。当精度要求较低时,可以减少表项节约资源,当1×2-22相对精度无法满足要求时,可以增加表项或者调整插值算法以提高精度。
以1024表项为例,高12位用于计算查表索引,查找获取表项中与1/X1相邻的值作为插值算法的各项系数,然后将剩余低位移位到[0,1)区间作为插值变量,完成倒数值的插值计算。然后通过被除数与除数倒数相乘可以计算出除法结果绝对值的有效数字,最后利用第2至3步计算和记录的数据符号、指数数值对该结果进行符号、指数恢复得到最终的除法运算结果。
附图说明
图1为本发明流程示意图。
具体实施方式
本专利提出的基于查找表和插值相结合的除法器方案,用查表、乘法、简单加减法和移位操作实现复杂的除法运算,精度与单精度浮点相当,非常适合于具有硬件乘法器模块和片上存储器模块的可编程器件实现,能为涉及除法计算的信息处理在可编程器件上的实现提供支持。
一种可编程器件的除法功能实现方法,包括以下步骤:
1)当接收除数X和被除数Y后,除数X和被除数Y为32位2进制有符号、数量级为16位且小数也为16位的定点数,对被除数Y进行判断,Y为零时,返回结果零和无异常状态码,当除数X为零时,则返回最大表示值和除零错误状态码;
2)对除数X和被除数Y进行正负判断,计算结果正负;除数X和被除数Y为32位有符号数,最高位为符号位;通过判断符号位确定除数X和被除数Y为正数或者负数;当除数X和被除数Y同为正数或者负数时结果为正,否则结果为负;
3)求取除数X和被除数Y的绝对值;在前一步判断出除数X和被除数Y为正数或负数,当Y为正数或0,其绝对值|Y|=Y,当Y为负数,其绝对值|Y|=0-Y,当X为正数,其绝对值|X|=X,当X为负数,其绝对值|X|=0-X;
4)对除数的绝对值|X|与被除数的绝对值|Y|进行归一化处理,计算有效数字及指数,得到|X|的有效数字X1和指数a,|X|=X1*2a,得到|Y|的有效数字Y1和指数b,|Y|=Y1*2b;对|X|和|Y|的逐位进行判断,得到|X|和|Y|的数位为1的最高位位置n,n为小于31的整数,记sign=n-12为数据指数,并对sign≤14的数据进行左移26-n位,对sign>14的数据进行右移n-26位,经过移位后得到有效数字X1和Y1,其中有效数字高16位为整数位,低16位为小数位,有效数字X1和Y1在[210,211)区间;
5)将除数有效数字X1拆分为整数位与小数位之和,即X1=a+x,其中a={X1[31:16],16’h0000},x={16’h0000,X1[15:0]},a代表有效数字整数,x代表有效数字小数位;设定求倒数函数1/X1=f(x)=1/(a+x),可以采用插值算法对f(x)进行拟合,公式如下:
其中整数a在[210,211)区间,(a+1)在(210,211]区间,通过查找预先存储在存储器模块中的1/1024~1/2048倒数表,令a对应1/1024~1/2048倒数表中的序号,获得1/a和1/(a+1)的二进制36bit定点数;倒数表中记录1/1024~1/2048的有效数字,设定指数为-40,即1/a=table(a)*2-40,table(a)为倒数表中a对应的倒数;采用容量为(211-210)*36bit,在存储器模块内选取36kbit的存储空间;采用1/1024~1/2048倒数表查找a和a+1的倒数,通过公式1计算出除数有效数字的倒数1/X1,由于整数位为0,取小数为56位的定点数;
6)将被除数的有效数字Y1与除数的有效数字的倒数1/X1通过乘法器相乘,得到数量级为16位且小数也为56位定点数为乘法结果Z1,得到Z1=Y1/X1;
7)对除数与被除数的指数a、b进行比较,当b>a时,将Z1向左移b-a,当a≤b时,将Z1向右移a-b,得到结果的绝对值|Z|;通过对在第2步中取得除法结果的正负符号进行判断,结果符号为正时,结果Z=|Z|,结果符号为负时,结果为Z=0-|Z|。
具体实施例:
以计算Y=16.25,X=108.75,计算Z=Y/X为例。将X、Y换算为16进制数据后,Y=0x00104800,X=0x006CC800。
经过数据异常判断,X、Y均不为零。
对X、Y进行符号判断,X、Y均为正数,其结果Z也为正数。
对X、Y取绝对值,|X|=0x006CC800,|Y|=0x00104800。
对|X|、|Y|进行归一化处理,X1=06CC8000,a=10,Y1=04004000,b=8。
计算1/X1。在公式1中a=1740,x=0.5,通过查表1/a=0x25aa14025,1/(a+1)=0x25a48a382,通过公式1计算1/X1=0x025a74f1d30000。
计算Z1=Y1/X1,得到Z1=0x000098F4。
由于a>b,将Z1右移2(a-b=2)位,得到|Z|=0x0000263d,由于结果为正数,得到最终结果Z=|Z|,换算成小数为小数点后56位。
Claims (1)
1.一种可编程器件的除法功能实现方法,其特征在于,包括以下步骤:
1)当接收除数X和被除数Y后,除数X和被除数Y为32位2进制有符号、数量级为16位且小数也为16位的定点数,对被除数Y进行判断,Y为零时,返回结果零和无异常状态码,当除数X为零时,则返回最大表示值和除零错误状态码;
2)对除数X和被除数Y进行正负判断,计算结果正负;除数X和被除数Y为32位有符号数,最高位为符号位;通过判断符号位确定除数X和被除数Y为正数或者负数;当除数X和被除数Y同为正数或者负数时结果为正,否则结果为负;
3)求取除数X和被除数Y的绝对值;在前一步判断出除数X和被除数Y为正数或负数,当Y为正数或0,其绝对值|Y|=Y,当Y为负数,其绝对值|Y|=0-Y,当X为正数,其绝对值|X|=X,当X为负数,其绝对值|X|=0-X;
4)对除数的绝对值|X|与被除数的绝对值|Y|进行归一化处理,计算有效数字及指数,得到|X|的有效数字X1和指数a,|X|=X1*2a,得到|Y|的有效数字Y1和指数b,|Y|=Y1*2b;对|X|和|Y|的逐位进行判断,得到|X|和|Y|的数位为1的最高位位置n,n为小于31的整数,记sign=n-12为数据指数,并对sign≤14的数据进行左移26-n位,对sign>14的数据进行右移n-26位,经过移位后得到有效数字X1和Y1,其中有效数字高16位为整数位,低16位为小数位,有效数字X1和Y1在[210,211)区间;
5)将除数有效数字X1拆分为整数位与小数位之和,即X1=a+x,其中a={X1[31:16],16’h0000},x={16’h0000,X1[15:0]},a代表有效数字整数,x代表有效数字小数位;设定求倒数函数1/X1=f(x)=1/(a+x),可以采用插值算法对f(x)进行拟合,公式如下:
其中整数a在[210,211)区间,(a+1)在(210,211]区间,通过查找预先存储在存储器模块中的1/1024~1/2048倒数表,令a对应1/1024~1/2048倒数表中的序号,获得1/a和1/(a+1)的二进制36bit定点数;倒数表中记录1/1024~1/2048的有效数字,设定指数为-40,即1/a=table(a)*2-40,table(a)为倒数表中a对应的倒数;采用容量为(211-210)*36bit,在存储器模块内选取36kbit的存储空间;采用1/1024~1/2048倒数表查找a和a+1的倒数,通过公式1计算出除数有效数字的倒数1/X1,由于整数位为0,取小数为56位的定点数;
6)将被除数的有效数字Y1与除数的有效数字的倒数1/X1通过乘法器相乘,得到数量级为16位且小数也为56位定点数乘法结果Z1,得到Z1=Y1/X1;
7)对除数与被除数的指数a、b进行比较,当b>a时,将Z1向左移b-a,当a≤b时,将Z1向右移a-b,得到结果的绝对值|Z|;通过对在第2步中取得除法结果的正负符号进行判断,结果符号为正时,结果Z=|Z|,结果符号为负时,结果为Z=0-|Z|。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711204143.4A CN107992284B (zh) | 2017-11-27 | 2017-11-27 | 一种可编程器件的除法功能实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711204143.4A CN107992284B (zh) | 2017-11-27 | 2017-11-27 | 一种可编程器件的除法功能实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107992284A true CN107992284A (zh) | 2018-05-04 |
CN107992284B CN107992284B (zh) | 2022-12-23 |
Family
ID=62033224
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711204143.4A Active CN107992284B (zh) | 2017-11-27 | 2017-11-27 | 一种可编程器件的除法功能实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107992284B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109165006A (zh) * | 2018-08-07 | 2019-01-08 | 上海交通大学 | Softmax函数的设计优化及硬件实现方法及系统 |
CN109558109A (zh) * | 2018-11-30 | 2019-04-02 | 上海寒武纪信息科技有限公司 | 数据运算装置及相关产品 |
CN109583581A (zh) * | 2018-11-30 | 2019-04-05 | 上海寒武纪信息科技有限公司 | 数据转换装置及相关产品 |
CN112732223A (zh) * | 2020-12-31 | 2021-04-30 | 上海安路信息科技股份有限公司 | 半精度浮点数除法器数据处理方法及系统 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3508038A (en) * | 1966-08-30 | 1970-04-21 | Ibm | Multiplying apparatus for performing division using successive approximate reciprocals of a divisor |
US5828591A (en) * | 1992-11-02 | 1998-10-27 | Intel Corporation | Method and apparatus for using a cache memory to store and retrieve intermediate and final results |
CN101493760A (zh) * | 2008-12-24 | 2009-07-29 | 京信通信系统(中国)有限公司 | 一种高速除法器及其实现高速除法运算的方法 |
CN102231101A (zh) * | 2011-07-29 | 2011-11-02 | 电子科技大学 | 一种除法器及除法处理方法 |
CN103593159A (zh) * | 2012-08-14 | 2014-02-19 | 重庆重邮信科通信技术有限公司 | 一种高效率高精度除法实现方法及装置 |
CN104375800A (zh) * | 2014-12-09 | 2015-02-25 | 国网重庆市电力公司电力科学研究院 | 一种嵌入式系统的浮点除法运算方法、系统和嵌入式系统 |
CN104778027A (zh) * | 2014-01-14 | 2015-07-15 | 罗伯特·博世有限公司 | 用于计算被除数和除数的除法的结果值的方法和设备 |
CN106959840A (zh) * | 2016-01-08 | 2017-07-18 | 瑞昱半导体股份有限公司 | 除法运算装置及其运算方法 |
-
2017
- 2017-11-27 CN CN201711204143.4A patent/CN107992284B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3508038A (en) * | 1966-08-30 | 1970-04-21 | Ibm | Multiplying apparatus for performing division using successive approximate reciprocals of a divisor |
US5828591A (en) * | 1992-11-02 | 1998-10-27 | Intel Corporation | Method and apparatus for using a cache memory to store and retrieve intermediate and final results |
CN101493760A (zh) * | 2008-12-24 | 2009-07-29 | 京信通信系统(中国)有限公司 | 一种高速除法器及其实现高速除法运算的方法 |
CN102231101A (zh) * | 2011-07-29 | 2011-11-02 | 电子科技大学 | 一种除法器及除法处理方法 |
CN103593159A (zh) * | 2012-08-14 | 2014-02-19 | 重庆重邮信科通信技术有限公司 | 一种高效率高精度除法实现方法及装置 |
CN104778027A (zh) * | 2014-01-14 | 2015-07-15 | 罗伯特·博世有限公司 | 用于计算被除数和除数的除法的结果值的方法和设备 |
CN104375800A (zh) * | 2014-12-09 | 2015-02-25 | 国网重庆市电力公司电力科学研究院 | 一种嵌入式系统的浮点除法运算方法、系统和嵌入式系统 |
CN106959840A (zh) * | 2016-01-08 | 2017-07-18 | 瑞昱半导体股份有限公司 | 除法运算装置及其运算方法 |
Non-Patent Citations (2)
Title |
---|
XIN FANG; MIRIAM LEESER: "Vendor agnostic, high performance, double precision Floating Point division for FPGAs", 《IEEE XPLORE》 * |
周殿凤等: "基于FPGA的32位除法器设计", 《信息化研究》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109165006A (zh) * | 2018-08-07 | 2019-01-08 | 上海交通大学 | Softmax函数的设计优化及硬件实现方法及系统 |
CN109165006B (zh) * | 2018-08-07 | 2021-08-06 | 上海交通大学 | Softmax函数的设计优化及硬件实现方法及系统 |
CN109558109A (zh) * | 2018-11-30 | 2019-04-02 | 上海寒武纪信息科技有限公司 | 数据运算装置及相关产品 |
CN109583581A (zh) * | 2018-11-30 | 2019-04-05 | 上海寒武纪信息科技有限公司 | 数据转换装置及相关产品 |
CN109583581B (zh) * | 2018-11-30 | 2021-07-09 | 上海寒武纪信息科技有限公司 | 数据转换装置及相关产品 |
CN109558109B (zh) * | 2018-11-30 | 2021-07-16 | 上海寒武纪信息科技有限公司 | 数据运算装置及相关产品 |
CN112732223A (zh) * | 2020-12-31 | 2021-04-30 | 上海安路信息科技股份有限公司 | 半精度浮点数除法器数据处理方法及系统 |
CN112732223B (zh) * | 2020-12-31 | 2024-04-30 | 上海安路信息科技股份有限公司 | 半精度浮点数除法器数据处理方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN107992284B (zh) | 2022-12-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107992284A (zh) | 一种可编程器件的除法功能实现方法 | |
CN105955706B (zh) | 一种除法器及除法运算方法 | |
US20160313976A1 (en) | High performance division and root computation unit | |
CN106951211B (zh) | 一种可重构定浮点通用乘法器 | |
CN107305484B (zh) | 一种非线性函数运算装置及方法 | |
CN108021537A (zh) | 一种基于硬件平台的softmax实现方式 | |
CN107766031B (zh) | 分段式除法器、分段式除法运算方法、以及电子设备 | |
JPH0319569B2 (zh) | ||
US20080208945A1 (en) | Method to compute an approximation to the reciprocal of the square root of a floating point number in ieee format | |
CN107533452A (zh) | 除法和根计算以及快速结果格式化 | |
CN111813372B (zh) | 一种高精度低时延实现32位整数除法的方法及装置 | |
US20040167956A1 (en) | Method and apparatus for executing division | |
CN111443893A (zh) | 一种基于cordic算法的n次根计算装置及方法 | |
CN111078187B (zh) | 一种针对单精度浮点数的任意次方根求解方法及其求解器 | |
CN101650643B (zh) | 一种用于不可除尽浮点除法开方的舍入方法 | |
US8868633B2 (en) | Method and circuitry for square root determination | |
CN110069237B (zh) | 一种基于查找表的基-8除法器信号处理方法 | |
CN108334304B (zh) | 数字递归除法 | |
JP3551113B2 (ja) | 除算器 | |
CN104679721B (zh) | 一种fft处理器的运算方法 | |
US20040044710A1 (en) | Converting mathematical functions to power series | |
CN104731551B (zh) | 基于fpga进行除法操作的方法及装置 | |
CN106959840A (zh) | 除法运算装置及其运算方法 | |
GB2530883A (en) | Implementing a square root operation in a computer system | |
CN112163184B (zh) | 一种实现fft的装置及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |