序列检测器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三有限状态机进行时序逻辑电路设计
学院:物理与电子科学学院专业:应用电子技术班级: 1007班姓名: xxx 学号: xxxxxxxxxxxxx
一,实验目的:
(1)掌握利用有限状态机实现一般时序逻辑分析标的方法;
(2)掌握用Verilog编写可综合的优先状态机的准模板;
(3)掌握用Verilog编写状态机模板的测试文件的一般方法;
二,实验内容:
序列检测器:将一个指定的序列从数字码流中识别出来。
设计一个能够识别序列“10010”的序列检测器,设:x为数字码流输入,z为检测标记输出,且高电平表示“发现指定序列”,低电平表示“没有发现指定序列”。
考虑码流为“110010010000100101…”
完成序列“10010”检测功能电路模块的Verilog程序编写,和测试模块程序的编写.
“10010”序列检测电路的状态转移图如下:
其中状态A-E表示5位序列“10010”按顺序正确出现在码流中。考虑到序列重叠的可能,
转换图中还有状态F,G。另外,电路的初始状态设为IDLE. 三,实验程序
(1)功能模块:
module fim (x,z,clock,reset,,state); input clock,reset,x;
output z;
output[2:0]state;
reg [2:0]state;
wire z;
parameter Idle='d0 ,A='d1,
B='d2,C='d3,
D='d4,E='d5,
F='d6,G='d7; assign z=(state==D&&x==0)?1:0; always @(posedge clock)
if(!reset)
begin
state<=Idle;
end
else
case(state)
Idle:if(x==1) begin
state<=A;
end
else begin state<=Idle;
end
A:if(x==0) begin
state<=B;
end
else begin state<=A;
end
B:if(x==0) begin
state<=C;
end
else begin state<=F;
end
C:if(x==1) begin
state<=D;
end
else begin state<=G;
end
D:if(x==0) begin
state<=E;
end
else begin state<=A;
end
E:if(x==0) begin
state<=C;
end
else begin state<=A;
end
F:if(x==1) begin
state<=A;
end
else begin state<=B;
end
G: if(x==0) begin
state<=G;
end
else begin state<=F;
end
default: state<=Idle;
endcase
endmodule
(2)测试模块:
`timescale 1ns/1ns `define halfperiod 20 module f;
reg clock,reset;
reg[23:0]data;
wire z,x;
assign x=data[23;] initial
begin
clock=0;
reset=1; #2 reset=0;
#30 reset=1;
data=20'b1100_1001_0000_1001_0100;
#(`halfperiod*1000)$stop;
end
always #(`halfperiod)clock=~clock; always @(posedge clock)
#2 data={data[22:0],data[23]};
fim m(.x(x),.z(z),.clock(clock),.reset(reset)); endmodule
四,实验波形与分析
当复位端为低电平时,状态为IDLE。当复位端为高电平时,并且时钟来了一个上升沿,在输入端先加入一个高电平时,输出为低电平,状态为A。再加入一低电平时,输出仍为低电平,状态为B,一直加入的信号达到10010,状态为E时,输出为高电平,才表明发现指定序列。
五,实验总结
(1)通过本次的文本设计与仿真实验,巩固了用MODIESIM完成V erilog语言的文本设计和仿真的基本流程;
(2)从该实验中,我们知道怎样对序列10010进行识别;
(2)掌握了条件语句等编程语法在简单时序模块设计中的使用以及时序逻辑分析的方法;