我是靠谱客的博主 甜美热狗,这篇文章主要介绍EDA数字钟设计(verilog)——计时模块,现在分享给大家,希望可以做个参考。

       这个模块集合大部分的功能,通过开关的复用实现显示学号,清零,正常示数,校时校分四个功能,并且确定了几个开关之间的优先级顺序,,防止出现逻辑上的问题,而且巧妙的利用3600秒小时加一的关系减小了if嵌套的复杂性,程序代码如下:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
module jishi(clk_1Hz,second,minute,hour,hour_swh,min_swh,swh,baochi_swh); input clk_1Hz; input hour_swh,min_swh,baochi_swh; input [1:0]swh; output reg[5:0]second,minute,hour; reg [11:0]hs; //3600秒小时加1 always@(posedge clk_1Hz) begin if((swh[1:0] == 'b00)&&(!baochi_swh)) //清零 begin second <= 0; minute <= 0; hour <= 0; end else if(baochi_swh) //使能 begin second <= second; minute <= minute; hour <= hour; end else if((swh[1:0] == 'b11)&&(!baochi_swh)) //正常计数 begin if(second < 'd59) begin second <= second + 'd1; hs <= hs + 'd1; end else begin second <= 'd0; hs <= hs + 'd1; if(minute < 'd59) minute <= minute + 'd1; else minute <= 'd0; if(hs < 'd3599 && hour < 'd23) hour <= hour + 'd1; else if((hs == 'd3599)&&(hour == 'd23)) begin hour <= 'd0; hs <= 'd0; end end end else if((swh[1:0] == 'b10)&&(!baochi_swh)) //显示学号 begin hour <= 'd00; minute <= 'd07; second <= 'd36; end else if((swh[1:0] == 'b01)&&(!baochi_swh)) begin if((hour_swh)&&(swh[1:0] == 'b01)) begin if(hour == 'd23) hour <= 'd0; else hour <= hour + 'd1; end if((min_swh)&&(swh[1:0] == 'b01)) begin if(minute == 'd59) minute <= 'd0; else minute <= minute + 'd1; end end end endmodule

封装后如下图:

最后

以上就是甜美热狗最近收集整理的关于EDA数字钟设计(verilog)——计时模块的全部内容,更多相关EDA数字钟设计(verilog)——计时模块内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(86)

评论列表共有 0 条评论

立即
投稿
返回
顶部