题解 | 序列检测器(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 = 3'd0;
parameter S0 = 3'd1;
parameter S1 = 3'd2;
parameter S2 = 3'd3;
parameter S3 = 3'd4;

reg [2:0] curr_state;
reg [2:0] next_state;
always@(posedge clk or negedge rst_n)
begin
    if(!rst_n)
        curr_state <= IDLE;
    else
        curr_state <= next_state;
end

always@(*)
begin
    case(curr_state)
    IDLE:next_state = din? S0:IDLE;
    S0:next_state = din? S1:IDLE;
    S1:next_state = din? S1:S2;
    S2:next_state = din? S3:IDLE;
    S3:next_state = IDLE;
    default:next_state = IDLE;
    endcase
end


always@(posedge clk or negedge rst_n)
begin
    if(!rst_n)
        Y <= 1'b0;
    else
    begin
    case(curr_state)
    S3: Y  <= 1'b1;
    default: Y <= 1'b0;
    endcase
    end
end



endmodule

全部评论

相关推荐

饼子吃到撑:学院本是这样的,找工作拼运气,你技术再好人家筛选学历照样沉入海底,海投就行了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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