采用EDA实验五用状态图输入法实现序列检测器.docx

上传人:b****5 文档编号:7680409 上传时间:2023-01-25 格式:DOCX 页数:11 大小:305.01KB
下载 相关 举报
采用EDA实验五用状态图输入法实现序列检测器.docx_第1页
第1页 / 共11页
采用EDA实验五用状态图输入法实现序列检测器.docx_第2页
第2页 / 共11页
采用EDA实验五用状态图输入法实现序列检测器.docx_第3页
第3页 / 共11页
采用EDA实验五用状态图输入法实现序列检测器.docx_第4页
第4页 / 共11页
采用EDA实验五用状态图输入法实现序列检测器.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

采用EDA实验五用状态图输入法实现序列检测器.docx

《采用EDA实验五用状态图输入法实现序列检测器.docx》由会员分享,可在线阅读,更多相关《采用EDA实验五用状态图输入法实现序列检测器.docx(11页珍藏版)》请在冰豆网上搜索。

采用EDA实验五用状态图输入法实现序列检测器.docx

采用EDA实验五用状态图输入法实现序列检测器

EDA实验五用状态图输入法实现序列检测器

一、实验目的:

了解序列检测器的基本原理,Mealy型和Moore型状态机的基本原理,

掌握状态图输入法实现序列检测器的方法,并进行分析和仿真验证。

二、实验内容:

本实验内容是:

用状态图输入法设计一个序列检测器,若检测器收到一组码流1110010则输出为1,否则输出为0。

三、实验方法:

实验方法:

采用基于FPGA进行数字逻辑电路设计的方法。

采用的软件工具是QuartusII软件仿真平台,采用的硬件平台是AlteraEPF10K20TI144_4的FPGA试验箱。

实验步骤:

1、绘制状态图。

打开QuartusII软件平台,建立工程文件夹,工程文件夹名称为exp_detect3.然后点击File中的New建立一个状态图文件(用StateMachineFile命令),然后设置并生成状态图。

2、按照实验箱上FPGA的芯片名更改编程芯片的设置。

操作是点击Assign/Device,选取芯片的类型.

3、编译与调试。

确定状态图文件为当前工程文件,点击Complier进行文件编译.编译结果有错误或警告,则将要调试修改直至文件编译成功。

4、波形仿真及验证。

在编译成功后,点击Waveform开始设计波形。

点击“insertthenode",按照程序所述引脚,任意设置各输入节点的输入波形…点击保存按钮保存。

5、FPGA芯片编程及验证,应记录实验结果进行分析。

四、实验过程:

用状态图输入法实现序列检测器:

1、建立工程文件,工程文件夹的名称为exp_detect3,工程名和顶层实体名称为exp_detect3.

工程建立过程中平台设置设置如下图所示:

2、工程建好后,即进行状态图的输入。

具体过程如下:

选择菜单File->New—>StateMachineFile命令,打开StateMachineEditor窗口,如下图所示:

然后选择Tools-〉StateMachineWizard命令,弹出如下所示状态机创建向导对话框。

在该对话框中选择Createanewstatemachinedesign单选按钮,点击OK按钮进入下一个页面,如下所示:

然后在下一个对话框中选择复位Reset信号为异步Asynchronous,高电平有效,输出端无寄存器。

单击Next按钮进入下一个页面。

在状态转换对话框中设置状态转换。

States栏中输入状态名称s0~s6。

Inputports栏中输入时钟信号clock、复位信号reset以及串行数据输入信号din.Statetransitions栏中依据书中状态图指定的状态转换,设置完成后点击Next按钮,进入下一页面:

s0-————>s1din

s0--——-〉s0~din

s1——--—>s2~din

s1—-—--〉s0~din

s2——-——>s3din

s2—-———〉s0~din

s3—-———>s4~din

s3---——〉s3din

s4——--—〉s5~din

s4--—-—>s1din

s5-—---〉s0~din

s5---——〉s6din

s6—————〉s0~din

s6-————〉s2din

在outputports栏OutputPortName列中输入z,OutputState状态设为Currentclockcycle.Actioncondition栏设为s6状态且AdditionalConditions为“~din”成立时信号,z输出为1。

设置完成后单击next按钮进入下一个页面:

在下图对话框中显示状态机的设置情况.单击Finish按钮,关闭状态机向导,生成所需的状态机。

布局适当调整,得到所需的状态图,状态图如下图所示:

生成并调整后的状态图:

3、保存该设计文件为exp_detect3.smf,并添加到工程文件夹。

4、选择菜单Tools—>GennrateHDLFile命令,打开GennrateHDLFile对话框,如下图所示,从中选择VHDL单选项,单击OK按钮,分析成功后则自动生成exp_detect3。

vhd。

生成的VHDL代码如下:

LIBRARYieee;

USEieee。

std_logic_1164.all;

ENTITYexp_detect3IS

PORT(

clock:

INSTD_LOGIC;

reset:

INSTD_LOGIC:

=’0’;

din:

INSTD_LOGIC:

='0’;

z:

OUTSTD_LOGIC

);

ENDexp_detect3;

ARCHITECTUREBEHAVIOROFexp_detect3IS

TYPEtype_fstateIS(s0,s1,s2,s3,s4,s5,s6);

SIGNALfstate:

type_fstate;

SIGNALreg_fstate:

type_fstate;

BEGIN

PROCESS(clock,reset,reg_fstate)

BEGIN

IF(reset='1')THEN

fstate<=s0;

ELSIF(clock=’1’ANDclock’event)THEN

fstate<=reg_fstate;

ENDIF;

ENDPROCESS;

PROCESS(fstate,din)

BEGIN

z〈=’0';

CASEfstateIS

WHENs0=〉

IF((din='1'))THEN

reg_fstate<=s1;

ELSIF(NOT((din='1')))THEN

reg_fstate<=s0;

—-Inserting’else’blocktopreventlatchinference

ELSE

reg_fstate<=s0;

ENDIF;

WHENs1=>

IF((din='1’))THEN

reg_fstate〈=s2;

ELSIF(NOT((din=’1')))THEN

reg_fstate<=s0;

—-Inserting'else’blocktopreventlatchinference

ELSE

reg_fstate〈=s1;

ENDIF;

WHENs2=〉

IF((din='1’))THEN

reg_fstate<=s3;

ELSIF(NOT((din=’1')))THEN

reg_fstate〈=s0;

--Inserting’else'blocktopreventlatchinference

ELSE

reg_fstate〈=s2;

ENDIF;

WHENs3=〉

IF((din='1'))THEN

reg_fstate〈=s3;

ELSIF(NOT((din=’1')))THEN

reg_fstate<=s4;

-—Inserting’else'blocktopreventlatchinference

ELSE

reg_fstate〈=s3;

ENDIF;

WHENs4=>

IF((din=’1’))THEN

reg_fstate〈=s1;

ELSIF(NOT((din='1’)))THEN

reg_fstate〈=s5;

——Inserting’else’blocktopreventlatchinference

ELSE

reg_fstate<=s4;

ENDIF;

WHENs5=〉

IF((din=’1'))THEN

reg_fstate<=s6;

ELSIF(NOT((din='1’)))THEN

reg_fstate<=s0;

—-Inserting’else'blocktopreventlatchinference

ELSE

reg_fstate〈=s5;

ENDIF;

WHENs6=〉

IF((din=’1'))THEN

reg_fstate<=s2;

ELSIF(NOT((din=’1')))THEN

reg_fstate<=s0;

-—Inserting’else’blocktopreventlatchinference

ELSE

reg_fstate〈=s6;

ENDIF;

IF(NOT((din='1’)))THEN

z〈='1';

——Inserting'else’blocktopreventlatchinference

ELSE

z<='0’;

ENDIF;

WHENOTHERS=>

z〈='X';

report”Reachundefinedstate”;

ENDCASE;

ENDPROCESS;

ENDBEHAVIOR;

5、把exp_detect3.vhd作为设计源文件用于后序实验验证。

代码生成后进行编译(可在此时设置引脚等等)

6、现在可用RTLviewer查看电路,如下图所示,状态图可选择Tools—>Netlistviewers—>StateMachineViewer命令查看:

7、下面进行功能仿真:

波形仿真过程。

点击file-〉new,选择VectorWaveformFile,新建一个波形仿真文件,然后在空白处点击右键,选择“InsertNodeorBus”,出现一个对话框,进行添加节点,然后输入时钟激励信号,并进行参数设置,两个重要的参数:

Endtime结束时间和Gridsize网格大小。

点击Edit->Value-〉Clock,出现一个对话框设置时钟激励周期,相位以及其他参数,点击OK,显示波形图如下:

接着保存波形文件,然后进行仿真。

在仿真之前要先生成功能仿真表,首先要先设置仿真模式。

然后点击菜单项Processing—>GenerateFunctionSimulationNetlist,产生功能仿真所需要的网表,接着就能进行仿真操作了。

波形仿真。

打开processing仿真工具,出现仿真设置对话框,然后开始进行功能仿真。

仿真波形图如下:

这是功能仿真即波形仿真的波形图。

波形仿真图分析:

由上述波形仿真图可以看出,当reset无效时,电路检测到din为1110010时,z输出为1,检测到了1110010序列,符合实验的设计要求。

然后就能进行下载验证了

8、下载验证:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1