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

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

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 [1:0]cs,ns;
	always@(posedge clk or negedge rst_n)begin
		if(!rst_n)begin
			cs<=0;
		end
		else begin
			cs<=ns;
		end
	end

	always@(*)begin
		case(cs)
		2'b00:begin
			if(data_valid)begin
				ns=(data==0)?2'b01:2'b00;
			end
			else begin
				ns=cs;
			end
		end
		2'b01:begin
			if(data_valid)begin
				ns=(data==1)?2'b10:2'b01;
			end
			else begin
				ns=cs;
			end
		end
		2'b10:begin
			if(data_valid)begin
				ns=(data==1)?2'b11:2'b00;
			end
			else begin
				ns=cs;
			end
		end
		2'b11:begin
			if(data_valid)begin
				ns=0;
			end
			else begin
				ns=cs;
			end
		end
		endcase
	end

	always@(posedge clk or negedge rst_n)begin
		if(!rst_n)begin
			match<=0;
		end
		else begin
			match<=((cs==2'b11)&&(data==0)&&(data_valid==1))?1:0;
		end
	end
  
endmodule

全部评论

相关推荐

10-28 14:42
门头沟学院 Java
watermelon1124:因为嵌入式炸了
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务