题解 | #加减计数器#

加减计数器

https://www.nowcoder.com/practice/9d50eb2addaf4a37b7cd5a5ee7b297f6

`timescale 1ns/1ns

module count_module(

    input clk,

    input rst_n,

    input mode,

    output reg [3:0]number,

    output reg zero

    );

    reg [3:0]number_reg;//输出寄存器

    parameter MAX = 4'd9;

    parameter MIN = 4'd1;

    always@((487950916)posedge clk or negedge rst_n)begin

        if(!rst_n)begin

            number_reg <= 4'd0;

            number <= 4'd0;

            zero <= 1'b0;

        end

        else if(mode)begin//加计数

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

                number_reg <= 4'd0;

                number <= number_reg;

                zero <= 1'b0;

            end

            else begin//加计数继续

                if(number_reg == 4'd0)

                    zero <= 1'b1;

                else

                    zero <= 1'b0;

                number_reg <= number_reg + 1'b1;

                number <= number_reg;

            end

        end

        else if(mode == 1'b0)begin//递减

            if(number_reg == MIN)begin//减至最小值

                number_reg <= 4'd0;

                number <= number_reg;

                zero <= 1'b0;

            end

            else begin//递减继续

                if(number_reg == 4'd0)begin

                    number_reg <= MAX;

                    zero <= 1'b1;

                end

                else begin

                    number_reg <= number_reg - 1'b1;

                    zero <= 1'b0;

                end

                number <= number_reg;

            end

        end

        else begin//mode未知

            number <= 4'd0;

            zero <= 1'b0;

        end

    end

endmodule

全部评论

相关推荐

投递腾讯云智研发等公司10个岗位
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务