名称:数字秒表设计正计、倒计数、回看跑表
软件: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 为功能选择键,可在正计数模式、倒计数设置http://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. 仿真图
整体仿真图
正计时模块
倒计时设置
倒计时计时
回看模块
显示模块