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

下載本文檔

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

文檔簡(jiǎn)介

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

2、能檢測(cè)。1.1.3主要測(cè)試參數(shù)及指標(biāo)范圍: 16位的全加器主要的設(shè)計(jì)指標(biāo)是高于1GHz的頻率,功耗,物理面積大小等參數(shù)。1.2全加器的組成和原理分析全加器是常用的組合邏輯模塊中的一種,對(duì)全加器的分析和對(duì)組合邏輯電路的分析一樣。組合邏輯電路的分析,就是找出給定電路輸入和輸出之間的邏輯關(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 全加器簡(jiǎn)介全加器是組合邏輯電路中最常見也最實(shí)用的一種,考慮低位進(jìn)位的加法運(yùn)算就是全加運(yùn)算,實(shí)現(xiàn)全加運(yùn)算的電路稱為全加器。它主要實(shí)現(xiàn)加法的運(yùn)算,其中分為并行全加器和串行全加器,所謂并行就是指向高位進(jìn)位時(shí)是并行執(zhí)行的,而串行就是從低位到高位按順序執(zhí)行,為了提高運(yùn)算,必須設(shè)法減小或消除由于進(jìn)位信號(hào)逐級(jí)傳遞所消耗的時(shí)間,為了提高運(yùn)算速度,制成了超前進(jìn)位加法器,這是對(duì)全加器的一種創(chuàng)新2。1.3.1半加器的基本原理如果不考慮有來自低位的進(jìn)位將兩個(gè)1位二進(jìn)制數(shù)相加,稱為半加。實(shí)現(xiàn)半加運(yùn)算的電路稱為半加器。按照二進(jìn)制加法運(yùn)算規(guī)則可以列出如表2所示的半加器真值表,其中A、B是兩個(gè)加數(shù),S是相加的和,CO

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

5、圖我們可以寫出各個(gè)器件的邏輯功能。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為兩個(gè)輸入的一位二進(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è)計(jì)設(shè)計(jì)16位的全加器思路非常簡(jiǎn)單且清晰,第一種方法就是先設(shè)計(jì)一個(gè)半加器和一個(gè)或門,然后兩個(gè)半加器合并成一個(gè)一位的全加器,最后用16個(gè)一位的全加器組合成為一個(gè)16位的全加器;第二種方法就是先設(shè)計(jì)一個(gè)一位的全加器,然后在用16個(gè)串聯(lián)或并聯(lián)就組成了一個(gè)16位的全加器,而本次設(shè)計(jì)采用采用的是第一種方法。 圖3 一位全加器的級(jí)聯(lián)原理圖十六位全加器有十六個(gè)一位全加器的級(jí)聯(lián)組成的,最低位的借位信號(hào)時(shí)整個(gè)全加器的借位信號(hào)Cin,最

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

8、組成一位全加器的半加器模塊和或門模塊。因此我們要用從底層到頂層的設(shè)計(jì)思路,以半加器+或門 >一位全加器>16位全加器的為設(shè)計(jì)順序。以下為半加器和活門的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;arch

9、itecture 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;en

10、d one;由全加器的邏輯圖可以看出,全加器由兩個(gè)半加器和一個(gè)或門組成。在VHDL語(yǔ)言中我們可以在一個(gè)模塊的代碼中用component語(yǔ)句調(diào)用低層的模塊。這樣可以避免寫更多的繁瑣的代碼,也可以提高程序的可讀性,也有利于實(shí)際電路在延時(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 compo

12、nent; 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è)計(jì)思路中和全加器的級(jí)聯(lián)設(shè)計(jì)方案中看到,實(shí)現(xiàn)16位全加器的關(guān)鍵是實(shí)現(xiàn)每級(jí)全加器到下一級(jí)全加器的信號(hào)的控制,以此實(shí)現(xiàn)模塊之間的協(xié)調(diào)和整個(gè)系統(tǒng)的穩(wěn)定性。在實(shí)現(xiàn)16加法器中我們同

13、樣用上述的component語(yǔ)句,在頂層中調(diào)用底層的模塊,并巧妙地實(shí)現(xiàn)每個(gè)模塊之間的級(jí)聯(lián)。以下為一種設(shè)計(jì)法方案。(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 loopad

15、d: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)語(yǔ)句和component語(yǔ)句的調(diào)用語(yǔ)句實(shí)現(xiàn)15位信號(hào)的加法。因?yàn)閒orgenerate不像for.loop那樣順序執(zhí)行而是并行執(zhí)行的,使用了for.loop,所以對(duì)應(yīng)RTL Viewer就比較復(fù)雜,所以forgenerate語(yǔ)句更有效。2.1用 QuartusII實(shí)

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

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

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

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

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論