34--跑表

module paobiao(
input clk,
input clr,
input pause,
output reg [3:0]msh,msl,sh,sl,mh,ml
);

reg cn1,cn2;//cn1为百分秒向秒的进位,cn2为秒向分的进位
//百分秒进位
always @(posedge clk or negedge clr)begin
    if(!clr)begin
        {msh,msl}<=8'd0;
        cn1<=0;
    end
    else if(!pause)begin
        if(msl==4'd9)begin
            msl<=4'd0;
            if(msh==4'd9)begin
                msh<=4'd0;
                cn1<=1'b1;
            end
            else msh<=msh+1'b1;
        end
        else begin
             msl<=msl+1'b1;
             cn1<=1'b0;
             end
    end
    else {msh,msl}<={msh,msl};
end
//秒进位
always @(posedge cn1 or negedge clr)
begin
   if(!clr)begin
    cn2<=1'b0;
    {sh,sl}<=8'b0;
    end 
    else if(sl==9)begin
            sl<=4'd0;
        if(sh==4'd5)begin
            sh<=4'd0;
            cn2<=1'b1;
        end
        else sh<=sh+1'b1;
        end
    else begin 
        sl<=sl+1'b1;   
        cn2<=1'b0;
    end 

    end
//分计数,满60自动清零
always @(posedge cn2 or negedge clr)begin
    if(!clr)begin
        {mh,ml}<=8'd0;
    end
    else if(ml==9)begin
        ml<=4'd0;
        if(mh==4'd5)
            mh<=4'd0;
        else mh<=mh+1'b1;
    end
    else ml<=ml+1'b1;
end
endmodule
`timescale 1ns/1ns 
module tb_paobiao();
reg clk;
reg clr;
reg pause;
wire[3:0]msh,msl,sh,sl,mh,ml;
paobiao u1(.clk(clk),.clr(clr),.pause(pause),.msh(msh),.msl(msl),.sh(sh),.sl(sl),.mh(mh),.ml(ml));
initial begin
clk<=1'b0;
clr<=1'b0;
pause<=1'b0;
#50 clr<=1'b1;
#1000 pause<=1'b1;
#100 pause<=1'b0;
end
always #5 clk<=~clk;


endmodule

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值