VHDL實(shí)現(xiàn)16位全加器_第1頁
VHDL實(shí)現(xiàn)16位全加器_第2頁
VHDL實(shí)現(xiàn)16位全加器_第3頁
VHDL實(shí)現(xiàn)16位全加器_第4頁
VHDL實(shí)現(xiàn)16位全加器_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、VLSI電路和系統(tǒng)設(shè)計 設(shè)計題2:CMOS數(shù)字集成電路設(shè)計用VHDL語言實(shí)現(xiàn)十六位全加器姓名:托列吾別克·馬杰尼班級:電路與系統(tǒng)01班學(xué)號:2012210201412013/11/24基于VHDL的16位全加器的設(shè)計1.1設(shè)計題目的內(nèi)容及要求1.1.1目的: CMOS數(shù)字集成電路設(shè)計流程及數(shù)字集成電路自動化設(shè)計,包括功能驗(yàn)證、VHDL/Verlog建模、同步電路設(shè)計、異步數(shù)據(jù)獲取、能耗與散熱、信號完整性、物理設(shè)計、設(shè)計驗(yàn)證等技術(shù)1.1.2內(nèi)容: 主要實(shí)驗(yàn)內(nèi)容是用0.18m數(shù)字CMOS工藝,VHDL或Verlog設(shè)計一個16位全加器,用Synthesis 仿真工具驗(yàn)證功能,電路合成,及

2、性能檢測。1.1.3主要測試參數(shù)及指標(biāo)范圍: 16位的全加器主要的設(shè)計指標(biāo)是高于1GHz的頻率,功耗,物理面積大小等參數(shù)。1.2全加器的組成和原理分析全加器是常用的組合邏輯模塊中的一種,對全加器的分析和對組合邏輯電路的分析一樣。組合邏輯電路的分析,就是找出給定電路輸入和輸出之間的邏輯關(guān)系,從而了解給定邏輯電路的邏輯功能。組合邏輯電路的分析方法通常采用代數(shù)法,一般按下列步驟進(jìn)行:(1)根據(jù)所需要的功能,列出真值表。(2)根據(jù)真值表,寫出相應(yīng)的邏輯函數(shù)表達(dá)式。(3)根據(jù)真值表或邏輯函數(shù)表達(dá)式,畫出相應(yīng)的組合邏輯電路的邏輯圖 1。(4)用VHDL編寫程序在QUARTUS上進(jìn)行模擬,并分析結(jié)果的正確性

3、。1.3 全加器簡介全加器是組合邏輯電路中最常見也最實(shí)用的一種,考慮低位進(jìn)位的加法運(yùn)算就是全加運(yùn)算,實(shí)現(xiàn)全加運(yùn)算的電路稱為全加器。它主要實(shí)現(xiàn)加法的運(yùn)算,其中分為并行全加器和串行全加器,所謂并行就是指向高位進(jìn)位時是并行執(zhí)行的,而串行就是從低位到高位按順序執(zhí)行,為了提高運(yùn)算,必須設(shè)法減小或消除由于進(jìn)位信號逐級傳遞所消耗的時間,為了提高運(yùn)算速度,制成了超前進(jìn)位加法器,這是對全加器的一種創(chuàng)新2。1.3.1半加器的基本原理如果不考慮有來自低位的進(jìn)位將兩個1位二進(jìn)制數(shù)相加,稱為半加。實(shí)現(xiàn)半加運(yùn)算的電路稱為半加器。按照二進(jìn)制加法運(yùn)算規(guī)則可以列出如表2所示的半加器真值表,其中A、B是兩個加數(shù),S是相加的和,C

4、O是向高位的進(jìn)位。將S、CO和A、B的關(guān)系寫成邏輯表達(dá)式則得到S=A B+A B=A+BCO=AB輸    入輸     出ABSCO0000011010101101表1  半加器的真值表因此,半加器是由一個異或門和一個與門組成的,如圖1所示。圖 1 半加器原理圖1.3.2 一位全加器的原理全加器執(zhí)行加數(shù),被減數(shù)和低位來的進(jìn)位信號相加,并根據(jù)求和結(jié)果給出該進(jìn)位信號。(1)根據(jù)全加器所需要的功能,我們可以設(shè)計出一位全加器的組合邏輯框圖。如圖2所示。 &=11=1& 圖2 一位全加器的邏輯圖(2)根據(jù)邏

5、輯圖我們可以寫出各個器件的邏輯功能。Ci = Xi Y i Ci-1+X i Y i C i-1+X i Y i C i-1+X i Y i C i-1 = (X i Y i)C i-1+X i Y iFi = XiYiC i-1 + XiYiC i-1 +XiYiC i-1 + XiYiC i-1 = XiYiC i-1(3)由上面可得。Xi和Yi為兩個輸入的一位二進(jìn)制書,Ci-1為低位二進(jìn)制數(shù)相加的進(jìn)位輸出到本位的輸入,則Fi為本位二進(jìn)制數(shù)Xi、Yi和低位進(jìn)位輸入Ci-1的相加之和,Ci為Xi、Yi和低位進(jìn)位輸入Ci-1相加向高位的進(jìn)位輸出。因此,該電路可以完成一位二進(jìn)制數(shù)全加的功能,稱為

6、全加器。此電路的真值表如表2所示。XiYiCi-1FiCi0000001010100101100100110011011010111111表2 一位全加器真值表1.4 十六位全加器的設(shè)計設(shè)計16位的全加器思路非常簡單且清晰,第一種方法就是先設(shè)計一個半加器和一個或門,然后兩個半加器合并成一個一位的全加器,最后用16個一位的全加器組合成為一個16位的全加器;第二種方法就是先設(shè)計一個一位的全加器,然后在用16個串聯(lián)或并聯(lián)就組成了一個16位的全加器,而本次設(shè)計采用采用的是第一種方法。 圖3 一位全加器的級聯(lián)原理圖十六位全加器有十六個一位全加器的級聯(lián)組成的,最低位的借位信號時整個全加器的借位信號Cin,

7、最高位的進(jìn)位信號是十六位全加器的進(jìn)位信號,每位之間通過進(jìn)位信號鏈接,兩個十六位加數(shù)的每一位并聯(lián)輸入,和數(shù)SUM的每一位并聯(lián)輸出,完成兩個十六位的數(shù)的加法。1.5用VHDL編寫代碼實(shí)現(xiàn)16位全加器本次實(shí)驗(yàn)使用 Altera FPGA/CPLD 的開發(fā)工具 Quartus ,利用編寫VHDL代碼設(shè)計方法設(shè)計一個16位加法器,并用Quartus的綜合仿真工具實(shí)現(xiàn)電路的綜合,電路功能的驗(yàn)證,并最后查看綜合后的RLT電路框圖來驗(yàn)證設(shè)計與原邏輯設(shè)計符不符合要求,我們還可以借用powerplay功率分析工具對設(shè)計后的電路進(jìn)行功耗分析。本次設(shè)計有一個頂層模塊(16位全加器)和三個底層模塊,它們分別為一位全加器

8、和組成一位全加器的半加器模塊和或門模塊。因此我們要用從底層到頂層的設(shè)計思路,以半加器+或門 >一位全加器>16位全加器的為設(shè)計順序。以下為半加器和活門的VHDL程序代碼(1) 半加器的VHDL代碼 library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity h_adder is port(a,b:in std_logic; co:out std_logic; so:out std_logic );end h_adder;arc

9、hitecture one of h_adder isbegin so<=a xor b; co<=a and b;end one;(2) 或門的VHDL代碼library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity or2a is port(a,b:in std_logic; c:out std_logic ); end or2a;architecture one of or2a isbegin c<=a or b;e

10、nd one;由全加器的邏輯圖可以看出,全加器由兩個半加器和一個或門組成。在VHDL語言中我們可以在一個模塊的代碼中用component語句調(diào)用低層的模塊。這樣可以避免寫更多的繁瑣的代碼,也可以提高程序的可讀性,也有利于實(shí)際電路在延時等關(guān)鍵技術(shù)性問題上的優(yōu)越性。(3) 一位全加器的VHDL代碼library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity f_adder is port(ain:in std_logic; bin:in std

11、_logic; cin:in std_logic; coutf:out std_logic; sumf:out std_logic ); end f_adder; architecture one of f_adder is component h_adder port(a:in std_logic; b:in std_logic; co:out std_logic; so:out std_logic ); end component; component or2a port(a:in std_logic; b:in std_logic; c:out std_logic ); end comp

12、onent; signal d,e,f:std_logic;begin u1:h_adder port map(a=>ain,b=>bin,co=>d,so=>e); u2:h_adder port map(a=>e,b=>cin,co=>f,so=>sumf); u3:or2a port map(a=>d,b=>f,c=>coutf);end one;從上述的設(shè)計思路中和全加器的級聯(lián)設(shè)計方案中看到,實(shí)現(xiàn)16位全加器的關(guān)鍵是實(shí)現(xiàn)每級全加器到下一級全加器的信號的控制,以此實(shí)現(xiàn)模塊之間的協(xié)調(diào)和整個系統(tǒng)的穩(wěn)定性。在實(shí)現(xiàn)16加法器中我們

13、同樣用上述的component語句,在頂層中調(diào)用底層的模塊,并巧妙地實(shí)現(xiàn)每個模塊之間的級聯(lián)。以下為一種設(shè)計法方案。(4)16位加法器的VHDL代碼library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity new_adder16 is port(a:in std_logic_vector(15 downto 0); b:in std_logic_vector(15 downto 0); cin:in std_logic; sum:out std_logic_vector(15 downto 0)

14、; cout:out std_logic ); end; architecture one of new_adder16 is component f_adder port(ain:in std_logic; bin:in std_logic; cin:in std_logic; coutf:out std_logic; sumf:out std_logic ); end component; signal temp:std_logic_vector(16 downto 0); begin temp(0)<=cin; add:for i in 0 to 15 generate loopa

15、dd:f_adder port map(ain=>a(i), bin=>b(i), cin=>temp(i), coutf=>temp(i+1), sumf=>sum(i) ); end generate add; cout<=temp(16);end one;上述代碼中用forgenerate循環(huán)語句和component語句的調(diào)用語句實(shí)現(xiàn)15位信號的加法。因?yàn)閒orgenerate不像for.loop那樣順序執(zhí)行而是并行執(zhí)行的,使用了for.loop,所以對應(yīng)RTL Viewer就比較復(fù)雜,所以forgenerate語句更有效。2.1用 QuartusII

16、實(shí)現(xiàn)16位全加器電路的綜合仿真1)以new_adder16為工程名新建一個工程,我們可以預(yù)先設(shè)置硬件的選擇,本次設(shè)計用MAX系列芯片。2) 新建四個VHDL文件,分別編寫進(jìn)上四個模塊的VHDL代碼。頂層模塊的文件名要工程名一致,在此為new_adder16.vhd. 其余的文件名跟模塊名要一致,以便于以后的綜合和驗(yàn)證過程的調(diào)試。3)實(shí)現(xiàn)編譯和綜合,若無誤則可以仿真了,綜合后Quartus軟件給出設(shè)計中所用到的邏輯單元,引腳等信息,如圖4所示。 圖4 綜合后的元素和管腳使用情況本次設(shè)計中我們用到32個邏輯元素和50個管腳。4)Quartus II內(nèi)置波形編輯程序(Waveform

17、60;Editor)可以生成和編輯波形設(shè)計文件,從而設(shè)計者可觀察和分析模擬結(jié)果。Quartus II中的仿真包括功能仿真和時序仿真,功能仿真檢查邏輯功能是否正確,不含器件內(nèi)的實(shí)際延時分析;時序仿真檢查實(shí)際電路能否達(dá)到設(shè)計指標(biāo),含器件內(nèi)的實(shí)際延時分析。兩種仿真操作類似,只需在Tools菜單中選擇Simulater Tool,在其Simulater mode中進(jìn)行選擇即可在功能仿真之前我們需要生成功能仿真網(wǎng)表(functional simulation netlist),否則仿真中會報錯。本次設(shè)計用隨機(jī)信號進(jìn)行仿真,輸入輸出信號都用16進(jìn)制數(shù)表示。還有,在仿真前要建立

18、波形文件VWF文件,該文件全稱是矢量波形文件(Vector Waveform File),是Quartus II中仿真輸入、計算、輸出數(shù)據(jù)的載體。首先要對電路進(jìn)行功能仿真,以此驗(yàn)證設(shè)計是否符合要求。功能仿真的結(jié)果如圖5所示圖 5 功能仿真結(jié)果從結(jié)果可以看出,本次設(shè)計在功能上能實(shí)現(xiàn)16為數(shù)的相加,進(jìn)位信號Cout也能正常實(shí)現(xiàn)進(jìn)位。在此設(shè)計信號的周期為16ns。通過功能仿真我們可以初步了解電路的功能,并驗(yàn)證設(shè)計結(jié)果與實(shí)際要求是否符合。因?yàn)樵O(shè)計出來的電路要通過硬件實(shí)現(xiàn)相應(yīng)的功能,而實(shí)際硬件中模塊的延時時間比較大,所以驗(yàn)證電路的功能往往不夠的,我們還要驗(yàn)證電路在有延時的條

19、件下能否正常工作,這是eda電路設(shè)計過程的重要技術(shù)指標(biāo)之一,所以我們要以嚴(yán)格的實(shí)際條件下考驗(yàn)我們的設(shè)計方案,以此求得比較符合設(shè)計要求的設(shè)計方案。這次設(shè)計的時序仿真結(jié)果如圖6所示圖6 時序仿真的結(jié)果由圖可以看到,相鄰輸出信號之間的延時比較大,此延時引起的信號失真也比較大,我們可以調(diào)大信號的周期來減少信號失真引起的干擾。2.2 RLT viewer工具的使用RTL View 也就是通常所講的能夠查看VHDL或者Verilog HDL對應(yīng)的電路原理圖。這個功能對于使用HDL進(jìn)行邏輯設(shè)計的人員還是很有用的,一方面可以充分理解HDL和硬件電路的對應(yīng)關(guān)系,另一方面可以更加方便的查找設(shè)計中的錯誤。 在將VH

20、DL設(shè)計編譯完成以后,點(diǎn)擊菜單Tools>RTL Viewer,即可看到所對應(yīng)的原理圖,本次設(shè)計的RTL電路圖如圖7所示圖7 RLT電路圖上圖中,可以看到16個一位全加器級聯(lián),最后組成16為全加器,這個結(jié)果跟我們設(shè)計要求相符合。用RLD 還可以看到底層模塊的電路邏輯圖,以下為通過RLT viewer全加器,半加器,和或門看到的各級模塊的邏輯電路圖。圖8一位全加器電路圖一位全加器有兩個半加器和一個或門組成。以下為上圖中h_adder和or2a的詳細(xì)電路框圖。圖9半加器h_adder圖10或門or2a2.4 通過powerplay 功率分析儀分析功耗Quartus II Powerplay功耗分析工具提供的界面使用者能夠在設(shè)計過程中,估計靜態(tài)和動態(tài)功耗。Powerplay Power Analyzer 進(jìn)行適配后功率分析,產(chǎn)生高亮的功耗報告,顯示模塊類型和實(shí)體,以及消耗的功率本次設(shè)計的電路通過Powerplay分析后的功耗報告如圖11所示圖11功耗分析結(jié)果圖中顯示了總熱功耗為203.54mW,核心動態(tài)熱功耗為23.27mW,核心統(tǒng)計熱功耗為39.61mW,I/O 熱功耗為140

溫馨提示

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

評論

0/150

提交評論