实验5 状态机序列检测器设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验五序列检测器设计
一、实验目的
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