一、实验目的:用Verilog代码实现FSM。
二、实验内容:课本216页的例6.16。
三、实验代码:
module sequence(Clock,Resetn,w,z);
input Clock,Resetn,w;
output z;
reg [3:1]y,Y;
parameter [3:1]A=3'b000,B=3'b001,C=3'b010,D=3'b011,E=3'b100;
//Define the next state combinational circuit
always @(w,y)
case(y)
A:if(w) Y=D;
else Y=B;
B:if(w) Y=D;
else Y=C;
C:if(w) Y=D;
else Y=C;
D:if(w) Y=E;
else Y=B;
E:if(w) Y=E;
else Y=B;
default: Y=3'bxxx;
endcase
//Define the sequential block
always @(negedge Resetn,posedge Clock)
if (Resetn==0) y<=A;
else y<=Y;
//Define output
assign z=(y==C)|(y==E);
endmodule
四、实验步骤:
1、建立工程:打开Quartus软件,在菜单栏中点击【File】→【New Project Wizard】,会弹出工程设置对话框,工程名和新建顶层模块名正常应该是空白的,这里填sequence,此名称要与设计模块中的module名称一致。填写好名称后,依次点击【Next】 即可,选择【Empty project】。进入下一步,选择添加文件。在Simulation 一栏中选择ModelSim工具。最后会有一个简单的报告,结束后就可以完成新工程的建立。
2、设计编译:在【File】菜单中选择【New】,选择Verilog HDL文件,建立一个新的设计文件,设计文件复制到软件中。将该文件保存后,在快捷工具栏中找到快捷按钮【Start Compilation】,点击分析。
3、联合仿真:在菜单栏找到按钮【RTL Simulation】,单击,进入Modelsim,单击【Wave—Default】栏的每一栏,出现【Define Clock】菜单栏,将Period栏的数字改一下,全部栏改完后,改动菜单栏的【Run Length】中的数据,单击【Run Length】栏旁边的【Run】按钮。
五、实验部分截屏: