• 方案介紹
  • 附件下載
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

數(shù)字秒表回看、正計(jì)、倒計(jì)數(shù)跑表verilog仿真

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

1-231019223002213.doc

共1個(gè)文件

名稱:數(shù)字秒表設(shè)計(jì)正計(jì)、倒計(jì)數(shù)跑表(代碼在文末付費(fèi)下載)

軟件:Quartus,ModelSim

語言:Verilog HDL

代碼功能:

《數(shù)字秒表設(shè)計(jì)》項(xiàng)目要求

(1)計(jì)時(shí)精度 1ms,計(jì)時(shí)范圍 00:00.000~99:59.999,對(duì)應(yīng)分:秒:毫秒,對(duì)應(yīng)的液晶屏能完整顯示。

(2)設(shè)置 S3 為復(fù)位鍵,S0 為啟動(dòng)/暫停鍵,控制秒表復(fù)位、啟動(dòng)/暫停;設(shè)置 S2 為功能選擇鍵,可在正計(jì)數(shù)模式、倒計(jì)數(shù)設(shè)置模式、倒計(jì)數(shù)工作模式、計(jì)數(shù)值回看模式之間輪流切換。切換任意模式后,原來的計(jì)數(shù)值不會(huì)消失。

(3)正計(jì)數(shù)模式時(shí),總是從 00:00.000 開始,設(shè)置 S3 為復(fù)位鍵,S0 為啟動(dòng)/暫停鍵,控制秒表復(fù)位、啟動(dòng)、暫停。每暫停一次,就計(jì)數(shù)一次,若計(jì)數(shù)次數(shù)已經(jīng)滿 10 次,則后一次的計(jì)數(shù)值依次覆蓋前一次的計(jì)數(shù)值。

(4)倒計(jì)數(shù)設(shè)置模式時(shí),S3/S0 鍵選擇調(diào)整位置;S4/S1 鍵進(jìn)行±調(diào)整,在合法值域內(nèi)變動(dòng)。每按一次 S0,跳動(dòng)(待修改)的位就向左移動(dòng)一位,每按一次 S3,跳動(dòng)(待修改)的位就向右移動(dòng)一位,每按一次 S1,對(duì)應(yīng)位的數(shù)字減少 1 ,每按一次 S4 ,對(duì)應(yīng)位的數(shù)字增加 1;

(5)倒計(jì)數(shù)工作模式時(shí),設(shè)置 S3 為復(fù)位鍵,S0 為啟動(dòng)/暫停鍵,控制秒表復(fù)位、啟動(dòng)、暫停。每暫停一次,就計(jì)數(shù)一次,若計(jì)數(shù)次數(shù)已經(jīng)滿 10 次,則后一次的計(jì)數(shù)值依次覆蓋前一次的計(jì)數(shù)值。

(6)計(jì)數(shù)值回看模式時(shí),S3/S0 鍵進(jìn)行前/后翻操作,查看每次的計(jì)數(shù)值,最多能記錄 10 次計(jì)數(shù)值。

需要的內(nèi)容

需要仿真:所提及的按鍵、開關(guān)均通過自定激勵(lì)文件進(jìn)行模擬;提及的顯示均通過輸出信號(hào)表達(dá),對(duì)顯示的數(shù)字除非特別說明,均為十進(jìn)制數(shù)字;提及的指示燈亮滅均通過輸出信號(hào)的高低電平對(duì)應(yīng) 。

演示視頻:

FPGA代碼資源下載網(wǎng):hdlcode.com

部分代碼展示

module?top(
input?clk_1KHz,//1ms
input?S0,S1,S2,S3,S4,
output??[7:0]?HEX0,//數(shù)碼管-低亮
output??[7:0]?HEX1,//數(shù)碼管-低亮
output??[7:0]?HEX2,//數(shù)碼管-低亮
output??[7:0]?HEX3,//數(shù)碼管-低亮
output??[7:0]?HEX4,//數(shù)碼管-低亮
output??[7:0]?HEX5,//數(shù)碼管-低亮
output??[7:0]?HEX6?//數(shù)碼管-低亮
);
wire?store_en_1;//存儲(chǔ)信號(hào)
wire?store_en_2;//存儲(chǔ)信號(hào)
wire?[1:0]?mode;
wire?[9:0]?Millisecond;//毫秒
wire?[7:0]?second;//秒
wire?[7:0]?minute;?//分
wire?[9:0]?Millisecond_set;//毫秒
wire?[7:0]?second_set;//秒
wire?[7:0]?minute_set;//分
wire?[9:0]?down_Millisecond;//毫秒
wire?[7:0]?down_second;//秒
wire?[7:0]?down_minute;?//分
wire?[9:0]?call_Millisecond;//回看毫秒
wire?[7:0]?call_second;//回看秒
wire?[7:0]?call_minute;?//回看分
//跑表模塊
//正計(jì)數(shù)模式時(shí),總是從?00:00.000?開始,設(shè)置?S3?為復(fù)位鍵,S0?為啟動(dòng)/暫停鍵,控制秒表復(fù)位、啟動(dòng)
//、暫停。每暫停一次,就計(jì)數(shù)一次,若計(jì)數(shù)次數(shù)已經(jīng)滿?10?次,則后一次的計(jì)數(shù)值依次覆蓋前一次的計(jì)數(shù)值。
stopwatch?i_stopwatch(
.?clk_1KHz(clk_1KHz),//1ms
.?mode(mode),
.?start_key(S0),//啟動(dòng)/暫停--S0
.?reset_key(S3),//復(fù)位--S3
.?store_en(store_en_1),//存儲(chǔ)信號(hào)
.?Millisecond(Millisecond),//毫秒
.?second(second),//秒
.?minute(minute)?//分
);
//倒計(jì)數(shù)設(shè)置模式時(shí)
//S3/S0?鍵選擇調(diào)整位置;S4/S1?鍵進(jìn)行±調(diào)整,在合法值域內(nèi)變動(dòng)。
//每按一次?S0,跳動(dòng)(待修改)的位就向左移動(dòng)一位,每按一次?S3,
//跳動(dòng)(待修改)的位就向右移動(dòng)一位,每按一次?S1,對(duì)應(yīng)位的數(shù)字減少?1?,
//每按一次?S4?,對(duì)應(yīng)位的數(shù)字增加?1;
set_time?i_set_time(
.?clk_1KHz(clk_1KHz),//1ms
.?mode(mode),
.?S0(S0),//左移動(dòng)一位
.?S1(S1),//數(shù)字減少?1
.?S3(S3),//右移動(dòng)一位
.?S4(S4),//數(shù)字增加?1
//倒計(jì)時(shí)起始時(shí)間
.?Millisecond_set(Millisecond_set),//毫秒
.?second_set(second_set),//秒
.?minute_set(minute_set)?//分
);
//倒計(jì)數(shù)工作模式時(shí)
//倒計(jì)數(shù)工作模式時(shí),設(shè)置?S3?為復(fù)位鍵,S0?為啟動(dòng)/暫停鍵,控制秒表復(fù)位、啟動(dòng)、暫停。
//每暫停一次,就計(jì)數(shù)一次,若計(jì)數(shù)次數(shù)已經(jīng)滿?10?次,則后一次的計(jì)數(shù)值依次覆蓋前一次的計(jì)數(shù)值。
downtime?i_downtime(
.?clk_1KHz(clk_1KHz),//1ms
.?mode(mode),
.?start_key(S0),//啟動(dòng)/暫停--S0
.?reset_key(S3),//復(fù)位--S3
//倒計(jì)時(shí)起始時(shí)間
.?Millisecond_set(Millisecond_set),//毫秒
.?second_set(second_set),//秒
.?minute_set(minute_set),//分
.?store_en(store_en_2),//存儲(chǔ)信號(hào)
.?Millisecond(down_Millisecond),//毫秒
.?second(down_second),//秒
.?minute(down_minute)?//分
);
//回看模式
//計(jì)數(shù)值回看模式時(shí),S3/S0?鍵進(jìn)行前/后翻操作,查看每次的計(jì)數(shù)值,最多能記錄?10?次計(jì)數(shù)值。
call_back?i_call_back(
.?clk_1KHz(clk_1KHz),//1ms
.?mode(mode),
.?call_before(S3),//S3-前翻操作
.?call_later(S0),//S0--后翻操作
.?store_en(store_en_1?||?store_en_2),//存儲(chǔ)信號(hào)
.?Millisecond(Millisecond),//毫秒
.?second(second),//秒
.?minute(minute),//分
.?down_Millisecond(down_Millisecond),//毫秒
.?down_second(down_second),//秒
.?down_minute(down_minute),//分
.?call_Millisecond(call_Millisecond),//回看毫秒
.?call_second(call_second),//回看秒
.?call_minute(call_minute)?//回看分
);
//顯示模式
display?i_display(
.?clk(clk_1KHz),
.?S2(S2),//模式切換,在正計(jì)數(shù)模式、倒計(jì)數(shù)設(shè)置模式、倒計(jì)數(shù)工作模式、計(jì)數(shù)值回看模式之間輪流切換
.?mode(mode),
????//正計(jì)時(shí)
.?Millisecond(Millisecond),//毫秒
.?second(second),//秒
.?minute(minute),//分
????//倒計(jì)時(shí)
.?down_Millisecond(down_Millisecond),//毫秒
.?down_second(down_second),//秒
.?down_minute(down_minute),//分
????
????//倒計(jì)時(shí)起始時(shí)間
.?Millisecond_set(Millisecond_set),//毫秒
.?second_set(second_set),//秒
.?minute_set(minute_set),//分
????
????//回看時(shí)間
.?call_Millisecond(call_Millisecond),//回看毫秒
.?call_second(call_second),//回看秒
.?call_minute(call_minute),//回看分
.?HEX0(HEX0),//數(shù)碼管-低亮
.?HEX1(HEX1),//數(shù)碼管-低亮
.?HEX2(HEX2),//數(shù)碼管-低亮
.?HEX3(HEX3),//數(shù)碼管-低亮
.?HEX4(HEX4),//數(shù)碼管-低亮
.?HEX5(HEX5),//數(shù)碼管-低亮
.?HEX6(HEX6)?//數(shù)碼管-低亮
);
endmodule

設(shè)計(jì)文檔:

1. 工程文件

2. 程序文件

3. 程序編譯

4. RTL圖

5. Testbench

6. 仿真圖

整體仿真圖

正計(jì)時(shí)模塊

倒計(jì)時(shí)設(shè)置

倒計(jì)時(shí)計(jì)時(shí)

回看模塊

顯示模塊

點(diǎn)擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=198

  • 1-231019223002213.doc
    下載

相關(guān)推薦