数字秒表verilog仿真/代码可回看、正计、倒计数跑表

名称:数字秒表设计正计、倒计数、回看跑表

软件:Quartus,ModelSim

语言:Verilog HDL

代码功能:

《数字秒表设计》项目要求

(1)计时精度 1ms,计时范围 00:00.000~99:59.999,对应分:秒:毫秒,对应的液晶屏能完整显示。

(2)设置 S3 为复位键,S0 为启动/暂停键,控制秒表复位、启动/暂停;设置 S2 为功能选择键,可在正计数模式、倒计数设置模式、倒计数工作模式、计数值回看模式之间轮流切换。切换任意模式后,原来的计数值不会消失。

(3)正计数模式时,总是从 00:00.000 开始,设置 S3 为复位键,S0 为启动/暂停键,控制秒表复位、启动、暂停。每暂停一次,就计数一次,若计数次数已经满 10 次,则后一次的计数值依次覆盖前一次的计数值。

(4)倒计数设置模式时,S3/S0 键选择调整位置;S4/S1 键进行±调整,在合法值域内变动。每按一次 S0,跳动(待修改)的位就向左移动一位,每按一次 S3,跳动(待修改)的位就向右移动一位,每按一次 S1,对应位的数字减少 1 ,每按一次 S4 ,对应位的数字增加 1;

(5)倒计数工作模式时,设置 S3 为复位键,S0 为启动/暂停键,控制秒表复位、启动、暂停。每暂停一次,就计数一次,若计数次数已经满 10 次,则后一次的计数值依次覆盖前一次的计数值。

(6)计数值回看模式时,S3/S0 键进行前/后翻操作,查看每次的计数值,最多能记录 10 次计数值。

需要仿真:所提及的按键、开关均通过自定激励文件进行模拟;提及的显示均通过输出信号表达,对显示的数字除非特别说明,均为十进制数字;提及的指示灯亮灭均通过输出信号的高低电平对应 。

演示视频:数字秒表设计正计、倒计数跑表 软件:Quartus,ModelSim语言:Verilog HDL代码功能:《数字秒表设计》项目要求(1)计时精度 1ms,计时范围

代码下载:

数字秒表设计正计、倒计数跑表 软件:Quartus,ModelSim语言:Verilog HDL代码功能:《数字秒表设计》项目要求(1)计时精度 1ms,计时范围名称:数字秒表设计正计、倒计数跑表(代码在文末付费下载)软件:Quartus,ModelSim语言:Verilog HDL代码功能:《数字秒表设计》项目要求(1)计时精度 1ms,计时范围 00:00.000~99:59.999,对应分:秒:毫秒,对应的液晶屏能完整显示。(2)设置 S3 为复位键,S0 为启动/暂停键,控制秒表复位、启动/暂停;设置 S2 为功能选择键,可在正计数模式、倒计数设置icon-default.png?t=N7T8http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=198

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

部分代码展示

module top(
input clk_1KHz,//1ms
input S0,S1,S2,S3,S4,
output  [7:0] HEX0,//数码管-低亮
output  [7:0] HEX1,//数码管-低亮
output  [7:0] HEX2,//数码管-低亮
output  [7:0] HEX3,//数码管-低亮
output  [7:0] HEX4,//数码管-低亮
output  [7:0] HEX5,//数码管-低亮
output  [7:0] HEX6 //数码管-低亮
);
wire store_en_1;//存储信号
wire store_en_2;//存储信号
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; //回看分
//跑表模块
//正计数模式时,总是从 00:00.000 开始,设置 S3 为复位键,S0 为启动/暂停键,控制秒表复位、启动
//、暂停。每暂停一次,就计数一次,若计数次数已经满 10 次,则后一次的计数值依次覆盖前一次的计数值。
stopwatch i_stopwatch(
. clk_1KHz(clk_1KHz),//1ms
. mode(mode),
. start_key(S0),//启动/暂停--S0
. reset_key(S3),//复位--S3
. store_en(store_en_1),//存储信号
. Millisecond(Millisecond),//毫秒
. second(second),//秒
. minute(minute) //分
);
//倒计数设置模式时
//S3/S0 键选择调整位置;S4/S1 键进行±调整,在合法值域内变动。
//每按一次 S0,跳动(待修改)的位就向左移动一位,每按一次 S3,
//跳动(待修改)的位就向右移动一位,每按一次 S1,对应位的数字减少 1 ,
//每按一次 S4 ,对应位的数字增加 1;
set_time i_set_time(
. clk_1KHz(clk_1KHz),//1ms
. mode(mode),
. S0(S0),//左移动一位
. S1(S1),//数字减少 1
. S3(S3),//右移动一位
. S4(S4),//数字增加 1
//倒计时起始时间
. Millisecond_set(Millisecond_set),//毫秒
. second_set(second_set),//秒
. minute_set(minute_set) //分
);
//倒计数工作模式时
//倒计数工作模式时,设置 S3 为复位键,S0 为启动/暂停键,控制秒表复位、启动、暂停。
//每暂停一次,就计数一次,若计数次数已经满 10 次,则后一次的计数值依次覆盖前一次的计数值。
downtime i_downtime(
. clk_1KHz(clk_1KHz),//1ms
. mode(mode),
. start_key(S0),//启动/暂停--S0
. reset_key(S3),//复位--S3
//倒计时起始时间
. Millisecond_set(Millisecond_set),//毫秒
. second_set(second_set),//秒
. minute_set(minute_set),//分
. store_en(store_en_2),//存储信号
. Millisecond(down_Millisecond),//毫秒
. second(down_second),//秒
. minute(down_minute) //分
);
//回看模式
//计数值回看模式时,S3/S0 键进行前/后翻操作,查看每次的计数值,最多能记录 10 次计数值。
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),//存储信号
. 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),//模式切换,在正计数模式、倒计数设置模式、倒计数工作模式、计数值回看模式之间轮流切换
. mode(mode),
    //正计时
. Millisecond(Millisecond),//毫秒
. second(second),//秒
. minute(minute),//分
    //倒计时
. down_Millisecond(down_Millisecond),//毫秒
. down_second(down_second),//秒
. down_minute(down_minute),//分
    
    //倒计时起始时间
. Millisecond_set(Millisecond_set),//毫秒
. second_set(second_set),//秒
. minute_set(minute_set),//分
    
    //回看时间
. call_Millisecond(call_Millisecond),//回看毫秒
. call_second(call_second),//回看秒
. call_minute(call_minute),//回看分
. HEX0(HEX0),//数码管-低亮
. HEX1(HEX1),//数码管-低亮
. HEX2(HEX2),//数码管-低亮
. HEX3(HEX3),//数码管-低亮
. HEX4(HEX4),//数码管-低亮
. HEX5(HEX5),//数码管-低亮
. HEX6(HEX6) //数码管-低亮
);
endmodule

设计文档:

1. 工程文件

2. 程序文件

3. 程序编译

4. RTL图

5. Testbench

6. 仿真图

整体仿真图

正计时模块

倒计时设置

倒计时计时

回看模块

显示模块

  • 2
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值