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