题解 | #输入序列不连续的序列检测#
输入序列不连续的序列检测
http://www.nowcoder.com/practice/f96d0e94ec604592b502b0f1800ed8aa
上述有些答案可能在当前的testbanch中成立,但是我觉得下面这个写法可能更好些, data_valid无效时需对缓存区重新赋值,否则可能出现在两次分开的有效值期间满足0110而输出match=1; 另外,初始值赋值0,在输入序列为110的情况下即可输出match=1 `timescale 1ns/1ns module sequence_detect( input clk, input rst_n, input data, input data_valid, output reg match ); reg [3:0] temp;
always@(posedge clk or negedge rst_n) begin
if (!rst_n)
temp <=4'b0001;
else begin
if (data_valid)
temp <= {temp[2:0],data};
else
temp <=4'b0001;
end
end
always@(temp or data_valid) begin
if (temp == 4'b0110 & data_valid)
match = 1;
else
match = 0;
end
endmodule