VIVADO万年历verilog代码Nexys4开发板

名称:VIVADO万年历verilog代码Nexys4开发板(文末获取)

软件:VIVADO

语言:Verilog

代码功能:

万年历要求

1、实现万年历功能,可以显示年月日,时分秒

2、支持按键调整时间,年月日,时分秒均可调整

3、使用按键切换年月日和时分秒的显示

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

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

nexys4_ddr开发板.png

工程文件

程序文件

程序编译

管脚分配

部分代码展示:

//万年历
`timescale  1ns/100ps
module permanent_calendar
(
input  clk_in,//100M
input  RST,
input mode_key,//模式
input key_1_in,
input key_2_in,
input key_3_in,
input key_4_in,
input key_5_in,
input key_6_in,
input sw_beep,
output LED,
output beep_led,
output [1:0] mode_led,
output [7:0] bit_select,//数码管位选
output [7:0] seg_select//数码管段选    
);
wire CLK;//1KHz
wire CLK_1Hz;
wire [7:0] display_1;
wire [7:0] display_2;
wire [7:0] display_3;
wire[7:0] year_h;//年高位
wire[7:0] year_l;//年低位
wire[3:0] month;//月
wire[4:0] day;//天
wire day_add;//天加
wire day_sub;//天减
wire month_add;//月加
wire month_sub;//月减
wire year_add;//年加
wire year_sub;//年减
wire [1:0] state;
wire key_1;
wire key_2;
wire key_3;
wire key_4;
wire key_5;
wire key_6;
wire hour_add;
wire minute_add;
wire [7:0]   hour_out;//小时
wire [7:0]   minute_out;//分钟
wire [7:0]   second_out;//秒
//分频模块
clk_div i_clk_div(
.  clk_in(clk_in),//100M
. CLK_1Hz(CLK_1Hz),
. CLK(CLK)//1KHz
);
mode_select i_mode_select(
. CLK(CLK),
. RST(RST),
. mode_key(mode_key),
. state(state),
. mode_led(mode_led)
);
key_6 i_key_6(
. CLK(CLK),     
. key_1_in(key_1_in),
. key_2_in(key_2_in),
. key_3_in(key_3_in),
. key_4_in(key_4_in),
. key_5_in(key_5_in),
. key_6_in(key_6_in),
. key_1(key_1),
. key_2(key_2),
. key_3(key_3),
. key_4(key_4),
. key_5(key_5),
. key_6(key_6)
);
wire day_cin;
//万年历
calendar U_calendar
(
. CLK(CLK),//1ms
. RST(RST),
. day_add(day_add | day_cin),//天加
. day_sub(day_sub),//天减
. month_add(month_add),//月加
. month_sub(month_sub),//月减
. year_add(year_add),//年加
. year_sub(year_sub),//年减
. year_h(year_h),//年高位
. year_l(year_l),//年低位
. month(month),//月
. day(day)//天
);
//时分秒
clock i_clock(
. clk(CLK),//1ms
. RST(RST),//高电平复位
. hour_add(hour_add),//小时加
. minute_add(minute_add),//分钟加
. day_cin(day_cin),//日增加
. hour_out(hour_out),//小时
. minute_out(minute_out),//分钟
. second_out(second_out)//秒
);
wire alarm_hour_add;
wire alarm_minute_add;
wire alarm_second_add;
wire [7:0]   alarm_hour_out;//小时
wire [7:0]   alarm_minute_out;//分钟
wire [7:0]   alarm_second_out;//秒钟 
//闹钟时分秒
alarm i_alarm(
. clk(CLK),//1ms
. RST(RST),//高电平复位
. alarm_hour_add(alarm_hour_add),//小时加
. alarm_minute_add(alarm_minute_add),//分钟加
. alarm_second_add(alarm_second_add),//秒钟加
. alarm_hour_out(alarm_hour_out),//小时
. alarm_minute_out(alarm_minute_out),//分钟
. alarm_second_out(alarm_second_out)//秒钟
);
wire alarm_day_add;//天加
wire alarm_day_sub;//天减
wire alarm_month_add;//月加
wire alarm_month_sub;//月减
wire alarm_year_add;//年加
wire alarm_year_sub;//年减
wire [7:0]   alarm_year_out;//年
wire [7:0]   alarm_month_out;//月
wire [7:0]   alarm_day_out;//日
//闹钟年月日
calendar alarm_calendar
(
. CLK(CLK),//1ms
. RST(RST),
. day_add(alarm_day_add),//天加
. day_sub(alarm_day_sub),//天减
. month_add(alarm_month_add),//月加
. month_sub(alarm_month_sub),//月减
. year_add(alarm_year_add),//年加
. year_sub(alarm_year_sub),//年减
. year_h(),//年高位
. year_l(alarm_year_out),//年低位
. month(alarm_month_out),//月
. day(alarm_day_out)//天
);
change_io i_change_io(
. CLK(CLK),
. RST(RST),
. state(state),
. key_1(key_1),
. key_2(key_2),
. key_3(key_3),
. key_4(key_4),
. key_5(key_5),
. key_6(key_6),
//
. year_l(year_l),//年低位
. month(month),//月
. day(day),//天
. day_add(day_add),//天加
. day_sub(day_sub),//天减
. month_add(month_add),//月加
. month_sub(month_sub),//月减
. year_add(year_add),//年加
. year_sub(year_sub),//年减
//
. hour_out(hour_out),//小时
. minute_out(minute_out),//分钟
. second_out(second_out),//秒
. hour_add(hour_add),
. minute_add(minute_add),
//
. alarm_hour_add(alarm_hour_add),
. alarm_minute_add(alarm_minute_add),
. alarm_second_add(alarm_second_add),
. alarm_hour_out(alarm_hour_out),//小时
. alarm_minute_out(alarm_minute_out),//分钟
. alarm_second_out(alarm_second_out),//秒钟
//
. alarm_day_add(alarm_day_add),//天加
. alarm_day_sub(alarm_day_sub),//天减
. alarm_month_add(alarm_month_add),//月加
. alarm_month_sub(alarm_month_sub),//月减
. alarm_year_add(alarm_year_add),//年加
. alarm_year_sub(alarm_year_sub),//年减
. alarm_year_out(alarm_year_out),//年
. alarm_month_out(alarm_month_out),//月
. alarm_day_out(alarm_day_out),//日
. display_1(display_1),
. display_2(display_2),
. display_3(display_3)
);
//闹钟led提示模块
beep i_beep(
.CLK(CLK),//1ms
.RST(RST),
.sw_beep(sw_beep),//关闹钟
.year_l(year_l),//年低位
.month(month),//月
.day(day),//天
.hour_out(hour_out),//小时
.minute_out(minute_out),//分钟
.second_out(second_out),//秒
.alarm_year_out(alarm_year_out),//年
.alarm_month_out(alarm_month_out),//月
.alarm_day_out(alarm_day_out),//日
.alarm_hour_out(alarm_hour_out),//小时
.alarm_minute_out(alarm_minute_out),//分钟
.alarm_second_out(alarm_second_out),//秒钟
.beep_led(beep_led)
);
//整点报时
baoshi i_baoshi(
. CLK(CLK),
. RST(RST),
. CLK_1Hz(CLK_1Hz),
. hour_out(hour_out),//小时
. minute_out(minute_out),//分钟
. second_out(second_out),//秒
. LED(LED)
);
//数码管显示模块
display i_display(
. clk(clk_in),
    . display_1(display_1),
    . display_2(display_2),
    . display_3(display_3),
. bit_select(bit_select),//数码管位选
    . seg_select(seg_select)//数码管段选
);
endmodule

完整代码

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

  • 9
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Vivado是Xilinx公司推出的一款基于FPGA器件的设计开发工具,其中包含System Verilog语言支持。System Verilog是一种基于Verilog的高级硬件描述语言,是IEEE标准的一部分。System Verilog支持面向对象编程思想和高级验证方法,可以大大提高设计的开发效率和可靠性。 在Vivado中使用System Verilog,可以在设计中使用高级特性,如多态和继承等,以更好地组织和维护设计代码。此外,System Verilog还提供了一系列高级验证函数和类,可以有效地进行设计验证和测试。 Vivado系统还提供了一套完整的开发工具和设计流程,可以帮助开发人员快速完成设计和仿真,以及进行综合和实现。总之,Vivado System Verilog提供了强大的设计和验证功能,是FPGA设计中无可替代的一部分。 ### 回答2: Vivado System Verilog 是一种硬件描述语言,可以用于设计和验证数字电路和系统。它是在 SystemVerilog 标准的基础上开发的,广泛应用于 FPGA 和 ASIC 的设计和仿真。Vivado 是一种集成开发环境 (IDE),可用于创建、调试和部署设计。Vivado System Verilog 的特点是具备高层次建模能力和强大的验证功能,包括时序仿真、行为仿真、代码覆盖率、函数覆盖率、分支覆盖率等。Vivado System Verilog 还支持多种验证方法,如模糊测试、约束随机测试、函数测试等,方便用户进行全面的验证和测试。在 FPGA 和 ASIC 的设计中,Vivado System Verilog 可以帮助设计师编写高效且可靠的代码,提高设计的质量和性能。 ### 回答3: Vivado System Verilog是一种硬件描述语言(HDL),它用于设计数字逻辑电路和系统。它是Vivado开发环境中支持的一种编程语言,它集成了Verilog和System Verilog的功能,具有更丰富的特性和更高的灵活性。 Vivado System Verilog可以在设计数字逻辑电路时实现更高级的功能和操作。例如,它提供了许多新的操作符和关键字,例如逻辑循环(logic loop)和连续赋值(continuous assignment),这可以简化代码的编写。此外,它还拥有更好且更可靠的类型系统,例如枚举、结构体和联合体等。这些类型可用于定义信号和端口,以及描述具体的结构和组织。 在Vivado System Verilog中,可以使用逻辑门、寄存器、时序逻辑、状态机和FPGA的高级功能等来进行电路设计。该语言还支持仿真和验证,可以使用Testbench测试电路以确保其正确性。 此外,使用一些高级技术,如异步复位、分层次设计(hierarchical design)、断言(assertions)和SystemVerilog任务(SystemVerilog Tasks),可以更好地进行电路设计,这些技术都是在Vivado System Verilog中实现的。 总之,Vivado System Verilog是一个用于数字逻辑设计的高级编程语言,提供了更好的功能和更高的灵活性。它可以让开发者更好地设计和测试电路,从而更加优化电路逻辑。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值