打印

秒记数器, 0-9循环

[复制链接]
27|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
/******************秒记数器, 0-9循环****************/
/**************************************************/
/**************************************************/
/******************20250529************************/
`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)
begin

if(~ res)
        begin
        con_t                <= 0;
        s_pulse                <= 0;
        s_num                <= 0;
        end
/**************************************************/                //秒计数
else
        begin
//        if(con_t ==49_999_999)
        //if(con_t ==frequency_clk *1000_000 -1)
        if(con_t ==frequency_clk *100 -1)
                begin
                con_t                =0;
                end
        else
                begin
                con_t                <=con_t +1;
                end
        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
end
else
begin
        s_num <=s_num +1;
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;
        #1000        $stop;

end

always                #5        clk                <=~clk;

endmodule
/**************************************************/
/**************************************************/


使用特权

评论回复

相关帖子

沙发
34af9uc|  楼主 | 2025-6-10 23:20 | 只看该作者
/******************秒记数器, 0-9循环****************/
/**************************************************/
/**************************************************/
/******************20250610************************/
`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 ==24000000-1)
        //if(con_t ==frequency_clk*1000_000 -1)
        if(con_t ==frequency_clk-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                clk <=1;
                                res <=1;
                #1000        $stop;
end

always                #5                clk <=~clk;

endmodule
/**************************************************/
/**************************************************/

使用特权

评论回复
板凳
34af9uc|  楼主 | 2025-6-12 21:03 | 只看该作者
仿真波形对比

miao3.png (39.29 KB )

miao3.png

miao2.png (35.95 KB )

miao2.png

使用特权

评论回复
发新帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

308

主题

474

帖子

63

粉丝