專利名稱:基于fpga的十進制浮點乘法器設(shè)計的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種基于FPGA的十進制浮點乘法器設(shè)計,它采用了 DPD(Densely-packeddecimal)編碼、新型BCD編碼、Signed—Digit radix—5禾口Decimal 32 2CSA等先進、快速的算法,利用Verilog HDL硬件描述語言編程實現(xiàn),能夠在FPGA開發(fā)平 臺上進行符合IEEE 754-2008新標準的64位十進制浮點數(shù)的乘法運算,其主要用于銀行金 融、圖像處理和醫(yī)療等行業(yè)。
背景技術(shù):
目前,IEEE 二進制浮點數(shù)算術(shù)標準(IEEE 754-1985)是最廣泛使用的浮點數(shù)運算 標準,為許多CPU與浮點運算器所采用。然而,2008年8月IEEE 754-2008這個新標準的推 出,重新修訂了 IEEE 754-1985和IEEE 854-1987這兩個標準,并且定義了十進制浮點數(shù)的 表示規(guī)范,為十進制浮點數(shù)的應(yīng)用與研究,以及在計算機應(yīng)用中的推廣奠定了堅實的基礎(chǔ)。 目前,只有IBM的P0TOR6系列處理器包含DFU (Decimal Floating-point Unit)部件,能夠 硬件支持IEEE 754-2008標準的十進制浮點數(shù),而國內(nèi)這方面的研究較少。IBM Power6拋 棄傳統(tǒng)二進制,而使用十進制數(shù)字。二進制是Power6的一般模式,相比而言,人們更喜歡十 進制,在商業(yè)數(shù)據(jù)庫中存儲的一半以上的數(shù)字信息也是十進制的。然而,當計算機將十進制 轉(zhuǎn)換成二進制進行計算,然后才將計算結(jié)果轉(zhuǎn)換成十進制時,就會出現(xiàn)計算精度問題。有許 多軟件可以進行十進制數(shù)學運算,然而,在Power6芯片進行十進制運算時可將性能提高2 至7倍。FPGA作為專用集成電路(ASIC)領(lǐng)域中的一種半定制電路,以及FPGA芯片工藝和 性能的不斷提高,為研究IEEE 754-2008標準提供了一種設(shè)計方法與平臺,采用FPGA可以 極大地簡化系統(tǒng)結(jié)構(gòu),節(jié)省芯片面積,減少電路面積,降低系統(tǒng)的發(fā)熱量和干擾,提高系統(tǒng) 可靠性,給調(diào)試維修帶來了極大的方便,并且由于十進制浮點乘法運算相對于二進制浮點 乘法運算,其具有運算范圍更寬,計算精度更高,應(yīng)用范圍更廣等特點,所以基于FPGA的十 進制浮點乘法器設(shè)計實現(xiàn)具有一定的實際意義和應(yīng)用價值,其將廣泛應(yīng)用于銀行金融、圖 像處理和醫(yī)療等行業(yè)。
發(fā)明內(nèi)容
為了克服現(xiàn)有的硬件平臺上二進制/十進制轉(zhuǎn)換的精度問題和軟件實現(xiàn)十進制 乘法運算的時間問題,以及為了適應(yīng)人們的生活使用情況,本發(fā)明設(shè)計了一種基于FPGA的 十進制浮點數(shù)乘法器,該乘法器不僅解決了硬件平臺上存在的二進制/十進制轉(zhuǎn)換的精度 問題和軟件實現(xiàn)十進制浮點數(shù)乘法運算的時間問題,還提高了十進制浮點數(shù)乘法運算的應(yīng) 用范圍。本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是采用DPD (Densely-packed decimal)編碼、新型 BCD 編碼、Signed-Digit radix-5 和 Decimal 32 :2CSA 等先進、快速的 算法,利用VerilogHDL硬件描述語言編程實現(xiàn),設(shè)計了一種符合IEEE 754-2008標準的十 進制浮點乘法器,能夠在FPGA開發(fā)平臺上進行符合標準規(guī)范的64位十進制浮點數(shù)的乘法運算。本系統(tǒng)設(shè)計共分為五大模塊,分別是輸入模塊、預處理模塊、算法模塊、后處理模塊和 輸出模塊。系統(tǒng)設(shè)計原理圖如
圖1所示。1.輸入模塊主要用于操作數(shù)和控制信號的輸入。在本設(shè)計之中,輸入模塊分 別由64位的操作數(shù)A和操作數(shù)B,以及8位的控制信號組成,其中兩個操作數(shù)根據(jù)IEEE 754-2008標準規(guī)定的十進制浮點數(shù)規(guī)范,生成系統(tǒng)的64位輸入操作數(shù)??刂菩盘栔饕糜?控制后處理模塊之中的運算結(jié)果處理。2.預處理模塊主要用于對輸入的操作數(shù)進行預先處理,實現(xiàn)的功能為首先判 斷兩個操作數(shù)是否為特殊值,如0、無窮大或者非數(shù),如果是則進行特殊值處理,若操作數(shù)有 一個至少為0則直接輸出運算結(jié)果為0,然后判斷兩個操作數(shù)是否為規(guī)格化十進制數(shù),如果 不是則進行規(guī)格化處理或者直接輸出無窮大數(shù)和非數(shù),最后分別分解兩個操作數(shù),把每個 操作數(shù)的符號、指數(shù)(移碼表示)和系數(shù)(Densely-packed decimal編碼表示,簡稱DPD編 碼)部分分別提取出來,輸出保存至各個相應(yīng)的模塊之中,并分別分解組合部分還原給指 數(shù)和系數(shù)。(1)符號模塊(Ibits)用于保存操作數(shù)的符號位,并進行異或運算,將結(jié)果輸出 給后處理模塊。(2)指數(shù)模塊(IObits)用于保存操作數(shù)的指數(shù)位,并進行判斷和加法運算,將結(jié) 果輸出給后處理模塊。(3)系數(shù)模塊(54bits)用于保存操作數(shù)的系數(shù)位,并分別進行DPD解碼(即DPD 轉(zhuǎn)B⑶編碼),這里的M位DPD編碼的系數(shù)將被解壓為64位的B⑶碼,然后將結(jié)果進行大 小判斷,大數(shù)將被輸出給X,而小數(shù)將被輸出給Y。DPDDPD轉(zhuǎn)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.算法模塊這是整個系統(tǒng)的核心模塊,其中包含了 X系數(shù)分解算法和Y系數(shù)分
解算法,以及部分積處理算法模塊,主要用于實現(xiàn)X和Y的有效分解和精確的轉(zhuǎn)換,以及部 分積的快速處理。 (1)對于X系數(shù)(BCD-8421編碼),采用了 一種新型的編碼技術(shù),有效的解決 了傳統(tǒng)編碼技術(shù)存在的冗余處理問題。具體實現(xiàn)方法為(1)進行左移3位得到符合B⑶-5421編碼規(guī)則的編碼,再進行B⑶-5421轉(zhuǎn)B⑶-4221編碼得到5倍的X(即5X) ; (2) 進行B⑶-8421轉(zhuǎn)B⑶-5211編碼,然后左移1位得到2倍的X(即2X) ; (3)把B⑶-8421轉(zhuǎn) B⑶-4221編碼得到1倍的X(即IX),然后左移4位得到10倍的X(即10X)。BCD-5421轉(zhuǎn)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轉(zhuǎn)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轉(zhuǎn)BCD-4221編碼邏輯表達式為bcd4221[3] = bcd8421[3]|bcd8421[2]bcd4221[2] = bcd8421[3]bcd4221[1] = bcd8421[3]|bcd8421[1]bcd4221
= bcd8421
(2)對于Y系數(shù)(BCD-8421編碼),則采用Signed-Digit radix-5算法,將Y進行 四位一組運算產(chǎn)生yliu,ySiL, Υ2、1:。Signed-Digit radix-5 算法邏輯表達式為
^f = 0
權(quán)利要求
1.一種基于FPGA的十進制浮點乘法器設(shè)計,采用了 DPD (Densely-packed decimal) 編碼、新型BCD編碼、Signed-Digit radix-5和Decimal 32:2CSA等先進、快速的算法和 Verilog HDL硬件描述語言編程設(shè)計了符合標準規(guī)范的64位十進制浮點乘法器模型,其特 征是根據(jù)十進制浮點數(shù)的表示規(guī)范和乘法運算原理,提出十進制浮點乘法器的設(shè)計模型 和系統(tǒng)各個模塊具體功能實現(xiàn)所采用的算法及邏輯表達式,然后利用Verilog HDL硬件描 述語言編程實現(xiàn)各個功能模塊的設(shè)計并生成調(diào)用模塊,最后設(shè)計頂層文件使各個模塊連接 起來構(gòu)成64位十進制浮點乘法器的設(shè)計系統(tǒng),使其能夠在FPGA開發(fā)平臺上硬件實現(xiàn)64位 十進制浮點數(shù)乘法運算。
2.根據(jù)權(quán)利要求1所述的基于FPGA的十進制浮點乘法器設(shè)計,其特征是符合IEEE 754-2008標準規(guī)范的十進制浮點乘法器設(shè)計模型。
3.根據(jù)權(quán)利要求1所述的基于FPGA的十進制浮點乘法器設(shè)計,其特征是能夠利用 VerilogHDL硬件描述語言編程實現(xiàn)系統(tǒng)設(shè)計,并在FPGA開發(fā)平臺上下載驗證,硬件實現(xiàn)64 位十進制浮點數(shù)乘法運算。
全文摘要
一種基于FPGA的十進制浮點乘法器設(shè)計。它采用了DPD(Densely-packed decimal)編碼、新型BCD編碼、Signed-Digit radix-5和Decimal 322CSA等先進、快速的算法,利用VerilogHDL硬件描述語言編程實現(xiàn),能夠在FPGA開發(fā)平臺上進行符合IEEE 754-2008新標準的64位十進制浮點數(shù)的乘法運算。它有效解決了目前硬件平臺上二進制/十進制運算中存在的轉(zhuǎn)換精度問題和軟件實現(xiàn)十進制浮點乘法運算的時間問題,其消耗硬件資源少,運算速度快,結(jié)構(gòu)簡單,并且根據(jù)FPGA的性能和特點,本系統(tǒng)可進行多次開發(fā),可進一步向符合IEEE754-2008標準規(guī)范的十進制浮點數(shù)運算單元DFU(Decimal Floating-point Unit)開發(fā)設(shè)計。它主要用于銀行金融、圖像處理和醫(yī)療等行業(yè)。
文檔編號G06F7/57GK102073473SQ20091021822
公開日2011年5月25日 申請日期2009年11月20日 優(yōu)先權(quán)日2009年11月20日
發(fā)明者丁俊, 李娜, 楊軍, 郭義雄 申請人:丁俊, 李娜, 楊軍, 郭義雄