利用Verilog HDL规划一款电子表芯片(万年历)

规划一款电子表芯片,能够显示年月日,星期,并且实现闰年的自动调整,钟振32768Hz。

要求:增加测试设计,快速覆盖400年周期

目的:

  1. 掌握Verilog语言对组合逻辑的描述
  2. 学习testbench的设计方法
  3. 掌握仿真器(modelsim/Verilog/VCS)的仿真、调试、波形输出等常用技巧
  4. 掌握DC约束规划方法、综合器使用、结果查看、后仿真等
  5. 熟悉简单芯片从规划到实现方法

设计思路:

  • 400年周期设定为1900年1月1日-2299年12月31日。
  • 以天(day)为单位,每七天进位(carry)一星期(week),判断月份,确定每月的天数(number),到每个月最后一天进位月,月满12个月进位年,年到2199进位变为1900。
  • 钟振32768Hz,2^15 = 32768,所以 32768Hz 16分频后变为 1 Hz,周期即为1秒。测试时若设置为32768Hz,在一个周期内即可跑32768秒,一般晶振采用32768Hz便于分频。此例以天为单位,测试时1s即可跑32768天,5s即可跑完400年,但这种测试方法过于笨重。本实验不做硬件设计因此不考虑钟振。
  • 检测闰年没有找到较好方法,由于本例只有400年周期,因此按如下所示方法进行检测
assign year_4 = (year[1:0]==2'b0);
assign year_100 = (year == 1900)||(year == 2100)||(year == 2200);
assign year_400 = (year == 2000);

if((year_4&&!year_100)||year_400)    
    number=29;
else                                 
    number=28;

 文件代码如下:

module calendar(  
							// 时钟、复位、设置时间    
							input clk , rst , time_set,  
							// 设置时间的4个参数
							input[11:0] year_set,   
						
  • 6
    点赞
  • 88
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值