题解 | #序列检测器(Moore型)#

序列检测器(Moore型)

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

`timescale 1ns/1ns

module det_moore(
   input                clk   ,
   input                rst_n ,
   input                din   ,
 
   output	reg         Y   
);

parameter IDLE = 5'b00001,
            S1 = 5'b00010,
            S2 = 5'b00100,
            S3 = 5'b01000,
            S4 = 5'b10000;

reg [4:0]   state_curr,
            state_next;

//fsm
always @(posedge clk or negedge rst_n) begin
    if (!rst_n)
        state_curr <= IDLE;

    else
        state_curr <= state_next;
end

always @(*) begin
    case (state_curr)
        IDLE:begin
            if (din)
            state_next <= S1;
            else
            state_next <= IDLE; 
        end

        S1:begin
            if(din)
            state_next <= S2;
            else
            state_next <= IDLE;
        end

        S2:begin
            if (!din) 
            state_next  <= S3;
            else
            state_next <= S2;
        end

        S3:begin
            if (din)
            state_next <= S4;
            else
            state_next <= IDLE; 
        end

        S4:if (din)
            state_next <= S1;
        else
            state_next <= S4;

        default :state_next <= state_curr;
    endcase
end

always @(posedge clk or negedge rst_n) begin
    if (!rst_n) 
        Y <= 1'b0;
    else
        if (state_curr == S4)
            Y <= 1'b1;
        else
            Y <= 1'b0;
end

endmodule

全部评论

相关推荐

求offer的大角牛:简历写的第一乱,没有突出重点,第二项目太多太杂看不出来有啥核心技术,第三自我评价太多了,第四获得的荣誉没啥含金量,可以不写,反正问题不少
点赞 评论 收藏
分享
06-10 18:55
已编辑
西安电子科技大学 Java
只管努力就好:恭喜恭喜恭喜,我都没有面试机会,上周被压力炸了,今天中午看页面显示被捞进入评估结果下午就没了
京东三面373人在聊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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