1、华中农业大学理学院计算机系实验题目:设计串行数据检测器实验说明:设计一个“1001”串行数据检测器。使得但输出序列中出现“1001”时,结果中就输出 1。输入/输出如下所示:输入 x:000 101 010 010 011 101 001 110 101输出 z:000 000 000 010 010 000 001 000 000实验分析:初始状态设为 s0,此时检测数据序列为“0000” ,当再检测到一个 0 时,仍为 s0,当检测到 1 时,进入下一个状态 s1,此时序列为“0001” ;当在状态 s1 检测到 0 时,进入到状态 s2,此时序列为“0010” ,当检测到 1 时,仍为
2、s1;当在状态 s2 检测到 0 时,进入到状态 s3,此时序列为“0100” ,当检测到 1 时,进入 s1;当在状态 s3 检测到 0 时,进入s0,当检测到 1 时,进入状态 s4,此时序列为“1001” ,结果输出为 1;当在 s4 检测到 0时,进入状态 s2,当检测到 1 时,进入状态 s1。状态图如下:实验代码:module sjjcq10_3(x,z,clk,reset,state);input x,clk,reset;output z;output2:0state;reg2:0state;reg z;parameter s0=d0,s1=d1,s2=d2,s3=d3,s4=d
3、4;always(posedge clk)beginif(reset)begin state=s0;z=0;endelse casex(state)s0: beginif(x=0) begin state=s0;z=0;endelse begin state=s1;z=0;endends1: beginif(x=0) begin state=s2;z=0;endelse begin state=s1;z=0;endends2:beginif(x=0) begin state=s3;z=0;endelse begin state=s1;z=0;endends3:beginif(x=0) begin state=s0;z=0;endelse begin state=s4;z=1;endends4:beginif(x=0) begin state=s2;z=0;endelse begin state=s1;z=0;endenddefault: state=s0;endcaseendendmodule实验仿真波形:分析:每当到达状态四即 s4,此时检测序列为 “1001”,输出即为 1.