资源描述
实验报告四
有限状态机(FSM)的设计
一、 实验目的
1、了解FSM的应用范围和两种类型的不同特点;
2、掌握FSM的电路结构和设计特点。
二.实验内容
设计一个串行数据检测器,连续4个或4个以上的1时输出为1,其他情况下输入情况为0,编写测试模块并给出仿真波形
三、实验步骤
1.程序编程
module ceshi(x,z,clk,rst,clk1);
input x,clk,rst;
output z;
reg z;
output clk1;
reg clk1;
reg[2:0] state;
reg [27:0] n;
parameter IDLE='d0,A='d1,B='d2,C='d3;
always@(posedge clk)
begin
if (n==24999999)
begin
clk1=~clk1;n=0;end
else
n=n+1;
end
always@(posedge clk1)
if(!rst)
begin
state<=IDLE;
end
else
case(state)
IDLE:if(x==1)
begin
state<=A;z=0;
end
else
begin state<=IDLE;z=0;end
A:if(x==1)
begin
state<=B;z=0;
end
else
state<=IDLE;
B:if(x==1)
begin
state<=C;z=0;
end
else
state<=IDLE;
C:if(x==1)
begin
state<=D;z=1;
end
else
state<=IDLE;
D:if(x==1)
begin
state<=D;z=1;
else
state<=IDLE;
end
default:state<=IDLE;
endcase
endmodule
2. 检测程序
`timescale 1ns/1ns
`include "./ceshi.v"
module ceshi_top;
reg clk,rst;
reg[23:0]data;
wire x,z,clk1;
assign x=data[23];
always #10 clk=~clk;
always@(posedge clk)
data={data[22:0],data[23]};
initial
begin clk=0;
rst=1;
#2 rst=0;
#30 rst=1;
data='b1101_1111_0011_0010_1010;
#500 $stop;
end
ceshi m(x,z,rst,clk1);
Endmodule
3. 对应引脚
4仿真结果
展开阅读全文