题解 | #状态机-重叠序列检测#

状态机-重叠序列检测

https://www.nowcoder.com/practice/10be91c03f5a412cb26f67dbd24020a9

module sequence_test2(
	input wire clk  ,
	input wire rst  ,
	input wire data ,
	output reg flag
);
parameter s0=3'd0,s1=3'd1,s2=3'd2,s3=3'd3,s4=3'd4;
//*************code***********//
reg[2:0] current_state,next_state;
always @(*)
begin
case (current_state)
s0 : next_state = data ? s1 : s0;
s1 : next_state = data ? s1 : s2;
s2 : next_state = data ? s3 : s0;
s3 : next_state = data ? s4 : s2;
s4 : next_state = data ? s0: s2;
endcase
end

always @(posedge clk or negedge rst)
begin
if(!rst)
begin
current_state<=s0;
end
else
begin
current_state<= next_state;
end
end

always @ (posedge clk or negedge rst)
begin
if(!rst)
begin
flag<=1'b0;
end
else
begin
flag <= current_state== s4 ? 1'b1 :1'b0;
end
end
//*************code***********//
endmodule

`timescale 1ns/1ns
module testbench();
    reg rst;
	reg clk=1;
	reg data;
	wire out;
	 sequence_test2 u1(
	. clk(clk)  ,
	. rst (rst) ,
	. data (data),
	.flag(out)
);
	always #5 clk = ~clk;  // Create clock with period=10 
  initial begin
  rst=0;data=0;
 #10 rst=1;
 #20 data=1;
 #10 data=0;
 #10 data=1;
 #20 data=0;
 #10 data=1;
 #50 data=0;
 #10 data=1;
 #20 data=0;
 #10 data=1;
 #10 data=0; 

 $finish;
end  
    
endmodule

题中给出的波形有误,正确波形如下:

全部评论

相关推荐

霁华Tel:秋招结束了,好累。我自编了一篇对话,语言别人看不懂,我觉得有某种力量在控制我的身体,我明明觉得有些东西就在眼前,但身边的人却说啥也没有,有神秘人通过电视,手机等在暗暗的给我发信号,我有时候会突然觉得身体的某一部分不属于我了。面对不同的人或场合,我表现出不一样的自己,以至于都不知道自己到底是什么样子的人。我觉得我已经做的很好,不需要其他人的建议和批评,我有些时候难以控制的兴奋,但是呼吸都让人开心。
点赞 评论 收藏
分享
lxylxy_:其实是美团卷起来了
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务