题解 | #含有无关项的序列检测#
含有无关项的序列检测
https://www.nowcoder.com/practice/cba67d06d6834a5d9b93e1087b56c8d8
完美,一次过,画好时序图就可以了啊。
注意点1:在加载完9个输入之后每次都要进行检测。其他参考答案好像没考虑这个点?需要考虑吗?
注意点2:有优化的空间,cnt位宽之类的。
注意点3:match 的输出滞后一个周期
`timescale 1ns/1ns
module sequence_detect(
input clk,
input rst_n,
input a,
output reg match
);
reg [8:0] cnt;
reg [8:0] seq_r;
always @ (posedge clk, negedge rst_n) begin
if(~rst_n) begin
cnt <= 0;
end
else begin
cnt <= (cnt == 8'h1FF) ? 9 : cnt + 1;
end
end
always @ (posedge clk, negedge rst_n) begin
if(~rst_n) begin
seq_r <= 0;
end
else begin
seq_r <= {seq_r[7:0], a};
end
end
always @ (posedge clk, negedge rst_n) begin
if(~rst_n) begin
match <= 0;
end
else begin
match <= (cnt >= 9) && ({seq_r[8:6], seq_r[2:0]} == 6'b011110);
end
end
endmodule

