用verilog語言設計簡單計算器

2022-10-16 10:33:07 字數 3974 閱讀 5210

目錄第一章設計任務及要求 1

1.1課程設計依據 1

1.2課程設計內容 1

1.3課程設計要求 1

第二章設計思路 1

2.1設計原理 1

2.1.1計算器原理 1

2.1.2數碼管顯示原理 2

2.1.3 8位掃瞄原理 2

2.2設計總體框圖 3

第三章設計源序及分析 3

3.1計算器模組 3

3.1.1計算器源程式 3

3.1.2模組分析 4

3.2數碼管顯示模組 4

3.2.1數碼管源程式 4

3.2.2模組分析 5

3.3迴圈掃瞄模組 5

3.3.1迴圈掃瞄程式 5

3.3.2模組分析 6

3.4總程式 6

3.4.1總體源程式 6

3.4.2程式分析 8

第四章序**結果及分析 9

4.1計算器設計**及分析 9

4.2數碼管**圖及分析 9

4.3總體**圖 10

第五章結果驗證 11

5.1實驗結果及分析 11

第六章心得體會 11

第七章參考文獻 12

在掌握常用數位電路功能和原理的基礎上,根據eda技術課程所學知識,利用硬體描述語言verilog hdl、eda軟體quartus ii和硬體平台cyclone/cyclone ii fpga進行電路系統的設計。

設計乙個簡單計算器,輸入為8位二進位制數,分別用兩位數碼管顯示,輸出的計算結果為16位二進位制數,並用四位數碼管顯示,能夠實現+、-、 *、/ 四種運算,其中除法的結果顯示分為商和餘數兩部分,分別用兩位數碼管顯示。

1.3課程設計要求

1、 要求獨立完成設計任務。

2、 課程設計說明書封面格式要求見《天津城市建設學院課程設計教學規範》附表1。

3、 課程設計的說明書要求簡潔、通順,計算正確,圖紙表達內容完整、清楚、規範。

4、 測試要求:根據題目的特點,採用相應的時序**或者在實驗系統上觀察結果。

5、 課程設計說明書要求:

1) 說明題目的設計原理和思路、採用方法及設計流程。

2) 系統框圖、verilog語言設計程式或原理圖。

3) 對各子模組的功能以及各子模組之間的關係做較詳細的描述。

4) 詳細說明除錯方法和除錯過程。

5) 說明測試結果:**時序圖和結果顯示圖,並對其進行說明和分析。

verilog語言中可直接用運算子+、-、*、/、%來實現四則運算,系統會根據程式自動綜合出相應的計算器。

7段數碼是純組合電路,通常的小規模專用ic,如74或4000系列的器件只能作十進位制bcd碼解碼,然而數字系統中的資料處理和運算都是2進製的,所以輸出表達都是16進製制的,為了滿足16進製制數的解碼顯示,最方便的方法就是利用解碼程式在fpga/cpld中來實現。設計7段解碼器,輸出訊號led7s的7位分別接如圖一數碼管的7個段,高位在左,低位在右。例如當led7s輸出為「1101101」時,數碼管的7個段:

g、f、e、d、c、b、a分別接1、1、0、1、1、0、1;接有高電平的段發亮,於是數碼管顯示「5」。注意,這裡沒有考慮表示小數點的發光管,如果要考慮,需要增加段h。

圖一共陰數碼管及其電路

圖二所示的是8位數碼掃瞄顯示電路,其中每個數碼管的7個段: g、f、e、d、c、b、a都分別連在一起,8個數碼管分別由8個選通訊號k1、k2、…k8來選擇。被選通的數碼管顯示資料,其餘關閉。

如在某一時刻,k3為高電平,其餘選通訊號為低電平,這時僅k3對應的數碼管顯示來自段訊號端的資料,而其它7個數碼管呈現關閉狀態。根據這種電路狀況,如果希望在8個數碼管顯示希望的資料,就必須使得8個選通訊號k1、k2、…k8分別被單獨選通,並在此同時,在段訊號輸入口加上希望在該對應數碼管上顯示的資料,於是隨著選通訊號的掃變,就能實現掃瞄顯示的目的。

圖二 8位數碼驅動顯示電路

掃瞄電路通過可調時鐘輸出片選位址sel[2..0]。由sel[2..

0] 通過3-8解碼器決定了8位中的哪一位顯示,sel[2..0]變化的快慢決定了掃瞄頻率f掃瞄的快慢。掃瞄頻率大於人眼的解析度時,呈現出八個數碼管同時點亮。

圖三設計總體框圖

mdule jsq(a,b,c,out);

input[7:0]a,b;

input[1:0]c;

otput[15:0]out;

reg [15:0]out

reg[7:0]out1,out2;

always@(a,b,c,out)

case(c)

2'b00:out=a+b;

2'b01:out=a-b;

2'b10:out=a*b;

2'b11:

begin

out1=a/b;

out2=a%b;

out=;

enddefault:;

endcase

endmodule

該模組是本次設計的核心部分,用於實現四則運算,兩位八位二進位制數a、b作為待計算的輸入,並輸入兩位二進位制數c作為計算功能選擇,00代表加法運算、01代表減法運算、10代表乘法運算、11代表除法運算。輸出16位二進位制數out位運算結果。並在總體設計中把輸入、輸出端接到數碼管上。

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 <= 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'b1111100 ;

4'b1100: led7s <= 7'b0111001 ;

4'b1101: led7s <= 7'b1011110 ;

4'b1110: led7s <= 7'b1111001 ;

4'b1111: led7s <= 7'b1110001 ;

endcase

endendmodule

該模組是整個設計中的顯示部分,是乙個編碼器組合邏輯設計,每個數碼管可顯示十六進製制0至f,對應4位二進位制數,因此輸入端a、b分別用兩個數碼管顯示,輸出out用四個數碼管顯示,該設計中需要八個同樣的數碼管顯示器,即。此模組將在總程式中被呼叫八次。

modulexhsm(clk,rst,count,dout);

inputclk,rst;

output[6:0]dout;

output[2:0]count;

reg[6:0]dout;

reg[2:0]count;

always@(posedge clk or negedge rst)

begin

if(!rst)

count<=3'b000;

else if(count==3'b111)

count<=3'b000;

else

count<=count+3'b001;

endalways@(posedge clk)

begin

case(count)

設計簡單計算器的C語言課程設計報告

c語言課程設計報告 題目 設計乙個簡單計算器 目錄1.設計目的 2.內容 3.總體設計 有流程圖 4.源程式編寫 附上了執行圖 5.執行結果 6.心得體會 一 設計目的 設計乙個簡單計算器,在功能上功能盡量模擬windows作業系統中的計算器,系統介面不做強制要求。全面熟悉 掌握c語言基本知識,掌握...

人民幣的簡單計算教學設計

教學內容 教科書第50頁。教學目標 1.知道人民幣單位間的換算,會進行一些簡單的計算。2.知道物品 的表示形式。3.培養社會交往和社會實踐能力。4.通過購物活動,初步體會人民幣在社會生活 商品交換中的作用,並知道愛惜人民幣。教具 學具準備 多 課件 每個學生準備乙個錢袋 內裝各種面值的人民幣 學習用...

《計算簡單的經過時間》教學設計

一 教學目標 一 知識與技能 初步理解時間和時刻的意義,會計算簡單的經過時間,加深學生對24時計時法的認識。二 過程與方法 在自主 計算簡單的經過時間過程中,初步掌握一些求簡單的經過時間的方法,進一步發展學生的推理能力和解決問題的能力。三 情感態度和價值觀 體會簡單的時間計算在生活中的應用,建立時間...