verilog设计数字跑表
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
/*信号定义:
CL K: CL K 为时钟信号;
CLR:为异步复位信号;
PAUSE:为暂停信号;
MSH,M SL:百分秒的高位和低位;
SH,S L:秒信号的高位和低位;
MH,ML:分钟信号的高位和低位。
*/
mo dulepaobi ao(CL K,CLR,PAUS E,MSH,MSL,SH,SL,MH,M L);
input CLK,CLR;
inpu t PAU SE;
outpu t[3:0] MSH,MSL,SH,SL,MH,M L;
r eg[3:0] MS H,MSL,SH,S L,MH,ML;
reg c n1,cn2; //cn1 为百分秒向秒的进位,c n2 为秒向分的进位//百分秒计数进程,每计满100,c n1 产生一个进位
alwa ys @(posed ge CL K orposed ge CL R)
b egin
if(C LR) b egin//异步复位
{M SH,MS L}<=8'h00;
cn1<=0;
end
else if(!PAUSE) //P AUSE为0 时正常计数,为1 时暂停计数b egin
if(M SL==9) beg in
王金明:《V erilo g HDL程序设计教程》
- 55-
MS L<=0;
if(MSH==9)
b eginMSH<=0; cn1<=1; end
else MSH<=MSH+1;
e nd
e lse b egin
MSL<=MSL+1; cn1<=0;
end
end
end
//秒计数进程,每计满60,cn2产生一个进位al ways@(pos edgecn1 o r pos edgeCLR)
begi n
if(CLR) begi n //异步复位
{SH,S L}<=8'h00;
cn2<=0;
end
else if(S L==9) //低位是否为9
begi n
SL<=0;
if(S H==5) begi n SH<=0; c n2<=1; end
els e SH<=SH+1;
en d
el se
b eginSL<=S L+1;cn2<=0; en d
en d
//分钟计数进程,每计满60,系统自动清零alwa ys @(posed ge cn2 orposed ge CL R)
b egin
if(C LR)
begin {MH,ML}<=8'h00; end //异步复位
e lse i f(ML==9) b egin
ML<=0;
i f(MH==5) M H<=0;
els e MH<=MH+1;
en d
el se ML<=ML+1;
e nd
endm odule
。