資源描述:
《采用Karatsuba算法在FPGA上實現(xiàn)雙精度浮點乘法.pdf》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、2014年1月西安石油大學(xué)學(xué)報(自然科學(xué)版)Jan.2014第29卷第1期JoumalofXianShiyouUniversity(NaturalScienceEdition)Vo1.29No.1文章編號:1673-064X(2014)01-0098-03采用Karatsuba算法在FPGA上實現(xiàn)雙精度浮點乘法康磊,徐英卓(西安石油大學(xué)計算機學(xué)院,陜西西安710065)摘要:雙精度浮點運算廣泛應(yīng)用于數(shù)值計算和信號處理中,在IEEE754標準中實現(xiàn)兩個雙精度浮點乘法需要一個53bit×53bit的尾數(shù)乘法器,這樣的一個乘法器若采用FPGA實現(xiàn)需要大量的硬件資源。將Kar
2、atsuba算法應(yīng)用于浮點運算器中,采用FPGA實現(xiàn)了一個浮點乘法器,與傳統(tǒng)方法相比該乘法器占用硬件資源較少。關(guān)鍵詞:雙精度浮點數(shù);浮點乘法;Karatsuba算法;FPGA中圖分類號:TP302.2文獻標識碼:A浮點運算廣泛應(yīng)用于諸多領(lǐng)域,特別是在科學(xué)雙精度浮點數(shù)的格式:計算、數(shù)值分析和信號處理等方面,如數(shù)字濾波器、1tl1bit52bitFFTr、圖像處理等。在所有的浮點算術(shù)運算中,乘法符號位(S)l階碼(E)l尾數(shù)(M)是其核心算法之一,如何構(gòu)建高效的浮點乘法器一浮點運算器的運算包含加、減、乘、除、平方和開直是人們關(guān)注的焦點。隨著FPGA技術(shù)的發(fā)展,由方等。通常
3、情況下,在運算之前需要將浮點數(shù)分解于FPGA器件本身的優(yōu)勢——速度、邏輯資源、豐富為符號位、階碼和尾數(shù),然后進行運算,各部分運算的IP核等,使得采用FAPG實現(xiàn)通用高性能的運算結(jié)束后,還要經(jīng)過舍人和規(guī)格化,最后再將符號、階器成為可能。按照IEEE754中定義的雙精度浮點碼和指數(shù)重構(gòu)得到結(jié)果。本文只討論雙精度浮點數(shù)數(shù)的尾數(shù)有53bit,采用FGAP實現(xiàn)53bit×53bit的的乘法運算。浮點乘法器雖然是一個簡單的算術(shù)單硬件乘法器需要占用大量的硬件資源¨。本文詳元,但由于它需要一個53bit位的乘法器,因此在使細說明了采用Karatsuba算法在FPGA上實現(xiàn)了雙用FPG
4、A實現(xiàn)時需要考慮硬件資源的消耗和時問。精度浮點乘法器的過程。1雙精度浮點數(shù)格式2浮點乘法運算過程IEEE754是使用最廣泛的浮點數(shù)運算標準,常浮點乘法運算規(guī)則的通式為:X×Y=用的浮點數(shù)有單精確度(32bit)和雙精確度(64(一1)Sx+SY×(Mx×My)×2Ex+EVo式中和l,為2個bit)2種。輸入的浮點數(shù),其中s和5是符號位,和是單精度浮點數(shù)的格式:尾數(shù),E和E是階碼。雙精度浮點乘法運算流程如1bit8bit23bit圖1所示,其操作步驟如下:符號位(S)1階碼(E)1尾數(shù)(M)(1)輸入的操作數(shù)先是被分成1bit符號位、11收稿日期:2013-09-09
5、基金項目:國家自然基金資助項目(編號:51074125)作者簡介:康磊(1968.),女,副教授,碩士,主要研究方向為計算機系統(tǒng)結(jié)構(gòu)。E-mail:kant@xsyu.edu.cn康磊等:采用Karatsuba算法在FPGA上實現(xiàn)雙精度浮點乘法一99一bit階碼和53bit尾數(shù)(包括隱藏位);(m一1“m一2?o)6;(2)判斷2個操作數(shù)中是否存在0,若是則轉(zhuǎn)向Q1=(Vn-I?)6;Q0=(Um-I一2?o)6。(9);因此有(3)2個運算數(shù)的符號位進行異或運算,結(jié)果就PXQ=(P1b+Po)×(Q1b+Q0)是乘法運算結(jié)果的符號位結(jié)果;=P1Q1b+(P1Qo+P
6、oQ1)b+PoQ0(4)將階碼相加,然后減去l023,得到乘法運=F2b+F1b+r0。(1)算的階碼結(jié)果;其中:r2=P1Q1;r1=P1Q0+PoQ1;r0=P0Q0。(5)尾數(shù)相乘,得到106位的結(jié)果;從式(1)可以看出,實現(xiàn)P×Q可以將乘法器的(6)對運算的結(jié)果進行規(guī)格化處理,即對尾數(shù)位數(shù)由凡位降低為m位(m=n/2),乘法器的尾數(shù)降的106位結(jié)果左移至最高位是1為止,然后取第低了一半,但是需要做4次乘法操作。106位到54位;Karatsuba乘法算法是將式(1)中的r做如(7)對尾數(shù)的53到1位按照舍入原則進行舍下變換:人操作,通常采用的默認模式是最近舍
7、入(Roundtorl=(PQ0+PoQ)+(P1Q十PQ。)一(P。Q1+P0Qo)Nearest);(8)對階碼結(jié)果進行判溢處理,設(shè)置階碼和尾=(P1+Po)(Q。+Q0)一P。Ql—P0Q。數(shù)的最后結(jié)果;=(P+P0)(Q+Q0)一r2一r0。(2)變換后的式(2)中r的2次乘法運算變成了1(9)將符號位、階碼和尾數(shù)的結(jié)果重新拼接成64bit的運算結(jié)果。次,但需要增加加法的次數(shù),而加法的運算時問要比乘法小得多。Karatsuba算法還可以進一步擴展,將2個乘數(shù)分浮點數(shù)分解為符號、階碼和尾勢解成更多的項數(shù)。若將2個乘數(shù)表示分解為3項,P和/土、p