- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
课程设计目标
熟悉并掌握verilog 硬件描述语言
熟悉quartus 软件开发环境
学会设计大中规模的数字电路,并领会其中的设计思想
二、课程设计实现的功能
设计一个数码管实时显示时、分、秒的数字时钟(24小时显示模式);
可以调节小时,分钟。
能够进行24小时和12小时的显示切换。
可以设置任意时刻闹钟,并且有开关闹钟功能。
有整点报时功能,几点钟LED灯闪亮几下。
有复位按键,复位后时间从零开始计时,但闹钟设置时间不变。
设计原理:
1、总原理框图:
是
是
各个子模块设计:
(1)、分频模块 :
分频模块的作用主要是要获得各种频率的时钟信号。输入信号为50MHZ的信号,要想获得1HZ的信号作为秒脉冲计时,则要对50MHZ信号分频。通过计数的方式,当计数从0开始到24 999999时,1HZ信号取反一次,计数又从0开始,如此循环,就可以得到1HZ脉冲信号。对于其他信号也是如此,只是计数值不一样,得到的分频信号不同。
部分代码如下:
always@(posedge _50MHZ or negedge nCR)begin
if(~nCR)
begin
Q1=32d0;
end
else if(Q1=32
begin
Q1=32d0;
_1HZ=~_1HZ;
end
else begin
Q1=Q1+1d1;
end
、计数模块 :
秒计数:在1HZ脉冲下进行秒计时,当计时达到59秒后,在下一个脉冲来临变0,并发出一个脉冲信号,可供下面分钟计数作为输入脉冲信号计时。
分钟计数:在输入脉冲下,分钟开始计时,当计时达到59后,在下一个脉冲来临变0,并发出一个脉冲,供小时计数的输入脉冲新号。
小时计数:脉冲信号来临时,计数加1,达到23后在下一个脉冲的作用下清零,从新计时。
如果有复位信号,则时分秒全部清零。
部分代码如下:
module second(cp,reset,mode_flag,BT2,SH,SL,co);
input cp,reset,BT2;
input[3:0]mode_flag;
output co=1b0; //输出脉冲信号
reg co;
output [3:0]SL,SH; //输出秒计时的十位、各位
reg[3:0]SH,SL;
reg[7:0]cnt;
always@(posedge cp or negedge reset )
begin
if(!reset) begin //有复位,清零
cnt=8d0;
SH=4d0;
SL=4d0;end
else if((mode_flag==4b0010)(!BT2)) begin// 如果分钟调节,秒清零
cnt=8d0;
SH=4d0;
SL=4d0;end
if(cnt==8d59) //计时达到59,下一个脉冲下从新计时
begin
cnt=8d0;
SH=4d0;
SL=4d0;
co=1b1;
end
else
begin
co=1b0;
cnt=cnt+8d1;
SL=cnt%10; //秒十位
SH=cnt/10; //秒各位
end
end
end
endmodule
分计时和小时计时代码和上述类似,不再举出。
second u4(_1HZ,reset,mode_flag,Keydone2,SH24,SL24,co1);
minute u5(co11,reset,MH24,ML24,co2);
hour u6(co22,reset,HH24,HL24);
、模式选择模块 :
同过一个模式档按键MODE,按一下产生对应一种模式mode_flag,并且可以循环。在不同的模式下可以进行不同的操作。其中mode_flag=40000为正常显示计时,mode_flag=40001为小时调钟模式,mode_flag=40
文档评论(0)