状态机设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

集成电路实验

状态机设计实验报告

专业:电子信息工程

姓名:江燕婷

学号:2011301200025

状态机设计(实验五)实验报告

一.实验目的

1. 掌握状态机设计的基本方法

2.学习利用状态机的方法实现控制电路

二.实验原理

有限状态机(Finite State Machine FSM)是时序电路设计中经常采用的一种方式,尤其适合设计数字系统的控制模块,在一些需要控制高速器件的场合,用状态机进行设计是一种很好的解决问题的方案,具有速度快、结构简单、可靠性高等优点。有限状态机非常适合用FPGA器件实现,用Verilog HDL的case

语句能很好地描述基于状态机的设计,再通过EDA工具软件的综合,一般可以生成性能极优的状态机电路,从而使其在执行时间、运行速度和占用资源等方面优于用CPU实现的方案。

有限状态机一般包括组合逻辑和寄存器逻辑两部分,寄存器逻辑用于存储状态,组合逻辑用于状态译码和产生输出信号。根据输出信号产生方法的不同,状态机可分为两类:米里型(Mealy)和摩尔型(Moore)。摩尔型状态机的输出只是当前状态的函数,如图1-1所示;米里型状态机的输出则是当前状态和当前输入的函数,如图1-2所示。米里型状态机的输出是在输入变化后立即变化的,不依赖时钟信号的同步,摩尔型状态机的输入发生变化时还需要等待时钟的到来,必须在状态发生变化时才会导致输出的变化,因此比米里型状态机要多等待一个时钟周期。

图1-1 摩尔型状态机图1-2 米里型状态机

状态机在硬件描述语言实现上,可使用单过程、双过程或三过程等不同的结构实现。状态机的状态实现上,可采用符号编码或显式数字编码。编码方式有顺序编码(自然二进制编码),一位热码(one-hot encoding),格雷(gray code)码等。顺序编码,简单状态寄存器占用少;一位热码输出译码电路简单;在状态顺序变化时,格雷码每次只有一位变化,避免产生输出信号毛刺。

三. 实验设备与软件平台

微型计算机,GW48-CK,QuartusII v5.0。

四.实验内容

(一)练习一

采用状态机moore机,110 检测状态图如下:设s0 为初始状态,s1 为检测到一个‘1’的状态,s2 为检测到连续两个‘1’的状态,s3 为检测到连续的‘110’状态。

图1-3 110序列检测器的状态转换图

假设监测器的输入、输出信号规定如下:

输入信号:复位reset,时钟clk,被测序列in;

输出信号:指示信号flag,‘1’表示测到110 序列,‘0’表示测到非110 序列。当前状态state,‘00’、‘01’、‘10’、‘11’分别表示三种状态s0、s1、s2、s3。

用Verilog HDL实现的代码如图1-4所示。

图1-4 110序列检测器代码实现

该程序用两个always过程描述,一个过程用来描述现态和次态时序逻辑,另一个过程描述输出逻辑。将程序用综合器生成,可以直观地观察到生成的状态图和状态表。

图1-5 110序列检测器状态机视图

图1-6 110序列检测器状态表

下面设计测试模块。为了方便观察仿真结果,将当前状态satate设为输出信号,编写testbench代码如下,

图1-7 110序列检测器testbench代码

使用ModelSim软件得到仿真结果如图1-8所示,

图1-8 110序列仿真效果图

可以发现,ModelSim仿真结果与实验要求的状态转换情况相符,也与用Quartus II生成的State Machine Viewer状态相同。在每次时钟上升沿到来时连续输入110,将输出一个高电平。

(二)练习二

设计一台饮料自动售卖机,要求如下:

图1-9

所有饮料价格均为30美分,投币值大于30美分时可以找零,有5美分和10美分找零币值。设定售卖机的输入、输出信号规定如下:

输入信号:Q(投入25美分硬币)、D(投入10美分硬币)、N(投入5美分硬币);

输出信号:DC(分配一瓶饮料)、DD(找零10美分)、DN(找零5美分)。GOT_5c、GOT_10c、GOT_15c、GOT_20c、GOT_25c、GOT_30c、GOT_35c、GOT_40c、GOT_45c、RETURN_50c表示投入的各种可能币值,RETURN_20c、RETURN_15c、RETURN_10c、RETURN_5c表示可能需要找零的币值。因此该售卖机共有14个状态。用Verilog HDL实现的代码如下。

图1-10-1

图1-10-2 图1-10-3

在Quartus II生成的状态机视图和状态表分别如下图所示。

图1-11 售货机状态机视图

图1-12 售货机状态表

设计测试模块,为方便观察结果,将state改为输出信号,编写testbench 代码如下。

图1-13 售卖机testbench代码

使用ModelSim软件得到仿真结果如图1-14所示,与实验要求的状态转换次序一致。

图1-14 售卖机仿真效果图

五.实验结果

实验验证结果与预期设想一致,具体如以上实验内容所示。

六.实验的收获与问题分析

1.在集成电路实验课中学会了使用Quartus II软件,学会了Verilog HDL 硬件语言的基本知识,了解了更多的关于EDA技术、FPGA器件和Verilog HDL 硬件描述语言的知识。

2.由于实验课每周只有一次,每次仅下午3个小时,在实验课上不能完成所有验证与设计实验,因此自己下载安装了Quartus II和ModelSim软件,借来了芯片型号为EP4CE6F17C8的FPGA板子,完成了剩余的硬件电路测试实验。

3.实验中还发现并解决了一些问题。

相关文档
最新文档