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

序列检测器(Moore型)

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

`timescale 1ns/1ns

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

reg [2:0] cstate, nstate;

always@(posedge clk, negedge rst_n) begin
    if(rst_n == 1'b0) cstate <= 3'b000;
    else cstate <= nstate;
end

always@(*) begin
    if(rst_n == 1'b0) nstate <= 3'b000;
    case(cstate)
    3'b000: begin
        if(din==1'b1) nstate <= 3'b001;
        else nstate <= 3'b000;
    end
    3'b001:begin
        if(din==1'b1) nstate <= 3'b010;
        else nstate <= 3'b000;
    end
    3'b010:begin
        if(din==1'b1) nstate <= 3'b010;
        else nstate <= 3'b011;
    end
    3'b011:begin
        if(din==1'b1) nstate <= 3'b100;
        else nstate <= 3'b000;
    end
    default: nstate <= 3'b000;
    endcase 
end

always@(posedge clk, negedge rst_n) begin
    if(rst_n == 1'b0) Y <= 0;
    else if(cstate == 3'b100) Y <= 1;
    else  Y <= 0;
end

endmodule

全部评论

相关推荐

码农索隆:谁问你了 举报了 删了,求你了 我要哭了 我一点也不眼红 我要跳楼
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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