30分钟倒计时设计Verilog代码Quartus仿真

名称:30分钟倒计时设计Verilog代码Quartus仿真(文末获取)

软件:Quartus

语言:Verilog

代码功能:

时间可调的倒计时器设计

1、可以通过加减按键控制倒计时起始时间

2、按下开始按键后开始倒计时

1. 工程文件

2. 程序文件

3. 程序编译

4. testbench

5. 仿真图

整体仿真图

按键设置加10,减10分钟,按下开始按键后开始倒计时

倒计时,分钟和秒钟

倒计时结束

数码管位选和段选(对应程序中数码管段选译码和位选)

部分代码展示:

module timing(
input clk_50Hz,//50Hz时钟
input start_key,//开始按键
input add_10_key,//加10分钟
input sub_10_key,//减10分钟
output reg[3:0]bit_select,//数码管位选低有效
output reg[7:0]seg_select//数码管段选低有效
);
wire rst;//低电平复位
assign rst=1;
reg [7:0]minute=8'd30;
reg [7:0]second=8'd0;
///分频计时1s
reg [31:0] time_count=32'd0;
reg clk_1Hz=1'd0;
always@(posedge clk_50Hz)
if(time_count==32'd49)//分频到1Hz
begin
time_count<=32'd0;
clk_1Hz<=1;
end
else begin
time_count<=time_count+32'd1;
clk_1Hz<=0;
end
/状态机/
reg [1:0]current_state;
reg [1:0]next_state;
parameter idle =2'd0;//起始状态
parameter timing =2'd1;//定时状态
parameter alarm =2'd2;//定时结束
always@(posedge clk_50Hz)
begin
if(rst==1'd0)
begin
current_state <=idle;
end
else begin
current_state<=next_state;
end
end
//状态机设计
always@(*)
begin 
case (current_state)
idle:
begin
if(start_key==1)//按下开始键开始倒计时
next_state=timing;
else
next_state=idle;
end
timing:
begin
if(minute==8'd00 && second==8'd00)//倒计时结束后到alarm状态
begin 
next_state=alarm;
end
else begin
next_state=timing;
end
end
alarm:
begin 
next_state=idle;//回到起始状态
end
default:
begin
current_state=idle;
end
endcase
end
always@(posedge clk_50Hz)
begin
if(rst==1'd0)
begin
minute <=8'd30;//复位后显示30分钟00秒
second <=8'd0;
end
case (current_state)
timing://倒计时
begin
if(clk_1Hz)//1秒钟变一次
if(minute==8'd0 && second==8'd0)begin  
minute<=8'd0;  
second<=8'd0;
end
else if(second==8'd0)begin  
minute<=minute-8'd1;  
second<=8'd59;
end
else begin  
minute<=minute;  
second<=second-8'd1;
end
end
idle://设置倒计时时间
begin
if(add_10_key==1)//加10分钟
if(minute>=8'd99)
minute<=8'd99;//最大不超过99分钟
else
minute<=minute+8'd10;//加10分钟
else if(sub_10_key==1)//减10分钟
if(minute<8'd10)
minute<=8'd10;//最小不低于10分钟,否则再减10变为负数
else
minute<=minute-8'd10;//减10分钟
end
default:;
endcase
end
源代码

 扫描文章末尾的公众号二维码

  • 19
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Quartus II是一个集成的开发环境,用于设计和实现数字电路。它支持使用Verilog语言进行设计仿真。你可以使用Quartus II和Verilog编写代码来实现8位计数器,并通过Modelsim进行仿真。 在设计四路抢答器时,可以使用Quartus II进行Verilog仿真。你可以按照系统框图进行模块划分,并参考提供的代码来完成设计。其中包括按键输入模块、控制模块、倒计时模块、抢答信号编码模块、七段数码管译码模块、数码管动态扫描模块、分频模块等。通过Quartus II的功能仿真和Modelsim的仿真,你可以验证设计的正确性和功能性。 要实现60秒的倒计时,在倒计时模块中,可以使用两个计时变量来表示十位和个位数。倒计时器受控制器的使能信号控制,并在计时为零时反馈给控制器一个零标志信号。你可以参考提供的代码来实现倒计时计数器模块。 综上所述,你可以使用Quartus II和Verilog语言来进行设计仿真,在完成设计后使用Modelsim进行仿真验证。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Quartus ii与verilog实现8位计数器,Modelsim仿真](https://download.csdn.net/download/DengFengLai123/12306360)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [大作业实录:基于 verilog 的简易抢答器设计quartusII 仿真](https://blog.csdn.net/gerdios/article/details/110501838)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值