位移位相加乘法器設(shè)計(jì)畢業(yè)設(shè)計(jì)_第1頁
位移位相加乘法器設(shè)計(jì)畢業(yè)設(shè)計(jì)_第2頁
位移位相加乘法器設(shè)計(jì)畢業(yè)設(shè)計(jì)_第3頁
位移位相加乘法器設(shè)計(jì)畢業(yè)設(shè)計(jì)_第4頁
位移位相加乘法器設(shè)計(jì)畢業(yè)設(shè)計(jì)_第5頁
已閱讀5頁,還剩22頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

本科學(xué)生畢業(yè)論文論文題目:16×16位移位相加乘法器設(shè)計(jì)學(xué)院:年級(jí):專業(yè):集成電路設(shè)計(jì)與集成系統(tǒng)姓名:學(xué)號(hào):指導(dǎo)教師:摘要隨著集成電路設(shè)計(jì)技術(shù)的不斷進(jìn)步,乘法器的芯片設(shè)計(jì)實(shí)現(xiàn)的研究與應(yīng)用越來越廣泛,對(duì)乘法器進(jìn)行ASIC芯片設(shè)計(jì),具有設(shè)計(jì)實(shí)現(xiàn)過程簡單、所用到的EDA工具完善而且成熟、硬件開銷小、易于在VLSI電路或系統(tǒng)級(jí)芯片中集成。通常,數(shù)字電路設(shè)計(jì)的流程對(duì)于芯片的實(shí)現(xiàn)而言,需要RTL級(jí)的HDL描述,并要對(duì)各層次的設(shè)計(jì)進(jìn)行功能仿真驗(yàn)證,在驗(yàn)證電路能按預(yù)期設(shè)計(jì)功能工作后,即可對(duì)RTL級(jí)的HDL描述進(jìn)行綜合、優(yōu)化,形成門級(jí)網(wǎng)表。整個(gè)設(shè)計(jì)流程可稱為數(shù)字電路的前端設(shè)計(jì)。本課題基于移位相加算法的研究,設(shè)計(jì)16位移位相加乘法器,并在功能仿真通過后,將所設(shè)計(jì)的VerilogRTL級(jí)代碼進(jìn)行綜合,采用Synopsys公司DesignCompilerEDA工具進(jìn)行電路綜合,獲得16位移位相加乘法器的門級(jí)網(wǎng)表與電路實(shí)現(xiàn)。關(guān)鍵詞數(shù)字電路設(shè)計(jì);移位相加乘法器;綜合;AbstractAbstractabstractabstractabstractabstractabstractabstractabstractabstractabstractabstractabstractabstractabstractabstractabstractabstractabstractabstractabstractabstractabstractabstractabstractabstractabstractabstractabstractabstractabstractabstractabstractabstract.(英文摘要內(nèi)容必須與中文摘要完全對(duì)應(yīng)。英文摘要采用TimesNewRoman小四號(hào)字書寫,畢業(yè)論文、畢業(yè)設(shè)計(jì)行與行之間、段落和層次標(biāo)題以及各段落之間均為1.5倍行距。)KeywordsKeywords;keywords;keywords(英文關(guān)鍵詞內(nèi)容必須與中文關(guān)鍵詞完全對(duì)應(yīng)。英文關(guān)鍵詞采用TimesNewRoman小四號(hào)字書寫,畢業(yè)論文、畢業(yè)設(shè)計(jì)行與行之間、段落和層次標(biāo)題以及各段落之間均為1.5倍行距。關(guān)鍵詞與關(guān)鍵詞之間用“;”隔開)目錄摘要 1Abstract 2第一章乘法器研究的背景與意義 41.1乘法器的發(fā)展現(xiàn)狀 4國內(nèi)乘法器現(xiàn)狀 5國外乘法器現(xiàn)狀 51.2乘法器概述 61.3乘運(yùn)算 61.4乘法器結(jié)構(gòu) 71.5乘法器端口定義 8第二章移位相加乘法器設(shè)計(jì)的基本原理 92.1.1移位相加算法 92.1.2乘法器設(shè)計(jì)原理 102.2移位相加乘法器原理 11第三章16×16位移位相加乘法器設(shè)計(jì)與仿真 123.116位移位相加乘法器的設(shè)計(jì) 123.216位移位相加乘法器Verilog文件設(shè)計(jì) 123.316×16位移位相加乘法器Modelsim仿真 143.3.116×16位移位相加乘法器經(jīng)典數(shù)組運(yùn)算結(jié)果 153.3.216×16位移位相加乘法器一般情況運(yùn)算結(jié)果 17第四章16×16位移位相加乘法器Verilog設(shè)計(jì)綜合 184.1RTL級(jí)概念 184.2RTL級(jí)綜合結(jié)果與分析 204.316位移位相加乘法器電路圖 22結(jié)論 26參考文獻(xiàn) 27附錄一 28致謝 38第一章乘法器研究的背景與意義數(shù)字信號(hào)處理中需要頻繁進(jìn)行大數(shù)據(jù)量的乘法運(yùn)算。乘法器作為數(shù)字信號(hào)處理器的重要部件,它的速度直接決定了整個(gè)處理器的性能。本課題采用verilogHDL設(shè)計(jì)了一個(gè)16位移位相加乘法器。首先介紹了移位相加乘法器的算法以及比較移位相加乘法器,Booth乘法器,WallaceTree乘法器各自的特點(diǎn)。介紹了本課題在綜合時(shí)需用到的DesignCompiler(DC)綜合工具。隨后提出了自己的乘法器設(shè)計(jì)架構(gòu)設(shè)計(jì)了一個(gè)16位移位相加乘法器。并用DesignCompiler(DC)進(jìn)行了優(yōu)化。所設(shè)計(jì)的乘法器是16×16位,基于Altera公司的Modelsim平臺(tái)上用Verilog_HDL軟件進(jìn)行功能仿真,驗(yàn)證了功能正確,達(dá)到了預(yù)期的目標(biāo)。微處理器的發(fā)展隨著集成電路的迅猛發(fā)展而日新月異。在微處理器芯片中乘法器是進(jìn)行數(shù)字信號(hào)處理的核心同時(shí)也是微處理器中進(jìn)行數(shù)據(jù)處理的關(guān)鍵部件,它已經(jīng)是現(xiàn)代計(jì)算機(jī)必不可少的一部分。乘法器的算法也有很多種,例如移位相加算法、布斯(Booth)算法、華萊士樹(WallaceTree)算法等。其中移位相加算法是乘法器最基礎(chǔ)的算法,其它的算法都是在它的基礎(chǔ)上為了壓縮和優(yōu)化這種算法延伸出來的算法,目的是提高乘法器的運(yùn)算速度以及實(shí)現(xiàn)更多的乘法器功能。雖然不斷有關(guān)于32位、64位乘法器的研究出現(xiàn),但由于大量的媒體信號(hào)處理只需16位運(yùn)算就能勝任,因此對(duì)16位乘法器的研究仍有著相當(dāng)?shù)膽?yīng)用價(jià)值。1.1乘法器的發(fā)展現(xiàn)狀過去的十年中,研究者擴(kuò)展了Booth編碼算法的空間,提高了乘法器的性能;改進(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)前的熱門話題。國內(nèi)乘法器現(xiàn)狀乘法器的設(shè)計(jì)與應(yīng)用在國內(nèi)研究領(lǐng)域也取得了很好的成績,1993年中科院聲學(xué)研究所應(yīng)用于18位乘法器,實(shí)現(xiàn)工作頻率38MHZ.。隨著應(yīng)用要求的領(lǐng)域與性能不斷提高,1997年國防科技大學(xué)完成應(yīng)用于數(shù)字神經(jīng)處理的16位乘法器,頻率30MHZ。2001年西安微電子技術(shù)中心于敦山實(shí)現(xiàn)了32位定/浮點(diǎn)乘法器延時(shí)56/76ns。進(jìn)入新世紀(jì)以來,集成電路工藝水平不斷提升,2002年西安交通大學(xué)袁壽財(cái)實(shí)現(xiàn)了0.25um下延時(shí)40ns。2003年中科院計(jì)算研究所周旭采用0.18um的工藝實(shí)現(xiàn)54位浮點(diǎn)乘法器384MHZ。2004年復(fù)旦大學(xué)武新宇采用0.18um的工藝實(shí)現(xiàn)64位乘法器延時(shí)2.82ns。2005年上海大學(xué)王田采用0.18um的工藝實(shí)現(xiàn)32位乘法器延時(shí)3.15ns。2007年東南大學(xué)王定采用FPGA設(shè)計(jì)24位乘法器延時(shí)18.81ns。乘法器的設(shè)計(jì)一直是集成電路設(shè)計(jì)研究領(lǐng)域的一個(gè)熱點(diǎn),也有著廣泛的應(yīng)用。國外乘法器現(xiàn)狀理論方面乘法器研究上的里程碑應(yīng)該從BoothAD在1951年提出的Booth編碼方法和Wallace的樹型壓縮開始。隨后出現(xiàn)了Booth2算法、壓縮器(進(jìn)位保留加法)、延遲平衡樹等各種算法結(jié)構(gòu)。國外乘法器在電路方面的發(fā)展同樣迅猛,1995年Ohkubo基于傳輸管邏輯實(shí)現(xiàn)了4.4ns54位乘法器,同時(shí)提出了新的4:2壓縮單元結(jié)構(gòu)和進(jìn)位選擇加法器結(jié)構(gòu)。1996年Hanawa實(shí)現(xiàn)了4.3nS的54位乘法器,同一年,Makino實(shí)現(xiàn)了8.8ns54位冗余二進(jìn)制編碼乘法器。1997年Inoue提出了符號(hào)選擇Booth解碼和改進(jìn)的4:2壓縮單元結(jié)構(gòu),實(shí)現(xiàn)了4.1ns的54位乘法器。1998年Hagihara基于動(dòng)態(tài)技術(shù)和傳輸管邏輯實(shí)現(xiàn)了2.7ns的54位乘法器。同年Carlson介紹了6.0ns的64位乘法器實(shí)現(xiàn)方法。2001年Itoh實(shí)現(xiàn)了一個(gè)600MHz的兩級(jí)流水線的54位乘法器。2003年Cho基于標(biāo)準(zhǔn)單元庫實(shí)現(xiàn)了一個(gè)3.25ns的54位乘法器,并提出了改進(jìn)的進(jìn)位選擇加法器結(jié)構(gòu)。1.2乘法器概述乘法器在當(dāng)今數(shù)字信號(hào)處理以及其他諸多應(yīng)用領(lǐng)域中起著十分重要的作用。隨著科學(xué)技術(shù)的發(fā)展,許多研究人員已經(jīng)開始試圖設(shè)計(jì)一類擁有更高速率和低功耗,布局規(guī)律占用面積小,集成度高的乘法器。這樣,就能讓它們更加適用于高速率,低功耗的大規(guī)模集成電路的應(yīng)用當(dāng)中。通常的乘法計(jì)算方法是添加和位移的算法。在并行乘法器當(dāng)中,相加的部分乘積的數(shù)量是主要的參數(shù)。它決定了乘法器的性能。為了減少相加的部分乘積的數(shù)量,修正的Booth算法是最常用的一類算法。為了實(shí)現(xiàn)速度的提高Wallace樹算法可以用來減少序列增加階段的數(shù)量。我們進(jìn)一步結(jié)合修正的booth算法和Wallace樹算法,可以看到將它們集成到一塊乘法器上的諸多優(yōu)勢(shì)。但是,隨著并行化的增多,大量的部分乘積和中間求和的增加,會(huì)導(dǎo)致運(yùn)行速度的下降。不規(guī)則的結(jié)構(gòu)會(huì)增加硅板的面積,并且由于路由復(fù)雜而導(dǎo)致中間連接過程的增多繼而導(dǎo)致功耗的增大。另一方面串并行乘法器犧牲了運(yùn)行速度來獲得更好的性能和功耗。因此,選擇一款并行或串行乘法器實(shí)際上取決于它的應(yīng)用性質(zhì)。在本文中,我們將介紹乘法算法以及在應(yīng)用結(jié)構(gòu)方面的速度比較,占用面積,功率和這些情況的組合績效指標(biāo)。1.3乘運(yùn)算考慮兩個(gè)沒有符號(hào)的二進(jìn)制數(shù)X和Y,分別為M位寬和N位寬。為了說明乘法運(yùn)算,可以用二進(jìn)制形式來表示X和Y:。于是乘法運(yùn)算定義如下:執(zhí)行一個(gè)乘法運(yùn)算最簡單的方法是采用一個(gè)兩輸入的加法器。對(duì)于M和N位寬的輸入,乘法采用一個(gè)N位加法器時(shí)需要M個(gè)周期。這個(gè)乘法的移位相加算法把M個(gè)部分積(partialproduct)加在一起。每一個(gè)部分積是通過將被乘數(shù)與乘數(shù)的一位相乘(這本質(zhì)上是一個(gè)“與”操作),然后將結(jié)果移位到這個(gè)乘數(shù)的位置得到的。實(shí)現(xiàn)乘法的一個(gè)更快的辦法是采用類似于手工計(jì)算乘法的方法。所有的部分積同時(shí)產(chǎn)生并組成一個(gè)列陣。運(yùn)用多操作數(shù)相加來計(jì)算最終的積。這一方法如圖所示。這一組操作可以直接映射到硬件。所形成的結(jié)構(gòu)稱為陣列乘法器(arraymultiplier),它結(jié)合下面三個(gè)功能:產(chǎn)生部分積、累加部分積和最終相加。例如:例如:1101被乘數(shù)1101乘數(shù)1101部分積00001101110110010101結(jié)果二進(jìn)制乘法的例子1.4乘法器結(jié)構(gòu)乘法器的結(jié)構(gòu)種類很多,在此我只介紹一種乘法器結(jié)構(gòu)供接下來設(shè)計(jì)移位相加乘法器結(jié)構(gòu)的設(shè)計(jì)做參考。浮點(diǎn)數(shù)包括尾數(shù)和指數(shù)兩部分,尾數(shù)部分進(jìn)行的是乘法運(yùn)算,指數(shù)部分進(jìn)行的是加法運(yùn)算,并依據(jù)尾數(shù)運(yùn)算結(jié)果進(jìn)行指數(shù)調(diào)整。圖2-1乘法器結(jié)構(gòu) 尾數(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)整即可完成乘法功能。1.5乘法器端口定義通常,根據(jù)乘法器的功能計(jì)算要求定義乘法器的端口如下:mul_16_unsignedmul_16_unsignedain[15..0]ain[15..0]startbin[15..0]doneclkyoutrst_nain:16位乘數(shù)輸入 bin:16位被乘數(shù)輸入 clk:工作時(shí)鐘輸入 res_n:復(fù)位信號(hào)輸入 start:開始位 done:結(jié)束位yout:乘積輸出第二章移位相加乘法器設(shè)計(jì)的基本原理移位相加乘法器實(shí)現(xiàn)起來比較簡單,它的設(shè)計(jì)思想就是根據(jù)乘數(shù)的每一位是否為1進(jìn)行計(jì)算,若為1則將被乘數(shù)移位相加。一個(gè)乘法器只需要一個(gè)移位寄存器和一個(gè)加法器就能組成。2.1移位相加乘法器設(shè)計(jì)基礎(chǔ)2.1.1移位相加算法移位相加算法是乘法器最基礎(chǔ)的算法,下面以一個(gè)例子說明移位相加法實(shí)現(xiàn)M×N。手動(dòng)乘法運(yùn)算舉例:1101×1011110111010000﹢110110001111計(jì)算機(jī)實(shí)現(xiàn)方案1:部分積左移:1101×10111101﹢1101100111﹢0000100111﹢110110001111計(jì)算機(jī)實(shí)現(xiàn)方案2:部分積之和右移:1101×10111101第一次部分積1101部分積之和右移1位﹢1101第二次部分積100111部分積之和100111部分積之和右移1位﹢0000第三次部分積100111部分積之和100111部分積之和右移1位﹢1101第四次部分積10001111部分積之和10001111部分積之和右移1位2.1.2乘法器設(shè)計(jì)原理乘法器基本工作原理大體分為三個(gè)步驟:(1)先將二進(jìn)制的被乘數(shù)與乘數(shù)的每一位分別相乘,得到與乘數(shù)的位數(shù)相同個(gè)數(shù)的部分積;(2)將得到的部分積按權(quán)值錯(cuò)位相加,進(jìn)行部分積壓縮;(3)一級(jí)加法,通常采用一個(gè)超前進(jìn)位加法器模塊。對(duì)乘法器的設(shè)計(jì)自然集中在各模塊的性能優(yōu)化上,以達(dá)到速度快、面積小的目的。2.2移位相加乘法器原理從手算的經(jīng)驗(yàn)可知執(zhí)行一個(gè)乘法運(yùn)算最簡單的方法就是采用一個(gè)兩輸入的加法器,進(jìn)行部分積的累加,得到最終結(jié)果。對(duì)于N位的乘數(shù)與N位的被乘數(shù)的輸入,實(shí)現(xiàn)乘法運(yùn)算需要N個(gè)加法器與2N個(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)。許多加法器結(jié)構(gòu)都是應(yīng)乘法器設(shè)計(jì)要求而生,如CPA(carry2propagateadder)、CSA(carry2saveadder)[7]和Wallacetree[8]等。移位相加乘法器優(yōu)點(diǎn)是占用資源少。在第一個(gè)時(shí)鐘來的時(shí)候,把乘數(shù)的最低位與被乘數(shù)相與,當(dāng)?shù)诙€(gè)時(shí)鐘到來時(shí),仍然可以用剛才的與門來進(jìn)行相與。這樣,即使乘數(shù)有多少位,都是用相同的與門:缺點(diǎn)是運(yùn)算速度慢,每次時(shí)鐘乘數(shù)輸入一位,假設(shè)乘數(shù)有4位,就需要4個(gè)時(shí)鐘周期才可以把結(jié)果輸出。圖3-1圖3-1移位相加乘法器第三章16×16位移位相加乘法器設(shè)計(jì)與仿真3.116位移位相加乘法器的設(shè)計(jì)位移和添加乘法器的一般結(jié)構(gòu)如下圖所示,對(duì)于32比特的數(shù)乘運(yùn)算,根據(jù)乘數(shù)最低有效位的數(shù)值,被乘數(shù)的數(shù)值被相加并累積。在每一個(gè)時(shí)鐘循環(huán)周期內(nèi),乘數(shù)被左移一個(gè)比特,并且它的位值被測(cè)試,如果位值是0,則只進(jìn)行一次位移操作。如果位值是1,則被加數(shù)被放入累加器中,并且左移一位。當(dāng)所有乘數(shù)的比特值被測(cè)試完之后,結(jié)果就在累加器當(dāng)中。累加器最初是N位,相加之后變成2N位,最低有效位包涵了乘數(shù)。延遲是N個(gè)最大循環(huán)周期。3.216位移位相加乘法器Verilog文件設(shè)計(jì)完整的16×16位移位相加乘法器的Verilog文件設(shè)計(jì)和激勵(lì)測(cè)試文件將會(huì)在附件中給出,下面我只對(duì)本乘法器的重要部分做下說明。modulemux_16(clk,rst_n,start,ain,bin,yout,done);reg[15:0]areg;reg[15:0]breg;reg[31:0]yreg;regdone_r;reg[4:0]i;這部分是我定義了一個(gè)時(shí)鐘clk,一個(gè)復(fù)位鍵rst_n,一個(gè)開始鍵start,輸入乘數(shù)ain,輸入被乘數(shù)bin,輸出yout,和結(jié)束位done。以及定義了兩個(gè)16位寄存器areg,breg,一個(gè)32位寄存器yerg,一個(gè)1位寄存器done_r,一個(gè)5位寄存器i。always@(posedgeclkornegedgerst_n)if(!rst_n)i<=5'd0;elseif(start&&i<5'd17)i<=i+1'b1;elseif(!start)i<=5'd0;always@(posedgeclkornegedgerst_n)if(!rst_n)done_r<=1'd0;elseif(i==5'd16)done_r<=1'b1;elseif(i==5'd17)done_r<=1'b0;assigndone=done_r;這部分主要對(duì)開始位start和終止位done的約束。always@(posedgeclkornegedgerst_n)beginif(!rst_n)beginareg<=16'h0000;breg<=16'h0000;yreg<=32'h00000000;endelseif(start)beginif(i==5'd0)beginareg<=ain;breg<=bin;endelseif(i>5'd0&&i<5'd16)beginif(areg[i-1])yreg<={1'b0,yout[30:15]+breg,yreg[14:1]};elseyreg<=yreg>>1;endelseif(i==5'd16&&areg[15])yreg<=yreg[31:16]+breg;end這部分是移位相加乘法器的運(yùn)算方法。3.316×16位移位相加乘法器Modelsim仿真Modelsim仿真工具是Model公司開發(fā)的,它支持Verilog、VHDL以及他們的混合仿真。它可以將整個(gè)程序分步執(zhí)行,使設(shè)計(jì)者直接看到他的程序下一步要執(zhí)行的語句,而且在程序執(zhí)行的任何步驟任何時(shí)刻都可以查看任意變量的當(dāng)前值,可以在Dataflow窗口查看某一單元或模塊的輸入輸出的連續(xù)變化等。比Quartus自帶的仿真器功能強(qiáng)大的多,是目前業(yè)界最通用的仿真器之一。在采用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)就是為所測(cè)試的元件提供一個(gè)測(cè)試激勵(lì),仿真結(jié)果可以以波形的方式顯示或存儲(chǔ)測(cè)試結(jié)果到文件中。激勵(lì)信號(hào)可以直接集成在測(cè)試平臺(tái)文件中,也可以外部文件加載,在這里我們采用集成在測(cè)試平臺(tái)中如圖5-1。圖3-2仿真測(cè)試平臺(tái)仿真模擬文件是采用軟件方法模擬一個(gè)乘法器,在編寫的時(shí)候并不考慮硬件情況所以是不可綜合的。它僅僅用于仿真,在相同的測(cè)試激勵(lì)下會(huì)產(chǎn)生和待測(cè)試文件一樣的乘法結(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é)果都是正確的。仿真測(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è)試代碼部分。3.3.116×16位移位相加乘法器經(jīng)典數(shù)組運(yùn)算結(jié)果在數(shù)字電路設(shè)計(jì)流程中,在進(jìn)行電路綜合前,必須要確保所設(shè)計(jì)的電路功能的正確性,本課題針對(duì)所設(shè)計(jì)的16*16位移位相加乘法器的verilog設(shè)計(jì)進(jìn)行功能仿真,采用的是Mentor公司的仿真器Modelsim,仿真結(jié)果如下。上圖是16位的0×0的功能仿真結(jié)果,根據(jù)第二節(jié)中闡述的二進(jìn)制乘法的基本原理,對(duì)于被乘數(shù)與乘數(shù)都是16位的運(yùn)算,可獲得32位二進(jìn)制,由仿真結(jié)果,在運(yùn)算結(jié)果正確的同時(shí),位數(shù)也保持著正確。1×10×13.3.216×16位移位相加乘法器一般情況運(yùn)算結(jié)果89×3324945×32580第四章16×16位移位相加乘法器Verilog設(shè)計(jì)綜合4.1RTL級(jí)概念RTL的全稱為寄存器傳輸級(jí)(RegisterTransferLevel),它是對(duì)芯片設(shè)計(jì)的一種層次的抽象描述。不同于行為級(jí)和門級(jí)描述,RTL級(jí)的重點(diǎn)是寄存器和其間的邏輯。和行為級(jí)相比,RTL級(jí)的描述更加規(guī)范和嚴(yán)格,可以使用工具轉(zhuǎn)換成門級(jí)電路;但比起門級(jí)電路,由于抽象層次高,RTL級(jí)的描述更清晰,容易理解。在RTL級(jí),設(shè)計(jì)被抽象為一系列的寄存器,而信號(hào)隨著時(shí)鐘從一個(gè)寄存器傳遞到另一個(gè)寄存器,如圖4-1所示。寄存器寄存器寄存器寄存器組合邏輯組合邏輯組合邏輯組合邏輯這一模型反映了數(shù)字系統(tǒng)的幾個(gè)要素、寄存器組成的時(shí)序邏輯、寄存器之間的組合邏輯以及關(guān)鍵的時(shí)鐘信號(hào)。雖然還不是具體的電路,但RTL級(jí)設(shè)計(jì)作為描述電路的另一種方法,必須是物理的可實(shí)現(xiàn)的。所以,真正的芯片設(shè)計(jì)應(yīng)該是從RTL代碼的編寫開始的。具體來說,RTL級(jí)設(shè)計(jì)應(yīng)該考慮以下因素:可綜合性:RTL級(jí)設(shè)計(jì)完成后的工作就是綜合,因此RTL級(jí)設(shè)計(jì)必須是可綜合的。首先,編寫代碼使用的預(yù)言必須是可綜合的。目前,編寫RTL代碼一般使用VHDL或VerilogHDL語言,這兩種語言中,并不是所有的語言成分都是可綜合的,可綜合的子集取決于綜合工具的能力。但I(xiàn)EEE為這兩種語言的綜合分別制定了相應(yīng)的標(biāo)準(zhǔn),規(guī)定了綜合工具必須支持的最小集合,分別是針對(duì)VHDL的IEEE1076.6和針對(duì)Verilog的IEEE1364.1.在此基礎(chǔ)上,RTL級(jí)設(shè)計(jì)還應(yīng)該是“面向綜合”的。因?yàn)椋词雇耆褂每删C合的語言成分,不同的代碼產(chǎn)生的綜合結(jié)果也會(huì)大不相同。更高的要求是編寫代碼時(shí)沖分考慮到綜合的工作,通過靚號(hào)的編碼使綜合以及此后的其它實(shí)現(xiàn)步驟可以順利地進(jìn)行,減少反復(fù)。可測(cè)性:由于測(cè)試在芯片設(shè)計(jì)中的重要性,現(xiàn)在必須在RTL級(jí)就開始考慮測(cè)試的問題。這雖然不是RTL所必須的,但如果不在RTL編碼時(shí)就為測(cè)試作出努力,而是把測(cè)試完全交給后端,最后的結(jié)果可能是根本無法達(dá)到要求的故障覆蓋率,而不得不在RTL級(jí)進(jìn)行返工。重用性:RTL級(jí)設(shè)計(jì)時(shí)應(yīng)考慮到的另一個(gè)問題就是代碼的可讀性和可移植性,這在大型的設(shè)計(jì)中尤為重要。今天的百萬門級(jí)的設(shè)計(jì)不可能是每個(gè)模塊從頭開始,甚至有可能全部使用IP或現(xiàn)有的模塊,這樣既縮短了設(shè)計(jì)的時(shí)間,也減少了風(fēng)險(xiǎn)。這就要求代碼的編寫者盡可能地完善代碼的重要性。那種幾個(gè)月后連自己也看不懂的代碼是絕對(duì)不可取的。4.其它的考慮:要實(shí)現(xiàn)高質(zhì)量的RTL級(jí)設(shè)計(jì)還應(yīng)該考慮到時(shí)序收斂、可驗(yàn)證性、可調(diào)試性、芯片面積和功耗等問題??傊琑TL級(jí)設(shè)計(jì)雖然不是設(shè)計(jì)的最終結(jié)果,但它在很大程度上已經(jīng)決定了設(shè)計(jì)的功能和性能。雖然可以通過此后的綜合或者布局布線對(duì)設(shè)計(jì)進(jìn)行一定程度的優(yōu)化,但優(yōu)化結(jié)果很依賴于RTL級(jí)設(shè)計(jì)。高質(zhì)量的RTL設(shè)計(jì)可以使后端的工作輕松地達(dá)到設(shè)計(jì)目標(biāo):相反,質(zhì)量差的RTL級(jí)設(shè)計(jì),可能使后端設(shè)計(jì)困難重重,甚至無法完成,最終不得不回過頭修改RTL級(jí)設(shè)計(jì)。毫不夸張地說。在RTL級(jí)設(shè)計(jì)中的一個(gè)改進(jìn)所產(chǎn)生的作用,往往要比這綜合或后端設(shè)計(jì)中的一個(gè)改進(jìn)效果大得多。這就要求RTL級(jí)的設(shè)計(jì)者不應(yīng)依賴于后端的工具解決延時(shí)、面積、測(cè)試等問題,而是應(yīng)該將注意力集中到RTL級(jí)設(shè)計(jì)中,從一開始就考慮到綜合,考慮到最終生成的電路。4.2RTL級(jí)綜合結(jié)果與分析以下是在仿真中得到的對(duì)設(shè)計(jì)面積,運(yùn)行時(shí)間,約束時(shí)間的報(bào)告。Report:constraint-verbose由上述報(bào)告能夠看出在電路的約束時(shí)間上,要求的時(shí)間為0.17s,到達(dá)的時(shí)間為0.18s,時(shí)間裕量0.1s。此乘法器的對(duì)大傳輸時(shí)間為4.50s,一般的傳輸時(shí)間為2.01s,時(shí)間裕量為2.49s。最大電容0.16f。一般電容0.08f。電容裕量0.08f。Report:timing-pathfull-delaymax-max_paths1由上述報(bào)告能夠看出在電路的延時(shí)時(shí)間上要求延時(shí)時(shí)間為4.50s。實(shí)際到達(dá)時(shí)間為4.49s,時(shí)間裕量為0.01s,符合要求。Report:area由上述報(bào)告能夠看出在電路的面積上有68個(gè)端口,分別是乘數(shù)輸入16個(gè)端口,被乘數(shù)輸入16個(gè)端口,乘積輸出32個(gè)端口,開始端口,結(jié)束端口,工作時(shí)鐘輸入端口,復(fù)位信號(hào)輸入端口。有290條連線和217個(gè)單元組成。組合區(qū)域面積為5794.588876立方微米,非組合區(qū)域面積為4896.460846立方微米??偣矄卧娣e10691.049722立方微米。4.316位移位相加乘法器電路圖所謂的DC即DesignCompiler。它是十多年來工業(yè)界標(biāo)準(zhǔn)的邏輯綜合工具,也是Synopsys最核心的產(chǎn)品。它使IC設(shè)計(jì)者在最短的時(shí)間內(nèi)最佳的利用硅片完成設(shè)計(jì)。它根據(jù)設(shè)計(jì)描述和約束條件并針對(duì)特定的工藝庫自動(dòng)綜合出一個(gè)優(yōu)化的門級(jí)電路。它可以接受多種輸入格式,如硬件描述語言、原理圖和網(wǎng)表等,并產(chǎn)生多種性能報(bào)告,在縮短設(shè)計(jì)時(shí)間的同時(shí)提高設(shè)計(jì)性能。所以Synopsys公司DesignCompilerEDA工具在綜合時(shí)用可以進(jìn)行RTL級(jí)設(shè)計(jì)綜合,得到門級(jí)網(wǎng)表。以下是我通過Synopsys公司DesignCompilerEDA工具在綜合時(shí)得到的結(jié)果。綜合單元綜合端口優(yōu)化前的電路圖最終得到的優(yōu)化后的電路圖結(jié)論本文采用自上而下的正向設(shè)計(jì)方法在仔細(xì)分析了移位相加算法和乘法器結(jié)構(gòu)的基礎(chǔ)之上設(shè)計(jì)了一種16×16位移位相加乘法器,可以實(shí)現(xiàn)16位和16位數(shù)的乘法運(yùn)算。通過VerilogHDL語言進(jìn)行了硬件電路的描述,通過對(duì)電路進(jìn)進(jìn)行RTL級(jí)的設(shè)計(jì)描述。然后編寫測(cè)試激勵(lì)程序,用Mentor公司的Modelsim仿真器進(jìn)行功能仿真,完成了功能驗(yàn)證。并利用Synopsys公司的DesignCompilerEDA工具,編寫綜合腳本文件,利用所編寫的DC腳本文件把設(shè)計(jì)的VerilogHDL描述的乘法器綜合成與標(biāo)準(zhǔn)單元庫相關(guān)的門級(jí)設(shè)計(jì),完成了電路的實(shí)現(xiàn)。而該電路的功能仿真和驗(yàn)證都已經(jīng)正確通過,驗(yàn)證表明乘法器具有優(yōu)良的性能。最后得到了電路的門級(jí)網(wǎng)表,完成了本課題的設(shè)計(jì)目的,獲得16位移位相加乘法器的電路。參考文獻(xiàn)[1]雷紹充,邵志標(biāo),梁峰.超大規(guī)模集成電路測(cè)試[M].北京:電子工業(yè)出版社,2008:25-32[2]馬慧艷.集成電路微控制器的掃描測(cè)試以及內(nèi)建自測(cè)試的研究[D].天津:天津大學(xué),2007[3]E.J.McCluskeyandS.Bozorgui-Nesbat.DesignforAutonomousTest[J].IEEETrans.Computer,Vol.C-30,No.11,1981,860-875[4]A.KraaasniweskiandS.Pilarkski,CircularSelf-TestPath:aLowCostBISTTechniqueforVLSICircuits[J].IEEETrans.Computer-AidedDesign,Vol,CAD-8,No.11989,46-55[5]姚俊.基于BIST的嵌入式存儲(chǔ)器可測(cè)試設(shè)計(jì)算法研究[D].哈爾濱:哈爾濱工程大學(xué),2007[6]孟慶.SOC設(shè)計(jì)中IP核的測(cè)試方法與應(yīng)用[D],浙江:浙江大學(xué),2004[7]于敦山,沈緒榜.32位定/浮點(diǎn)乘法器設(shè)計(jì)[J].半導(dǎo)體學(xué)報(bào),2001,22(1):91-95.[9]王鈿,卓興旺.基于VerilongHDL的數(shù)字系統(tǒng)設(shè)計(jì)應(yīng)用設(shè)計(jì).第二版.北京:國防工業(yè)出版社,2007-8[10]JohnF.Wakerly.數(shù)字設(shè)計(jì)原理與實(shí)踐(原書第四版).北京:機(jī)械工業(yè)出版社,2007-5[11]CliffordECummings.SynthesisandScriptingTechniquesforDesigningMulti-AsynchronousClockDesign.

SUNG-2001SanJose,CAVotedBestPaper[12]夏宇聞.Verilog數(shù)字系統(tǒng)設(shè)計(jì)教程.北京:北京航空航天大學(xué)出版社,2003[13]MichaelD.Ciletti.VerilogHDL高級(jí)數(shù)字設(shè)計(jì).北京:電子工業(yè)出版社,2005[14]MarkBalch.完整的數(shù)字設(shè)計(jì).北京:清華大學(xué)出版社,2006:75-94[15]MichaelDCiletti.AdvancedDigitalDesignwiththeVerilogHDL[M].影印版.北京:電子工業(yè)出版社,2004.115-119[16]唐杉,徐強(qiáng),王莉薇.數(shù)字IC設(shè)計(jì)[D].北京:機(jī)械工業(yè)出版社,2001附錄一modulemux_16(clk,rst_n,start,ain,bin,yout,done);inputclk;inputstart;inputrst_n;input[15:0]ain;input[15:0]bin;output[31:0]yout;outputdone;reg[15:0]areg;reg[15:0]breg;reg[31:0]yreg;regdone_r;reg[4:0]i;always@(posedgeclkornegedgerst_n)if(!rst_n)i<=5'd0;elseif(start&&i<5'd17)i<=i+1'b1;elseif(!start)i<=5'd0;always@(posedgeclkornegedgerst_n)if(!rst_n)done_r<=1'd0;elseif(i==5'd16)done_r<=1'b1;elseif(i==5'd17)done_r<=1'b0;assigndone=done_r;always@(posedgeclkornegedgerst_n)beginif(!rst_n)beginareg<=16'h0000;breg<=16'h0000;yreg<=32'h00000000;endelseif(start)beginif(i==5'd0)beginareg<=ain;breg<=bin;endelseif(i>5'd0&&i<5'd16)beginif(areg[i-1])yreg<={1'b0,yout[30:15]+breg,yreg[14:1]}elseyreg<=yreg>>1;endelseif(i==5'd16&&areg[15])yreg<=yreg[31:16]+breg;endendassignyout=yreg;endmodule。附錄二`timescale1ns/100psmodulemux_16_vlg_tst();regeachvec;reg[15:0]ain;reg[15:0]bin;regclk;regrst_n;regstart;wiredone;wire[31:0]yout;mux_16i1(.ain(ain),.bin(bin),.clk(clk),.done(done),.rst_n(rst_n),.start(start),.yout(yout));initialbeginclk=0;forever#10clk=~clk;endinitialbeginrst_n=0;start=0;ain=16'd0;bin=16'd0;#500rst_n=1'b1;#500ain=16'd0;bin=16'd0;#500ain=16'd1;bin=16'd1;#500ain=16'd0;bin=16'd1;#500ain=16'd89;bin=16'd33;#500ain=16'd65432;bin=16'd65355;#500start=1'b1;#50000start=1'b0;#1000$stop;endEndmodule附錄三****************************************Report:constraint-verboseDesign:mux_16Version:C-2009.06Date:TueDec1009:59:022013****************************************Startpoint:yreg_reg[16](risingedge-triggeredflip-flopclockedbyclk)Endpoint:yreg_reg[15](risingedge-triggeredflip-flopclockedbyclk)PathGroup:clkPathType:maxPointIncrPathclockclk(riseedge)0.000.00clocknetworkdelay(ideal)0.000.00yreg_reg[16]/CK(DFFRHQX4)0.000.00ryreg_reg[16]/Q(DFFRHQX4)0.230.23fadd_49_S2/U11/Y(AND2X1)0.250.48fadd_49_S2/U8/Y(NAND2XL)0.120.60radd_49_S2/U10/Y(NAND3X1)0.120.72fadd_49_S2/U1_2/CO(ADDFX2)0.341.06fadd_49_S2/U1_3/CO(CMPR32X1)0.331.40fadd_49_S2/U1_4/CO(ADDFHX2)0.241.63fadd_49_S2/U1_5/CO(ADDFHX2)0.241.87fadd_49_S2/U1_6/CO(ADDFHX2)0.222.09fadd_49_S2/U13/Y(NAND2X1)0.092.19radd_49_S2/U3/Y(NAND3X1)0.122.31fadd_49_S2/U1_8/CO(ADDFHX2)0.232.54fadd_49_S2/U1_9/CO(ADDFHX2)0.222.76fadd_49_S2/U1_10/CO(ADDFHX2)0.222.98fadd_49_S2/U1_11/CO(ADDFHX2)0.223.20fadd_49_S2/U22/Y(NAND2X1)0.093.30radd_49_S2/U24/Y(NAND3X1)0.123.42fadd_49_S2/U1_13/CO(ADDFX2)0.353.76fadd_49_S2/U1_14/CO(ADDFHX2)0.244.00fadd_49_S2/U25/Y(XOR2X1)0.254.25fU196/Y(AOI22XL)0.154.40rU273/Y(NAND2X1)0.094.49fyreg_reg[15]/D(DFFRHQX4)0.004.49fdataarrivaltime4.49clockclk(riseedge)5.005.00clocknetworkdelay(ideal)0.005.00clockuncertainty-0.204.80yreg_reg[15]/CK(DFFRHQX4)0.004.80rlibrarysetuptime-0.304.50datarequiredtime4.50datarequiredtime4.50dataarrivaltime-4.49slack(MET)0.01Startpoint:ain[0](inputport)Endpoint:areg_reg[0](risingedge-triggeredflip-flopclockedbyclk)PathGroup:clkPathType:minPointIncrPathclock(inputportclock)(riseedge)0.000.00clocknetworkdelay(ideal)0.000.00inputexternaldelay0.000.00fain[0](in)0.000.00fU228/Y(MX2X1)0.180.18fareg_reg[0]/D(DFFRHQX1)0.000.18fdataarrivaltime0.18clockclk(riseedge)0.000.00clocknetworkdelay(ideal)0.000.00clockuncertainty0.200.20areg_reg[0]/CK(DFFRHQX1)0.000.20rlibraryholdtime-0.030.17datarequiredtime0.17datarequiredtime0.17dataarrivaltime-0.18slack(MET)0.01Net:n192max_transition4.50-TransitionTime2.01Slack2.49(MET)Net:n192max_capacitance0.16-Capacitance0.08Slack0.08(MET)附錄四****************************************Report:areaDesign:mux_16Version:C-2009.06Date:TueDec1009:59:022013****************************************Library(s)Used:slow(File:/export/homeO5/caobei/libs/synopsys/slow.db)Numberofports:68Numberofnets:290Numberofcells:217Numberofreferences:30Combinationalarea:5794.588876Noncombinationalarea:4896.460846NetInterconnectarea:undefined(Nowireloadspecified)Totalcellarea:10691.049722Totalarea:undefined附錄五****************************************Report:timing-pathfull-delaymax-max_paths1Design:mux_16Version:C-2009.06Date:TueDec1009:59:022013****************************************OperatingConditions:slowLibrary:slowWireLoadModelMode:topStartpoint:yreg_reg[16](risingedge-triggeredflip-flopclockedbyclk)Endpoint:yreg_reg[15](risingedge-triggeredflip-flopclockedbyclk)PathGroup:clkPathType:maxPointIncrPathclockclk(riseedge)0.000.00clocknetworkdelay(ideal)0.000.00yreg_reg[16]/CK(DFFRHQX4)0.000.00ryreg_reg[16]/Q(DFFRHQX4)0.230.23fadd_49_S2/A[0](mux_16_DW01_add_0)0.000.23fadd_49_S2/U11/Y(AND2X1)0.250.48fadd_49_S2/U8/Y(NAND2XL)0.120.60radd_49_S2/U10/Y(NAND3X1)0.120.72fadd_49_S2/U1_2/CO(ADDFX2)0.341.0add_49_S2/U1_3/CO(CMPR32X1)0.33

溫馨提示

  • 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. 人人文庫網(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)論