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

正数倒数计时器设计Verilog代码Quartus仿真

08/13 09:37
478
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-240R316013D32.doc

共1个文件

名称:正数倒数计时器设计Verilog代码Quartus仿真

软件:Quartus

语言:Verilog

代码功能:

从5开始,拨动开关1,开始倒计时543210—秒一变拔动开关2,开始正向增加5、6、7、8、9、10—秒一变。

FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com

演示视频:

设计文档:

1. 工程文件

2. 顶层block图

3. 模块代码

4. 程序编译

5. 仿真图

部分代码展示:

//按键控制倒计时
module down_time(
input clk_in,//时钟
input reset,//复位
input clk_1Hz,//1秒使能信号
input key_1,//开关1
input key_2,//开关2
output [3:0] time_cnt//时间
);
reg [1:0] state=2'd0;
//定义状态
parameter s_idle=2'd0;
parameter s_sub=2'd1;
parameter s_add=2'd2;
parameter s_end=2'd3;
reg [3:0] count=4'd5;//计数器
always@(posedge clk_in or posedge reset)
if(reset)//复位
state<=s_idle;//空闲状态
else
case(state)
s_idle:
if(key_1)//开关1
state<=s_sub;//递减状态
else if(key_2)//开关2
state<=s_add;//递增状态
else
state<=s_idle;//空闲状态
s_sub://递减状态
if(count==4'd0)//减到0
state<=s_end;//结束
else
state<=s_sub;//递减状态
s_add://递增状态
if(count==4'd10)//加到10
state<=s_end;//结束
else
state<=s_add;//递增状态
s_end://结束
state<=s_idle;//空闲状态
default:;
endcase
always@(posedge clk_in or posedge reset)
if(reset)//复位
count<=4'd5;//起始值为5
else
if(state==s_sub && clk_1Hz)//递减状态/1秒使能信号
count<=count-1;//递减
else if(state==s_add && clk_1Hz)//递增状态/1秒使能信号
count<=count+1;//递增
else
;
assign time_cnt=count;//时间
endmodule

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

  • 2-240R316013D32.doc
    下载

相关推荐