Verilog——秒计数器,0-9循环

//2022-04-18,fyf_codeworld
//秒计数器,0-9循环;
`timescale 1ns/10ps
module s_counter (
    clk,
    res,
    s_num
);
input clk;
input res;
output[3:0] s_num;

parameter frequency_clk=24;//24MHz;

reg[24:0] con_t;//秒脉冲分频计数器;
reg s_pulse;//秒脉冲尖;
reg[3:0] s_num;

always@(posedge clk or negedge res)
if(~res) begin
     con_t<=0;s_pulse<=0;s_num<=0;  
end
else begin
    //if (con_t==frequency_clk*1000000-1) begin
    if(con_t==frequency_clk*1000-1) begin
        con_t<=0;
    end 
    else begin
        con_t<=con_t+1;
    end

    if(con_t==0) begin
        s_pulse<=1;
    end
    else begin
        s_pulse<=0;
    end

    if(s_pulse) begin
        if(s_num==9) begin
            s_num<=0;
        end
        else begin
            s_num<=s_num+1;
        end 
    end 
end

endmodule

//-------testbench of s_counter-----
module s_counter_tb;

reg clk,res;
wire[3:0] s_num;

s_counter s_counter (
    .clk(clk),
    .res(res),
    .s_num(s_num)
);

initial begin
    clk<=0;res<=0;
    #17 res<=1;
    #300000 $stop;
end    

always #5 clk<=~clk;
    
endmodule

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值