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

数字电子时钟设计Verilog代码Quartus DE2-70开发板

09/10 10:49
648
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-2410111QJ4K2.doc

共1个文件

名称:数字电子时钟设计Verilog代码Quartus? DE2-70开发板

软件:Quartus

语言:Verilog

代码功能:

数字电子时钟

1.设计目的

(1)了解DE2-70开发板的硬件构成;

(2)熟悉开发板可用资源的硬件电路

(3)掌握EDA开发流程;

(4)熟悉 Quartus开发环境;

(5)掌握 Verilog基本语法;

(6)熟练掌握在 Quartus环境下进行软件仿真的方法。

2.设计内容及基本要求

(1)基本功能

①用6个数码管显示正常的时分秒显示功能;

②完成时间的校正;

③可以设置闹钟,当到达闹钟时间时,6个数码管闪烁5秒进行提示;

④可以完成12小时制和24小时制显示之间的切换。

(2)扩展功能

用1个数码管显示星期。

3.撰写课程设计报告。报告内容要求如下:

设计题目、目的、内容设计思路;

系统电路图

各功能模块的功能、实现方法、电路图(源代码)、功能仿真图开发板硬件资源使用情况;

FPGA引脚分配表;

编程模块的源代码清单设计时碰到的问题及解决方法。

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

本代码已在DE2-70开发板验证,DE2-70开发板如下,其他开发板可以修改管脚适配:

DE2-70开发板.png

演示视频:

设计文档:

1.?控制方法:

2个拨码开关SW0和SW1控制模式:

SW0=0,SW1=0为正常计时模式;

SW0=0,SW1=1为修改时间模式;

SW0=1,SW1=0为显示闹钟时间模式;

SW0=1,SW1=1为修改闹钟时间模式;

SW2控制进制切换

2个按键,key0修改小时,key1修改分钟:

将拨码开关设置为SW0=0,SW1=1,此时按下按键可以修改当前时间;

将拨码开关设置为SW0=1,SW1=1,此时按下按键可以修改闹钟时间;

2.?工程文件

3.?程序文件

4.?程序编译

5.?程序RTL图

6.?管脚分配

7.?仿真图

分频模块,用于将50MHz时钟分频到1Hz

设置模式模块,根据按键输入控制当前的模式,模式用led灯显示

计时模块,用于控制数字钟计时,也可以设置时间

上图可以看到state_mode为0001时,AHkey和AMkey可以控制小时和分钟

state_mode不为0001时,正常计时,秒钟计数到59,分钟加1,秒清零

闹钟设置模块,设置闹钟设计

上图可以看到state_mode为0011时,AHkey和AMkey可以控制小时和分钟

显示模块,数码管显示时分秒。闹钟时闪烁5秒,可以切换进制

部分代码展示:

//设置闹钟模块
module?alarm_clock(
input?clk_50M,
input?[3:0]?state_mode,////当前模式,4'd0:计时,4'd1设置时间?,4'd2显示闹钟时间,4'd3设置闹钟时间
input?AH_key,//AH?修改小时
input?AM_key,//AM?修改分钟
output?[7:0]?alarm_hour_time,//时
output?[7:0]?alarm_minute_time,//分
output?[7:0]?alarm_second_time//秒
);
wire?AH_key_negedge;
wire?AM_key_negedge;
reg?AH_key_buf0;
reg?AH_key_buf1;
reg?AM_key_buf0;
reg?AM_key_buf1;
always@(posedge?clk_50M)
begin
AH_key_buf0<=AH_key;
AH_key_buf1<=AH_key_buf0;
end
always@(posedge?clk_50M)
begin
AM_key_buf0<=AM_key;
AM_key_buf1<=AM_key_buf0;
end
assign?AH_key_negedge=~AH_key_buf0?&?AH_key_buf1;//按键下降沿
assign?AM_key_negedge=~AM_key_buf0?&?AM_key_buf1;//按键下降沿
reg?[7:0]?hour=8'd21;//时
reg?[7:0]?minute=8'd59;//分
reg?[7:0]?second=8'd00;//秒
always@(posedge?clk_50M)
if(state_mode==4'd3)begin//4'd3设置闹钟时间
if(AH_key_negedge)
if(hour==8'd23)
hour<=8'd0;
else
hour<=hour+8'd1;
else
hour<=hour;
if(AM_key_negedge)
if(minute==8'd59)
minute<=8'd0;
else
minute<=minute+8'd1;
else
minute<=minute;
end

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

  • 2-2410111QJ4K2.doc
    下载

相关推荐