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

基于FPGA的多功能时钟设计Verilog代码ISE仿真

07/29 14:13
1053
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-24052H00Tb93.doc

共1个文件

名称:基于FPGA的多功能时钟设计Verilog代码ISE仿真

软件:ISE

语言:Verilog

代码功能:

多功能时钟设计

1.能准确计时并显示小时、分钟和秒(为演示方便仿真时可自行调整计时单位完成从00:00:00到23:59:59的计时功能)。

2.按键控制设定当前时间和闹钟时间。

3.具备整点报时和闹钟报时功能。

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

演示视频:

设计文档:

1. 工程文件

2. 程序文件

3. 程序编译

4. RTL图

5. Testbench

6. 仿真图

分频模块

按键下降沿检测模块

模式设置模块

计时模块

闹钟设置模块

响铃模块

数码管显示模块

部分代码展示:

//设置闹钟模块
module alarm_clock(
input clk_50M,
input [3:0] state_mode,//当前模式,4'd0:计时,4'd1:闹钟
input set_time_key,//设置时间
input confirm_key,//确认
input change_time_key,//设置时分秒
output reg [2:0] led_alarm_time,
output [7:0] alarm_hour_time,//时
output [7:0] alarm_minute_time,//分
output [7:0] alarm_second_time//秒
);
reg [7:0] hour=8'd16;//时
reg [7:0] minute=8'd59;//分
reg [7:0] second=8'd00;//秒
parameter state_time=2'd0;//正常计时状态
parameter state_set_hour=2'd1;//设置小时状态
parameter state_set_minute=2'd2;//设置小时状态
parameter state_set_second=2'd3;//设置秒状态
reg [1:0] state=state_time;//默认正常计时状态
always@(posedge clk_50M)
if(state_mode==4'd1)//当前模式,4'd0:计时,4'd1:闹钟
case(state)
state_time:
if(set_time_key)//设置键按下,进入设置小时状态
state<=state_set_hour;
else
state<=state_time;
state_set_hour:
if(confirm_key)//确认键按下,进入设置分钟状态
state<=state_set_minute;
else
state<=state_set_hour;
state_set_minute:
if(confirm_key)//确认键按下,进入设置秒状态
state<=state_set_second;
else
state<=state_set_minute;
state_set_second:
if(confirm_key)//确认键按下,返回正常计时状态
state<=state_time;
else
state<=state_set_second;
default:;
endcase
else
state<=state_time;
always@(posedge clk_50M)
case(state)
state_set_hour:
led_alarm_time<=3'b100;
state_set_minute:
led_alarm_time<=3'b010;
state_set_second:
led_alarm_time<=3'b001;
default:led_alarm_time<=3'b000;
endcase
always@(posedge clk_50M)
case(state)
state_set_hour:
if(change_time_key)
if(hour==8'd23)
hour<=8'd0;
else
hour<=hour+8'd1;
state_set_minute:
if(change_time_key)
if(minute==8'd59)
minute<=8'd0;
else
minute<=minute+8'd1;
state_set_second:
if(change_time_key)
if(second==8'd59)
second<=8'd0;
else
second<=second+8'd1;
default:;
endcase
assign alarm_hour_time=hour;
assign alarm_minute_time=minute;
assign alarm_second_time=second;
endmodule

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

  • 2-24052H00Tb93.doc
    下载

相关推荐