eda,verilog数字钟设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字钟
一、任务解析
用Verilog硬件描述语言设计数字钟,实现:
1、具有时、分、秒计数显示功能,以二十四小时循环计时。
2、具有调节小时,分钟的功能,调整时对应的数字闪烁。
3、具有整点报时及闹铃时间可调的功能。
4、数字钟具有四种模式:正常显示、时间调整、闹铃时间调整、秒表。
二、方案论证
没有闹铃功能
三、重难点解析
选择模式:module beii(clr,selin_key,beii_out);
input clr,selin_key;
output [1:0]beii_out;
wire [1:0]beii_out;
reg [1:0]selout_key;
always@(negedge clr or posedge selin_key) begin
if(!clr) selout_key=0;
else begin if(selout_key==2) selout_key=0;
else selout_key=selout_key+1;end
end
assign beii_out=selout_key;
endmodule
头文件中:
module clk_top(clr,clk,upkey,downkey,sel,a,b,c,d,e,f,g,p,clr_key,selin_key);
clr:清零clk:50M时钟
upkey:向上调downkey:向下调
clr_key:恢复初始状态selin_key:模式选择
四、硬件资源分配
60进制module mycnt60(clr,clk,upkey,downkey,selout,q,c);
input clk,clr,upkey,downkey;//upkey为加按键
input [1:0] selout;
output[7:0] q;//60进制输出
output c;//进位溢出位
reg c;
reg[7:0] q;
wire new_clk1,ckb,ckc,ckd,cko;
assign new_clk1=clk|((!selout[0]&selout[1])&(upkey|downkey));
LCELL AA(new_clk1,ckb);//信号延迟
LCELL BB(ckb,ckc);
LCELL CC(ckc,ckd);
LCELL DD(ckd,cko);
initial c=0;
always @(posedge cko or negedge clr )begin
if(!clr) q=8'h00;
else begin if(selout==2) begin if(upkey)begin
if(q==8'h59) q=8'h00;
else if(q==8'h?9) q=q+4'h7;
else q=q+1;
end
else if(downkey)begin
if(q==8'h00) q=8'h59;
else if(q==8'h?0) q=q-4'h7;
else q=q-1;
end
end
else begin
if(q==8'h59) begin q=8'h00;c=1;end
else if(q==8'h?9) begin q=q+4'h7;c=0;end
else begin q=q+1;c=0;end
end
end
end
endmodule
五、实验总结
通过对数字钟的设计到成功是耗时最长的,但也是学到知识点最多,收获最多的。每一个模块与代码都必须仔细研读,参照前人的成功经验,再加上自己的学习心得,将头文件,24进制,浏览扫描模块自己写出,并最终调试成功,非常开心!觉得学到有用的东西,很实用。当然离不开老师与同学的帮助与支持,历练了自己。对数字系统设计有了更深层次的了解,对数字电路也有了知识的补充与扩充!