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

输入序列连续的序列检测

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

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

reg [3:0] r_st_current, r_st_next;

localparam P_IDLE = 4'd0, 
		   P_S1   = 4'd1,
		   P_S2   = 4'd2,
		   P_S3   = 4'd3,
		   P_S4   = 4'd4,
		   P_S5   = 4'd5,
		   P_S6   = 4'd6,
		   P_S7   = 4'd7,
		   P_S8   = 4'd8;

always@(posedge clk, negedge rst_n)begin
	if(!rst_n)
		r_st_current <= P_IDLE;
	else
		r_st_current <= r_st_next;
end		 
 always@(*)begin
	if(!rst_n)
		r_st_next <= P_IDLE;
	else begin
		case(r_st_current)
			P_IDLE : r_st_next <= a? P_IDLE	: P_S1;
			P_S1   : r_st_next <= a? P_S2	: P_S1;
			P_S2   : r_st_next <= a? P_S3	: P_S1;
			P_S3   : r_st_next <= a? P_S4	: P_S1;
			P_S4   : r_st_next <= a? P_IDLE	: P_S5;
			P_S5   : r_st_next <= a? P_S2	: P_S6;
			P_S6   : r_st_next <= a? P_S2	: P_S7;
			P_S7   : r_st_next <= a? P_S8	: P_S1;
			P_S8   : r_st_next <= a? P_S3	: P_S1;
			default: r_st_next <= P_IDLE;
		endcase

	end
 end
always@(posedge clk, negedge rst_n)begin
	if(!rst_n)
		match <= 1'b0;
	else if(r_st_current == P_S8)
		match <= 1'b1;
	else 
		match <= 1'b0;
end		 
  
endmodule

全部评论

相关推荐

亲爱滴达瓦里氏:又有嵌软又有FPGA又有硬件的,三个方向显得你的简历太杂糅了,展示不出你在某一个方向有哪些技术栈。基本上也不会有企业会去招一个本科的全栈工程师。HR一般是看你的技术栈是否和招聘要求匹配才发面试的。如果你想三个方向都试试的话还是建议你分成三份不同的简历根据不同岗位来投。多看看****或牛客上面的招聘信息,根据上面要求的技术栈来写简历。看了你的帖子经历这一块还是过关的,不过看的每个方向都会一点,但每个方向优势都不突出。 还有就是要海投,你这才几十份算不了啥。去年投了一两百份的大有人在。多去跑跑线下招聘吧,有机会继续搞份实习,后面转正机会大些。有条件就多往北上广深投吧。武汉竞争还是太激烈了。
我的秋招日记
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务