题解 | #序列检测器(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 的值,这个寄存器代表了状态机的当前状态。
