HDlbits Count clock 12小时制时钟 verilog fpga

module top_module(
    input clk,
    input reset,
    input ena,
    output pm,
    output [7:0] hh,
    output [7:0] mm,
    output [7:0] ss); 
    
    reg [3:0] ssge;
    reg [3:0] ssshi;
    reg [3:0] mmge;
    reg [3:0] mmshi;
    reg [3:0] hhge;
    reg [3:0] hhshi;	
    
    always@(posedge clk)begin	//ss个位
        if(reset)begin
            ssge <= 4'h0;
        end
        else if(ena & (ssge == 4'h9))
            ssge <= 4'h0;      	
        else if(ena)
            ssge <= ssge+1; 
    end
    always@(posedge clk)begin	//ss十位
        if(reset)begin
            ssshi <= 4'h0;
        end
        else if(ena & (ssge == 4'h9)&(ssshi == 4'h5))
            ssshi <= 4'h0;      	
        else if(ena & (ssge == 4'h9))
            ssshi <= ssshi+1; 
    end
    
    always@(posedge clk)begin	//mm个位
        if(reset)begin
            mmge <= 4'h0;
        end
        else if(ena &(mmge == 4'h9)&(ssge == 4'h9)&(ssshi == 4'h5))
            mmge <= 4'h0;      	
        else if(ena &(ssge == 4'h9)&(ssshi == 4'h5))
            mmge <= mmge+1; 
    end
    always@(posedge clk)begin	//mm十位
        if(reset)begin
            mmshi <= 4'h0;
        end
        else if(ena&(mmshi == 4'h5)&(mmge == 4'h9)&(ssge == 4'h9)&(ssshi == 4'h5))
            mmshi <= 4'h0;      	
        else if(ena&(mmge == 4'h9)&(ssge == 4'h9)&(ssshi == 4'h5))
            mmshi <= mmshi+1; 
    end
    
    always@(posedge clk)begin	//hh个位
        if(reset)begin
            hhge <= 4'h2;
        end
        else if(ena&(hhshi == 4'h1)&(hhge == 4'h2)&(mmshi == 4'h5)&(mmge == 4'h9)&(ssge == 4'h9)&(ssshi == 4'h5))
            hhge <= 4'h1; 
        else if(ena&(hhge == 4'h9)&(mmge == 4'h9)&(mmshi == 4'h5)&(ssge == 4'h9)&(ssshi == 4'h5))
            hhge <= 4'h0;      	
        else if(ena&(mmshi == 4'h5)&(mmge == 4'h9)&(ssge == 4'h9)&(ssshi == 4'h5))
            hhge <= hhge+1; 
    end
    
    always@(posedge clk)begin	//hh十位
        if(reset)begin
            hhshi <= 4'h1;
        end
        else if(ena&(hhshi == 4'h2)&(hhge == 4'h3)&(mmshi == 4'h5)&(mmge == 4'h9)&(ssge == 4'h9)&(ssshi == 4'h5))
            hhshi <= 4'h0;  
        else if(ena&(hhshi == 4'h1)&(hhge == 4'h2)&(mmshi == 4'h5)&(mmge == 4'h9)&(ssge == 4'h9)&(ssshi == 4'h5))
            hhshi <= 4'h0 ;
        else if(ena&(hhge == 4'h9)&(mmshi == 4'h5)&(mmge == 4'h9)&(ssge == 4'h9)&(ssshi == 4'h5))
            hhshi <= hhshi+1; 
    end
    
    always@(posedge clk)begin	//AM PM
        if(reset)begin
            pm <= 0;
        end
        else if(ena&pm&(hhshi == 4'h1)&(hhge == 4'h1)&(mmshi == 4'h5)&(mmge == 4'h9)&(ssge == 4'h9)&(ssshi == 4'h5))
            pm <= 0;
        else if(ena&(hhshi == 4'h1)&(hhge == 4'h1)&(mmshi == 4'h5)&(mmge == 4'h9)&(ssge == 4'h9)&(ssshi == 4'h5))
            pm <= 1;

    end
    
    
    assign ss = {ssshi, ssge};
    assign mm = {mmshi, mmge};
    assign hh = {hhshi, hhge};
                  
endmodule


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值