EDA设计实验_序列检测器

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

华中农业大学理学院计算机系

实验题目:

设计串行数据检测器

实验说明:

设计一个“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时,仍为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;

output[2:0]state;

reg[2:0]state;

reg z;

parameter s0='d0,s1='d1,s2='d2,s3='d3,s4='d4;

always@(posedge clk)

begin

if(reset)begin state<=s0;z<=0;end

else

casex(state)

s0: begin

if(x==0) begin state<=s0;z<=0;end

else begin state<=s1;z<=0;end

end

s1: begin

if(x==0) begin state<=s2;z<=0;end

else begin state<=s1;z<=0;end

end

s2:begin

if(x==0) begin state<=s3;z<=0;end

else begin state<=s1;z<=0;end

end

s3:begin

if(x==0) begin state<=s0;z<=0;end

else begin state<=s4;z<=1;end

end

s4:begin

if(x==0) begin state<=s2;z<=0;end

else begin state<=s1;z<=0;end

end

default: state<=s0;

endcase

end

endmodule

实验仿真波形:

分析:每当到达状态四即s4,此时检测序列为“1001”,输出即为1.

相关文档
最新文档