之前接触的序列检测电路都是通过状态机实现的,其实序列检测也可以通过移位寄存器和比较器很方便的实现:
移位寄存器用于存储输入;
比较器用于比较输入和待检测序列是否一致,产生输出;
module seqdet
(
input wire x,
input wire clk,
input wire rst,
output wire z,
output reg [4:0] q
);
assign z = (q == 5'b10010) ? 1'b1:1'b0;
always @ (posedge clk,negedge rst)
if(!rst)
q <= 5'd0;
else
q <= {q[3:0],x};
endmodule
参考: