哪位大大帮我看下这段Verilog代码哪里有问题啊~

代码是实现一个数字时钟, 我的基本功能都能实现,就是秒表(stopwatch)那一块无法实现 拜托各位了~
代码太多粘不上来 我把QQ发这244699993
拜托了~

CLK: CLK为时钟信号;
CLR: 为异步复位信号;
PAUSE: 为暂停信号;
MSH,MSL: 百分秒的高位和低位;
SH,SL: 秒信号的高位和低位;
MH,ML: 分钟信号的高位和低位。 */
module paobiao(CLK,CLR,PAUSE,MSH,MSL,SH,SL,MH,ML);
input CLK,CLR;
input PAUSE;
output[3:0] MSH,MSL,SH,SL,MH,ML;
reg[3:0] MSH,MSL,SH,SL,MH,ML;
reg cn1,cn2; //cn1为百分秒向秒的进位,cn2为秒向分的进位

//百分秒计数进程,每计满100,cn1产生一个进位
always @(posedge CLK or posedge CLR)
begin
if(CLR) begin //异步复位
{MSH,MSL}<=8'h00;
cn1<=0;
end
else if(!PAUSE) //PAUSE为0时正常计数,为1时暂停计数
begin
if(MSL==9) begin
MSL<=0;
if(MSH==9)
begin MSH<=0; cn1<=1; end
else MSH<=MSH+1;
end
else begin
MSL<=MSL+1; cn1<=0;
end
end
end

//秒计数进程,每计满60,cn2产生一个进位
always @(posedge cn1 or posedge CLR)
begin
if(CLR) begin //异步复位
{SH,SL}<=8'h00;
cn2<=0;
end
else if(SL==9) //低位是否为9
begin
SL<=0;
if(SH==5) begin SH<=0; cn2<=1; end
else SH<=SH+1;
end
else
begin SL<=SL+1; cn2<=0; end
end

//分钟计数进程,每计满60,系统自动清零
always @(posedge cn2 or posedge CLR)
begin
if(CLR)
begin {MH,ML}<=8'h00; end //异步复位
else if(ML==9) begin
ML<=0;
if(MH==5) MH<=0;
else MH<=MH+1;
end
else ML<=ML+1;
end
endmodule

给一个数字跑表的程序给你参考,你可以加到你的程序去.
温馨提示:答案为网友推荐,仅供参考
相似回答