基于fpga的十进制浮点乘法器设计的制作方法

文档序号:6583441阅读:901来源:国知局
专利名称:基于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的P0TOR6系列处理器包含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)符号模块(Ibits)用于保存操作数的符号位,并进行异或运算,将结果输出 给后处理模块。(2)指数模块(IObits)用于保存操作数的指数位,并进行判断和加法运算,将结 果输出给后处理模块。(3)系数模块(54bits)用于保存操作数的系数位,并分别进行DPD解码(即DPD 转B⑶编码),这里的M位DPD编码的系数将被解压为64位的B⑶码,然后将结果进行大 小判断,大数将被输出给X,而小数将被输出给Y。DPDDPD转B⑶编码逻辑表达式为
a=(v&w)&rS|t「X)
b=ρ&ΓνΓ (S& t&X))
C=q&( v「w| (s& t&x))
d=r
e=v&(( w&x)I( t&x)I(s&x))
f=(s&( v「x)) I (p& s&t&v&w&x)
g=α&ΓνΓχ)) I (q& s&t&w)
h=U
i=V& (( W& X) I (w&x&(s|t)))
j=( v&w)I(S&V& w&x)I(P&W&( XCs^t)))
k=( v&x)I(t& w&x)I(q&v&w&( χCs^t)))
m=y
式中 pqrstuvwxy 和 abcdefghi jkm 分别表示 IObits 的 DPD 码和 12bits 的 BCD 码。
3.算法模块这是整个系统的核心模块,其中包含了 X系数分解算法和Y系数分
解算法,以及部分积处理算法模块,主要用于实现X和Y的有效分解和精确的转换,以及部 分积的快速处理。 (1)对于X系数(BCD-8421编码),采用了 一种新型的编码技术,有效的解决 了传统编码技术存在的冗余处理问题。具体实现方法为(1)进行左移3位得到符合B⑶-5421编码规则的编码,再进行B⑶-5421转B⑶-4221编码得到5倍的X(即5X) ; (2) 进行B⑶-8421转B⑶-5211编码,然后左移1位得到2倍的X(即2X) ; (3)把B⑶-8421转 B⑶-4221编码得到1倍的X(即IX),然后左移4位得到10倍的X(即10X)。BCD-5421转BCD-4221编码逻辑表达式为bcd4221[3] = bcd5421[3]|bcd5421 [2]bcd4221[2] = bcd5421[3]&(bcd5421[2]|(bcd5421[l]&bcd5421
))bcd4221[l] = bcd5421[l] |bcd5421 [3]&(bcd5421 [2rbcd5421
)bcd4221
= bcd5421[3]"bcd5421
BCD-8421转BCD-5211编码逻辑表达式为bcd5211[3] = bcd8421[3]|bcd8421[2]&(bcd8421[1] bcd8421
)bcd5211[2] = bcd8421[3]| (bcd8421[1]~(bcd8421[2]& bcd8421
))bcd5211 [1] = bcd8421 [3] &bcd8421
| bcd8421 [2] & (bcd8421 [ 1] | be d8421
)bcd5211
= bcd8421[3]|(bcd8421[2]"bcd8421
)BCD-8421转BCD-4221编码逻辑表达式为bcd4221[3] = bcd8421[3]|bcd8421[2]bcd4221[2] = bcd8421[3]bcd4221[1] = bcd8421[3]|bcd8421[1]bcd4221
= bcd8421
(2)对于Y系数(BCD-8421编码),则采用Signed-Digit radix-5算法,将Y进行 四位一组运算产生yliu,ySiL, Υ2、1:。Signed-Digit radix-5 算法逻辑表达式为
^f = 0
权利要求
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 位十进制浮点数乘法运算。
全文摘要
一种基于FPGA的十进制浮点乘法器设计。它采用了DPD(Densely-packed decimal)编码、新型BCD编码、Signed-Digit radix-5和Decimal 322CSA等先进、快速的算法,利用VerilogHDL硬件描述语言编程实现,能够在FPGA开发平台上进行符合IEEE 754-2008新标准的64位十进制浮点数的乘法运算。它有效解决了目前硬件平台上二进制/十进制运算中存在的转换精度问题和软件实现十进制浮点乘法运算的时间问题,其消耗硬件资源少,运算速度快,结构简单,并且根据FPGA的性能和特点,本系统可进行多次开发,可进一步向符合IEEE754-2008标准规范的十进制浮点数运算单元DFU(Decimal Floating-point Unit)开发设计。它主要用于银行金融、图像处理和医疗等行业。
文档编号G06F7/57GK102073473SQ20091021822
公开日2011年5月25日 申请日期2009年11月20日 优先权日2009年11月20日
发明者丁俊, 李娜, 杨军, 郭义雄 申请人:丁俊, 李娜, 杨军, 郭义雄
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1