EDA实验08—利用有限状态机进行时序逻辑的设计.docx
第
第PAGE1页共5页
电子信息工程学系实验报告
成绩:
成
绩:
指导教师(签名):
实验项目名称:利用有限状态机进行时序逻辑的设计 实验时间:2011-12-05
班级:通信091 姓名:Jxairy 学 号:910705131
实验目的:
1、掌握利用有限状态机实现一般时序逻辑分析的方法;
2、掌握用Verilog编写的有限状态机的标准模板。
实验环境:
Windows7、MAX+PlusⅡ10等。实验内容:
1、设计简单的状态机,功能是检测一个5位二进制序列“10010”。考虑到序列重叠的可能,有限状态机共提供了8个状态(包括初始状态IDLE)。
2、设计一个串行数据检测器。要求是:连续4个或4个以上为1时输出为1,其他输入情况下为0。
实验过程:
一、简单的状态机的文本设计及仿真:
新建文本:选择菜单File下的New,出现如图8.1所示的对话框,在框中选中“TextEditorfile”,按“OK”按钮,即选中了文本编辑方式。
图8.1新建文本
另存为Verilog编辑文件,分别命名为“seqdet.v”。如图8.2所示。
在编辑窗口中输入“seqdet.v”的程序,如下所示。
moduleseqdet(x,z,clk,rst,state);
inputx,clk,rst;outputz;output[2:0]state;reg[2:0]state;wirez;
parameterIDLE=`d0,A=d1,B=d2,C=d3,D=d4,E=d5,F=d6,G=d7;
assignz=(state==Ex==0)?1:0;
always@(posedgeclk)if(!rst)
beginstate=IDLE;end
elsecasex(state)IDLE:if(x==1)
beginstate=A;end
A:if(x==0)begin
state=B;endB:if(x==0)beginstate=C;end
elsebeginstate=F;end
C:if(x==1)beginstate=D;end
else
begnstate=G;endD:if(x==0)beginstate=E;end
elsebeginstate=A;
endE:if(x==0)beginstate=C;end
elsebeginstate=A;end
F:if(x==1)
beginstate=A;end
elsebeginstate=B;end
G:if(x==1)beginstate=F;end
default:state=IDLE;endcase
endmodule
图8.2另存为.V编辑文件 图8.3设置当前仿真的文本设计
设置当前文本:在MAX+PLUSII中,在编译一个项目前,必须确定一个设计文件作为当前项目。
按下列步骤确定项目名:在File菜单中选择Project中的Name选项,将出现ProjectName对话框:在Files
框内,选择当前的设计文件。选择“OK”。如图8.3所示。
打开编译器窗口:在MAX—plusⅡ菜单内选择Compiler项,即出现如图8.4的编译器窗口。
图8.4编译器窗口
选择Start即可开始编译,MAX+PLUSII编译器将检查项目是否有错,并对项目进行逻辑综合,然后配置到一个Altera器件中,同时将产生报告文件、编程文件和用于时间仿真用的输出文件。
建立波形编辑文件:选择菜单File下的New选项,在出现的New对话框中选择“WaveformEditorFile”,单击OK后将出现波形编辑器子窗口。
仿真节点插入:选择菜单Node下的EnterNodesfromSNF选项,出现如图8.5所示的选择信号结点对话框。按右上侧的“List”按钮,在左边的列表框选择需要的信号结点,然后按中间的“=”按钮,单击“OK”,选中的信号将出现在波形编辑器中。
图8.5仿真节点插入
输入波形设置,保存波形文件,文本仿真:单击菜单File下的Save选项,在弹出的窗口中将波
形文件存在以上的同一目录中,文件取名为seqdet.scf。单击MAX—plusⅡ菜单内选择Simulator选项,单击Start,接着打开OpenSCF(界面如下图8.6)即完成计数器的波形仿真。
图8.6Simulator仿真二、串行数据检测器的文本