状态机实验报告.doc
文本预览下载声明
状态机实验
一、实验目的与实验要求(可以有多个目标及要求,对应多个实验内容)
1、实验目的
本实验的目的是学习Moore型和Mealy型状态机的设计、状态机的编写以及在数字系统设计中的应用。
2、实验要求
在实验报告中提交状态图或者算法流程状态图,系统级模块图、设计代码、仿真程序、仿真结果截图、实测验证结果照片。
提交实验报告和每个实验的完整工程文件。
二、实验设备(环境)及要求
(1) Xilinx Ego1 实验平台。
(2) OS:Win7 64 位
(3) Software:Vivado15.4 开发工具
三、实验内容与步骤
1、实验1
(1)实验内容:
验证1101序列(Mealy):按照“5 实验步骤——验证1101序列(Mealy型)”完成状态机的设计与仿真验证;
状态机:
状态机由状态寄存器和组合逻辑电路构成,能够根据控制信号按照预先设定的状态进行状态转移,是协调相关信号动作、完成特定操作的控制中心。状态机简写为FSM(Finite State Machine),主要分为两大类:
第一类,若输出只和状态有关而与输入无关,则称为Moore状态机
第二类,输出不仅和状态有关而且和输入有关系,则称为Mealy状态机
状态图:
当需要定义一个状态机时,首先要绘制一张状态图。状态图可用来显示状态、状态间的转换和状态机的输出。图1显示了Moore状态机的状态图(左)和Mealy状态机的状态图(右)。
图1 用于开/关LED的Moore状态机(左)和Mealy状态机(右)的状态图。
如果您要在物理组件中实现这些状态图(工程师在FPGA问世之前就是这么做的),首先就得生成当前状态和后续状态表,然后生成实现状态机所需的逻辑。不过由于我们将使用FPGA来实现设计,因此我们可以直接从状态转换图开始工作。
算法状态图:
虽然有许多状态机是使用图1所示的状态图方法进行设计的,但另外还有一种描述状态机行为的方法,这就是算法状态图法。ASM图(图2)在外观上更加接近软件工程流程图。它由三个基本部分构成:
1. 状态框。它与状态名称有关,并包含Moore状态输出列表。
2. 决策框。如果检验某条件为真,则进行下一状态的判断。
3. 条件输出框。让状态机根据当前状态和输入描述Mealy输出。
图2 用于图1所示的状态机(Moore状态机(左),Mealy状态机(右))的算法状态图。
(2)实验步骤:
新建工程, fsm_mealy即为Mealy型状态机工程文件
Fsm_mealy状态机模块代码:
`timescale 1ns / 1psmodule fsm_mealy(
`timescale 1ns / 1ps
module fsm_mealy(
input wire clk,
input wire clr,
input wire din,
output reg dout
);
reg [1:0]present_state,next_state;
parameter S0=3b00,S1=3b01,S2=3b10,S3=3b11;
always @(posedge clk or posedge clr)
begin
if(clr)
present_state=S0;
else
present_state=next_state;
end
always @(*)
begin
case(present_state)
S0:if(din)
next_state=S1;
else
next_state=S0;
S1:if(din)
next_state=S2;
else
next_state=S0;
S2:if(din)
next_state=S2;
else
next_state=S3;
S3:if(din)
next_state=S1;
else
next_state=S0;
default: next_state=S0;
显示全部