基于FPGA日历、时间、闹铃系统.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于FPGA日历、时间、闹铃系统.doc

基于FPGA的日历、时间、闹铃系统 前言:由于本人刚刚入门,只用了最基本的设计思维,所以可能浪费了许多芯片资源,要是哪位高手能帮忙把系统优    化一下,本人定然感激不尽。 系统功能:显示当前日期,时间,到点报时。可通过按键来调整日期时间,并且设置闹铃时间,闹铃响后,必须手动    关闭。 模块说明:系统的顶层模块如下图所示,该系统由六个模块组成,分别为分频模块,按键模块,计数模块,LCD液晶    显示模块,除法器模块,以及铃声模块。皆为可综合模块,可综合为门级网表,并在FPGA芯片上验证了其    正确性。由于涉及版权问题,严禁用于商业目的,违者必究! 按键示意图: ?各模块的verilog代码如下: 1,、分频器: module div_1hz(clk,clock); output reg clock; input clk;//外部50MHZ时钟输入 reg[24:0] i; always@(posedge clk) ?  begin ??   i=i+1; ??   if(i==25h17d7840) ???    begin ????     i=0; ????     clock=~clock;?//产生1HZ频率信号。 ???    end ?  end endmodule 2、按键模块: module key(num,keyout,targe,keyout_en,keyin,rst,clk); output reg [3:0] keyout; output [3:0] num; output targe; output reg keyout_en; input rst,clk; input [3:0]keyin; reg [7:0] i; reg [3:0] num; reg [23:0] count; reg [5:0] state,next_state; reg [3:0] keyout_reg,keyin_reg; parameter?? s0=6b000001, ???s1=6b000010, ???s2=6b000100,? ???s3=6b001000, ???s4=6b010000, ???s5=6b100000; wire clock; always@(posedge clk or negedge rst) ?begin ??if(!rst) ???i=0; ??else ??i=i+1;? ?end assign clock=i[7]; always@(posedge clock or negedge rst) ?begin ??if(!rst) ???begin ????count=0; ????keyout_en=0; ???end ??else begin ???if(keyin!=4hf) ????begin ?????if(counth4bb3)//去抖动 ?????count=count+1; ?????else ?????keyout_en=1; ????end ???else if(state[5]||state[0]) ????begin ?????count=0; ?????keyout_en=0; ????end ???end ?end assign targe=(!(state==s0||state==s5))(keyin!=4hf); always@(posedge clock) ?begin ??if(targe) ???begin ???keyout_reg=keyout; ???keyin_reg=keyin; ???end ??else ???begin ???keyout_reg=keyout_reg; ???keyin_reg=keyin_reg; ???end ?end ? always@(keyout_reg or keyin_reg or clock) ?begin ??case({keyin_reg,keyout_reg}) ???8b1110_1110: num = 1 ; ???8b1110_1101: num = 2 ; ???8b1110_1011: num = 3 ; ???8b1110_0111: num = 10 ; ??? ???8b1101_1110: num = 4 ; ???8b1101_1101: num = 5 ; ???8b1101_1011: num = 6 ; ???8b1101_0111: num = 11 ; ??? ???8b1011_1110: num = 7 ; ???8b1011_1101: num = 8 ; ???8b1011_1011: num = 9; ???8b1011_0111: nu

文档评论(0)

dmz158 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档