版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 高性能數(shù)字乘法器芯片電路設(shè)計(jì)</p><p><b> 摘 要</b></p><p> 高性能乘法器是現(xiàn)代數(shù)字信號(hào)處理器(DSP)中的重要部件,是完成高性能實(shí)時(shí)數(shù)字信號(hào)處理和圖像處理的關(guān)鍵所在。浮點(diǎn)乘法器具有面積大、延遲長、結(jié)構(gòu)復(fù)雜的特點(diǎn)。如何設(shè)計(jì)出高速、簡(jiǎn)單且結(jié)構(gòu)規(guī)則的浮點(diǎn)乘法器成為廣泛關(guān)注的問題。過去的十年中,研究者擴(kuò)展了Booth編碼
2、算法的空間,提高了乘法器的性能;改進(jìn)了部分積壓縮技術(shù),使乘法器結(jié)構(gòu)更加規(guī)則;以傳輸管邏輯、多路選擇器和動(dòng)態(tài)技術(shù)為基礎(chǔ)的各種電路實(shí)現(xiàn)方法也持續(xù)刷新高性能乘法器的實(shí)現(xiàn)記錄;與此同時(shí),與物理實(shí)現(xiàn)緊密相關(guān)的乘法器拓?fù)浣Y(jié)構(gòu)的研究也碩果累累。但不斷提高的高性能運(yùn)算需求使得高性能乘法器的設(shè)計(jì)和實(shí)現(xiàn)仍然是當(dāng)前的熱門話題。</p><p> 本文從延遲、面積、結(jié)構(gòu)復(fù)雜性等方面系統(tǒng)地研究了乘法部件的各個(gè)過程。在研究了乘法器Boot
3、h編碼算法,乘法器部分積壓縮拓?fù)浣Y(jié)構(gòu)和高速求和等算法的基礎(chǔ)上,分析比較乘法器各部分的不同實(shí)現(xiàn)方法,設(shè)計(jì)了一個(gè)高性能的16位浮點(diǎn)并行乘法器。該乘法器的指數(shù)部分與尾數(shù)部分并行運(yùn)算,縮短了關(guān)鍵路徑;采用修正Booth編碼縮減了部分積數(shù)量;采用結(jié)構(gòu)規(guī)整的(4:2)壓縮樹結(jié)構(gòu)加快部分積的求和,得到Carry、Sum形式的部分積;最后采用高速的超前進(jìn)位加法器求得乘積;驗(yàn)證部分采用全面覆蓋可能情況的驗(yàn)證方法保證了設(shè)計(jì)的正確性;包含本乘法器的設(shè)計(jì)代碼已
4、通過軟件、硬件驗(yàn)證;</p><p> 關(guān)鍵字:浮點(diǎn)乘法器,修正Booth算法,4:2壓縮器,3:2壓縮器,規(guī)格化</p><p> Design of Digit and High-speed multiplier IC Circuit</p><p><b> Abstract</b></p><p> Hi
5、gh performance multiplier is the important component of the digital signal processor,the key to implement the signal processing and image processing;Multiplier always has large area, long latency and complex structure.It
6、 becomes attractive how to design a fast,simple and regular multiplier.In the past ten years,researchers have developed new Booth algorithm to improve the performance of the multiplier;Developed many formal compress tree
7、s to make the structure of the multiplier more regular;Imp</p><p> Based on the work in designing a floating-point multiplier in the 16 bit floating point DSP, this dissertation gives a systematic research
8、on the every stages of the multiplier considering delay, area and complex.Based on the study of Booth algorithm,multiplier topology, and the final adder, this thesis introduces and compares kinds of multipliers,implement
9、ed a 16 bit high performance parallel multiplier, the exponent and mantissa of which compute in parallel way ,modified Booth algorithm and(4:</p><p> Keywords :Floating Point Multiplier, Booth Encoder,(4:2)
10、 Compressor , (3:2) Compressor Normalize</p><p><b> 目 錄. </b></p><p><b> 前 言1</b></p><p><b> 第1章 緒 論2</b></p><p> §1.1 高性
11、能乘法器設(shè)計(jì)研究的依據(jù)和意義2</p><p> §1.2 高性能處理器中乘法器的應(yīng)用現(xiàn)狀2</p><p> §1.3 國外乘法器現(xiàn)狀3</p><p> §1.4 國內(nèi)乘法器現(xiàn)狀4</p><p> §1.5 課題設(shè)計(jì)(研究?jī)?nèi)容)4</p><p>
12、167;1.6 研究方法4</p><p> 第2章 浮點(diǎn)數(shù)的數(shù)據(jù)格式5</p><p> §2.1 數(shù)據(jù)的表示方法5</p><p> §2.2 浮點(diǎn)運(yùn)算中的數(shù)據(jù)格式5</p><p> §2.3 舍入與規(guī)格化6</p><p> §2.4 定點(diǎn)乘法運(yùn)算7
13、</p><p> §2.5 浮點(diǎn)乘法運(yùn)算8</p><p> 第3章 乘法器基本原理與算法11</p><p> §3.1 乘法器基本原理11</p><p> §3.1.1 乘法定義11</p><p> §3.1.2 迭代乘法器12</p>
14、<p> §3.1.3 線性陣列乘法器13</p><p> §3.1.4 并行乘法器13</p><p> §3.2 乘法器編碼算法14</p><p> §3.2.1 陣列乘法器14</p><p> §3.2.2 Booth編碼14</p>
15、<p> §3.2.3 修正Booth編碼15</p><p> §3.3 乘法器拓?fù)浣Y(jié)構(gòu)16</p><p> §3.4 加法器18</p><p> §3.5 壓縮器18</p><p> 第4章 乘法器結(jié)構(gòu)與設(shè)計(jì)21</p><p>
16、67;4.1 乘法器結(jié)構(gòu)21</p><p> §4.2 尾數(shù)擴(kuò)展和部分積產(chǎn)生22</p><p> §4.3 壓縮器的選擇22</p><p> §4.4 乘法器端口定義23</p><p> §4.5 浮點(diǎn)數(shù)規(guī)格化24</p><p> §4.6
17、 指數(shù)修正25</p><p> 第5章 乘法器的驗(yàn)證26</p><p> §5.1 Modelsim模擬仿真26</p><p> §5.2 FPGA硬件仿真27</p><p> 第6章 ASIC綜合29</p><p><b> 結(jié) 論31</b>
18、</p><p><b> 參考文獻(xiàn)32</b></p><p><b> 致 謝34</b></p><p><b> 附 錄35</b></p><p><b> 前 言</b></p><p> 隨著微電子技術(shù)
19、的不斷進(jìn)步、計(jì)算機(jī)技術(shù)的不斷發(fā)展,集成電路經(jīng)歷了小規(guī)模、中規(guī)模、大規(guī)模的發(fā)展過程,目前已經(jīng)進(jìn)入超大規(guī)模(VLSI)和甚大規(guī)模集成電路(ULSI)階段。超大規(guī)模集成電路工藝在21世紀(jì)初得到了高速的發(fā)展,目前商業(yè)化半導(dǎo)體芯片制造技術(shù)的主流已經(jīng)達(dá)到45nm的線寬并正迅速向更高集成度、超小型化、高性能、高可靠性的方向發(fā)展。</p><p> 在早期的計(jì)算機(jī)中都不具備浮點(diǎn)運(yùn)算硬件,而是采用IBM公司的J.Backus發(fā)明
20、的軟件,由定點(diǎn)運(yùn)算部件完成浮點(diǎn)運(yùn)算。然而,基于軟件的實(shí)現(xiàn)方法速度較慢,無法滿足高速浮點(diǎn)計(jì)算的需要。為此WKahan在Intel公司工作期間,主持設(shè)計(jì)和開發(fā)了8087芯片,于1980年實(shí)現(xiàn)了高速、高效的浮點(diǎn)運(yùn)算處理器。從此,乘法器隨著浮點(diǎn)運(yùn)算的發(fā)展獨(dú)立出來,現(xiàn)代高性能處理器中整數(shù)運(yùn)算單元和浮點(diǎn)運(yùn)算單元均設(shè)有獨(dú)立的乘法器。</p><p> 乘法器研究上的里程碑應(yīng)該從Booth AD在1951年提出的Booth編碼
21、方法和Wallace的樹型壓縮開始。隨后出現(xiàn)了Booth2算法、壓縮器(進(jìn)位保留加法)、延遲平衡樹等各種算法結(jié)構(gòu)。在國內(nèi)乘法器的研究主要集中在各個(gè)研究所和高校并且都在穩(wěn)步的發(fā)展當(dāng)中。</p><p> 本文將從延遲、面積、結(jié)構(gòu)復(fù)雜性等方面系統(tǒng)地研究乘法部件的各個(gè)過程,在研究乘法器Booth編碼算法,乘法器部分積壓縮拓?fù)浣Y(jié)構(gòu)和高速求和等算法的基礎(chǔ)上,分析比較乘法器各部分的不同實(shí)現(xiàn)方法,設(shè)計(jì)了一個(gè)高性能的16位浮點(diǎn)
22、并行乘法器。</p><p><b> 緒 論 </b></p><p> 高性能乘法器設(shè)計(jì)研究的依據(jù)和意義</p><p> 微處理器的發(fā)展也隨著集成電路的迅猛發(fā)展而日新月異。已經(jīng)有越來越多的處理器包含多個(gè)運(yùn)算單元,算術(shù)運(yùn)算單元已經(jīng)成為處理器結(jié)構(gòu)中的一個(gè)重要組成部分。作為數(shù)字處理器中重要的部分,浮點(diǎn)運(yùn)算部件通常都是整個(gè)設(shè)計(jì)中需要重
23、點(diǎn)考慮的對(duì)象。浮點(diǎn)運(yùn)算通常需要多個(gè)時(shí)鐘周期才能完成,為了得到接近實(shí)際值的運(yùn)算結(jié)果,某些數(shù)值計(jì)算領(lǐng)域如流體動(dòng)力、計(jì)算物理學(xué)、氣象模型等等,需要很高精度(如128位字長)的浮點(diǎn)運(yùn)算。而高精度浮點(diǎn)運(yùn)算的固有特性決定了它具有面積大、功耗大的特點(diǎn)。速度、成本和功耗成為集成電路設(shè)計(jì)中目前最受關(guān)注的幾個(gè)問題。</p><p> 高性能數(shù)字乘法器是數(shù)字信號(hào)處理器中的重要部件,且往往位于處理器的關(guān)鍵路徑上。數(shù)字信號(hào)處理中的圖像、
24、語音、加密等信號(hào)處理需要進(jìn)行大量的卷積、相關(guān)、窗口及FFT等基本運(yùn)算,需要頻繁進(jìn)行大數(shù)據(jù)量的乘法和加法運(yùn)算。通過對(duì)大量數(shù)字信號(hào)處理算法的分析,卷積、相關(guān)、變換、級(jí)數(shù)等運(yùn)算占數(shù)據(jù)處理總運(yùn)算量的75%。因此乘法器和加法器很大程度上左右著信號(hào)處理系統(tǒng)的性能。根據(jù)S.F.Oberman和M.J.Flynn的技術(shù)報(bào)告,浮點(diǎn)乘法的使用頻率占浮點(diǎn)運(yùn)算37%。正因?yàn)槌朔ㄆ鞅蝗绱藦V泛地采用,高性能乘法器的研究和實(shí)現(xiàn)十分重要。</p><
25、;p> 高性能處理器中乘法器的應(yīng)用現(xiàn)狀</p><p> 過去十年,高性能處理器日新月異,乘法器的性能也隨之不斷提高。當(dāng)前處理器中,800MHz的Itanium需要5個(gè)周期完成一個(gè)54位浮點(diǎn)乘加運(yùn)算。Compaq公司的Alpha21264包含整數(shù)運(yùn)算單元和浮點(diǎn)運(yùn)算單元兩個(gè)部分,其中整數(shù)運(yùn)算單元專門設(shè)置了定點(diǎn)乘法運(yùn)算器。在1 GHz的時(shí)鐘主頻下,0.18um 54位浮點(diǎn)乘法采用流水線結(jié)構(gòu)需要4個(gè)時(shí)鐘周期,
26、64位定點(diǎn)乘法需要7個(gè)時(shí)鐘周期。除此之外,0.18um425MHz的MIPS R20000也包含定點(diǎn)和浮點(diǎn)兩種乘法器,其54位浮點(diǎn)乘法在5個(gè)周期內(nèi)完成,64位定點(diǎn)乘法在7個(gè)周期內(nèi)完成。Sun的UItraSparc IV包含定點(diǎn)和浮點(diǎn)兩種乘法器,浮點(diǎn)乘法在4周期內(nèi)完成,64位定點(diǎn)乘法在9周期內(nèi)完成,0.13um工藝制作的CPU工作頻率1.2GHz。IBM的0.13 um 1.8 GHz的Power PC970包含有多周期的定點(diǎn)乘法器。HP
27、的1GHz PA-8800利用浮點(diǎn)運(yùn)算單元處理定點(diǎn)乘法,定點(diǎn)乘法通過一系列移位加指令實(shí)現(xiàn)。DSP的核心是其中的乘法累加單元,且乘法器占據(jù)了DSP的大部分硬件資源。1981年,日本NEC公司推出的uPD7720是第</p><p><b> 國外乘法器現(xiàn)狀</b></p><p><b> 理論方面:</b></p><p&
28、gt; 乘法器研究上的里程碑應(yīng)該從Booth AD在1951年提出的Booth編碼方法和Wallace的樹型壓縮開始。隨后出現(xiàn)了Booth2算法、壓縮器(進(jìn)位保留加法)、延遲平衡樹等各種算法結(jié)構(gòu)。</p><p><b> 電路方面:</b></p><p> 1995年Ohkubo基于傳輸管邏輯實(shí)現(xiàn)了4.4ns 54位乘法器,同時(shí)提出了新的4:2壓縮單元結(jié)構(gòu)和
29、進(jìn)位選擇加法器結(jié)構(gòu)。</p><p> 1996年Hanawa實(shí)現(xiàn)了4.3nS的54位乘法器,同一年,Makino實(shí)現(xiàn)了8.8ns54位冗余二進(jìn)制編碼乘法器。</p><p> 1997年Inoue提出了符號(hào)選擇Booth解碼和改進(jìn)的4:2壓縮單元結(jié)構(gòu),實(shí)現(xiàn)了4.1ns的54位乘法器。</p><p> 1998年Hagihara基于動(dòng)態(tài)技術(shù)和傳輸管邏輯實(shí)現(xiàn)了
30、2.7 ns的54位乘法器。同年Carlson介紹了6.0 ns的64位乘法器實(shí)現(xiàn)方法。</p><p> 2001年Itoh實(shí)現(xiàn)了一個(gè)600MHz的兩級(jí)流水線的54位乘法器。</p><p> 2003年Cho基于標(biāo)準(zhǔn)單元庫實(shí)現(xiàn)了一個(gè)3.25ns的54位乘法器,并提出了改進(jìn)的進(jìn)位選擇加法器結(jié)構(gòu)。</p><p><b> 國內(nèi)乘法器現(xiàn)狀</b
31、></p><p> 1993年中科院聲學(xué)研究所應(yīng)用于18位乘法器,實(shí)現(xiàn)工作頻率38MHZ.。</p><p> 1997年國防科技大學(xué)完成應(yīng)用于數(shù)字神經(jīng)處理的16位乘法器,頻率30MHZ。</p><p> 2001年西安微電子技術(shù)中心于敦山實(shí)現(xiàn)了32位定/浮點(diǎn)乘法器延時(shí)56/76ns。</p><p> 2002年西安交通大
32、學(xué)袁壽財(cái)實(shí)現(xiàn)了0.25um下延時(shí)40ns。</p><p> 2003年中科院計(jì)算研究所周旭采用0.18um的工藝實(shí)現(xiàn)54位浮點(diǎn)乘法器384MHZ。</p><p> 2004年復(fù)旦大學(xué)武新宇采用0.18um的工藝實(shí)現(xiàn)64位乘法器延時(shí)2.82ns。</p><p> 2005年上海大學(xué)王田采用0.18um的工藝實(shí)現(xiàn)32位乘法器延時(shí)3.15ns。</p&g
33、t;<p> 2007年東南大學(xué)王定采用FPGA設(shè)計(jì)24位乘法器延時(shí)18.81ns。</p><p> 課題設(shè)計(jì)(研究?jī)?nèi)容)</p><p> 從延遲、面積、結(jié)構(gòu)復(fù)雜性等方面系統(tǒng)地研究乘法部件的各個(gè)過程,在研究乘法器Booth編碼算法,乘法器部分積壓縮拓?fù)浣Y(jié)構(gòu)和高速求和等算法的基礎(chǔ)上,分析比較乘法器各部分的不同實(shí)現(xiàn)方法,設(shè)計(jì)了一個(gè)高性能的16位浮點(diǎn)并行乘法器。</
34、p><p><b> 研究方法</b></p><p> 首先,研究乘法器常見的算法與結(jié)構(gòu),各種不同算法的性能和適應(yīng)范圍。</p><p> 其次,確定乘法器的結(jié)構(gòu),主要是根據(jù)乘法器需要達(dá)到的性能要求來初步確定可能影響到乘法器性能的主要因素。</p><p> 進(jìn)而,重點(diǎn)在算法與結(jié)構(gòu)方面來優(yōu)化乘法器的性能。</
35、p><p> 最后,采用多種結(jié)構(gòu)來進(jìn)行乘法器的RTL級(jí)設(shè)計(jì),前仿真驗(yàn)證其功能的正確性,后仿真驗(yàn)證其性能在特定工藝與電壓下達(dá)到要求,并得到版圖文件。</p><p><b> 浮點(diǎn)數(shù)的數(shù)據(jù)格式</b></p><p><b> 數(shù)據(jù)的表示方法</b></p><p> 計(jì)算機(jī)常用的數(shù)據(jù)表示方法有:
36、帶符號(hào)數(shù)值表示法、基數(shù)反碼表示法、基數(shù)補(bǔ)碼表示法:</p><p> 正數(shù)的三種表示方法相同,負(fù)數(shù)的表示方法入下:</p><p> ?。?)、帶符號(hào)數(shù)值表示法: A=(smn-1mn-2??m1m0)在原碼的基礎(chǔ)上增加一位符號(hào)位來表示。其中s表示數(shù)據(jù)的符號(hào),l表示負(fù)數(shù),0表示正數(shù)。</p><p> ?。?)、基數(shù)的反碼表示(補(bǔ)“1”表示法):A=(),即在不改
37、變符號(hào)位的基礎(chǔ)上,將其它數(shù)據(jù)位取反。</p><p> (3)、基數(shù)的補(bǔ)碼表示(補(bǔ)“2”表示法):A=(()+1),原碼取反然后加1得到。</p><p> 浮點(diǎn)運(yùn)算中的數(shù)據(jù)格式</p><p> 浮點(diǎn)格式數(shù)據(jù)包括三個(gè)組成部分:指數(shù)區(qū)(Exponent),符號(hào)區(qū)(Sign),分?jǐn)?shù)區(qū)(Fraction),其中將符號(hào)區(qū)和分?jǐn)?shù)區(qū)統(tǒng)稱為尾數(shù)區(qū)(Mantissa)。如圖
38、2-1浮點(diǎn)數(shù)的計(jì)算方法是,s是數(shù)據(jù)的符號(hào)位,f是分?jǐn)?shù)區(qū)數(shù)據(jù)(二進(jìn)制),e是指數(shù)區(qū)數(shù)據(jù)(等價(jià)到十進(jìn)制),尾數(shù)區(qū)是一個(gè)規(guī)格化的二進(jìn)制補(bǔ)碼,小數(shù)點(diǎn)在尾數(shù)區(qū)與指數(shù)之間。X=0時(shí),f=0,s=0,e=100?00(負(fù)的最大值)。</p><p> 圖2-1 浮點(diǎn)數(shù)據(jù)格式</p><p><b> 短浮點(diǎn)格式</b></p><p> 短浮點(diǎn)格式的數(shù)
39、據(jù)由4位指數(shù)位,1位符號(hào)位和1l位分?jǐn)?shù)位組成,本文采用這種數(shù)據(jù)格式,如圖2-2。</p><p> 圖2-2 短浮點(diǎn)數(shù)據(jù)格式</p><p><b> 單精度浮點(diǎn)格式</b></p><p> 單精度浮點(diǎn)格式由8位指數(shù)位,l位符號(hào)位與23位分?jǐn)?shù)位組成,是DSP中常用的浮點(diǎn)數(shù)據(jù)表示格式,如圖2-3。</p><p>
40、 圖2-3 單精度浮點(diǎn)數(shù)據(jù)格式</p><p><b> 擴(kuò)展精度浮點(diǎn)格式</b></p><p> 擴(kuò)展精度浮點(diǎn)數(shù)由8位指數(shù)位,1位符號(hào)位與31位分?jǐn)?shù)位組成,使DSP中輸入數(shù)據(jù)的常見表示方式,如圖2-4。</p><p> 圖2-4 擴(kuò)展精度浮點(diǎn)數(shù)據(jù)格式</p><p><b> 舍入與規(guī)格化<
41、;/b></p><p> 通常把尾數(shù)最高位為非零的浮點(diǎn)數(shù)稱為規(guī)格化浮點(diǎn)數(shù),在浮點(diǎn)數(shù)的運(yùn)算中,當(dāng)出現(xiàn)非規(guī)格化數(shù)時(shí),需要通過移位操作來使它變成規(guī)格化數(shù)。如果尾數(shù)采用小數(shù)表示,當(dāng)出現(xiàn)尾數(shù)絕對(duì)值小于1/2時(shí),要把尾數(shù)左移,每次移動(dòng)一個(gè)單位,同時(shí)把階碼減l,直到尾數(shù)的絕對(duì)值大于1/2,當(dāng)尾數(shù)絕對(duì)值大于1時(shí),要把尾數(shù)右移,每次移動(dòng)1位,同時(shí)階碼加1,直到尾數(shù)的絕對(duì)值小于l。</p><p>
42、 浮點(diǎn)數(shù)要進(jìn)行舍入的原因是:由于任何一種浮點(diǎn)數(shù)表示方式尾數(shù)字長總是有限的,因此可能發(fā)生如下兩個(gè)問題,一是在把通常的十進(jìn)制數(shù)轉(zhuǎn)化成計(jì)算機(jī)的浮點(diǎn)數(shù)使其有效長度可能超過給定的尾數(shù)字長,必須要舍去多余的部分;二是兩個(gè)規(guī)格化的浮點(diǎn)數(shù)進(jìn)行加減乘除,結(jié)果尾數(shù)的字長超過了給定的尾數(shù)字長,如在乘法運(yùn)算時(shí),乘積的尾數(shù)字長是給定的浮點(diǎn)數(shù)字長兩倍,需要將一部分的數(shù)舍棄。</p><p><b> 常見的舍入方法有:<
43、/b></p><p> (1) 恒舍法:直接舍去需要移出的位數(shù)損失一位精度實(shí)現(xiàn)起來比較容易。</p><p> (2) 恒置法:舍去移出位后將最末的尾數(shù)位置為1,損失一位精度,實(shí)現(xiàn)起來比較容易。</p><p> (3) 下舍上入法:類似于四舍五入法,實(shí)現(xiàn)起來有一定復(fù)雜性。</p><p> (4) R*舍入法:對(duì)下舍上入法的
44、一種改進(jìn),不存在累計(jì)誤差的一種舍入方法,實(shí)現(xiàn)起來很復(fù)雜。</p><p> (5) 查表法:通過ROM或者PLA中的內(nèi)容來修正誤差,比較有前途的一種舍入方法,實(shí)現(xiàn)難度一般。</p><p> 規(guī)格化和舍入的關(guān)系是:必須要先進(jìn)行規(guī)格化,然后舍入,否則舍入是沒有任何意義的。</p><p><b> 定點(diǎn)乘法運(yùn)算</b></p>
45、<p> 溢出:指的是所得到的結(jié)果的超過了定點(diǎn)數(shù)所能表示的上限。如圖2-5</p><p> 圖2-5 定點(diǎn)數(shù)溢出</p><p><b> 定點(diǎn)乘法運(yùn)算流程</b></p><p> 第一步:判斷輸入的操作數(shù),若其中之一或者全部是0時(shí)直接將結(jié)果置為0。</p><p> 第二步:若操作數(shù)有效,則進(jìn)
46、行乘法運(yùn)算。</p><p> 第三步:判定運(yùn)算的結(jié)果,是否有溢出,若發(fā)生溢出時(shí),判斷結(jié)果正負(fù),若結(jié)果是正數(shù),則將最終結(jié)果置為最大正數(shù),否則置為最小負(fù)數(shù)。</p><p> 第四步:舍入以得到符合要求的數(shù)據(jù)格式。</p><p> 第五步:得到最終結(jié)果。</p><p> 圖2-6 定點(diǎn)乘法運(yùn)算流程圖</p><p
47、><b> 浮點(diǎn)乘法運(yùn)算</b></p><p> 浮點(diǎn)數(shù)的乘法相對(duì)定點(diǎn)數(shù)的乘法要復(fù)雜,可以理解為浮點(diǎn)數(shù)的乘法包含了尾數(shù)定點(diǎn)數(shù)(man)的乘法與指數(shù)定點(diǎn)數(shù)(exp)的加法兩個(gè)運(yùn)算部分。</p><p> 階的上溢:指的是所得到的結(jié)果的階超過了浮點(diǎn)數(shù)所能表示的上限與或下限,也就是說+∞或者是-∞都被認(rèn)為是溢出的條件。</p><p>
48、 階的下溢:指的是所得到數(shù)的階超出了最小允許值。如圖2-7</p><p><b> 浮點(diǎn)運(yùn)算流程圖</b></p><p> 圖2-8 浮點(diǎn)運(yùn)算流程圖</p><p> 第一步:操作數(shù)的尾數(shù)位進(jìn)行乘法運(yùn)算,輸入的數(shù)據(jù)為12位輸出結(jié)果為24位;</p><p> 第二步:操作數(shù)的指數(shù)部分進(jìn)行相加運(yùn)算結(jié)果為c(e
49、xp);</p><p> 第三步:判定尾數(shù)情況,若為0則執(zhí)行第七步操作將結(jié)果的指數(shù)位置為-128;</p><p> 第四步與第五步:用于對(duì)結(jié)果進(jìn)行規(guī)格化處理;</p><p> 如果需要進(jìn)行右移1位進(jìn)行規(guī)格化,執(zhí)行第八步,尾數(shù)右移,直屬加1,如果需要右移兩位進(jìn)行規(guī)格化,則執(zhí)行第九步,尾數(shù)右移兩位,指數(shù)加2;</p><p> 第十
50、步,將尾數(shù)結(jié)果擴(kuò)展為擴(kuò)展精度浮點(diǎn)格式。</p><p> 第六步到第十一步:判斷指數(shù)情況</p><p> 如果指數(shù)溢出,進(jìn)行第十四步操作,如果尾數(shù)大于0,將指數(shù)置成最大正數(shù),若尾數(shù)小于0,則將指數(shù)置成最小負(fù)數(shù)。</p><p> 如果指數(shù)下溢出,則執(zhí)行第十五步,將指數(shù)置成-128,尾數(shù)為0,若指數(shù)在范圍內(nèi)。則進(jìn)行第十六步操作,得到最終結(jié)果。</p>
51、;<p> 乘法器基本原理與算法</p><p> 乘法運(yùn)算可以通過硬件方法和軟件方法來實(shí)現(xiàn),具體實(shí)現(xiàn)方法根據(jù)乘法運(yùn)算所需要的開銷和硬件配置情況決定。在計(jì)算機(jī)發(fā)展的早期階段,復(fù)雜的運(yùn)算往往通過編寫程序或者硬件微程序的方法來實(shí)現(xiàn)。今天,科學(xué)計(jì)算、數(shù)字信號(hào)處理和圖像處理等計(jì)算量很大的領(lǐng)域?qū)Ω咝阅艹朔ㄟ\(yùn)算的需求使得乘法運(yùn)算必須通過全硬件方法實(shí)現(xiàn)。而微電子和計(jì)算機(jī)技術(shù)的快速發(fā)展和進(jìn)步,令專用乘法器電路的
52、實(shí)現(xiàn)成為可能,并且成本不斷降低。</p><p> 對(duì)于高性能的乘法器設(shè)計(jì),優(yōu)秀的乘法算法與結(jié)構(gòu)是其硬件實(shí)現(xiàn)的基礎(chǔ),浮點(diǎn)乘法中幾個(gè)主要步驟是:部分積產(chǎn)生、部分積壓縮、進(jìn)位傳播加法和舍入處理。除了針對(duì)浮點(diǎn)數(shù)的指數(shù)操作、舍入和規(guī)格化等操作以外,浮點(diǎn)乘法器的結(jié)構(gòu)和定點(diǎn)乘法器沒有什么區(qū)別。如何進(jìn)行部分積的縮減與壓縮是區(qū)分各種乘法算法的關(guān)鍵所在。簡(jiǎn)單的算法容易實(shí)現(xiàn),但速度較慢;復(fù)雜的算法可以滿足快速運(yùn)算的要求,但是要占用
53、更多的硬件資源導(dǎo)致芯片面積增加。因此,實(shí)際設(shè)計(jì)的時(shí)候就需要根據(jù)具體的速度、面積、復(fù)雜度等要求選擇一種合適的算法。</p><p> 本章首先介紹乘法器的基本原理以及簡(jiǎn)單的乘法器,緊接著介紹部分積縮減算法與部分積壓縮算法;最后介紹各種高性能加法器。</p><p><b> 乘法器基本原理</b></p><p><b> 乘法定
54、義</b></p><p> 考慮兩個(gè)沒有符號(hào)的二進(jìn)制數(shù),X與Y,長度分別M與N,可以用二進(jìn)制形式來表示X與Y</p><p> 這里X、Y在[0 1]范圍內(nèi),乘法器的定義如下:</p><p> 無論乘法是采用何種方式來實(shí)現(xiàn),任何一種乘法器都可以分成部分積的產(chǎn)生與部分積求和兩個(gè)部分。因此提高乘法器的速度可以從減少部分積的數(shù)量與縮短部分積的求和延時(shí)
55、兩個(gè)方面出發(fā),電路設(shè)計(jì)是面積,延時(shí),復(fù)雜度的折中,所以一般來說,簡(jiǎn)單的乘法器易于實(shí)現(xiàn),延時(shí)較大,而高速乘法器將會(huì)有復(fù)雜的電路結(jié)構(gòu)。</p><p><b> 迭代乘法器</b></p><p> 從手算的經(jīng)驗(yàn)可知執(zhí)行一個(gè)乘法運(yùn)算最簡(jiǎn)單的方法就是采用一個(gè)兩輸入的加法器,進(jìn)行部分積的累加,得到最終結(jié)果。對(duì)于N位的乘數(shù)與N位的被乘數(shù)的輸入,實(shí)現(xiàn)乘法運(yùn)算需要N個(gè)加法器與2
56、N個(gè)寄存器,乘法的移位和相加把N個(gè)部分積加在一起,部分積是通過被乘數(shù)與乘數(shù)移位后末位相與操作得到,然后將結(jié)果與存放在寄存器中的前次運(yùn)算得到的結(jié)果進(jìn)行相加,并將結(jié)果仍然存放在寄存器中,如此反復(fù)。這樣的操作在硬件實(shí)現(xiàn)上就是迭代乘法器。迭代乘法器的中間結(jié)果需要用寄存器保存的。其中時(shí)鐘信號(hào)可以使用系統(tǒng)時(shí)鐘信號(hào)。迭代乘法器需要的硬件資源比較少,所以,其消耗的功耗也比較小。但是因?yàn)樗堑?,需要分時(shí)利用資源,所以總的延遲時(shí)間比較長。</p&
57、gt;<p><b> 線性陣列乘法器</b></p><p> 通過研究可知迭代乘法器的速度不能滿足高速運(yùn)算的需求,一種改進(jìn)的方法是將迭代乘法過程展開,在一個(gè)時(shí)鐘周期內(nèi)完成兩個(gè)部分積的求和,這樣在同樣的時(shí)鐘周期完成求和次數(shù)是迭代乘法器的兩倍。將這一操作映射到硬件上就是線性陣列乘法器。它結(jié)合了三個(gè)功能:部分積產(chǎn)生,累加部分積與最終相加。乘法器需要消耗的資源增加了,功耗與復(fù)雜
58、度也有一定的增加。</p><p><b> 并行乘法器</b></p><p> 根據(jù)上述兩種乘法器結(jié)構(gòu)可以看出,將迭代的結(jié)構(gòu)展開,乘法器的速度會(huì)有所提升,所以,進(jìn)一步將陣列乘法器的迭代進(jìn)行展開就得到完全并行的乘法器結(jié)構(gòu)。全陣列乘法器完成N×N的乘法需要N×N個(gè)加法器與N×N個(gè)部分積的產(chǎn)生單元,延遲時(shí)間為O(N),為了進(jìn)一步提升乘法
59、器的速度,將部分積求和網(wǎng)絡(luò)連接成樹型結(jié)構(gòu),采用壓縮器來壓縮部分積,樹型結(jié)構(gòu)需要的資源要比全陣列結(jié)構(gòu)要少,完成N×N乘法運(yùn)算的時(shí)間為O(Log(N))。但是樹型乘法器的連線比陣列乘法器來的復(fù)雜。</p><p> 圖3-2 并行乘法器</p><p><b> 乘法器編碼算法</b></p><p><b> 陣列乘法器
60、</b></p><p> 首先介紹簡(jiǎn)單的陣列乘法方法,這是最原始的運(yùn)算方法,通過被乘數(shù)與乘數(shù)的每一位相與操作后得到的部分積只有兩種情況{0,M},即部分積在乘數(shù)相應(yīng)位為0時(shí)為0,乘數(shù)相應(yīng)位為1時(shí)就為被乘數(shù)M,運(yùn)算規(guī)則如圖3-3。而且控制選擇這兩種情況只需要通過一個(gè)與門就可以了。陣列乘法器缺點(diǎn)是部分積的個(gè)數(shù)和乘數(shù)的位寬相同。對(duì)于16x16位的乘法過程,需要處理的點(diǎn)的數(shù)量為256(16x16=256)
61、,而點(diǎn)陣的高度與乘數(shù)的位寬相同。</p><p><b> 圖3-3陣列乘法器</b></p><p><b> Booth編碼</b></p><p> A.D.Booth研究了有符號(hào)乘法運(yùn)算中復(fù)雜的符號(hào)修正問題并提出了一種乘數(shù)編碼方法。該算法通過每次在乘數(shù)中交疊取兩位()來產(chǎn)生部分積P,運(yùn)算規(guī)則和操作過程如圖3-
62、4所示。該算法需要N拍,最多會(huì)產(chǎn)生N個(gè)部分積。該算法的原理與后面介紹的修正Booth算法類似,對(duì)于補(bǔ)碼表示的兩數(shù)相乘無需進(jìn)行符號(hào)位修正,并且對(duì)乘數(shù)的掃描可以從乘數(shù)的任意端開始。其主要缺陷是對(duì)于N位乘數(shù)仍需要N次移位和平均N/2次加法,對(duì)于16x16位的乘法過程,需要處理的點(diǎn)的數(shù)量為256(16x16=256),而且點(diǎn)陣高度與乘數(shù)位寬相同。</p><p> 圖3-4 Booth算法</p><
63、;p><b> 修正Booth編碼</b></p><p> 顯然,采用Booth編碼并沒有提高乘法器的運(yùn)算速度,1961年O.L.Mcsorley把Booth算法中的每次交疊檢驗(yàn)乘法的兩位推廣到每次交疊檢驗(yàn)三位,即著名的Booth.MacSorley算法或修正Booth算法。本文后面提到的Booth或修正Booth算法都是指的這種算法。修正Booth算法每次編碼時(shí)檢查3位,其中2
64、位來自當(dāng)前組,第3位來自高一組的最低位。實(shí)際上,每組的最低位被檢查2次。這種改進(jìn)Booth算法能保證使部分積減少一半,從而提高了運(yùn)算速度并降低了硬件復(fù)雜度,該算法在1975年被L.P.Rubinfield所證明。</p><p> 通俗點(diǎn)以k=2為例介紹Booth算法,如果這兩位二進(jìn)制數(shù)為00,則加0;如果為01,則加A(A為被乘數(shù));如果為10, 則加2A(A左移一位)。然而,如果這兩位二進(jìn)制數(shù)為11,應(yīng)加3
65、A,而3A= A +2A,引入了一次加法運(yùn)算,這是不希望的。發(fā)現(xiàn)3A可以寫成4A-A。如果2位二進(jìn)制數(shù)為11減A。但本次還沒有加,要記上待下一次補(bǔ)上。如何記住是一個(gè)問題,可以這樣做:在檢查當(dāng)前2位的同時(shí),也檢查與這2位相鄰的低位,如果它為1,則要加A(相當(dāng)于前一次加4A)。由于10 的高位也為1,因此要把加2A變成加4A-2A。這就是改進(jìn)的Booth算法的基本思想。</p><p> 在乘法器設(shè)計(jì)中大都采用改進(jìn)
66、Booth 算法以減少部分積,簡(jiǎn)化電路和提高運(yùn)算速度。改進(jìn)的Booth 算法的原理證明如下:</p><p><b> 設(shè)乘數(shù):</b></p><p> 那么乘數(shù)Y 也可以表示為:</p><p> 其中n 是偶數(shù),如果是奇數(shù)的數(shù)則需要擴(kuò)展1 位。</p><p> 根據(jù)式(2)可以知道部分積只有位數(shù)的一半,而
67、且根據(jù)的不同,與被乘數(shù)相乘得到的部分積也不同。表3-1 列出了不同的所對(duì)應(yīng)的對(duì)被乘數(shù)的操作。</p><p> 表3-1 Booth 編碼操作列表</p><p><b> 乘法器拓?fù)浣Y(jié)構(gòu)</b></p><p> 乘法器拓?fù)浣Y(jié)構(gòu)可以說是整個(gè)乘法器的核心,它直接決定著乘法器的性能。我們研究的乘法器陣列拓?fù)浣Y(jié)構(gòu)主要有簡(jiǎn)單陣列拓?fù)浣Y(jié)構(gòu)與雙陣列
68、或者高階陣列拓?fù)浣Y(jié)構(gòu),簡(jiǎn)單的拓?fù)浣Y(jié)構(gòu)(也叫重復(fù)陣列結(jié)構(gòu)),如圖3-5所示。在此結(jié)構(gòu)中,每行(3:2)計(jì)數(shù)器將一個(gè)部分積和部分積累加器中結(jié)果相加,產(chǎn)生新的部分累加結(jié)果和進(jìn)位序列,因此簡(jiǎn)單陣列結(jié)構(gòu)的延時(shí)由陣列的深度決定。很明顯,簡(jiǎn)單陣列結(jié)構(gòu)的利用率并不高。在計(jì)算中,每個(gè)計(jì)數(shù)器僅僅使用一次,而其他時(shí)間一直處于休閑狀態(tài)。</p><p> 圖3-5 常見壓縮器拓?fù)浣Y(jié)構(gòu)</p><p> 對(duì)于部
69、分積求和而言,各種計(jì)數(shù)器和壓縮器的不同連接方法,構(gòu)成陣列結(jié)構(gòu)和樹型結(jié)構(gòu)兩大類拓?fù)浣Y(jié)構(gòu)。陣列類型的拓?fù)浣Y(jié)構(gòu)十分規(guī)整,但是延時(shí)大,占用硬件資源多:樹型結(jié)構(gòu)則規(guī)整性差一些,但壓縮速度快,硬件需求較小。但是對(duì)于位寬較大的高速乘法器而言,陣列結(jié)構(gòu)很顯然,不能滿足對(duì)速度的要求,而樹型拓?fù)浣Y(jié)構(gòu)是必然的選擇。</p><p><b> 加法器</b></p><p> 全加器的電
70、路結(jié)構(gòu)如圖3-7所示,從圖中可以看出兩級(jí)級(jí)連的XOR.XNOR是全加器的主要組成部分,也是全加器的關(guān)鍵路徑,它直接決定了全加器的速度與功耗。</p><p> 表3-2 全加器真值表</p><p><b> 圖3-7 加法器</b></p><p><b> 壓縮器</b></p><p>
71、 進(jìn)位保留加法器,顧名思義,這種加法器并不急于把進(jìn)位相加,而是把它留到下一次加法中。由于這種加法器可以減少輸出的個(gè)數(shù),故又稱之壓縮器(Compressor)。根據(jù)輸入和輸出之間的個(gè)數(shù)比,有(3:2)壓縮器、(4:2)壓縮器和(5:3)壓縮器等。常用的是前兩種。(3:2)壓縮器實(shí)際上是一個(gè)一位的全加器,通過把它們連結(jié)成并行的樹形結(jié)構(gòu),可以避免費(fèi)時(shí)的進(jìn)位過程,加快部分積的累加速度,這種樹型結(jié)構(gòu)就是Wallace樹。</p>
72、<p> 圖3-8 3:2壓縮器結(jié)構(gòu)圖3-9 4:2壓縮器結(jié)構(gòu)</p><p> 但是如圖3-9示,4:2壓縮器的延時(shí)為兩級(jí)3:2壓縮器延時(shí)之和,延時(shí)時(shí)間過于長不符合電路設(shè)計(jì)高速性的要求,我們對(duì)其重新編碼如表3-3示:</p><p> 表3-3 4:2壓縮器真值表</p><p> 依真值表我們可以得出如下改進(jìn)過的壓縮器電路,在邏輯資源
73、方面并沒有改變但是少了一級(jí)XOR延時(shí),并且高位進(jìn)位也無需等待低位的進(jìn)位,充分考慮的關(guān)鍵路徑,能夠滿足電路高速性的要求。</p><p> 圖3-10 改進(jìn)的4:2壓縮器</p><p> 圖3-11 4:2壓縮器實(shí)現(xiàn)電路</p><p><b> 乘法器結(jié)構(gòu)與設(shè)計(jì)</b></p><p> 前兩章節(jié)詳細(xì)介紹了乘法
74、器的數(shù)據(jù)格式、算法與結(jié)構(gòu),本章將在此基礎(chǔ)上完成16位浮點(diǎn)乘法器的設(shè)計(jì)。按照設(shè)計(jì)規(guī)范該浮點(diǎn)乘法器能夠完成12位定點(diǎn)數(shù)乘和16位浮點(diǎn)數(shù)乘,而浮點(diǎn)運(yùn)算要比定點(diǎn)運(yùn)算復(fù)雜的多,且12位定點(diǎn)乘法為擴(kuò)展功能因此本文針對(duì)浮點(diǎn)乘法器的設(shè)計(jì)來展開討論。</p><p><b> 乘法器結(jié)構(gòu)</b></p><p> 浮點(diǎn)數(shù)包括尾數(shù)和指數(shù)兩部分,尾數(shù)部分進(jìn)行的是乘法運(yùn)算,指數(shù)部分進(jìn)行的
75、是加法運(yùn)算,并依據(jù)尾數(shù)運(yùn)算結(jié)果進(jìn)行指數(shù)調(diào)整。</p><p> 圖4-1 乘法器結(jié)構(gòu)</p><p> 尾數(shù)處理部分主要進(jìn)行尾數(shù)擴(kuò)展和一些數(shù)據(jù)正負(fù)的判斷以及負(fù)數(shù)的生成,以備在進(jìn)行Booth編碼的時(shí)候使用。部分積的產(chǎn)生采用修正的Booth算法產(chǎn)生6個(gè)部分積,然后采用3:2和4:2壓縮器將結(jié)構(gòu)壓縮為兩個(gè),高速相加得到結(jié)果。之后通過符號(hào)修正、尾數(shù)舍入、規(guī)格化等操作對(duì)指數(shù)進(jìn)行調(diào)整即可完成乘法功
76、能。</p><p> 尾數(shù)擴(kuò)展和部分積產(chǎn)生</p><p> 本文設(shè)計(jì)的是16位的浮點(diǎn)乘法器,所以在乘數(shù)和被乘數(shù)輸入計(jì)算電路之前應(yīng)該進(jìn)行符號(hào)的擴(kuò)展使其滿足16位,并為判斷正負(fù)產(chǎn)生Booth編碼時(shí)候需要的負(fù)乘數(shù),相對(duì)來說尾數(shù)的設(shè)計(jì)部分比較簡(jiǎn)單,具體電路見附錄代碼部分。</p><p> 部分積得產(chǎn)生采用修正Booth算法,在第三章有詳細(xì)介紹這里不做過多說明,詳
77、細(xì)實(shí)現(xiàn)電路見附錄代碼部分。</p><p><b> 壓縮器的選擇</b></p><p> 限制乘法器高速性的因素有兩個(gè),部分積的產(chǎn)生和求和。我們采用Booth編碼將部分積減少一半產(chǎn)生6個(gè)部分積,接下來可以采用壓縮器實(shí)現(xiàn)部分積的高速求和。</p><p> 在第二章我們介紹了兩種壓縮器,分別是3:2壓縮器和4:2壓縮器?,F(xiàn)在我們分別用這
78、兩種電路構(gòu)成三種電路比較其性能,再?zèng)Q定具體采用電路。</p><p> 圖4-2 采用3:2壓縮器結(jié)構(gòu) 圖4-3 采用4:2壓縮器結(jié)構(gòu)</p><p> 1:采用3:2壓縮器 三級(jí)6級(jí)XOR延遲、占用8個(gè)XOR、4個(gè)MUX</p><p> 2:采用4:2壓縮器 兩級(jí)6級(jí)XOR延遲、占用8個(gè)XOR、4個(gè)MUX</p><
79、p> 3:采用混合壓縮器 兩級(jí)5級(jí)XOR延遲、占用8個(gè)XOR、4個(gè)MUX</p><p> 選用方案3可以節(jié)省一級(jí)XOR延遲,在耗費(fèi)相同的邏輯資源的情況下取得更大高的速度,如圖4-4示:</p><p><b> 圖4-4</b></p><p><b> 乘法器端口定義</b></p>
80、<p> 根據(jù)乘法器的功能計(jì)算要求定義乘法器的端口如下:</p><p> 圖4-5 乘法器端口圖</p><p> ain :16位浮點(diǎn)乘數(shù)輸入</p><p> bin :16位浮點(diǎn)被乘數(shù)輸入</p><p> clk :工作時(shí)鐘輸入</p><p> res :復(fù)位信號(hào)輸入</p>
81、;<p> f :定點(diǎn)/浮點(diǎn)運(yùn)算選擇輸入</p><p> cout:32位浮點(diǎn)運(yùn)算結(jié)果輸出</p><p><b> 浮點(diǎn)數(shù)規(guī)格化</b></p><p> 關(guān)于浮點(diǎn)數(shù)的范圍如下:</p><p> 最大正數(shù)值 是由尾數(shù)的最大正數(shù)值與階碼的最大正數(shù)值組合而成的;</p><
82、;p> 最小正數(shù)值 是由尾數(shù)的最小正數(shù)值與階碼的最小負(fù)數(shù)值組合而成的;</p><p> 最大負(fù)數(shù)值 是由尾數(shù)的最大負(fù)數(shù)值與階碼的最小負(fù)數(shù)值組合而成的;</p><p> 最小負(fù)數(shù)值 是由尾數(shù)的最小負(fù)數(shù)值與階碼的最大正數(shù)值組合而成的;</p><p><b> 16進(jìn)制浮點(diǎn)數(shù)</b></p><p> 最
83、大正數(shù)值C=0111_0111_1111_1111</p><p> 最小正數(shù)值C=1000_0000_0000_0000</p><p> 最大負(fù)數(shù)值C=1000_0000_0000_0000</p><p> 最小負(fù)數(shù)值C=0111_1000_0000_0000</p><p> 兩個(gè)數(shù)據(jù)相乘無外乎兩種結(jié)果,正數(shù)和負(fù)數(shù)。</
84、p><p> ?。?)正數(shù)結(jié)果的分析:</p><p> 規(guī)格化后尾數(shù)部分的范圍(尾數(shù)可以都為正或負(fù),但結(jié)果為正處理方式相同所以加絕對(duì)值)</p><p> 0.100_0000_0000<|C(man)|<0.111_1111_1111</p><p> 0.5<|C(man)|<0.99951171875<
85、/p><p><b> 相乘的最終結(jié)果范圍</b></p><p> 0.01(20位0)< C(man) <0.11_1111_1111_0000_0000_0001</p><p> 0.25< C(man) <0.9990236759185791015625</p><p> 結(jié)果:正數(shù)
86、結(jié)果的移位規(guī)格化(高位的0為無效位)</p><p> 1:尾數(shù)右移一位,指數(shù)減1</p><p> 2:尾數(shù)不用移位,指數(shù)不變</p><p> ?。?)負(fù)數(shù)結(jié)果的分析:</p><p> 規(guī)格化后尾數(shù)部分的范圍(尾數(shù)符號(hào)相異)</p><p> 0.100_0000_0000<C(man)<0.
87、111_1111_1111</p><p> 0.5<C(man)<0.99951171875</p><p> 1.000_0000_0000<C(man)<1.011_1111_1111</p><p> -1<C(man)<-0.50048828125</p><p><b> 相乘
88、的最終結(jié)果范圍</b></p><p> -0.99951171875<C(man)<-0.50048828125*0.5=-0.250244140625</p><p> 11.00_0000_0000_1000_0000_0000<C(man)<11.10_1111_1111_1100_0000_0000</p><p>
89、 結(jié)果:負(fù)數(shù)結(jié)果的移位規(guī)格化(高位的1為無效位)</p><p> 1:尾數(shù)右移一位,指數(shù)減1</p><p> 2:尾數(shù)不用移位,指數(shù)不變</p><p><b> 指數(shù)修正</b></p><p> 本文的設(shè)計(jì)的浮點(diǎn)乘法器的指數(shù)部分有四位,兩個(gè)四位的數(shù)相加的范圍是: -16<e<14</
90、p><p> 一個(gè)五位數(shù)的表示范圍是:</p><p><b> -16<e<15</b></p><p> 當(dāng)存在移位規(guī)格化操作時(shí)候一個(gè)五位的數(shù)是不能表示的,因?yàn)榇嬖谝粋€(gè)特殊的數(shù)-16,在減1時(shí)發(fā)生溢出。</p><p> 尾數(shù)規(guī)格化的時(shí)候需要小數(shù)點(diǎn)向右移,指數(shù)會(huì)減少1,在結(jié)尾對(duì)輸出進(jìn)行賦值時(shí)采用指數(shù)修
91、正之前的符號(hào)可以有效的防止指數(shù)溢出情況的發(fā)生,在程序上只需要加一級(jí)判斷而已,詳細(xì)實(shí)現(xiàn)過程見附錄部分程序。</p><p><b> 乘法器的驗(yàn)證</b></p><p> 在前文已完成的浮點(diǎn)乘法器設(shè)計(jì)的基礎(chǔ)上,本章將該乘法器的功能與性能進(jìn)行驗(yàn)證。驗(yàn)證是芯片設(shè)計(jì)的重要組成部分,目的是要檢查設(shè)計(jì)的電路是否達(dá)到預(yù)期的功能和性能要求,驗(yàn)證的基本思路是:模擬待驗(yàn)證的設(shè)計(jì)的輸
92、入端輸入不同的信號(hào)觀察信號(hào)在設(shè)計(jì)內(nèi)部的傳播與輸出的結(jié)果,從而分析出設(shè)計(jì)是否達(dá)到要求。驗(yàn)證主要分為軟件的模擬仿真和硬件仿真。</p><p> Modelsim模擬仿真</p><p> Modelsim仿真工具是Model公司開發(fā)的,它支持Verilog、VHDL以及他們的混合仿真。它可以將整個(gè)程序分步執(zhí)行,使設(shè)計(jì)者直接看到他的程序下一步要執(zhí)行的語句,而且在程序執(zhí)行的任何步驟任何時(shí)刻都
93、可以查看任意變量的當(dāng)前值,可以在Dataflow窗口查看某一單元或模塊的輸入輸出的連續(xù)變化等。比Quartus自帶的仿真器功能強(qiáng)大的多,是目前業(yè)界最通用的仿真器之一。</p><p> 在采用Modelsim開始仿真之前我們首先應(yīng)該搭建一個(gè)仿真測(cè)試的平臺(tái),即為即將進(jìn)行的測(cè)試文件編寫一個(gè)測(cè)試激勵(lì)(Testbench)。一個(gè)測(cè)試平臺(tái)文件就是一個(gè)Verilog模型,可以用來驗(yàn)證所設(shè)計(jì)的硬件模型的正確性。測(cè)試平臺(tái)就是為
94、所測(cè)試的元件提供一個(gè)測(cè)試激勵(lì),仿真結(jié)果可以以波形的方式顯示或存儲(chǔ)測(cè)試結(jié)果到文件中。激勵(lì)信號(hào)可以直接集成在測(cè)試平臺(tái)文件中,也可以外部文件加載,在這里我們采用集成在測(cè)試平臺(tái)中如圖5-1。</p><p> 圖5-1 仿真測(cè)試平臺(tái)</p><p> 仿真模擬文件是采用軟件方法模擬一個(gè)乘法器,在編寫的時(shí)候并不考慮硬件情況所以是不可綜合的。它僅僅用于仿真,在相同的測(cè)試激勵(lì)下會(huì)產(chǎn)生和待測(cè)試文件一樣
95、的乘法結(jié)果。但由于它采用的是純粹的軟件的仿真并不關(guān)心實(shí)際硬件,所以我們可以采用直接使用乘法得出結(jié)果,從而大大減小它的編寫難度同時(shí)能夠保證結(jié)果的正確性。如果待測(cè)試文件和仿真模擬文件在相同的測(cè)試激勵(lì)下輸出相同的結(jié)果,那么我們就可以認(rèn)為設(shè)計(jì)是正確的。同時(shí)得益于軟件仿真的高速性我們可以再完成一組仿真比較之后緊接著自動(dòng)進(jìn)入下一組,同時(shí)自動(dòng)改變仿真的數(shù)據(jù)組合,逐步將16位浮點(diǎn)數(shù)據(jù)的全部組合進(jìn)行測(cè)試,確保在所有情況下的結(jié)果都是正確的。</p&g
96、t;<p> 仿真測(cè)試平臺(tái)提供兩個(gè)相同的測(cè)試激勵(lì)分別將值給待測(cè)試文件和模擬測(cè)試文件,然后得到它們的結(jié)構(gòu)進(jìn)行比較,如果相同說明我們的設(shè)計(jì)在功能上是正確的,如果不同說明設(shè)計(jì)存在問題,驗(yàn)證測(cè)試馬上終止,并給出錯(cuò)誤位置和激勵(lì)信號(hào)幫助改正,具體實(shí)現(xiàn)代碼見附錄測(cè)試代碼部分。</p><p> Modelsim版本:Modelsim SE 6.5</p><p> 系統(tǒng)平臺(tái):WIN7
97、旗艦版</p><p> 圖5-2 Modelsim仿真結(jié)果</p><p><b> FPGA硬件仿真</b></p><p> 在代碼編寫完成后通過QuartusⅡ的編譯和綜合下載到FPGA的實(shí)驗(yàn)板上進(jìn)行實(shí)際的硬件仿真,在這里可以完全模擬芯片在生產(chǎn)出來之后所遇到的實(shí)際問題并提前改善。</p><p> Qua
98、rtusⅡ版本:QuartusⅡ8.0</p><p> 系統(tǒng)平臺(tái) :WIN7旗艦版</p><p> 實(shí)驗(yàn)板 :EP1C6Q240C8</p><p> 抓圖 :嵌入式邏輯分析儀</p><p> 圖5-3 邏輯資源占用情況</p><p> 圖5-4 嵌入式邏輯分析儀抓圖&l
99、t;/p><p><b> ASIC綜合</b></p><p> 所謂ASIC邏輯綜合是指在給定工藝庫的基礎(chǔ)上通過映射和優(yōu)化,將行為級(jí)描述的設(shè)計(jì)在一定的規(guī)則下轉(zhuǎn)化為邏輯電路結(jié)構(gòu)。它是面向給定的設(shè)計(jì)約束,將高級(jí)的設(shè)計(jì)代碼描述映射為基于工藝庫的門級(jí)網(wǎng)表的自動(dòng)化過程。</p><p> ASIC綜合器在把可綜合的VHDL/Verilog程序轉(zhuǎn)化成
100、硬件電路時(shí),一般要經(jīng)過兩個(gè)步驟:第一步是HDL綜合器對(duì)VHDL/Verilog進(jìn)行分析處理,并將其轉(zhuǎn)成相應(yīng)的電路結(jié)構(gòu)或模塊,這時(shí)是不考慮實(shí)際器件實(shí)現(xiàn)的,即完全與硬件無關(guān),這個(gè)過程是一個(gè)通用電路原理圖形成的過程;第二步是對(duì)應(yīng)實(shí)際實(shí)現(xiàn)的目標(biāo)器件的結(jié)構(gòu)進(jìn)行優(yōu)化,并使之滿足各種約束條件,優(yōu)化關(guān)鍵路徑等。</p><p> 圖6-1 DC綜合優(yōu)化之前的電路圖</p><p> 圖6-2 DC 綜
101、合優(yōu)化之后的電路圖</p><p> 第一步我們采用DC綜合,生成相應(yīng)的電路模塊和時(shí)序文件,以及接下來用到的sdc文件。</p><p> 圖6-3 Astro布局布線完成后電路</p><p> 第二步我們采用Astro進(jìn)行自動(dòng)的布局布線,得到最終的GDS文件。</p><p><b> 結(jié) 論</b><
102、/p><p> 本文采用自上而下的正向設(shè)計(jì)方法在仔細(xì)分析了各種算法的基礎(chǔ)之上設(shè)計(jì)了一種高速CMOS浮點(diǎn)乘法器,可以實(shí)現(xiàn)16位浮點(diǎn)和12位定點(diǎn)的乘法運(yùn)算。通過Verilog HDL語言進(jìn)行了硬件電路的描述,并利用Altera公司的Cyclone系列的EP1C6進(jìn)行了硬件電路的實(shí)現(xiàn),而該電路的功能仿真和硬件驗(yàn)證都已經(jīng)正確通過,驗(yàn)證表明乘法器具有優(yōu)良的性能。</p><p> 通過對(duì)電路進(jìn)行時(shí)序
103、分析,可以得出該種設(shè)計(jì)方法的電路比傳統(tǒng)方法設(shè)計(jì)的電路有了明顯性能改善的結(jié)論。乘法運(yùn)算在一個(gè)時(shí)鐘周期完成,可以處理16位浮點(diǎn)或12位定點(diǎn)兩種類型數(shù)據(jù),具有更廣泛的應(yīng)用范圍。整個(gè)乘法器都進(jìn)行了高度并行化的設(shè)計(jì),使乘法器具有較快的運(yùn)算速度,且結(jié)構(gòu)規(guī)整。數(shù)據(jù)格式的識(shí)別與切換可由乘法器自行完成。乘法器的設(shè)計(jì)采用軟IP形式,具有一定的通用性和可移植性,且易于在此基礎(chǔ)上進(jìn)行延伸設(shè)計(jì)。資源占用情況如圖4-2示,速度達(dá)到71.33MHZ?;究梢詽M足高速
104、性的要求。</p><p><b> 參考文獻(xiàn)</b></p><p> 周立功. EDA實(shí)驗(yàn)與實(shí)踐. 北京: 北京航空航天大學(xué)出版社, 2007-9</p><p> 王鈿, 卓興旺. 基于Verilong HDL的數(shù)字系統(tǒng)設(shè)計(jì)應(yīng)用設(shè)計(jì). 第二版. 北京: 國防工業(yè)出版社, 2007-8</p><p> 王彥
105、, 基于FPGA的工程設(shè)計(jì)與應(yīng)用. 西安: 西安電子科技大學(xué)出版社2007-5</p><p> Howard Johnson, Martin Graham. High-Speed Digital Design. 北京: 電子工業(yè)出版社, 2004-5</p><p> John F.Wakerly. 數(shù)字設(shè)計(jì)原理與實(shí)踐(原書第四版). 北京: 機(jī)械工業(yè)出版社, 2007-5</
106、p><p> Clifford E Cummings. Synthesis and Scripting Techniques for Designing Multi-Asynchronous Clock Design. SUNG-2001 San Jose, CA Voted Best Paper 3rd Place,2001:2-4,16-23</p><p> 夏宇聞. V
107、erilog數(shù)字系統(tǒng)設(shè)計(jì)教程.北京:北京航空航天大學(xué)出版社,2003</p><p> Michael D.Ciletti.Verilog HDL高級(jí)數(shù)字設(shè)計(jì).北京:電子工業(yè)出版社,2005</p><p> Mark Balch.完整的數(shù)字設(shè)計(jì).北京:清華大學(xué)出版社,2006:75-94</p><p> MichaelD Ciletti. Advanced
108、 DigitalDesign with the Verilog HDL [M]. 影印版.北京:電子工業(yè)出版社, 2004.115-119</p><p> 趙雅興. FPGA 原理、設(shè)計(jì)與應(yīng)用[M] . 天津:天津大學(xué)出版社,1999</p><p> 王定, 余寧梅, 張玉倫等.改進(jìn)型Booth華萊士樹的低功耗、高速并行乘法器的設(shè)計(jì)[J].電子器件, 2007, (30): 252
109、-255</p><p> 羅莉, 胡守仁. 一個(gè)并行高速乘法器芯片的設(shè)計(jì)和實(shí)現(xiàn) [J]. 計(jì)算機(jī)工程和科學(xué) 1997, 19(4):51-57</p><p> 于敦山, 沈緒榜. 32位定/浮點(diǎn)乘法器設(shè)計(jì) [J]. 半導(dǎo)體學(xué)報(bào), 2001, 22(1): 91-95</p><p> 袁壽財(cái), 朱長純. 快速乘法器中高速4-2壓縮器設(shè)計(jì)[J]. 微電子學(xué)與
110、計(jì)算機(jī)2002, 4:52-56</p><p> 盧君明, 林爭(zhēng)輝. 一種新型的晶體管級(jí)改進(jìn)Booth編碼單元電路[j]. 微電子學(xué) 2002,3:42-46</p><p> 周旭, 唐志敏. 一種快速的浮點(diǎn)乘法器結(jié)構(gòu)[j]. 計(jì)算機(jī)研究與發(fā)展, 2003, 40(6):879-883</p><p> 王田, 陳健. 付宇卓. 一種32位全定制高速乘法器
111、設(shè)計(jì)[J]. 小型微型計(jì)算機(jī)系統(tǒng), 2005,26(2):307-309</p><p> 吳金, 應(yīng)征. 高速浮點(diǎn)乘法器設(shè)計(jì)[J]. 電路與系統(tǒng)學(xué)報(bào), 2005(10)6:6-11</p><p> 孫旭光, 毛志剛, 來逢昌. 改進(jìn)結(jié)構(gòu)的64位CMOS并行加法器設(shè)計(jì)與實(shí)現(xiàn)[J]. 半導(dǎo)體學(xué)報(bào),2003,24(2):204-208</p><p><b&
112、gt; .</b></p><p><b> 致 謝</b></p><p> 至此基本完成了在***大學(xué)四年的學(xué)習(xí),這四年來的時(shí)光將是我一生最難以忘懷的歲月。*****大學(xué),這個(gè)閃亮的名字像一個(gè)深深的烙印刻在我的身上,感謝河***大學(xué)為我提供的成長的空間與自我提升的機(jī)會(huì)。</p><p> 本學(xué)位論文是在**老師的細(xì)心指導(dǎo)
113、下完成的。*老師堅(jiān)韌不拔,孜孜以求的工作態(tài)度令我感到無比欽佩,這對(duì)我產(chǎn)生了超出學(xué)術(shù)以外的更深遠(yuǎn)的影響。從課題的選擇到論文的最終完成,**老師始終都給予了細(xì)致的指導(dǎo)和不懈的支持,在設(shè)計(jì)的過程中遇到的實(shí)際問題總會(huì)在最短時(shí)間內(nèi)給予最詳細(xì)的解釋。在論文的撰寫的過程中,**老師也進(jìn)行的認(rèn)真的審閱與修改,使得我的論文結(jié)構(gòu)一步一步的完善,內(nèi)容日趨豐滿,希望借此機(jī)會(huì)向張老師表示最衷心的感謝!</p><p> 本文的設(shè)計(jì)工作還
114、得到了***老師的悉心指導(dǎo)和諸多幫助。*老師嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度、淵博的專業(yè)知識(shí)、敏銳的學(xué)術(shù)洞察力給我留下了深刻的印象。同時(shí)感謝電子信息科學(xué)與技術(shù)專業(yè)的老師們,雖然沒有直接參與論文的指導(dǎo)但在開題時(shí)提出很多可行性的建議,在這里向他們表示深深的感謝。</p><p><b> 附 錄</b></p><p> 附錄1:部分設(shè)計(jì)代碼</p><p>
115、 /**************************************************************</p><p> * 高性能數(shù)字乘法器 *</p><p> * 電信學(xué)院06級(jí)電信科 *&
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 一種無乘法器的小功率PFC芯片電路設(shè)計(jì).pdf
- 移位相加8位硬件乘法器電路設(shè)計(jì)
- 移位相加8位硬件乘法器電路設(shè)計(jì)66947
- 高性能并行乘法器半定制設(shè)計(jì)方法研究.pdf
- 一種高性能乘法器的設(shè)計(jì)與研究——43位浮點(diǎn)乘法器的設(shè)計(jì)與研究.pdf
- 高性能并行十進(jìn)制乘法器的研究與設(shè)計(jì).pdf
- 高性能并行乘法器關(guān)鍵技術(shù)研究.pdf
- 高性能CPU中浮點(diǎn)乘法器的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 32位高速高性能浮點(diǎn)陣列乘法器的設(shè)計(jì).pdf
- fpga乘法器畢業(yè)設(shè)計(jì)開題報(bào)告
- 8位乘法器畢業(yè)設(shè)計(jì)
- 5 模擬乘法器混頻電路
- 5 模擬乘法器混頻電路.docx
- protel課程設(shè)計(jì)--模擬乘法器調(diào)幅電路
- 高性能冗余二進(jìn)制乘法器的研究與設(shè)計(jì).pdf
- 高性能DSP中32位浮點(diǎn)乘法器的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 一種基于乘法器控制的pfc芯片設(shè)計(jì)
- 高性能有限域乘法器的研究與實(shí)現(xiàn).pdf
- 乘法器課程設(shè)計(jì)--基于vhdl的數(shù)字系統(tǒng)設(shè)計(jì)
- 快速乘法器的設(shè)計(jì).pdf
評(píng)論
0/150
提交評(píng)論