华中农业大学理学院计算机系实验题目:设计串行数据检测器实验说明:设计一个“1001”串行数据检测器。使得但输出序列中出现“1001”时,结果中就输出1。输入/输出如下所示:输入x:000101010010011101001110101输出z:000000000010010000001000000实验分析:初始状态设为s0,此时检测数据序列为“0000”,当再检测到一个0时,仍为s0,当检测到1时,进入下一个状态s1,此时序列为“0001”;当在状态s1检测到0时,进入到状态s2,此时序列为“0010”,当检测到1时,仍为s1;当在状态s2检测到0时,进入到状态s3,此时序列为“0100”,当检测到1时,进入s1;当在状态s3检测到0时,进入s0,当检测到1时,进入状态s4,此时序列为“1001”,结果输出为1;当在s4检测到0时,进入状态s2,当检测到1时,进入状态s1。状态图如下:实验代码:modulesjjcq10_3(x,z,clk,reset,state);inputx,clk,reset;outputz;output[2:0]state;reg[2:0]state;regz;parameters0='d0,s1='d1,s2='d2,s3='d3,s4='d4;always@(posedgeclk)beginif(reset)beginstate=s0;z=0;endelsecasex(state)s0:beginif(x==0)beginstate=s0;z=0;endelsebeginstate=s1;z=0;endends1:beginif(x==0)beginstate=s2;z=0;endelsebeginstate=s1;z=0;endends2:beginif(x==0)beginstate=s3;z=0;endelsebeginstate=s1;z=0;endends3:beginif(x==0)beginstate=s0;z=0;endelsebeginstate=s4;z=1;endends4:beginif(x==0)beginstate=s2;z=0;endelsebeginstate=s1;z=0;endenddefault:state=s0;endcaseendendmodule实验仿真波形:分析:每当到达状态四即s4,此时检测序列为“1001”,输出即为1.