VerilogHDL簡單計(jì)算器設(shè)計(jì)Word版_第1頁
VerilogHDL簡單計(jì)算器設(shè)計(jì)Word版_第2頁
VerilogHDL簡單計(jì)算器設(shè)計(jì)Word版_第3頁
VerilogHDL簡單計(jì)算器設(shè)計(jì)Word版_第4頁
VerilogHDL簡單計(jì)算器設(shè)計(jì)Word版_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、目 錄第一章 設(shè)計(jì)目的及任務(wù)要求11.1 設(shè)計(jì)目的11.2 設(shè)計(jì)任務(wù)11.3 課設(shè)要求1第二章 設(shè)計(jì)思路22.1 設(shè)計(jì)總體框圖22.2 設(shè)計(jì)原理22.2.1 計(jì)算其原理22.2.2 數(shù)碼顯示原理22.2.3 八位數(shù)碼管掃描的原理3第三章 設(shè)計(jì)源程序及分析43.1 計(jì)算器模塊43.1.1 計(jì)算器源程序43.1.2 計(jì)算器程序分析43.2 數(shù)碼管顯示部分53.2.1 數(shù)碼管顯示源程序53.2.2 數(shù)碼管顯示程序分析53.3 循環(huán)掃描模塊63.3.1 循環(huán)掃描程序63.3.2 循環(huán)程序分析63.4 總程序及其分析7第四章 時(shí)序仿真和結(jié)果驗(yàn)證104.1 計(jì)算器時(shí)序仿真及其分析104.2 數(shù)碼管時(shí)序仿真

2、及分析104.3 總體時(shí)序仿真圖104.4 結(jié)果驗(yàn)證11第五章 心得體會120 / 19第一章 設(shè)計(jì)目的及任務(wù)要求1.1 設(shè)計(jì)目的(1)進(jìn)一步加強(qiáng)熟練EDA基礎(chǔ)知識。(2)熟練掌握Quartus 6.0軟件的使用以及用該軟件編程和仿真的全過程。(3)培養(yǎng)獨(dú)立思考問題,解決問題的能力以及查閱相關(guān)資料和資料的正確使用能力,為明年的畢業(yè)設(shè)計(jì)打下良好的設(shè)計(jì)基礎(chǔ)。1.2 設(shè)計(jì)任務(wù)設(shè)計(jì)一個(gè)簡單計(jì)算器,輸入為8位二進(jìn)制數(shù),分別用兩位數(shù)碼管顯示,輸出的計(jì)算結(jié)果為16位二進(jìn)制數(shù),并用四位數(shù)碼管顯示,能夠?qū)崿F(xiàn)+、-、 *、/ 四種運(yùn)算,其中除法的結(jié)果顯示分為商和余數(shù)兩部分,分別用兩位數(shù)碼管顯示。1.3 課設(shè)要求(

3、1) 說明題目的設(shè)計(jì)原理和思路、采用方法及設(shè)計(jì)流程。(2) 系統(tǒng)框圖、Verilog語言設(shè)計(jì)程序或原理圖。(3) 對各子模塊的功能以及各子模塊之間的關(guān)系做較詳細(xì)的描述。(4) 詳細(xì)說明調(diào)試方法和調(diào)試過程。(5) 說明測試結(jié)果:仿真時(shí)序圖和結(jié)果顯示圖,并對其進(jìn)行說明和分析。第二章 設(shè)計(jì)思路2.1 設(shè)計(jì)總體框圖有分析可知,本次課程設(shè)計(jì)可以分成五個(gè)木塊來實(shí)現(xiàn)相應(yīng)的功能,分別是輸入模塊,計(jì)算模塊,掃描模塊,輸出模塊以及顯示模塊。圖一 設(shè)計(jì)總體框圖2.2 設(shè)計(jì)原理2.2.1 計(jì)算其原理Verilog語言中可直接用運(yùn)算符+、-、*、/、%來實(shí)現(xiàn)四則運(yùn)算,系統(tǒng)會根據(jù)程序自動(dòng)綜合出相應(yīng)的計(jì)算器。分別是加法器模

4、塊,減法器模塊,乘法器模塊和除法器模塊,當(dāng)程序變得正確的話則各個(gè)程序會按照一定的步驟一步步的往下執(zhí)行的。2.2.2 數(shù)碼顯示原理7段數(shù)碼是純組合電路,通常的小規(guī)模專用IC,如74或4000系列的器件只能作十進(jìn)制BCD碼譯碼,然而數(shù)字系統(tǒng)中的數(shù)據(jù)處理和運(yùn)算都是2進(jìn)制的,所以輸出表達(dá)都是16進(jìn)制的,為了滿足16進(jìn)制數(shù)的譯碼顯示,最方便的方法就是利用譯碼程序在FPGA/CPLD中來實(shí)現(xiàn)。設(shè)計(jì)7段譯碼器,輸出信號LED7S的7位分別接如圖一數(shù)碼管的7個(gè)段,高位在左,低位在右。例如當(dāng)LED7S輸出為“1101101”時(shí),數(shù)碼管的7個(gè)段:g、f、e、d、c、b、a分別接1、1、0、1、1、0、1;接有高電

5、平的段發(fā)亮,于是數(shù)碼管顯示“5”。注意,這里沒有考慮表示小數(shù)點(diǎn)的發(fā)光管,如果要考慮,需要增加段h。共陰極七段數(shù)碼管的原理圖如下圖二所示。圖二 共陰極七段數(shù)碼管2.2.3 八位數(shù)碼管掃描的原理圖三所示的是8位數(shù)碼掃描顯示電路,其中每個(gè)數(shù)碼管的7個(gè)段: g、f、e、d、c、b、a都分別連在一起,8個(gè)數(shù)碼管分別由8個(gè)選通信號k1、k2、k8來選擇。被選通的數(shù)碼管顯示數(shù)據(jù),其余關(guān)閉。如在某一時(shí)刻,k3為高電平,其余選通信號為低電平,這時(shí)僅k3對應(yīng)的數(shù)碼管顯示來自段信號端的數(shù)據(jù),而其它7個(gè)數(shù)碼管呈現(xiàn)關(guān)閉狀態(tài)。根據(jù)這種電路狀況,如果希望在8個(gè)數(shù)碼管顯示希望的數(shù)據(jù),就必須使得8個(gè)選通信號k1、k2、k8分別

6、被單獨(dú)選通,并在此同時(shí),在段信號輸入口加上希望在該對應(yīng)數(shù)碼管上顯示的數(shù)據(jù),于是隨著選通信號的掃變,就能實(shí)現(xiàn)掃描顯示的目的。圖三 8位數(shù)碼管顯示驅(qū)動(dòng)電路掃描電路通過可調(diào)時(shí)鐘輸出片選地址SEL2.0。由SEL2.0 通過3-8譯碼器決定了8位中的哪一位顯示,SEL2.0變化的快慢決定了掃描頻率f掃描的快慢。掃描頻率大于人眼的分辨率時(shí),呈現(xiàn)出八個(gè)數(shù)碼管同時(shí)點(diǎn)亮。第三章 設(shè)計(jì)源程序及分析3.1 計(jì)算器模塊3.1.1 計(jì)算器源程序mdule jsq(a,b,c,out);input7:0a,b;input1:0c;otput15:0out;reg 15:0outreg7:0out1,out2;alway

7、s(a,b,c,out)case(c)2'b00:out=a+b;2'b01:out=a-b;2'b10:out=a*b;2'b11:beginout1=a/b;out2=a%b;out=out1,out2;enddefault:;endcaseendmodule3.1.2 計(jì)算器程序分析該模塊是本次設(shè)計(jì)的核心部分,用于實(shí)現(xiàn)四則運(yùn)算,兩位八位二進(jìn)制數(shù)a、b作為待計(jì)算的輸入,并輸入兩位二進(jìn)制數(shù)c作為計(jì)算功能選擇,00代表加法運(yùn)算、01代表減法運(yùn)算、10代表乘法運(yùn)算、11代表除法運(yùn)算。輸出16位二進(jìn)制數(shù)out位運(yùn)算結(jié)果。并在總體設(shè)計(jì)中把輸入、輸出端接到數(shù)碼管上。3.

8、2 數(shù)碼管顯示部分3.2.1 數(shù)碼管顯示源程序module DECL7S (A, LED7S);input 3:0 A;output 6:0 LED7S;reg 6:0 LED7S;always (A) begin case(A) 4'b0000 : LED7S<=7'b0111111; 4'b0001: LED7S <= 7'b0000110 ; 4'b0010: LED7S <= 7'b1011011; 4'b0011: LED7S <= 7'b1001111; 4'b0100: LED7S &

9、lt;= 7'b1100110 ; 4'b0101: LED7S <= 7'b1101101; 4'b0110: LED7S <= 7'b1111101 ; 4'b0111: LED7S <= 7'b0000111 ; 4'b1000: LED7S <= 7'b1111111 ; 4'b1001: LED7S <= 7'b1101111 ; 4'b1010: LED7S <= 7'b1110111 ; 4'b1011: LED7S <= 7&

10、#39;b1111100 ; 4'b1100: LED7S <= 7'b0111001 ; 4'b1101: LED7S <= 7'b1011110 ; 4'b1110: LED7S <= 7'b1111001 ; 4'b1111: LED7S <= 7'b1110001 ; endcase endendmodule3.2.2 數(shù)碼管顯示程序分析該模塊是整個(gè)設(shè)計(jì)中的顯示部分,是一個(gè)編碼器組合邏輯設(shè)計(jì),每個(gè)數(shù)碼管可顯示十六進(jìn)制0至F,對應(yīng)4位二進(jìn)制數(shù),因此輸入端a、b分別用兩個(gè)數(shù)碼管顯示,輸出out用四個(gè)數(shù)碼

11、管顯示,該設(shè)計(jì)中需要八個(gè)同樣的數(shù)碼管顯示器,即。此模塊將在總程序中被調(diào)用八次。3.3 循環(huán)掃描模塊3.3.1 循環(huán)掃描程序modulexhsm(clk,rst,count,Dout);inputclk,rst;output6:0Dout;output2:0count;reg6:0Dout;reg2:0count;always(posedge clk or negedge rst)beginif(!rst)count<=3'b000;else if(count=3'b111)count<=3'b000;elsecount<=count+3'b00

12、1;endalways(posedge clk)begincase(count)3'b000: Dout<=LED7S1;3'b001:Dout<=LED7S2;3'b010:Dout<=LED7S3;3'b011:Dout<=LED7S4;3'b100: Dout<=LED7S5;3'b101:Dout<=LED7S6;3'b110:Dout<=LED7S7;3'b111:Dout<=LED7S8;endcaseendendmodule3.3.2 循環(huán)程序分析該模塊是一個(gè)循環(huán)計(jì)數(shù)器

13、,在時(shí)鐘和復(fù)位信號的控制下,從000111循環(huán)計(jì)數(shù)分別控制八個(gè)數(shù)碼管循環(huán)點(diǎn)亮,由于時(shí)鐘的頻率比較快,大于人眼的分辨率,所以顯示出八個(gè)數(shù)碼管同時(shí)點(diǎn)亮,即同時(shí)顯示計(jì)算器的輸入、輸出。3.4 總程序及其分析module jsq9(a,b,c,Dout,count,clk, rst);input7:0a,b;input clk,rst;input1:0c;output6:0Dout;output 2:0count;reg6:0Dout;reg2:0count;reg15:0out;reg6:0 LED7S1,LED7S2,LED7S3,LED7S4, LED7S5,LED7S6,LED7S7,LED7

14、S8;DECL7S u1(.A(a7:4) , .LED7S(LED7S1);DECL7S u2(.A(a3:0) , .LED7S(LED7S2);DECL7S u3(.A(b7:4) , .LED7S(LED7S3);DECL7S u4(.A(b3:0) , .LED7S(LED7S4);DECL7S u5(.A(out15:12) , .LED7S(LED7S5);DECL7S u6(.A(out11:8) , .LED7S(LED7S6);DECL7S u7(.A(out7:4) , .LED7S(LED7S7);DECL7S u8(.A(out3:0) , .LED7S(LED7S8

15、);reg7:0out1,out2;always(a,b,c,Dout,count,clk,rst)case(c)2'b00:out=a+b;2'b01:out=a-b;2'b10:out=a*b;2'b11:beginout1=a/b;out2=a%b;out=out1,out2;enddefault:;endcasealways(posedge clk or negedge rst)beginif(!rst)count<=3'b000;else if(count=3'b111)count<=3'b000;elsecount

16、<=count+3'b001;endalways(posedge clk)begincase(count)3'b000: Dout<=LED7S1;3'b001:Dout<=LED7S2;3'b010:Dout<=LED7S3;3'b011:Dout<=LED7S4;3'b100: Dout<=LED7S5;3'b101:Dout<=LED7S6;3'b110:Dout<=LED7S7;3'b111:Dout<=LED7S8;endcaseendendmodulemod

17、ule DECL7S (A, LED7S);input 3:0 A;output 6:0 LED7S;reg 6:0 LED7S;always (A) begin case(A) 4'b0000 : LED7S<=7'b0111111; 4'b0001: LED7S <= 7'b0000110 ; 4'b0010: LED7S <= 7'b1011011; 4'b0011: LED7S <= 7'b1001111; 4'b0100: LED7S <= 7'b1100110 ; 4

18、9;b0101: LED7S <= 7'b1101101; 4'b0110: LED7S <= 7'b1111101 ; 4'b0111: LED7S <= 7'b0000111 ; 4'b1000: LED7S <= 7'b1111111 ; 4'b1001: LED7S <= 7'b1101111 ; 4'b1010: LED7S <= 7'b1110111 ; 4'b1011: LED7S <= 7'b1111100 ; 4'b1100

19、: LED7S <= 7'b0111001 ; 4'b1101: LED7S <= 7'b1011110 ; 4'b1110: LED7S <= 7'b1111001 ; 4'b1111: LED7S <= 7'b1110001 ; endcase endendmodule該程序是本次設(shè)計(jì)的最終程序,主要是將以上三個(gè)模塊聯(lián)系起來。其中反復(fù)調(diào)用數(shù)碼管顯示模塊,將其與計(jì)算器模塊相連。其輸入A在u1中與計(jì)算器輸入a的高四位相連,輸出LED7S與LED7S1相連,在硬件上實(shí)現(xiàn)用一個(gè)數(shù)碼管顯示輸入a的高四位,以此類推u2模塊

20、實(shí)現(xiàn)用數(shù)碼管顯示a的低四位,u3對應(yīng)b的高四位,u4對應(yīng)b的第四位,u5對應(yīng)out的高四位,u6對應(yīng)out次高四位,u7對應(yīng)out的次低四位,u8對應(yīng)out的低四位。循環(huán)計(jì)數(shù)器模塊,與八個(gè)數(shù)碼管顯示模塊相連,當(dāng)輸出count為某一確定時(shí),將不同數(shù)碼管的輸出賦給程序的總輸出Dout點(diǎn)亮相應(yīng)的數(shù)碼管,例如當(dāng)count=3b000時(shí),LED7S1賦給Dout,此時(shí)試驗(yàn)箱是對應(yīng)輸入a的高四位的數(shù)碼管被點(diǎn)亮。通過以上連接該程序?qū)崿F(xiàn)了輸入為8位二進(jìn)制數(shù),分別用兩位數(shù)碼管顯示,輸出的計(jì)算結(jié)果為16位二進(jìn)制數(shù),并用四位數(shù)碼管顯示,能夠?qū)崿F(xiàn)+、-、 *、/ 四種運(yùn)算,其中除法的結(jié)果顯示分為商和余數(shù)兩部分,分別用

21、兩位數(shù)碼管顯示的設(shè)計(jì)要求。第四章 時(shí)序仿真和結(jié)果驗(yàn)證4.1 計(jì)算器時(shí)序仿真及其分析圖四 計(jì)算器時(shí)序仿真圖如圖四所示為計(jì)算器的實(shí)序仿真圖,當(dāng)輸入a為00000001、b為00000001、c為01時(shí)輸出out為0000000000000000即1-1=0;當(dāng)輸入a=00000010,b=00000010,c=10時(shí)輸出out=0000000000000100.即2*2=4,當(dāng)輸入a=00000011,b=00000011,c=11時(shí)輸出out1=00000001,out2=00000000,即3/3=1余數(shù)為0當(dāng)輸入a=00000100,b=00000100,c=00時(shí)輸出out=0000100

22、0即4+4=8.經(jīng)此驗(yàn)證分析證明此計(jì)算器計(jì)算準(zhǔn)確無誤。模塊設(shè)計(jì)成功。4.2 數(shù)碼管時(shí)序仿真及分析圖五 數(shù)碼管時(shí)序仿真圖如圖五所示為數(shù)碼管顯示器的時(shí)序仿真波形,當(dāng)輸入為0011時(shí)七段數(shù)碼管中abcdefg的高低電平分別為1111001即abcdg點(diǎn)亮顯示數(shù)字3,當(dāng)輸入為0000時(shí)七段數(shù)碼管對應(yīng)顯示1111110即abcdef被點(diǎn)亮顯示數(shù)字0.經(jīng)驗(yàn)證其他數(shù)字顯示均正確,七段數(shù)碼管顯示器模塊設(shè)計(jì)仿真成功。4.3 總體時(shí)序仿真圖圖六所示為整個(gè)設(shè)計(jì)的仿真波形圖,對其分析如下,首先分析最下邊三行的循環(huán)計(jì)數(shù)器部分,當(dāng)復(fù)位信號為0時(shí)count計(jì)為000當(dāng)復(fù)位為1每當(dāng)時(shí)鐘上升沿來臨時(shí)count加1,計(jì)滿后恢復(fù)0

23、00繼續(xù)循環(huán),此部分驗(yàn)證成功。接下來看控制顯示部分,輸入a=00000000,b=00000000,c=00,當(dāng)count=000時(shí)顯示a的高四位0000,Dout=01111111,顯示數(shù)字0;正確。當(dāng)count=001時(shí)顯示a的低四位0000,Dout=01111111,顯示數(shù)字0,正確。經(jīng)驗(yàn)證,其他數(shù)碼管顯示與相應(yīng)的輸入也是一一對應(yīng),因此時(shí)序仿真成功。圖六 總體時(shí)序仿真圖4.4 結(jié)果驗(yàn)證如下圖所示在試驗(yàn)箱中輸入a=00000010,b=00001100,c=00即顯示如下結(jié)果:02+0C=000E,即2+12=14,驗(yàn)證結(jié)果正確圖七 結(jié)果驗(yàn)證圖第五章 心得體會為期五天的EDA課程設(shè)計(jì)很快就結(jié)束了,原則上是必須獨(dú)

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論