名称:Quartus秒表设计verilog代码仿真(文末获取)
软件:Quartus
语言:Verilog
代码功能:
设计一个可记录 60 秒时长的秒表,具有两个控制按键 k0 和 k1,基本功能如下:
(1)按下 k0,计时开始;再次按下 k0,计时暂停;再次按下 k0,计时继续。
(2)计时开始后,按下 k1,显示暂停,即显示的数字冻结,内部仍在计时;再次按
下 k1,显示更新为新的计时时间,仍然冻结,内部仍继续计时。
(3)计时暂停时,按下 k1,计时复位清零。
(4)冻结显示时,按下 k0,恢复正常显示
1. 工程文件
2. 程序文件
3. 程序编译
4. RTL图
5. Testbench
6. 仿真图
整体仿真图
按键检测模块
分频模块
控制模块
显示模块
部分代码展示:
//设计一个可记录 60 秒时长的秒表,具有两个控制按键 k0 和 k1,基本功能如下: //(1)按下 k0,计时开始;再次按下 k0,计时暂停;再次按下 k0,计时继续。 //(2)计时开始后,按下 k1,显示暂停,即显示的数字冻结,内部仍在计时;再次按 //下 k1,显示更新为新的计时时间,仍然冻结,内部仍继续计时。 //(3)计时暂停时,按下 k1,计时复位清零。 //(4)冻结显示时,按下 k0,恢复正常显示 module Digital_clock( input clk_in,//有源晶振 input k0,//启动//暂停 input k1,//暂停//复位 output [5:0] bit_select,//数码管位选,低电平有效 output [7:0] seg_select//数码管段选,为低电平时,相应字段就点亮 ); wire [7:0] stopwatch_Millisecond;//10毫秒 wire [7:0] stopwatch_second;//秒 wire [7:0] stopwatch_minute;//分 wire k0_n;//启动//暂停 wire k1_n;//暂停//复位 wire clk_100Hz; //按键检测 key_jitter i0_key_jitter( . clkin(clk_in), . key_in(k0),//输入 . key_negedge(k0_n)//消抖后按键下降沿 ); //按键检测 key_jitter i1_key_jitter( . clkin(clk_in), . key_in(k1),//输入 . key_negedge(k1_n)//消抖后按键下降沿 ); //分频模块,产生100Hz用于秒表计时 fenping fenping_Hz( . clk_in(clk_in), . clk_100Hz(clk_100Hz)//100Hz--对应10ms ); // //秒表控制模块 stopwatch i_stopwatch( . clk_in(clk_in), . clk_100Hz(clk_100Hz),//100Hz--对应10ms . k0(k0_n),//启动//暂停 . k1(k1_n),//暂停//复位 . stopwatch_Millisecond(stopwatch_Millisecond),//10毫秒 . stopwatch_second(stopwatch_second),//秒 . stopwatch_minute(stopwatch_minute)//分 ); //数码管显示模块 display i_display( . clk(clk_in), . stopwatch_Millisecond(stopwatch_Millisecond),//10毫秒 . stopwatch_second(stopwatch_second),//秒 . stopwatch_minute(stopwatch_minute),//分 . bit_select(bit_select),//数码管位选 . seg_select(seg_select)//数码管段选 ); endmodule
完整代码
扫描文章末尾的公众号二维码