Verilog 实现简易数字钟设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
module ly2(clock,sec1,sec2,min1,min2,hou1,hou2);
input clock;
output sec1,sec2,min1,min2,hou1,hou2;
reg[5:0] sec,min,hou;
reg tun,mod;
reg[3:0] sec1,sec2,min1,min2,hou1,hou2;
wire mt,nt;
initial
begin
tun=1;
mod=1;
min=0;
hou=0;
sec=0;
sec1=0;
sec2=0;
min1=0;
min2=0;
hou1=0;
hou2=0;
end
always @(posedge clock) \\clock 标准1HZ时钟信号
begin
if(sec==59)
begin
sec<=0; \\秒为60进制计数器
tun<=1; \\每60秒产生一个进位信号tun。
end
else
begin
sec<=sec+1;
tun<=0; \\进位信号置0。
end
end
assign mt=tun; \\生成分的控制信号,
always@(posedge mt)
begin
if(min==59) \\分钟为60进制计数器begin
min<=0;
mod<=1; \\每60分产生一个小时的进位。
end
else
begin
min<=min+1;
mod<=0; \\分钟向小时的进位信号置0。
end
end
assign nt=mod; \\生成时的控制信号,always@(posedge nt)
begin
if(hou==23) \\小时为24进制计数器hou<=0;
else
hou<=hou+1;
end
always@(sec)
begin
sec1<=sec%10; \\sec1为秒个位
sec2<=sec/10; \\sec2为秒十位
end
always@(min)
begin
min1<=min%10; \\min1为分个位
min2<=min/10; \\min2为分十位
end
always@(hou)
begin
hou1<=hou%10; \\hou1为时个位
hou2<=hou/10; \\hou2为时十位
end
endmodule