内容发布更新时间 : 2024/11/19 15:27:38星期一 下面是文章的全部内容请认真阅读。
实验四:状态机实现序列检测器的设计
一、实验目的
1、了解和学习Quartus II 7.2软件设计平台。 2、了解EDA的设计过程。
3、通过实例,学习和掌握Quartus II 7.2平台下的文本输入法。
4、学习和掌握状态机的工作和设计原理。 5、掌握用VHDL 实现状态机的方法 6、利用状态机设计一个序列检测器 二、实验仪器
PC机,操作系统为Windows7/XP,本课程所用系统均为WindowsXP(下同),Quartus II 7.2设计平台。 三、实验步骤
1、创建工程,在File菜单中选择New Project Wizard,弹出对话框 如下图所示
在这个窗口中第一行为工程保存路径,第二行为工程名,第三行为顶层文件实体名,和工程名一样。
2、新建设计文本文件,在file中选择new,出现如下对话框:
选择VHDL File 点击OK。
3、文本输入,在文本中输入如下程序代码: LIBRARY IEEE;
USE IEEE. STD_LOGIC_1164. ALL;
ENTITY fsm IS
port(clk,x:IN STD_LOGIC; z:OUT STD_LOGIC); END fsm;
ARCHITECTURE bhv OF fsm IS TYPE STATE IS(S0,S1,S2,S3); SIGNAL present_state:state; BEGIN
PROCESS(clk) BEGIN
IF(clk'EVENT AND clk='1')THEN CASE present_state IS WHEN S0=>
IF x='1'THEN
present_state<=S1; ELSE present_state<=S0; END IF;
WHEN S1=>
IF x='0'THEN present_state<=S2;
ELSE present_state<=S0; END IF;
WHEN S2=>
IF x='1'THEN present_state<=S3; ELSE present_state<=S0; END IF;
WHEN S3=>
IF x='1'THEN present_state<=S0; END IF; END CASE; END IF; END PROCESS;
z<='1'
WHEN present_state<=S3 ELSE '0'; END bhv;
然后保存到工程中,结果如下图所示:
4、编译,如果有多个文件要把这个文件设为当前顶层实体,这样软件编译时就只编译这个文件。点击 projet->Set as Top-level EntityCtrl+Shift+J
接下来进行编译,点击processing->Start Compilation ,见下图
5、选择菜单“Tools”→ “Netlist Viewers”→“RTL viewer”得到如下电路图:
6、选择菜单“Tools”→ “Netlist Viewers”→“State Machine Viewer”得到如下状态转移图