可调定时器设计Verilog代码Quartus仿真

名称:可调定时器设计Verilog代码Quartus仿真(文末获取)

软件:Quartus

语言:Verilog

代码功能:

EDA技术

设计一个可调的定时器,定时时间默认为x秒(x=个人学号%10+5),定时器具

有启动,复位,到时警告功能(比如点亮一个LED灯)。(100分)。

要求

1.写出设计文件xx(xx命名规则为tmer姓名首字母2位学号,如 timer jl12)(40分)

2会用 Quartus软件建工程并进行编译(20分)(编译完成截图保存,图片命名为编译结果)

4仿真结果截图(20分)(仿真完成截图保存,图片命名为仿真结果)5工程文件的提交(20分)

1. 工程文件

2. 程序文件

3. 程序编译

4. Testbench

5. 仿真图

部分代码展示:

//默认7秒
module timer_fjd_42(
input clk,//1KHz时钟
input rst_p,//复位
input set_key,//按键调时间1~60秒
input start_key,//启动
output reg led,//led到时警告
output reg [1:0] SEL,//数码管位选
output [7:0] SEG//数码管段选,低电平亮
);
reg [2:0] state=3'd0;
parameter s_idle=3'd0;
parameter s_start=3'd1;
parameter s_end=3'd2;
wire [7:0] second;
reg [7:0] second_set=8'd7;
//按键设计定时时间
always@(posedge clk or posedge rst_p)
if(rst_p==1)
second_set<=8'd7;//默认7秒
else if(set_key==1)//按键调时间1~60秒
if(second_set==8'd60)
second_set<=8'd1;
else
second_set<=second_set+8'd1;//累计数
reg [7:0] second_cnt=8'd0;
always@(posedge clk or posedge rst_p)
if(rst_p==1)
state<=s_idle;//复位
else
case(state)
s_idle://空闲状态
if(start_key==1)//启动按键
state<=s_start;//计时
else
state<=s_idle;
s_start://计时状态
if(second_cnt==second_set)
state<=s_end;//结束
else
state<=s_start;//倒计时
s_end://结束状态
state<=s_end;//结束
default:;
endcase
always@(posedge clk or posedge rst_p)
if(rst_p==1)
led<=0;
else
if(state==s_end)//结束状态
led<=1;//led到时警告
else
led<=0;
//分频到1Hz
reg [31:0] count=32'd0;
always@(posedge clk or posedge rst_p)
if(rst_p==1)
count<=32'd0;
else
if(state==s_start)//计时状态
if(count==32'd1000)//1KHz计数1000就是1秒
count<=32'd0;
else
count<=count+32'd1;//计数
else
count<=count;//不计数
always@(posedge clk or posedge rst_p)
if(rst_p==1)
second_cnt<=8'd0;//复位,计数值回到0
else
if(state==s_start)//计时状态
if(count==32'd1000)//1秒计时1次
second_cnt<=second_cnt+8'd1;
else
second_cnt<=second_cnt;
else
second_cnt<=second_cnt;
assign second=second_cnt;//秒计时
源代码

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

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于verilogFPGA数字秒表设计实验QUARTUS工程源码+文档说明资料 module time_clock( clk, reset_n, hour_select_key, second_counter_key, second_countdown_key, pause_key, duan, wei ); input clk; //clk:50MHZ时钟输入; input reset_n; //复位信号输入,低电平有效; input hour_select_key; //12、24小时可以调节按键,当为‘1’时为24,‘0’时为12小时; input second_counter_key; //当该按键为‘1’时为秒表计时功能,‘0’时为正常功能; input second_countdown_key; //当该按键为‘1’时为倒计时功能,‘0’时为正常功能; input pause_key; //暂停功能按键,进行秒表计时和倒计时时可以通过该按键进行暂停,‘1’暂停,‘0’继续 output [7:0] duan; //duan:数码管段码; output [7:0] wei; //wei:数码管位码; reg [7:0] duan; //duan:数码管段码; reg [7:0] wei; //wei:数码管位码; reg [24:0] count; //1HZ时钟计数器 reg [13:0] count2; //扫描时钟计数器 reg clk_1hz; //1HZ时钟信号 reg [3:0] miao_ge; //秒个位数BCD码 reg [2:0] miao_shi; //秒十位BCD二进制码 reg [3:0] fen_ge; //分钟个位数 reg [2:0] fen_shi; //分钟十位数 reg [1:0] shi_ge; //时钟个位数 reg [1:0] shi_shi; //时钟十位数 reg [1:0] shi_select_ge; //时钟选择个位数,用于调节时制 reg [1:0] shi_select_shi; //时钟选择十位数,用于调节时制 reg clk_scan; //数码管扫描时钟 reg [2:0] select; //用于扫描时选择显示位码 //**************************************************************************************************** // 模块名称:秒时钟分频模块 // 功能描述: //*******************************************************************

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值