用verilog語言設(shè)計簡單計算器_第1頁
用verilog語言設(shè)計簡單計算器_第2頁
用verilog語言設(shè)計簡單計算器_第3頁
用verilog語言設(shè)計簡單計算器_第4頁
用verilog語言設(shè)計簡單計算器_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上目錄第一章設(shè)計任務(wù)及要求11.1課程設(shè)計依據(jù)11.2課程設(shè)計內(nèi)容11.3課程設(shè)計要求1第二章 設(shè)計思路12.1設(shè)計原理12.1.1計算器原理12.1.2數(shù)碼管顯示原理22.1.3 8位掃描原理22.2設(shè)計總體框圖3第三章 設(shè)計源序及分析33.1計算器模塊33.1.1計算器源程序33.1.2模塊分析43.2數(shù)碼管顯示模塊43.2.1數(shù)碼管源程序43.2.2模塊分析53.3循環(huán)掃描模塊53.3.1循環(huán)掃描程序53.3.2模塊分析63.4總程序63.4.1總體源程序63.4.2程序分析8第四章 序仿真結(jié)果及分析94.1計算器設(shè)計仿真及分析94.2數(shù)碼管仿真圖及分析94.3總

2、體仿真圖10第五章 結(jié)果驗證115.1實驗結(jié)果及分析11第六章心得體會11第七章 參考文獻12第一章設(shè)計任務(wù)及要求1.1課程設(shè)計依據(jù)在掌握常用數(shù)字電路功能和原理的基礎(chǔ)上,根據(jù)EDA技術(shù)課程所學知識,利用硬件描述語言Verilog HDL、EDA軟件Quartus II和硬件平臺Cyclone/Cyclone II FPGA進行電路系統(tǒng)的設(shè)計。1.2課程設(shè)計內(nèi)容設(shè)計一個簡單計算器,輸入為8位二進制數(shù),分別用兩位數(shù)碼管顯示,輸出的計算結(jié)果為16位二進制數(shù),并用四位數(shù)碼管顯示,能夠?qū)崿F(xiàn)+、-、 *、/ 四種運算,其中除法的結(jié)果顯示分為商和余數(shù)兩部分,分別用兩位數(shù)碼管顯示。1.3課程設(shè)計要求1、 要求

3、獨立完成設(shè)計任務(wù)。2、 課程設(shè)計說明書封面格式要求見天津城市建設(shè)學院課程設(shè)計教學規(guī)范附表1。3、 課程設(shè)計的說明書要求簡潔、通順,計算正確,圖紙表達內(nèi)容完整、清楚、規(guī)范。4、 測試要求:根據(jù)題目的特點,采用相應的時序仿真或者在實驗系統(tǒng)上觀察結(jié)果。5、 課程設(shè)計說明書要求:1) 說明題目的設(shè)計原理和思路、采用方法及設(shè)計流程。2) 系統(tǒng)框圖、Verilog語言設(shè)計程序或原理圖。3) 對各子模塊的功能以及各子模塊之間的關(guān)系做較詳細的描述。4) 詳細說明調(diào)試方法和調(diào)試過程。5) 說明測試結(jié)果:仿真時序圖和結(jié)果顯示圖,并對其進行說明和分析。第二章 設(shè)計思路2.1設(shè)計原理2.1.1計算器原理 Verilo

4、g語言中可直接用運算符+、-、*、/、%來實現(xiàn)四則運算,系統(tǒng)會根據(jù)程序自動綜合出相應的計算器。2.1.2數(shù)碼管顯示原理7段數(shù)碼是純組合電路,通常的小規(guī)模專用IC,如74或4000系列的器件只能作十進制BCD碼譯碼,然而數(shù)字系統(tǒng)中的數(shù)據(jù)處理和運算都是2進制的,所以輸出表達都是16進制的,為了滿足16進制數(shù)的譯碼顯示,最方便的方法就是利用譯碼程序在FPGA/CPLD中來實現(xiàn)。設(shè)計7段譯碼器,輸出信號LED7S的7位分別接如圖一數(shù)碼管的7個段,高位在左,低位在右。例如當LED7S輸出為“”時,數(shù)碼管的7個段:g、f、e、d、c、b、a分別接1、1、0、1、1、0、1;接有高電平的段發(fā)亮,于是數(shù)碼管顯

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

6、數(shù)據(jù),于是隨著選通信號的掃變,就能實現(xiàn)掃描顯示的目的。圖二 8位數(shù)碼驅(qū)動顯示電路掃描電路通過可調(diào)時鐘輸出片選地址SEL2.0。由SEL2.0 通過3-8譯碼器決定了8位中的哪一位顯示,SEL2.0變化的快慢決定了掃描頻率f掃描的快慢。掃描頻率大于人眼的分辨率時,呈現(xiàn)出八個數(shù)碼管同時點亮。2.2設(shè)計總體框圖計算模塊輸出模塊輸入模塊掃描模塊顯示模塊圖三 設(shè)計總體框圖第三章 設(shè)計源序及分析3.1計算器模塊3.1.1計算器源程序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模塊分析該模塊是本次設(shè)計的核心部分,用于實現(xiàn)四則運算,兩位八位二進制數(shù)a、b作為待計算的輸入,并輸入兩位二進制數(shù)c作為計算功能選擇,00代表加法運算、01代表減法運算、10代表乘法運算、11代表除法運算。輸出16位二進制數(shù)out位運算結(jié)果。并在總體設(shè)計中把輸入、輸出端接到數(shù)碼管上。3.2數(shù)碼管

8、顯示模塊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'b; 4'b0001: LED7S <= 7'b ; 4'b0010: LED7S <= 7'b; 4'b0011: LED7S <= 7'b; 4'b0100: LED7S <= 7'b ; 4'b0101: LED7S &l

9、t;= 7'b; 4'b0110: LED7S <= 7'b ; 4'b0111: LED7S <= 7'b ; 4'b1000: LED7S <= 7'b ; 4'b1001: LED7S <= 7'b ; 4'b1010: LED7S <= 7'b ; 4'b1011: LED7S <= 7'b ; 4'b1100: LED7S <= 7'b ; 4'b1101: LED7S <= 7'b ; 4'b

10、1110: LED7S <= 7'b ; 4'b1111: LED7S <= 7'b ; endcase endendmodule3.2.2模塊分析該模塊是整個設(shè)計中的顯示部分,是一個編碼器組合邏輯設(shè)計,每個數(shù)碼管可顯示十六進制0至F,對應4位二進制數(shù),因此輸入端a、b分別用兩個數(shù)碼管顯示,輸出out用四個數(shù)碼管顯示,該設(shè)計中需要八個同樣的數(shù)碼管顯示器,即。此模塊將在總程序中被調(diào)用八次。3.3循環(huán)掃描模塊3.3.1循環(huán)掃描程序modulexhsm(clk,rst,count,Dout);inputclk,rst;output6:0Dout;output2:0

11、count;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'b001;endalways(posedge clk)begincase(count)3'b000: Dout<=LED7S1;3'b001:Dout<=LED7S2;3'b010:Dout<=LED7S3;3'

12、b011:Dout<=LED7S4;3'b100: Dout<=LED7S5;3'b101:Dout<=LED7S6;3'b110:Dout<=LED7S7;3'b111:Dout<=LED7S8;endcaseendendmodule3.3.2模塊分析該模塊是一個循環(huán)計數(shù)器,在時鐘和復位信號的控制下,從000111循環(huán)計數(shù)分別控制八個數(shù)碼管循環(huán)點亮,由于時鐘的頻率比較快,大于人眼的分辨率,所以顯示出八個數(shù)碼管同時點亮,即同時顯示計算器的輸入、輸出。3.4總程序3.4.1總體源程序module jsq9(a,b,c,Dout,cou

13、nt,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,LED7S8;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:

14、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);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:begino

15、ut1=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<=count+3'b001;endalways(posedge clk)begincase(count)3'b000: Dout<=LED7S1;3'b001:Dout<=LED7S2;3'b010:D

16、out<=LED7S3;3'b011:Dout<=LED7S4;3'b100: Dout<=LED7S5;3'b101:Dout<=LED7S6;3'b110:Dout<=LED7S7;3'b111:Dout<=LED7S8;endcaseendendmodulemodule DECL7S (A, LED7S);input 3:0 A;output 6:0 LED7S;reg 6:0 LED7S;always (A) begin case(A) 4'b0000 : LED7S<=7'b; 4

17、9;b0001: LED7S <= 7'b ; 4'b0010: LED7S <= 7'b; 4'b0011: LED7S <= 7'b; 4'b0100: LED7S <= 7'b ; 4'b0101: LED7S <= 7'b; 4'b0110: LED7S <= 7'b ; 4'b0111: LED7S <= 7'b ; 4'b1000: LED7S <= 7'b ; 4'b1001: LED7S <= 7&

18、#39;b ; 4'b1010: LED7S <= 7'b ; 4'b1011: LED7S <= 7'b ; 4'b1100: LED7S <= 7'b ; 4'b1101: LED7S <= 7'b ; 4'b1110: LED7S <= 7'b ; 4'b1111: LED7S <= 7'b ; endcase endendmodule3.4.2程序分析該程序是本次設(shè)計的最終程序,主要是將以上三個模塊聯(lián)系起來。其中反復調(diào)用數(shù)碼管顯示模塊,將其與計算器模塊相連

19、。其輸入A在u1中與計算器輸入a的高四位相連,輸出LED7S與LED7S1相連,在硬件上實現(xiàn)用一個數(shù)碼管顯示輸入a的高四位,以此類推u2模塊實現(xiàn)用數(shù)碼管顯示a的低四位,u3對應b的高四位,u4對應b的第四位,u5對應out的高四位,u6對應out次高四位,u7對應out的次低四位,u8對應out的低四位。循環(huán)計數(shù)器模塊,與八個數(shù)碼管顯示模塊相連,當輸出count為某一確定時,將不同數(shù)碼管的輸出賦給程序的總輸出Dout點亮相應的數(shù)碼管,例如當count=3b000時,LED7S1賦給Dout,此時試驗箱是對應輸入a的高四位的數(shù)碼管被點亮。通過以上連接該程序?qū)崿F(xiàn)了輸入為8位二進制數(shù),分別用兩位數(shù)碼

20、管顯示,輸出的計算結(jié)果為16位二進制數(shù),并用四位數(shù)碼管顯示,能夠?qū)崿F(xiàn)+、-、 *、/ 四種運算,其中除法的結(jié)果顯示分為商和余數(shù)兩部分,分別用兩位數(shù)碼管顯示的設(shè)計要求。第四章 序仿真結(jié)果及分析4.1計算器設(shè)計仿真及分析圖四 計算器仿真圖如圖四所示為計算器的實序仿真圖,當輸入a為、b為、c為01時輸出out為00000即1-1=0;當輸入a=,b=,c=10時輸出out=00100.即2*2=4,當輸入a=,b=,c=11時輸出out1=,out2=,即3/3=1余數(shù)為0當輸入a=,b=,c=00時輸出out=即4+4=8.經(jīng)此驗證分析證明此計算器計算準確無誤。模塊設(shè)計成功。4.2數(shù)碼管仿真圖及分析圖五 數(shù)碼管仿真圖如圖五所示為數(shù)碼管顯示器的時序仿真波形,當輸入為0011時七段數(shù)碼管中abcdefg的高低電平分別為即abcdg點亮顯示數(shù)字3,當輸入為0000時七段數(shù)碼管對應顯示即abcdef被點亮顯示數(shù)字0.經(jīng)驗證其他數(shù)字顯示均正確,七段數(shù)碼管顯示器模塊設(shè)計仿真成功。4.3總體仿真圖圖六 總體仿真圖圖六所示為整個設(shè)計的仿真波形圖,對其分析如下,首先分析最下邊三行的循環(huán)計數(shù)器部分,當復位信號為0時count計為000當復位

溫馨提示

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

評論

0/150

提交評論