题解 | #可置位计数器#

可置位计数器

https://www.nowcoder.com/practice/b96def986e29475e8100c213178b73a8

需要寄存器延迟一个周期输出才能符合所给时序

`timescale 1ns/1ns

module count_module(

    input clk,

    input rst_n,

    input set,

    input [3:0] set_num,

    output reg [3:0]number,

    output reg zero

    );

    

    reg [3:0]number_reg;//输出寄存器,延迟一拍才能通过题目所给时序

    parameter MAX = 4'd15;

    always @(posedge clk or negedge  rst_n)begin

        if(!rst_n)begin//复位

            number_reg <= 4'd0;

            number <= 4'd0;

            zero <= 1'b0;

        end

        else if(set)begin//置位有效

            number_reg <= set_num;

            number <= number_reg;

        end

        else if(number_reg == MAX)begin//计数达最大值

            number_reg <= 4'd0;

            number <= number_reg;

        end

        else begin

            if(number_reg == 4'd0)begin

                zero <= 1'b1;

            end

            else begin

                zero <= 1'b0;

            end

            number_reg <= number_reg + 1'b1;

            number <= number_reg;

        end

    end

endmodule

全部评论

相关推荐

程序员小白条:排版,格式难顶,换个简洁的,保底offer没问题
你的简历改到第几版了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务