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

电子万年历Verilog代码远程云端平台Quartus

06/03 09:23
444
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-23121G010505C.doc

共1个文件

名称:电子万年历Verilog代码远程云端平台Quartus

软件:Quartus

语言:Verilog

代码功能:

任务及要求:

1.设计内容和要求(包括设计内容、主要指标与技术参数)

设计内容:基于FPGA的电子万年历的设计。

设计要求:

(1)设计语言为 Verilog。

(2)设计基于FPGA的电子万年历的设计:要求可以显示年、月、日;同时可以整年、月。

日:注意闰年。

(3)采用层次化的设计。

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

本代码已在远程云端平台验证,远程云端平台如下,其他远程云端平台可以修改管脚适配:远程平台照片.png

演示视频:

设计文档:

1. 工程文件

2. 程序文件

3. 程序编译

4. RTL图

5. 管脚分配

6. 仿真文件(VWF)

7. 仿真图

部分代码展示:

//万年历
`timescale??1ns/100ps
module?calendar
(
input??CLK,
input??RST,
input?day_add,//天加
input?day_sub,//天减
input?month_add,//月加
input?month_sub,//月减
input?year_add,//年加
input?year_sub,//年减
output?reg?[7:0]???year_h,//年高位
output?reg?[7:0]???year_l,//年低位
output?reg?[3:0]???month,//月
output?reg?[4:0]???day//天
);
reg?month_add_cin=0;
reg?month_sub_cin=0;
reg?year_add_cin=0;
reg?year_sub_cin=0;
reg?[4:0]???day_max??=??5'd30;//定义月最大天数
always@(posedge?CLK?or?posedge?RST)
begin
??if?(RST)
day_max?<=?5'd30;
??else
if(!(year_l[1:0]?==?0?&?year_l?!=0?|?year_h[1:0]?==0?&?year_l?==0)&(month?==?2))
day_max?<=?5'd28;//非闰年2月
else?if((year_l[1:0]?==?0?&?year_l?!=0?|?year_h[1:0]?==0?&?year_l?==0)&(month?==?2))
day_max?<=?5'd29;//闰年2月
else?if((month?==?4)|(month?==?6)|(month?==?9)|(month?==?11))
day_max?<=?5'd30;//小月
else?if((month?==?1)|(month?==?3)|(month?==?5)|(month?==?7)|(month?==?8)|(month?==?10)|(month?==?12))
day_max?<=?5'd31;//大月
else
day_max?<=?5'd30;
end
//调整天------------------------------------------------------------------------------
always@(posedge?CLK?or?posedge?RST)
????if?(RST)
day?<=?5'd1;
????else
if(day_add)//加
if(day>=day_max)
begin
day?<=?5'd1;
month_add_cin<=1;//月进1
end
else
begin
day?<=day?+?5'd1;
???month_add_cin<=0;
end
else?if(day_sub)//减
if(day==5'd1)
begin
day?<=?day_max;
???month_sub_cin<=1;//月减1
end
else?
begin
day?<=day?-?5'd1;
???month_sub_cin<=0;//
end
else?if(day>=day_max)begin
day?<=day_max;
month_add_cin<=0;
month_sub_cin<=0;//
end
else
???begin
day?<=day;
month_add_cin<=0;
month_sub_cin<=0;//
end
//调整月------------------------------------------------------------------------------
always@(posedge?CLK?or?posedge?RST)
????if?(RST)
month?<=?4'd1;
????else
if(month_add?|?month_add_cin)//加
if(month>=4'd12)//12月
begin
month?<=?4'd1;
???year_add_cin<=1;//年加1
end
else
begin
month?<=month?+?4'd1;
???year_add_cin<=0;//
end
else?if(month_sub?|?month_sub_cin)//减
if(month==4'd1)
begin
month?<=?4'd12;
???year_sub_cin<=1;//年减1
end
else
begin
month?<=month?-?4'd1;
year_sub_cin<=0;
end
else
begin
month?<=month;
year_add_cin<=0;//
year_sub_cin<=0;
end
//调整年------------------------------------------------------------------------------
always@(posedge?CLK?or?posedge?RST)
????if?(RST)
begin//复位到2019年
year_l?<=?8'd19;//年低位
year_h?<=?8'd20;//年高位
end
????else
if(year_add?|?year_add_cin)//年加
if(year_l==8'd99?&&?year_h==8'd99)//9999年
begin
year_l?<=?8'd0;
year_h?<=?8'd0;
end
else?if(year_l==8'd99)//99年
begin
year_l?<=?8'd0;
year_h?<=year_h?+?8'd1;
end
else//低位加1
begin
year_l?<=year_l?+?8'd1;
year_h?<=year_h;
end
else?if(year_sub?|?year_sub_cin)//年减
if(year_l==8'd00?&&?year_h==8'd00)//0000年
begin
year_l?<=?8'd0;
year_h?<=?8'd0;
end
else?if(year_l==8'd00)//00年
begin
year_l?<=?8'd99;
year_h?<=year_h?-?8'd1;
end
else//低位减1
begin
year_l?<=year_l?-?8'd1;
year_h?<=year_h;
end
else
begin
year_l?<=year_l;
year_h?<=year_h;
end
endmodule

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

  • 2-23121G010505C.doc
    下载

相关推荐