当前位置:文档之家› 实验5 状态机序列检测器设计

实验5 状态机序列检测器设计

实验五序列检测器设计
一、实验目的
1 掌握时序电路状态机设计一般方法;
2 学会用状态机方法实现序列检测器的设计。

二、实验原理:
序列检测器可用于检测一组或多组由二进制码组成的脉冲序列信号,当序列检测器连续收到一组串行二进制码后,如果这组码与检测器中预先设置的码相同,则输出1,否则输出0。

由于这种检测的关键在于正确码的收到必须是连续的,这就要求检测器必须记住前一次的正确码及正确序列,直到在连续的检测中所收到的每一位码都与预置数的对应码相同。

在检测过程中,任何一位不相等都将回到初始状态重新开始检测。

序列检测可由状态机完成,也可进行串行滑窗检测器。

线性反馈移位寄存器,用来产生伪随机序列,用做测试数据输入。

三、实验内容
1、完成“1101”检测器的设计,输入信号a和时钟clk,输出为out。

2、设计一个五位线性反馈移位寄存器,其输出数据以串行移位方式进入序列
检测器,其有置数端set,输入时钟clk,左移输出out;
3、连接五位线性反馈移位寄存器和序列检测器构成完整实验系统。

四、设计步骤
1、建立新工程,
2、完成五位线性反馈移位寄存器设计,序列检测器设计,顶层文件设计,并把各
个模块连接起来。

3、对顶层文件进行编译。

4、对顶层文件时序仿真。

五、实验报告:根据以上的实验内容写出实验报告,包括设计原理、程序设计、仿真分析等详细实验过程。

六、扩展部分:
1、采用文本输入方式构成顶层文件,重新构造本系统。

2、设计采用移动滑窗法进行序列检测。

参考程序:状态机序列检测器(1101)module fsm (clock, reset, datain,
out);
input clock,reset, datain; output out;
reg out;
reg [1:0] state; parameter
Idle = 2'b00,
Start = 2'b01,
Step=2'b10,
Stop = 2'b11;
always @(posedge clock)// if (!reset) //
begin
state <= Idle;
out<=0;
end
else case (state) Idle:
if (datain==1)
begin
state <= Start;
out<=0;
end
else
begin
state<=Idle;
out<=0;
end
Start:
if (datain==1)
begin
state <= Step;
out<=0;
end
else state <=Idle; Step:
if (datain==0)
begin
state <= Stop;
out<=0;
end
else state<=Step; Stop:
if (datain==1)
begin
state <= Idle;
out<=1;
end
else
begin
state <=Idle;
out<=0;
end
endcase
endmodule
线性反馈移位寄存器:
module gedata(clk,out,set);
input clk,set;
output out;
wire out;
reg[4:0] sr;
assign out=sr[0];
always@(posedge clk)
begin
if(set)
sr<=5'b10101;
else
begin
sr<=sr>>1;
sr[4]<=sr[2]^sr[0];
end
end
endmodule。

相关主题