题解 | #加减计数器#

加减计数器

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

全部评论

相关推荐

owwhy:难,技术栈在嵌入式这块显得非常浅,并且简历有大问题。教育经历浓缩成两行就行了,写什么主修课程,说的不好听这块没人在意,自我评价删了,项目写详细点,最终简历缩成一页。相关技能怎么说呢,有点差了,还写成这么多行
投了多少份简历才上岸
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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