Count clock

发布于:2024-08-10 ⋅ 阅读:(116) ⋅ 点赞:(0)

写了半天不对,才注意到是十六进制的 - -
另外安装了vivado 哈哈哈哈,可以看看写的到底对不对
之前好多程序在 hdlbits 可以正确运行 但是 vivado 编译不通过。

module clock(
    input clk,
    input reset,
    input ena,
    output reg pm,
    output reg[7:0] hh,
    output reg[7:0] mm,
    output reg[7:0] ss); 
    
    wire [2:0]ena_clock;
    
    assign ena_clock[0]= ss==8'h59;
    assign ena_clock[1]= mm==8'h59 && ss==8'h59;
    assign ena_clock[2]= hh==8'h12 && mm==8'h59 && ss==8'h59;
    
    always@(posedge clk)begin
        if (reset)
            {hh,mm,ss,pm} <= {8'h12,8'h0,8'h0,1'b0};
        else begin
            if(ena)begin
                if (hh==8'h11 && ena_clock[1]) pm <= !pm;
                if (ena_clock[0]) ss <= 8'h0; 
                else if (ss[3:0]<8'h9)
                        ss <= ss+1; 
                    else begin
                        ss[3:0] <= 4'b0;
                        ss[7:4] <= ss[7:4]+1;
                    end
                
                if (ena_clock[1]) mm <= 8'h0; 
                else if (mm[3:0]<8'h9) 
                        mm <= mm + ena_clock[0];
                    else begin
                        if (ena_clock[0])begin
                            mm[3:0] <= 4'b0;
                            mm[7:4] <= mm[7:4]+ena_clock[0];
                        end
                    end
                
                if (ena_clock[2]) hh <= 8'h1; 
                else if (hh[3:0]<8'h9)
                    	hh<= hh+ena_clock[1];
                    else begin
                        if (ena_clock[1])begin
                            hh[3:0] <= 4'b0;
                            hh[7:4] <= hh[7:4]+ena_clock[1];
                        end
                    end
                // if (ena_clock[1]) mm <= 8'h0; else mm <= mm+ena_clock[0];
                // if (ena_clock[2]) hh <= 8'h1; else hh <= hh+ena_clock[1];
            end
        end
    end
endmodule

网站公告

今日签到

点亮在社区的每一天
去签到