题解 | #序列检测器(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 [3:0] ary; always@(posedge clk or negedge rst_n)begin if(!rst_n) ary<='b0; else ary<={din,ary[3:1]}; end always@(posedge clk or negedge rst_n)begin if(!rst_n) Y<='b0; else if(ary==4'b1011) Y<='b1; else Y<='b0; end endmodule
在Moore状态机中,输出只取决于当前状态,而不依赖于输入。在代码中,输出 Y
取决于寄存器 ary
的值,这个寄存器代表了状态机的当前状态。