EDA实验报告四(状态机实现序列检测器的设计) 下载本文

内容发布更新时间 : 2024/5/18 8:48:50星期一 下面是文章的全部内容请认真阅读。

实验四:状态机实现序列检测器的设计

一、实验目的

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”得到如下状态转移图