电子万年历 FPGA 设计 Verilog Quartus FPGA代码工程源码下载

名称:电子万年历 FPGA 设计 Verilog Quartus FPGA代码工程源码下载

软件:Quartus

语言:Verilog

开发板/平台:Cyclone IV FPGA开发板

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

功能介绍

本设计实现一个基于 FPGA 的电子万年历系统,使用 Verilog 语言编写,工程环境为 Quartus。系统以 FPGA 时钟为基础完成日期与时间计数,并通过数码管输出显示年月日、时分秒以及星期信息,适合用于 FPGA 数字系统设计、课程设计和 Verilog 时序逻辑综合练习。 系统支持两种显示内容切换:当显示切换信号为高电平时,数码管显示年月日;当显示切换信号为低电平时,数码管显示时分秒。星期信息由独立数码管输出,便于观察当前日期对应的星期状态。 设计还加入了手动调整功能。通过调整使能信号进入设置状态后,可分别对年/小时、月/分钟、日/秒以及星期进行按键调整。按键输入经过消抖和上升沿提取后再送入计时模块,降低机械按键抖动对计数逻辑的影响。

运行环境

开发语言:Verilog 开发软件:Quartus 顶层模块:calendar_top 主要工程:calendar_top.qpf、calendar_top.qsf 仿真文件:tb_calendar_top.v 目标验证平台:Cyclone IV FPGA开发板

设计思路

整体设计采用“顶层连接 + 计时控制 + 显示译码 + 按键消抖”的结构。顶层模块 calendar_top 负责连接外部时钟、复位、显示切换、调整使能、各路按键输入以及 7 位数码管输出,同时例化按键消抖模块、万年历计时模块和显示模块,使各功能边界清晰,便于综合、仿真和移植。 按键部分由 key_jitter 模块完成消抖处理,并输出按键有效脉冲。年/小时、月/分钟、日/秒、星期调整按键分别进入独立的消抖实例,顶层将消抖后的脉冲送入 calendar 计时模块,避免直接使用原始机械按键信号引起重复触发。 calendar 模块承担万年历的核心计数与调整逻辑,输出年、月、日、时、分、秒和星期等数据。显示模式由 display_SW 控制,在日期显示模式下输出年月日,在时间显示模式下输出时分秒。调整使能 change_en 用于区分正常计时和人工设置状态。 显示部分由 display 模块完成数据到数码管输出的组织,将 calendar 模块输出的 BCD/数值信息映射到 HEX0 至 HEX6。该结构把计时逻辑与显示逻辑分离,后续如需修改显示位数、显示格式或切换到其他显示器件,也更容易定位相关代码。

模块结构

主要模块包括: calendar_top:顶层模块,连接时钟、复位、按键、显示切换信号和数码管输出,并完成各子模块例化。 calendar:万年历计时与调整控制模块,产生年、月、日、时、分、秒、星期等输出。 display:数码管显示模块,根据显示切换信号选择日期或时间内容,并驱动 HEX0 至 HEX6 输出。 key_jitter:按键消抖模块,将机械按键输入转换为稳定的按键脉冲。 tb_calendar_top:顶层仿真 Testbench,用于对 calendar_top 进行仿真验证。

开发板验证

工程包含面向 Cyclone IV FPGA开发板的管脚约束与分配文件,数码管、按键、时钟和复位等外设信号已按开发板资源进行约束。该设计可用于开发板下载验证,重点观察数码管日期/时间切换显示、按键调整年月日时分秒及星期等功能。

演示视频

配有演示视频,可直观看到电子万年历在 FPGA 开发板上的运行效果,包括数码管显示和按键交互过程。

仿真图/仿真说明/设计文档图片

设计文档内容覆盖工程文件、程序文件、程序编译、RTL 图、管脚分配、仿真图、Testbench、顶层仿真、控制模块、显示模块和按键模块等部分,可用于理解工程结构、仿真流程与模块连接关系。

电子万年历 FPGA 设计 Verilog Quartus FPGA代码工程源码下载 设计文档图片 image1.png

电子万年历 FPGA 设计 Verilog Quartus FPGA代码工程源码下载 设计文档图片 image10.png

电子万年历 FPGA 设计 Verilog Quartus FPGA代码工程源码下载 设计文档图片 image11.png

电子万年历 FPGA 设计 Verilog Quartus FPGA代码工程源码下载 设计文档图片 image12.png

电子万年历 FPGA 设计 Verilog Quartus FPGA代码工程源码下载 设计文档图片 image13.png

电子万年历 FPGA 设计 Verilog Quartus FPGA代码工程源码下载 设计文档图片 image14.png

电子万年历 FPGA 设计 Verilog Quartus FPGA代码工程源码下载 设计文档图片 image2.png

电子万年历 FPGA 设计 Verilog Quartus FPGA代码工程源码下载 设计文档图片 image3.png

电子万年历 FPGA 设计 Verilog Quartus FPGA代码工程源码下载 设计文档图片 image4.png

电子万年历 FPGA 设计 Verilog Quartus FPGA代码工程源码下载 设计文档图片 image5.png

电子万年历 FPGA 设计 Verilog Quartus FPGA代码工程源码下载 设计文档图片 image6.png

电子万年历 FPGA 设计 Verilog Quartus FPGA代码工程源码下载 设计文档图片 image7.png

电子万年历 FPGA 设计 Verilog Quartus FPGA代码工程源码下载 设计文档图片 image8.png

电子万年历 FPGA 设计 Verilog Quartus FPGA代码工程源码下载 设计文档图片 image9.png

部分代码

以下展示顶层模块 calendar_top 的部分代码,完整源码请下载压缩包查看。

module calendar_top(
input sysclk,//时钟20M
input reset_p,//高电平复位--键1

input change_en,//调整使能信号,为高电平表示调整信号,低电平不调整--键2
input display_SW,//显示切换开关,高电平显示年月日,低电平显示时分秒--键3

input year_hour_key,//年调整信号、小时调整信号--键4
input month_minute_key,//月调整信号、分钟调整信号--键5
input day_second_key,//日调整信号、秒调整信号--键6
input week_key,//星期调整--键7

output [3:0] HEX0,//数码管
output [3:0] HEX1,//数码管
output [3:0] HEX2,//数码管
output [3:0] HEX3,//数码管
output [3:0] HEX4,//数码管
output [3:0] HEX5,//数码管
output [3:0] HEX6 //数码管 星期
);

wire [7:0]   year_l_O   ;
wire [7:0]   month_O    ;
wire [7:0]   day_O      ;
wire [7:0]   hour_O     ;
wire [7:0]   minute_O   ;
wire [7:0]   second_O   ;

wire [3:0]   week_O   ;
wire reset_n;

wire year_hour_p;//年调整信号、小时调整信号--键4
wire month_minute_p;//月调整信号、分钟调整信号--键5
wire day_second_p;//日调整信号、秒调整信号--键6
wire week_p;//星期调整--键7

assign reset_n =~ reset_p;

//按键消抖
key_jitter i0_key_jitter(
. clkin(sysclk),     
. key_in(year_hour_key),//输入
. key_p(year_hour_p)//按键上升沿
);

key_jitter i1_key_jitter(
. clkin(sysclk),     
. key_in(month_minute_key),//输入
. key_p(month_minute_p)//按键上升沿
);

key_jitter i2_key_jitter(
. clkin(sysclk),     
. key_in(day_second_key),//输入
. key_p(day_second_p)//按键上升沿
);

key_jitter i3_key_jitter(
. clkin(sysclk),     
. key_in(week_key),//输入
. key_p(week_p)//按键上升沿
);


//万年历计时模块
calendar i_calendar
(
. sysclk(sysclk),
. reset_n(reset_n),

. change_en(change_en),//调整使能信号,为高电平表示调整信号,低电平不调整
. display_SW(display_SW),//显示切换开关,高电平显示年月日,低电平显示时分秒

. year_hour_key(year_hour_p),//年调整信号、小时调整信号
. month_minute_key(month_minute_p),//月调整信号、分钟调整信号
. day_second_key(day_second_p),//日调整信号、秒调整信号

. week_key(week_p),//星期
. week_O (week_O),

. year_l_O   (year_l_O),
. month_O    (month_O),
. day_O      (day_O),
. hour_O     (hour_O),
. minute_O   (minute_O),
. second_O   (second_O)
);

//数码管显示模块
display i_display(
. sysclk(sysclk),//时钟50M
. reset_n(reset_n),//低电平复位

. display_SW(display_SW),//显示切换开关,高电平显示年月日,低电平显示时分秒
. year_l_O   (year_l_O),
. month_O    (month_O),
. day_O      (day_O),
. hour_O     (hour_O),
. minute_O   (minute_O),
. second_O   (second_O),
. week_O (week_O),

. HEX0(HEX0),//数码管
. HEX1(HEX1),
. HEX2(HEX2),
. HEX3(HEX3),
. HEX4(HEX4),
. HEX5(HEX5),
. HEX6(HEX6)
);


endmodule

代码文件(付费下载)

📥 付费后此处显示完整工程压缩包下载链接。
1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 电子万年历 FPGA 设计 Verilog Quartus FPGA代码工程源码下载

注册为本站会员,充值100得150,详情咨询客服

目前为止共有 *** 位优秀的会员加入! 立刻加入会员