CN102073473A - 基于fpga的十进制浮点乘法器设计 - Google Patents

基于fpga的十进制浮点乘法器设计 Download PDF

Info

Publication number
CN102073473A
CN102073473A CN200910218222XA CN200910218222A CN102073473A CN 102073473 A CN102073473 A CN 102073473A CN 200910218222X A CN200910218222X A CN 200910218222XA CN 200910218222 A CN200910218222 A CN 200910218222A CN 102073473 A CN102073473 A CN 102073473A
Authority
CN
China
Prior art keywords
decimal
floating
design
fpga
decimal system
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.)
Pending
Application number
CN200910218222XA
Other languages
English (en)
Inventor
杨军
郭义雄
丁俊
李娜
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Yunnan University YNU
Original Assignee
Individual
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Priority to CN200910218222XA priority Critical patent/CN102073473A/zh
Publication of CN102073473A publication Critical patent/CN102073473A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

一种基于FPGA的十进制浮点乘法器设计。它采用了DPD(Densely-packed decimal)编码、新型BCD编码、Signed-Digit radix-5和Decimal 32:2CSA等先进、快速的算法,利用VerilogHDL硬件描述语言编程实现,能够在FPGA开发平台上进行符合IEEE 754-2008新标准的64位十进制浮点数的乘法运算。它有效解决了目前硬件平台上二进制/十进制运算中存在的转换精度问题和软件实现十进制浮点乘法运算的时间问题,其消耗硬件资源少,运算速度快,结构简单,并且根据FPGA的性能和特点,本系统可进行多次开发,可进一步向符合IEEE754-2008标准规范的十进制浮点数运算单元DFU(Decimal Floating-point Unit)开发设计。它主要用于银行金融、图像处理和医疗等行业。

Description

基于FPGA的十进制浮点乘法器设计
所属技术领域
本发明涉及一种基于FPGA的十进制浮点乘法器设计,它采用了DPD(Densely-packeddecimal)编码、新型BCD编码、Signed-Digit radix-5和Decimal 32:2CSA等先进、快速的算法,利用Verilog HDL硬件描述语言编程实现,能够在FPGA开发平台上进行符合IEEE 754-2008新标准的64位十进制浮点数的乘法运算,其主要用于银行金融、图像处理和医疗等行业。
背景技术
目前,IEEE二进制浮点数算术标准(IEEE 754-1985)是最广泛使用的浮点数运算标准,为许多CPU与浮点运算器所采用。然而,2008年8月IEEE 754-2008这个新标准的推出,重新修订了IEEE 754-1985和IEEE 854-1987这两个标准,并且定义了十进制浮点数的表示规范,为十进制浮点数的应用与研究,以及在计算机应用中的推广奠定了坚实的基础。目前,只有IBM的POWER6系列处理器包含DFU(Decimal Floating-point Unit)部件,能够硬件支持IEEE 754-2008标准的十进制浮点数,而国内这方面的研究较少。IBM Power6抛弃传统二进制,而使用十进制数字。二进制是Power6的一般模式,相比而言,人们更喜欢十进制,在商业数据库中存储的一半以上的数字信息也是十进制的。然而,当计算机将十进制转换成二进制进行计算,然后才将计算结果转换成十进制时,就会出现计算精度问题。有许多软件可以进行十进制数学运算,然而,在Power6芯片进行十进制运算时可将性能提高2至7倍。FPGA作为专用集成电路(ASIC)领域中的一种半定制电路,以及FPGA芯片工艺和性能的不断提高,为研究IEEE 754-2008标准提供了一种设计方法与平台,采用FPGA可以极大地简化系统结构,节省芯片面积,减少电路面积,降低系统的发热量和干扰,提高系统可靠性,给调试维修带来了极大的方便,并且由于十进制浮点乘法运算相对于二进制浮点乘法运算,其具有运算范围更宽,计算精度更高,应用范围更广等特点,所以基于FPGA的十进制浮点乘法器设计实现具有一定的实际意义和应用价值,其将广泛应用于银行金融、图像处理和医疗等行业。
发明内容
为了克服现有的硬件平台上二进制/十进制转换的精度问题和软件实现十进制乘法运算的时间问题,以及为了适应人们的生活使用情况,本发明设计了一种基于FPGA的十进制浮点数乘法器,该乘法器不仅解决了硬件平台上存在的二进制/十进制转换的精度问题和软件实现十进制浮点数乘法运算的时间问题,还提高了十进制浮点数乘法运算的应用范围。
本发明解决其技术问题所采用的技术方案是:采用DPD(Densely-packed decimal)编码、新型BCD编码、Signed-Digit radix-5和Decimal 32:2CSA等先进、快速的算法,利用VerilogHDL硬件描述语言编程实现,设计了一种符合IEEE 754-2008标准的十进制浮点乘法器,能够在FPGA开发平台上进行符合标准规范的64位十进制浮点数的乘法运算。本系统设计共分为五大模块,分别是输入模块、预处理模块、算法模块、后处理模块和输出模块。系统设计原理图如图1所示。
1.输入模块:主要用于操作数和控制信号的输入。在本设计之中,输入模块分别由64位的操作数A和操作数B,以及8位的控制信号组成,其中两个操作数根据IEEE 754-2008标准规定的十进制浮点数规范,生成系统的64位输入操作数。控制信号主要用于控制后处理模块之中的运算结果处理。
2.预处理模块:主要用于对输入的操作数进行预先处理,实现的功能为:首先判断两个操作数是否为特殊值,如0、无穷大或者非数,如果是则进行特殊值处理,若操作数有一个至少为0则直接输出运算结果为0,然后判断两个操作数是否为规格化十进制数,如果不是则进行规格化处理或者直接输出无穷大数和非数,最后分别分解两个操作数,把每个操作数的符号、指数(移码表示)和系数(Densely-packed decimal编码表示,简称DPD编码)部分分别提取出来,输出保存至各个相应的模块之中,并分别分解组合部分还原给指数和系数。
(1)符号模块(1bits):用于保存操作数的符号位,并进行异或运算,将结果输出给后处理模块。
(2)指数模块(10bits):用于保存操作数的指数位,并进行判断和加法运算,将结果输出给后处理模块。
(3)系数模块(54bits):用于保存操作数的系数位,并分别进行DPD解码(即DPD转BCD编码),这里的54位DPD编码的系数将被解压为64位的BCD码,然后将结果进行大小判断,大数将被输出给X,而小数将被输出给Y。
DPDDPD转BCD编码逻辑表达式为:
a=(v&w)&(~s|t|~x)
b=p&(~v|~w|(s&~t&x))
c=q&(~v|~w|(s&~t&x))
d=r
e=v&((~w&x)|(~t&x)|(s&x))
f=(s&(~v|~x))|(p&~s&t&v&w&x)
g=(t&(~v|~x))|(q&~s&t&w)
h=u
i=v&((~w&~x)|(w&x&(s|t)))
j=(~v&w)|(s&v&~w&x)|(p&w&(~x|(~s&~t)))
k=(~v&x)|(t&~w&x)|(q&v&w&(~x|(~s&~t)))
m=y
式中pqrstuvwxy和abcdefghijkm分别表示10bits的DPD码和12bits的BCD码。
3.算法模块:这是整个系统的核心模块,其中包含了X系数分解算法和Y系数分解算法,以及部分积处理算法模块,主要用于实现X和Y的有效分解和精确的转换,以及部分积的快速处理。
(1)对于X系数(BCD-8421编码),采用了一种新型的编码技术,有效的解决了传统编码技术存在的冗余处理问题。具体实现方法为:(1)进行左移3位得到符合BCD-5421编码规则的编码,再进行BCD-5421转BCD-4221编码得到5倍的X(即5X);(2)进行BCD-8421转BCD-5211编码,然后左移1位得到2倍的X(即2X);(3)把BCD-8421转BCD-4221编码得到1倍的X(即1X),然后左移4位得到10倍的X(即10X)。
BCD-5421转BCD-4221编码逻辑表达式为:
bcd4221[3]=bcd5421[3]|bcd5421[2]
bcd4221[2]=bcd5421[3]&(bcd5421[2]|(bcd5421[1]&bcd5421[0]))
bcd4221[1]=bcd5421[1]|bcd5421[3]&(bcd5421[2]^bcd5421[0])
bcd4221[0]=bcd5421[3]^bcd5421[0]
BCD-8421转BCD-5211编码逻辑表达式为:
bcd5211[3]=bcd8421[3]|bcd8421[2]&(bcd8421[1]|bcd8421[0])
bcd5211[2]=bcd8421[3]|(bcd8421[1]^(bcd8421[2]&~bcd8421[0]))
bcd5211[1]=bcd8421[3]&bcd8421[0]|bcd8421[2]&~(bcd8421[1]|bcd8421[0])
bcd5211[0]=bcd8421[3]|(bcd8421[2]^bcd8421[0])
BCD-8421转BCD-4221编码逻辑表达式为:
bcd4221[3]=bcd8421[3]|bcd8421[2]
bcd4221[2]=bcd8421[3]
bcd4221[1]=bcd8421[3]|bcd8421[1]
bcd4221[0]=bcd8421[0]
(2)对于Y系数(BCD-8421编码),则采用Signed-Digit radix-5算法,将Y进行四位一组运算产生y2i U,y1i U,ysi L,y2i Ly1i L
Signed-Digit radix-5算法逻辑表达式为:
Figure G200910218222XD00031
Figure G200910218222XD00032
将X系数分解产生的10X、5X、2X、1X和Y系数产生的y2i U,y1i U,ysi L,y2i L y1i L同时送入数据选择器,由Y系数产生的选择信号选择NX(N=10,5,2,1)输出给运算器。
(3)对于部分积处理模块:主要用于进行系数分解运算产生的部分积移位相加运算。为了进一步提高运算速度,采用了十进制32:2CSA(carry-save adder)算法,主要用于减少运算的时间延迟。运算结果进行BCD-4221转BCD-8421编码。
(4)后处理模块:主要进行运算结果的后期处理工作。首先判断运算结果是否有进位和溢出,如果是则进行进位和溢出处理,然后分别提取指数部分的两个重要位数(一般取前两位,简称MSBs)和系数部分的一个重要数字(一般取前4位,简称MSD)重新组合编码组成标准规范的十进制浮点数的组合部分,并将剩余的系数部分进行DPD压缩编码,最后结果进行规格化处理后输出。
BCD转DPD编码逻辑表达式为:
p=b|(a&j)|(a&f&i)
q=c|(a&k)|(a&g&i)
r=d
s=(f&(~a|~i))|(~a&e&j)|(e&i)
t=g|(~a&e&k)|(a&i)
u=h
v=a|e|i
w=a|(e&i)|(~e&j)
x=e|(a&i)|(~a&k)
y=m
式中pqrstuvwxy和abcdefghijkm分别表示10bits的DPD码和12bits的BCD码。
(5)输出模块:主要用于两操作数乘法运算结果的输出显示,输出结果符合IEEE754-2008标准规范。
最后,利用modelsim专业仿真软件对整个系统设计进行了系统仿真和下载验证。仿真结果如图2所示。
本发明的有益效果是,可以基于FPGA开发平台硬件实现符合IEEE 754-2008标准规范的十进制浮点数的乘法运算,有效解决了目前硬件平台上二进制/十进制运算中存在的转换精度问题和软件实现十进制浮点乘法运算的时间问题,消耗硬件资源少,运算速度快,结构简单,并且根据FPGA的性能和特点,本系统可进行多次开发,可进一步向符合IEEE 754-2008标准规范的十进制浮点数运算单元DFU开发设计。
附图说明
下面结合附图和实施例对本发明进一步说明。
图1是本发明的系统设计原理图。
图2是modelsim专业软件仿真结果图。
在图1中,首先设计两个寄存器来存放输入操作数,然后输出给预处理模块进行操作数预先处理,处理结果将存放在符号、指数和系数模块这三个模块之中,其中符号模块进行符号的异或运算并将结果输出给后处理模块,指数模块进行两个操作数指数的判断和加法运算并将运算结果输出给后处理模块,而系数模块进行系数的DPD解码输出给X和Y寄存器,X和Y系数将各自四位一组根据算法进行分解,再根据相互对应关系进行选择运算,其中采用了十进制32:2CSA算法加快对产生的部分积进行处理,运算结果将根据是否符合标准规范进行修正后送入后处理模块,最后在后处理模块之中首先判断各个运算结果是否异常,进行异常处理,然后将系数运算结果进行BCD-4221转BCD-8421编码,提取指数运算结果的前两位和系数运算结果的前四位进行重新组合构成十进制浮点数表示规范的组合部分,最后将剩下的系数运算结果进行DPD压缩编码,再根据十进制浮点数表示规范将系统运算结果显示输出。
在图2所示实施例中,利用modelsim专业仿真软件进行系统仿真,输入操作数A和B分别为A=2238000000000008、B=2238000000000009,系统运算结果为ret=2250000000000072(A、B和ret均为十六进制表示)。
具体实施方式
在图1中,首先根据十进制浮点数的表示规范和乘法运算原理,设计出十进制浮点乘法器的模型,然后根据模型各个模块需要实现的具体功能选择或编写算法,再根据算法原理和逻辑表达式以及整个系统的连接关系,利用Verilog HDL硬件描述语言编程和Modelsim专业仿真软件进行编译和仿真来实现系统设计,最后在FPGA平台上下载验证,硬件实现基于FPGA的十进制浮点乘法器的设计。具体的十进制浮点数乘法运算的流程为:首先设计两个寄存器来存放输入操作数,然后输出给预处理模块进行操作数预先处理,处理结果将存放在符号、指数和系数模块这三个模块之中,其中符号模块进行符号的异或运算并将结果输出给后处理模块,指数模块进行两个操作数指数的判断和加法运算并将运算结果输出给后处理模块,而系数模块进行系数的DPD解码输出给X和Y寄存器,X和Y系数将各自四位一组根据算法进行分解,再根据相互对应关系进行选择运算,其中采用了十进制32:2CSA算法加快对产生的部分积进行处理,运算结果将根据是否符合标准规范进行修正后送入后处理模块,最后在后处理模块之中首先判断各个运算结果是否异常,进行异常处理,然后将系数运算结果进行BCD-4221转BCD-8421编码,提取指数运算结果的前两位和系数运算结果的前四位进行重新组合构成十进制浮点数表示规范的组合部分,最后将剩下的系数运算结果进行DPD压缩编码,再根据十进制浮点数表示规范将系统运算结果显示输出。
在图2中,首先在PC上安装Modelsim专业仿真软件,然后建立系统工程项目,把预先使用Verilog HDL硬件描述语言编写好的系统设计代码文件和系统测试文件导入软件进行编译和仿真,最后根据输入和输出数据判断系统运算结果是否正确,并保存仿真结果。

Claims (3)

1.一种基于FPGA的十进制浮点乘法器设计,采用了DPD(Densely-packed decimal)编码、新型BCD编码、Signed-Digit radix-5和Decimal 32:2CSA等先进、快速的算法和Verilog HDL硬件描述语言编程设计了符合标准规范的64位十进制浮点乘法器模型,其特征是:根据十进制浮点数的表示规范和乘法运算原理,提出十进制浮点乘法器的设计模型和系统各个模块具体功能实现所采用的算法及逻辑表达式,然后利用Verilog HDL硬件描述语言编程实现各个功能模块的设计并生成调用模块,最后设计顶层文件使各个模块连接起来构成64位十进制浮点乘法器的设计系统,使其能够在FPGA开发平台上硬件实现64位十进制浮点数乘法运算。
2.根据权利要求1所述的基于FPGA的十进制浮点乘法器设计,其特征是:符合IEEE 754-2008标准规范的十进制浮点乘法器设计模型。
3.根据权利要求1所述的基于FPGA的十进制浮点乘法器设计,其特征是:能够利用VerilogHDL硬件描述语言编程实现系统设计,并在FPGA开发平台上下载验证,硬件实现64位十进制浮点数乘法运算。
CN200910218222XA 2009-11-20 2009-11-20 基于fpga的十进制浮点乘法器设计 Pending CN102073473A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN200910218222XA CN102073473A (zh) 2009-11-20 2009-11-20 基于fpga的十进制浮点乘法器设计

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200910218222XA CN102073473A (zh) 2009-11-20 2009-11-20 基于fpga的十进制浮点乘法器设计

Publications (1)

Publication Number Publication Date
CN102073473A true CN102073473A (zh) 2011-05-25

Family

ID=44032025

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200910218222XA Pending CN102073473A (zh) 2009-11-20 2009-11-20 基于fpga的十进制浮点乘法器设计

Country Status (1)

Country Link
CN (1) CN102073473A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109976707A (zh) * 2019-03-21 2019-07-05 西南交通大学 一种可变位宽乘法器自动化生成方法
CN111538475A (zh) * 2020-03-25 2020-08-14 上海交通大学 基于fpga的真随机数发生器构建系统及方法
CN111988031A (zh) * 2020-08-28 2020-11-24 华中科技大学 一种忆阻存内矢量矩阵运算器及运算方法
WO2022073253A1 (zh) * 2020-10-10 2022-04-14 闵少维 十进制计算机基础技术原理及实现方法

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109976707A (zh) * 2019-03-21 2019-07-05 西南交通大学 一种可变位宽乘法器自动化生成方法
CN111538475A (zh) * 2020-03-25 2020-08-14 上海交通大学 基于fpga的真随机数发生器构建系统及方法
CN111538475B (zh) * 2020-03-25 2023-06-23 上海交通大学 基于fpga的真随机数发生器构建系统及方法
CN111988031A (zh) * 2020-08-28 2020-11-24 华中科技大学 一种忆阻存内矢量矩阵运算器及运算方法
CN111988031B (zh) * 2020-08-28 2022-05-20 华中科技大学 一种忆阻存内矢量矩阵运算器及运算方法
WO2022073253A1 (zh) * 2020-10-10 2022-04-14 闵少维 十进制计算机基础技术原理及实现方法

Similar Documents

Publication Publication Date Title
CN106325810B (zh) 微处理器
CN106990937B (zh) 一种浮点数处理装置和处理方法
CN101685383A (zh) 计算器、基于直接对阶的自由精度浮点数的运算电路
CN102629189A (zh) 基于fpga的流水浮点乘累加方法
CN101847087A (zh) 一种支持定浮点可重构的横向求和网络结构
Choi et al. Energy-efficient design of processing element for convolutional neural network
CN108196822A (zh) 一种双精度浮点开方运算的方法及系统
CN102073473A (zh) 基于fpga的十进制浮点乘法器设计
CN115268832A (zh) 浮点数取整的方法、装置以及电子设备
Lyu et al. PWL-based architecture for the logarithmic computation of floating-point numbers
CN103955585A (zh) 一种适用于低功耗容错电路的fir滤波器结构
Song et al. Bsc: Block-based stochastic computing to enable accurate and efficient tinyml
CN100426219C (zh) 一种集成电路中的数据运算方法及装置
CN103365826A (zh) 一种小面积的基-3fft蝶形单元
CN209496362U (zh) 三输入n位二进制加法器
Phuse et al. Design and Implementation of Different Multiplier Techniques and Efficient MAC Unit on FPGA
CN102929575B (zh) 一种模(2n+3)乘法器
CN104572018A (zh) 一种用于浮点常数生成的装置及方法
CN117075842B (zh) 十进制加法器及十进制运算方法
Trivedi et al. A Review on Single Precision Floating Point Arithmetic Unit of 32 bit Number
CN101091157B (zh) 用于处理数字数据的数字处理器和方法
CN110059817B (zh) 一种实现低资源消耗卷积器的方法
Bawankar et al. Review on 32 bit single precision Floating point unit (FPU) Based on IEEE 754 Standard using VHDL
Rathore et al. A Review Articles of Booth Multiplier
Wang et al. A design method for the multi-operand adder in logic synthesis flow

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
ASS Succession or assignment of patent right

Free format text: FORMER OWNER: GUO YIXIONG DING JUN LI NUO

Owner name: YUNNAN UNIVERSITY

Free format text: FORMER OWNER: YANG JUN

Effective date: 20110805

C41 Transfer of patent application or patent right or utility model
C53 Correction of patent for invention or patent application
CB03 Change of inventor or designer information

Inventor after: Yang Jun

Inventor after: Ding Jun

Inventor after: Li Na

Inventor after: Dong Yin

Inventor after: Zhang Weiping

Inventor after: Wang Xiaojun

Inventor after: Zhao Ga

Inventor after: Tang Zuoxia

Inventor after: Shu Pingping

Inventor before: Yang Jun

Inventor before: Guo Yixiong

Inventor before: Ding Jun

Inventor before: Li Na

COR Change of bibliographic data

Free format text: CORRECT: INVENTOR; FROM: YANG JUN GUO YIXIONG DING JUN LI NUO TO: YANG JUN DING JUN LI NUO DONG YINZHANG WEIPING WANG XIAOJUN ZHAO GA TANG ZUOXIA SHU PINGPING

TA01 Transfer of patent application right

Effective date of registration: 20110805

Address after: 650091 Yunnan province Kunming City Lake Road No. 2

Applicant after: Yunnan University

Address before: College of information Yunnan University No. 2 Yunnan province Kunming City Lake Road 650091

Applicant before: Yang Jun

Co-applicant before: Guo Yixiong

Co-applicant before: Ding Jun

Co-applicant before: Li Na

C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C12 Rejection of a patent application after its publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20110525