状态机设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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.实验中还发现并解决了一些问题。