采用EDA实验五用状态图输入法实现序列检测器Word下载.docx
- 文档编号:20805079
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:11
- 大小:305.01KB
采用EDA实验五用状态图输入法实现序列检测器Word下载.docx
《采用EDA实验五用状态图输入法实现序列检测器Word下载.docx》由会员分享,可在线阅读,更多相关《采用EDA实验五用状态图输入法实现序列检测器Word下载.docx(11页珍藏版)》请在冰豆网上搜索。
确定状态图文件为当前工程文件,点击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--—-—>
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
=reg_fstate;
ENDIF;
ENDPROCESS;
PROCESS(fstate,din)
z〈=’0'
;
CASEfstateIS
WHENs0=〉
IF((din='
))THEN
reg_fstate<
=s1;
ELSIF(NOT((din='
)))THEN
—-Inserting’else’blocktopreventlatchinference
ELSE
=s0;
ENDIF;
WHENs1=>
1’))THEN
reg_fstate〈=s2;
ELSIF(NOT((din=’1'
—-Inserting'
else’blocktopreventlatchinference
reg_fstate〈=s1;
WHENs2=〉
=s3;
reg_fstate〈=s0;
--Inserting’else'
blocktopreventlatchinference
reg_fstate〈=s2;
WHENs3=〉
reg_fstate〈=s3;
=s4;
-—Inserting’else'
reg_fstate〈=s3;
WHENs4=>
IF((din=’1’))THEN
1’)))THEN
reg_fstate〈=s5;
——Inserting’else’blocktopreventlatchinference
WHENs5=〉
IF((din=’1'
=s6;
—-Inserting’else'
reg_fstate〈=s5;
WHENs6=〉
=s2;
-—Inserting’else’blocktopreventlatchinference
reg_fstate〈=s6;
IF(NOT((din='
z〈='
——Inserting'
z<
0’;
WHENOTHERS=>
X'
report”Reachundefinedstate”;
ENDCASE;
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、下载验证:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 采用 EDA 实验 状态图 输入法 实现 序列 检测器