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

數(shù)字秒表verilog電子秒表跑表

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

1-231019215Q0524.doc

共1個(gè)文件

名稱:數(shù)字秒表verilog電子秒表跑表(代碼在文末付費(fèi)下載)

軟件:Quartus

語言:Verilog

代碼功能:

秒表的設(shè)計(jì)精確到0.01秒,可通過按鍵控制秒表啟動(dòng)、暫停、復(fù)位。

代碼需要在Mini_Star開發(fā)板驗(yàn)證。

開發(fā)板資料:

MiniStar_Nano核心板原理圖.pdf

MiniStar_Nano底板原理圖r.pdf

Mini_Star_4K板指導(dǎo)手冊.pdf

演示視頻:

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

部分代碼展示

//跑表模塊
module?stopwatch(
input?clk_in,
input?clk_100Hz,//100Hz--對應(yīng)10ms
input?start_key,//啟動(dòng)//暫停
input?reset_key,//復(fù)位
output?[7:0]?stopwatch_Millisecond,//10毫秒
output?[7:0]?stopwatch_second,//秒
output?[7:0]?stopwatch_minute//分
);
parameter?idle_state=3'd0;
parameter?cnt_time_state=3'd1;
parameter?hold_time_state=3'd2;
parameter?reset_time_state=3'd3;
reg?[2:0]?state=3'd0;
//計(jì)時(shí)狀態(tài)機(jī)
always@(posedge?clk_in)
if(reset_key)
state<=reset_time_state;//復(fù)位狀態(tài)
else
case(state)
reset_time_state://復(fù)位狀態(tài)
state<=idle_state;
idle_state://空閑狀態(tài)
if(start_key)
state<=cnt_time_state;
else
state<=idle_state;
cnt_time_state://計(jì)時(shí)狀態(tài)
if(start_key)
state<=hold_time_state;
else
state<=cnt_time_state;
hold_time_state://暫停狀態(tài)
if(start_key)
state<=cnt_time_state;
else
state<=hold_time_state;
default:;
endcase
reg?[7:0]?Millisecond_cnt=8'd0;//10毫秒
reg?[7:0]?second_cnt=8'd0;//秒
reg?[7:0]?minute_cnt=8'd0;//分
always@(posedge?clk_in)
if(state==reset_time_state)//復(fù)位狀態(tài)
minute_cnt<=8'd0;
else
if(state==cnt_time_state?&&?clk_100Hz==1)//計(jì)時(shí)狀態(tài)
if(Millisecond_cnt==8'd99?&&?second_cnt==8'd59)//59秒99‘時(shí)向前記1分
if(minute_cnt<8'd59)
minute_cnt<=minute_cnt+8'd1;//計(jì)時(shí)到990ms,下一次就到1秒了
else
minute_cnt<=8'd0;
else
minute_cnt<=minute_cnt;
else;
always@(posedge?clk_in)
if(state==reset_time_state)//復(fù)位狀態(tài)
second_cnt<=8'd0;
else
if(state==cnt_time_state?&&?clk_100Hz==1)//計(jì)時(shí)狀態(tài)
if(Millisecond_cnt==8'd99)//990ms時(shí)向前記1秒
if(second_cnt<8'd59)
second_cnt<=second_cnt+8'd1;//計(jì)時(shí)到990ms,下一次就到1秒了
else
second_cnt<=8'd0;
else
second_cnt<=second_cnt;
else;
always@(posedge?clk_in)
if(state==reset_time_state)//復(fù)位狀態(tài)
Millisecond_cnt<=8'd0;
else
if(state==cnt_time_state?&&?clk_100Hz==1)//計(jì)時(shí)狀態(tài)
if(Millisecond_cnt<8'd99)//計(jì)時(shí)到990ms,下一次就到1秒了
Millisecond_cnt<=Millisecond_cnt+8'd1;
else
Millisecond_cnt<=8'd0;//計(jì)時(shí)到990ms,下一次就到1秒了
else;
assign?stopwatch_Millisecond=Millisecond_cnt;
assign?stopwatch_second=second_cnt;
assign?stopwatch_minute=minute_cnt;
endmodule

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

1. 工程文件

2. 程序文件

3. 程序編譯

4. RTL圖

5. 管腳分配

6. Testbench

7. 仿真圖

整體仿真圖

分頻模塊

控制模塊

按鍵模塊

顯示模塊

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

  • 1-231019215Q0524.doc
    下載

相關(guān)推薦