• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

简单秒表设计仿真verilog跑表

05/20 09:43
651
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

1-2310192311319E.doc

共1个文件

名称:简单秒表设计仿真(代码在文末付费下载)

软件:Quartus

语言:Verilog

代码功能:

秒表显示最低计时为10ms,最大为59:99,超出返回00:00,具有复位、启动、暂停三个按键,四个数码管分别显示4个时间数字。

演示视频:

FPGA代码资源下载网:hdlcode.com

部分代码展示

module?stopwatch(
input?clk,//100Hz--对应10ms
input?start_key,//启动
input?stop_key,//暂停
input?reset_key,//复位
output?reg?[7:0]?display0,//输出数码管显示
output?reg?[7:0]?display1,//输出数码管显示
output?reg?[7:0]?display2,//输出数码管显示
output?reg?[7:0]?display3//输出数码管显示
);
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;
//计时状态机
always@(posedge?clk)
if(reset_key)
state<=reset_time_state;//复位状态
else
case(state)
reset_time_state://复位状态
state<=idle_state;
idle_state://空闲状态
if(start_key)
state<=cnt_time_state;
else
state<=idle_state;
cnt_time_state://计时状态
if(stop_key)
state<=hold_time_state;
else
state<=cnt_time_state;
hold_time_state://暂停状态
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;//秒
always@(posedge?clk)
if(state==reset_time_state)//复位状态
second_cnt<=8'd0;
else
if(state==cnt_time_state)//计时状态
if(Millisecond_cnt==8'd99)//990ms时向前记1秒
if(second_cnt<8'd59)
second_cnt<=second_cnt+8'd1;//计时到990ms,下一次就到1秒了

设计文档:

1.工程文件

2.程序代码

3.程序运行

4.Testbench

5.仿真图

秒表显示最低计时为10ms,最大为59:99,超出返回00:00

具有复位、启动、暂停三个按键

四个数码管分别显示4个时间数字。

1、整体仿真图

2、复位功能

3、启动按键

4、暂停按键

5、10ms毫秒计时

6、秒计时

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=200

  • 1-2310192311319E.doc
    下载

相关推荐