快速單精度浮點(diǎn)運(yùn)算器的設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
快速單精度浮點(diǎn)運(yùn)算器的設(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)
快速單精度浮點(diǎn)運(yùn)算器的設(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)
快速單精度浮點(diǎn)運(yùn)算器的設(shè)計(jì)與實(shí)現(xiàn)_第4頁(yè)
快速單精度浮點(diǎn)運(yùn)算器的設(shè)計(jì)與實(shí)現(xiàn)_第5頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、文章編號(hào):1007-2373 (2011) 03-0074-05快速單精度浮點(diǎn)運(yùn)算器的設(shè)計(jì)與實(shí)現(xiàn)田紅麗 1,2,閆會(huì)強(qiáng) 1,趙紅東 2( 1. 河北工業(yè)大學(xué) 計(jì)算機(jī)科學(xué)與軟件學(xué)院,天津 300401;2. 河北工業(yè)大學(xué) 信息工程學(xué)院,天津 300130 )摘要 浮點(diǎn)運(yùn)算單元 fpu (floating-point unit)在當(dāng)前 cpu 的運(yùn)算中地位越來(lái)越重要,論文中實(shí)現(xiàn)了一種基于fpga 的快速單精度浮點(diǎn)運(yùn)算器. 該運(yùn)算器采用了流水線和并行計(jì)算技術(shù),使得浮點(diǎn)數(shù)運(yùn)算的速度有了顯著的提 高. 在 quartusii 7.1 系統(tǒng)上對(duì)運(yùn)算器已仿真成功,結(jié)果表明它可以運(yùn)行在 40.5mhz 時(shí)鐘工

2、作頻率下,能快速 準(zhǔn)確地完成各種加、減、乘和除算術(shù)運(yùn)算.關(guān) 鍵 詞中圖分類號(hào)fpga (現(xiàn)場(chǎng)可編程邏輯門(mén)陣列);單精度;并行處理;并行加法器;陣列乘法器;陣列除法器文獻(xiàn)標(biāo)志碼 atp323design and implementation of fast single-precisionfloating-point arithmetic unittian hong-li1,2,yan hui-qiang1,zhao hong-dong2( 1. school of computer science and engineering, hebei university of technology,

3、 tianjin 300401, china; 2. school of informationenginnering, hebei university of technology, tianjin 300130, china )abstract it is the trend to adopt the floating-point unit (fpu) in the structure of cpu. a fast single precision floating point arithmetic unit is proposed and realized based on the fp

4、ga. pipelining and parallel processing are applied to the arithmetic unit, so that floating point operation speed has been significantly improved. the successful simulation results on quartusii 7.1 show that the arithmetic unit can operate at 40.5 mhz clock frequency and complete all kinds of ad- di

5、tion, subtraction, multiplication and division operations quickly and accurately.key words fpga (field-programmable gate array); single-precision; parallel processing; parallel adder; array multiplier;array divider引言運(yùn)算器是 cpu (中央處理器)的重要組成部分作為典型的 pc 機(jī)一般都至少具有一個(gè)定點(diǎn)運(yùn)算器在586 之前的機(jī)型中,由于當(dāng)時(shí)硬件條件和工藝的限制,浮點(diǎn)運(yùn)算器一般以協(xié)處

6、理器的形式出現(xiàn)90 年代以 后,隨著硬件工藝的發(fā)展,浮點(diǎn)運(yùn)算器 fpu (floating-point unit)已可以集成到 cpu 內(nèi)部,其中fpga(現(xiàn) 場(chǎng)可編程門(mén)陣列)技術(shù)使其成為現(xiàn)實(shí) 1本文利用verilog hdl 2 語(yǔ)言與原理圖相結(jié)合的方法在fpga 上設(shè)計(jì)并實(shí)現(xiàn)了快速單精度浮點(diǎn)運(yùn)算器設(shè) 計(jì)過(guò)程中,將并行計(jì)算技術(shù)引入運(yùn)算器及其內(nèi)部各個(gè)模塊之中該運(yùn)算器的設(shè)計(jì)分為建模、劃分模塊、設(shè)計(jì) 模塊、仿真 4 個(gè)步驟實(shí)驗(yàn)結(jié)果表明該運(yùn)算器可以運(yùn)行在 40.5 mhz 的時(shí)鐘工作頻率下,能快速、準(zhǔn)確地完 成加、減、乘和除 4 種算術(shù)運(yùn)算01單精度浮點(diǎn)數(shù)的編碼表示在計(jì)算機(jī)系統(tǒng)的發(fā)展過(guò)程中,對(duì)實(shí)數(shù)目

7、前使用最廣泛的是浮點(diǎn)數(shù)表示法而浮點(diǎn)數(shù)在運(yùn)算時(shí),有兩種形收稿日期:2010-12-06基金項(xiàng)目:河北省自然科學(xué)基金(f2007000096)作者簡(jiǎn)介:田紅麗(1972-),女(漢族),講師,博士生313023 220se(階碼)m(尾數(shù)) 數(shù)符小數(shù)點(diǎn)位置圖 1 32 位單精度浮點(diǎn)數(shù)格式fig. 1 32 single-precision floating point formatopa opbfpu_op規(guī)格化及數(shù)據(jù) 類型判別模塊加或減的階碼和乘或除的階碼和 符號(hào)處理模塊符號(hào)處理模塊加或減運(yùn)算模塊乘法運(yùn)算模塊除法運(yùn)算模塊rmode最終結(jié)果處理模塊overflowfpout ine inf qna

8、n snan zero underflow div_by_zero圖 2 快速單精度浮點(diǎn)運(yùn)算器的結(jié)構(gòu)fig. 2 the structure of fast single-precision float-point operations第 3 期田紅麗,等:快速單精度浮點(diǎn)運(yùn)算器的設(shè)計(jì)與實(shí)現(xiàn)75式:非規(guī)格化和規(guī)格化浮點(diǎn)運(yùn)算規(guī)格化浮點(diǎn)運(yùn)算要求:運(yùn)算前、運(yùn)算后都是規(guī)格化的數(shù),這種運(yùn)算在計(jì)算機(jī)中尾數(shù)能獲得最 大的有效數(shù)字,所以計(jì)算機(jī)中一般選用規(guī)格化浮點(diǎn)運(yùn)算對(duì)于一個(gè)實(shí)數(shù) v= (-1) s m 2e 表示為規(guī)格化單精度浮點(diǎn) 數(shù),其格式如圖 1,所表示的數(shù)據(jù)類型如表 11)s 為數(shù)符,占用 1 位它表示浮

9、點(diǎn)數(shù)尾數(shù)的正負(fù),“0”表 示正數(shù),“1”表示負(fù)數(shù)2)階碼e 占用 8 位,且用移碼表示,即階碼的真值e 加上一個(gè)偏置常數(shù),這個(gè)常數(shù)用十六進(jìn)制數(shù)表示為7fh (十進(jìn)制為 127)3)尾數(shù)部分m 占用 23 位,且用原碼表示,采用其規(guī)格化形式 1.xxxx表 1 單精度浮點(diǎn)數(shù)表示的數(shù)據(jù)類型tab. 1single-precision floating-point data types階碼(e)的值尾數(shù)(m)的值符號(hào)位(s)數(shù)據(jù)(v)類型+inf(positive infinity)-inf(negative infinitesimal)qnan (quiet not a number) snan(

10、signalling not a number)2552552552550 e 2550000 0 01.xx00.xxs = 0s = 0尾數(shù)m 最高位的值=1尾數(shù)m 最高位的值=0s = 0 或s = 1s = 0 或s = 1s = 0 或s = 1v= (-1) s (1.xxxx) 2e-12 70(zero)v 為非規(guī)格化數(shù)x2快速單精度浮點(diǎn)數(shù)運(yùn)算器的模塊劃分快速的單精度浮點(diǎn)數(shù)運(yùn)算器包括加、減、乘和除 4 種算術(shù)運(yùn)算,共 7 個(gè)模塊這 7 個(gè)模塊相互獨(dú)立,可以流水進(jìn)行 2該運(yùn)算器的結(jié)構(gòu)如圖 2 所示7 個(gè)模塊功能如下:1 6 7 12 13 1 8 19 240 10 20 30

11、461 1 + 2 2 + 3 3 + 4 40 74ls182圖 3 24 位并行加法器fig. 3 24 bit parallel adder76河 北 工 業(yè) 大 學(xué) 學(xué) 報(bào)第 40 卷1)單精度浮點(diǎn)數(shù)規(guī)格化和數(shù)據(jù)類型的判別模塊:根據(jù)輸入數(shù)據(jù)的形式,對(duì)尾數(shù)進(jìn)行規(guī)格化判定2)單精度浮點(diǎn)加減運(yùn)算預(yù)處理模塊:當(dāng)兩個(gè)規(guī)格化單精度浮點(diǎn)數(shù)進(jìn)行加法或減法運(yùn)算時(shí),首先要對(duì)階 碼和符號(hào)進(jìn)行處理階碼部分,要進(jìn)行對(duì)齊操作,即小階向大階看齊而運(yùn)算結(jié)果的符號(hào)與最大浮點(diǎn)數(shù)的符 號(hào)一致3)并行單精度浮點(diǎn)加減運(yùn)算模塊:不論做加或減運(yùn)算,要全部采用補(bǔ)碼加運(yùn)算來(lái)完成當(dāng)兩數(shù)相加時(shí),直接用兩數(shù)的補(bǔ)碼進(jìn)行加運(yùn)算當(dāng)兩數(shù)相減時(shí),被減

12、數(shù)直接取補(bǔ)碼,減數(shù)先取反,再求補(bǔ)碼,然后對(duì)兩數(shù)再 進(jìn)行加運(yùn)算加法器采用快速的并行加運(yùn)算實(shí)現(xiàn)4)單精度浮點(diǎn)乘或除運(yùn)算預(yù)處理模塊:兩個(gè)浮點(diǎn)數(shù)進(jìn)行乘或除運(yùn)算時(shí),運(yùn)算結(jié)果的符號(hào)等于參與運(yùn)算的兩數(shù)符號(hào)的異或運(yùn)算運(yùn)算結(jié)果的階碼值為:乘運(yùn)算e=e1+e2-7fh;除運(yùn)算e=e1-e2+7fh(e 結(jié)果的階碼,e1 是被乘數(shù)或被除數(shù)的階碼,e2 是乘數(shù)或除數(shù)的階碼)5)并行單精度浮點(diǎn)乘法運(yùn)算模塊:對(duì)于該乘法器采用了不帶符號(hào)的 24*24 并行陣列乘法器來(lái)實(shí)現(xiàn),這 種設(shè)計(jì)方法將大大縮短乘法運(yùn)算所需的時(shí)間6)并行單精度浮點(diǎn)除法運(yùn)算模塊:先判 0,若除數(shù)為 0,那么發(fā)出錯(cuò)誤信息; 否則,讓被除數(shù)和除數(shù)直接進(jìn)入并行除

13、法器(不恢復(fù)余數(shù)陣列除法器)中進(jìn)行運(yùn)算7)運(yùn)算結(jié)果處理模塊:對(duì)運(yùn)算的結(jié)果進(jìn)行舍入、規(guī)格化、判別數(shù)據(jù)類型等操作3單精度浮點(diǎn)數(shù)并行加減法、乘法和除法運(yùn)算器的設(shè)計(jì)3.1 單精度浮點(diǎn)數(shù)并行加減法運(yùn)算器的模塊設(shè)計(jì)一般加法器設(shè)計(jì)的方法是將多個(gè)全加器串連起來(lái)實(shí)現(xiàn),那么第位的運(yùn)算如式 (1),式為本位向高位的進(jìn)位,(2) 所示式中= 1,2, , (1) (2)該位的被加數(shù)為 、加數(shù)為和低位向本位的進(jìn)位1,為本位,=+(+ )1=1由式 (1) 和式 (2) 可以看出,串行加法器中本位進(jìn)位 受前一位進(jìn)位1 的制約,這極大地限制了加法器的運(yùn)算速度為解決該問(wèn)題,可以采用超前進(jìn)位的方法 3這種方法需要定義兩個(gè)函數(shù),

14、即進(jìn)位產(chǎn)生函數(shù)和進(jìn)位傳遞函數(shù) 和的函數(shù)表達(dá)式見(jiàn)式 (3) 和式 (4):(3)(4)=+1 也被替換,重新得到進(jìn)位將式 (3)、式 (4) 代入式 (2),同時(shí)式中=+的函數(shù)表達(dá)式如式 (5):(5)+1 0由式 (5) 看出,每位的進(jìn)位產(chǎn)生的時(shí)間幾乎是相同的運(yùn)算速度將隨著參與運(yùn)算的位數(shù)增加而有明顯的提高,但是隨著位數(shù)的增加,產(chǎn)生進(jìn)位所需要的邏輯門(mén)電路的輸入端也將大大增加,造成門(mén)電路的不規(guī)整 為了解決該問(wèn)題,須將參與運(yùn)算的數(shù)據(jù)進(jìn)行分割 4由于單精度浮點(diǎn)運(yùn)算需要對(duì)兩個(gè) 24 位的尾數(shù)進(jìn)行相加,需將它們分成平均分為 4 份,每份 6 位即需 要設(shè)計(jì)一個(gè) 6 位的超前進(jìn)位加法器,然后將相同的 4 片

15、通過(guò) 1 片 74ls182 進(jìn)行級(jí)聯(lián)來(lái)實(shí)現(xiàn)24 位的并行加運(yùn)算其結(jié)構(gòu)圖如圖 3 所示3.2 單精度浮點(diǎn)數(shù)并行乘法器的設(shè)計(jì)由于乘法運(yùn)算占全部運(yùn)算的比例較大,因 此采用高速乘法部件 5,無(wú)論從速度上說(shuō)還是 從效率上來(lái)說(shuō),都是十分必要的本乘法運(yùn)算器采用了流水線的快速乘運(yùn)算該流水線包括1 24 2 24 3 2 4 23 24 24 240000fa2 23 fa3 23 fa4 23 fa24 231 2 3fa3 2 2 fa4 22 fa5 22 fa24 221 22fa3 21 fa4 21 fa5 2 1 fa2 4 211 2fa2 1 fa3 1 fa4 1 fa24 11 1faf

16、afafa01 2 3 4 2 4 25 4 5 46 47 48圖 4 24 位 24 位不帶符號(hào)的陣列乘法器結(jié)構(gòu)圖fig. 4 the unsigned 24x24 bit array multiplier structure第 3 期田紅麗,等:快速單精度浮點(diǎn)運(yùn)算器的設(shè)計(jì)與實(shí)現(xiàn)77階碼加、24 位尾數(shù)乘運(yùn)算、規(guī)格化、舍入處理、判溢出等 5 個(gè)模塊對(duì)于其中的乘運(yùn)算模塊,采用了能并行運(yùn)算的陣列乘法器在陣列乘法器中重復(fù)使用的單元部件是全加器,其表達(dá)式如式 (1)、式 (2)陣列乘法器的邏輯電路如圖 4 所示該乘法器由 5 個(gè)模塊組成,可以流水運(yùn)算圖中24 是被乘數(shù),1234524 是乘數(shù), 1

17、 2 3 4 548 是積 12 3453.3 單精度浮點(diǎn)數(shù)并行除法器的設(shè)計(jì)為了提高除法運(yùn)算的速度,可以采用并行運(yùn)算 6本除法運(yùn)算器采用了流水線的快速除運(yùn)算該流水線 包括階碼減、24 位尾數(shù)除運(yùn)算、規(guī)格化、舍入處理、判溢出等 5 個(gè)模塊對(duì)于其中的除運(yùn)算模塊,采用了 能并行運(yùn)算的不恢復(fù)余數(shù)陣列除法器陣列除法器中的單元部件是可控加法/減法單元(cas unit)該陣列除法器的邏輯結(jié)構(gòu)如圖 5 所示該除法器由 5 個(gè)模塊組成,可以流水運(yùn)算圖中24 是被除數(shù) , 1 2 3 4 5 24 是除數(shù) , 1 2 3 41 2 3 4 524是商, 1 2 3 424 是余數(shù) 仿真在quartusii 7

18、系統(tǒng)上對(duì)多種運(yùn)算進(jìn)行了仿真,仿真結(jié)果在表 2 中表 2 中 延時(shí), 為全加器延時(shí), 為移位延時(shí)4為與門(mén)延時(shí), 為或門(mén)andor表 2 單精度浮點(diǎn)數(shù)運(yùn)算器仿真時(shí)間simulation time of single-precision floating-point arithmetic unittab. 2運(yùn)算類型1 條運(yùn)算時(shí)間估算1 條運(yùn)算實(shí)際運(yùn)行時(shí)間連續(xù) 6 條相同運(yùn)算運(yùn)行時(shí)間ts=24 (tand+tor)24 位串行加1.056 s7.012 s24 位并行加tp=2tand+2to r0.009 ns0.015 s24 位 24 位原碼兩位乘tm2=12 24tf +12tr12.912

19、 s78.472 s224 位 24 位陣列乘tm=tand+46tf2.046 s4.754 s24 位 24 位原碼一位除td1=242tf +24tr27.843 s169.058 s124 位 24 位陣列除td=242tf22.324 s45.648 s0 01 1 2 2 3 3 23 23 24 241cascascascascascas0251 cascascascascascas262 cascascascascascas47cascascascascascas234 82 4 cascascascascascas12342324圖 5 24 位 24 位不帶符號(hào)的陣列除法器

20、結(jié)構(gòu)圖fig. 5 unsigned array multiplier structure78河北工業(yè)大學(xué)學(xué)報(bào)第 40 卷結(jié)論5目前,fpga 技術(shù)在電子系統(tǒng)設(shè)計(jì)(如計(jì)算機(jī)、儀器、儀表、家用電器等)中已經(jīng)應(yīng)用的相當(dāng)廣泛而浮點(diǎn)運(yùn)算器是現(xiàn)代計(jì)算機(jī)中的一個(gè)重要組成部分,利用 fpga 技術(shù)能夠方便、快速、準(zhǔn)確地實(shí)現(xiàn)該運(yùn)算器 從設(shè)計(jì)過(guò)程及仿真結(jié)果說(shuō)明該運(yùn)算器具有如下的優(yōu)點(diǎn):1)運(yùn)算器采用模塊化的方法設(shè)計(jì),使得連續(xù)浮點(diǎn)運(yùn)算能流水進(jìn)行;2)4 種算術(shù)運(yùn)算內(nèi)部都采用了并行計(jì)算,從而加快了每條指令的運(yùn)算速度;3)采用了硬件描述語(yǔ)言與原理圖相結(jié)合的方法實(shí)現(xiàn),具有易于修改的特點(diǎn);4)fpga 技術(shù)具有很高的集成度,使系統(tǒng)的可靠性得到了提高參考文獻(xiàn):1 黃志軍,張鵬,童家榕fpga/cpld 結(jié)構(gòu)分析 j微電子學(xué),1998,28(5):345-3532 周寧寧基于fpga 技術(shù)的浮點(diǎn)運(yùn)算器的設(shè)計(jì)與實(shí)現(xiàn) j計(jì)算機(jī)工程與設(shè)計(jì),2005,26(6):1579-15813

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論