题解 | #输入序列不连续的序列检测#

输入序列不连续的序列检测

https://www.nowcoder.com/practice/f96d0e94ec604592b502b0f1800ed8aa

`timescale 1ns/1ns
module sequence_detect(
	input clk,
	input rst_n,
	input data,
	input data_valid,
	output reg match
	);

reg [3:0] data_reg;

always@(posedge clk or negedge rst_n) begin
	if(!rst_n) begin
		data_reg <= 4'b0;
	end
	else begin
		if(data_valid) begin
			data_reg <= {data_reg[2:0], data};
		end
		else begin
			data_reg <= data_reg;
		end
	end
end

always @(posedge clk or negedge rst_n) begin
    if (!rst_n) begin
        match <= 1'b0;
    end
    else begin
        if (data_valid && ({data_reg[2:0], data} == 4'b0110)) begin
            match <= 1'b1;
        end
        else begin
            match <= 1'b0;
        end
    end
end
/* 这种情况match可能会持续多个周期
always @(*) begin
    if (data_reg == 4'b0110) begin
        match <= 1'b1;
    end
    else begin
        match <= 1'b0;
    end
end
*/
endmodule

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务