状态机设计方法
- 格式:docx
- 大小:64.63 KB
- 文档页数:1


龙源期刊网
基于VerilogHDL的状态机设计探讨
作者:黄金凤 张红
来源:《电脑知识与技术》2016年第23期
摘要:在日常生活中,我们经常看到很多循环控制产品,如十字路口的交通灯、自动饮料收货机、电梯运行、微波炉、电饭锅等,它们的控制系统其实都可以用Verilog HDL的状态机设计方法来完成。该论文首先讲述了状态机设计方法,然后讲述了如何有效的运用3种过程描述来设计状态机。
关键词:Verilog HDL;状态机;过程描述
中图分类号:TP18 文献标识码:A 文章编号:1009-3044(2016)23-0204-02
1 概述
有限状态机(Finite State Machine,FSM)是时序电路设计中经常采用的一种方式,尤其适合设计数字系统的控制模块,在一些需要控制高速器件的场合,用状态机进行设计是一种很好的解决问题的方案,具有速度快、结构简单、可靠性高等优点。
有限状态机非常适合用FPGA器件实现,用Verilog HDL的case语句能很好地描述基于状态机的设计,再通过EDA工具软件的综合,一般可以生成性能极优的状态机电路,从而使其在执行时间、运行速度和占用资源等方面优于用CPU实现的方案。
2 状态机设计
有限状态机可以认为是组合逻辑和寄存器逻辑的特殊组合,它一般包括组合逻辑和寄存器逻辑两部分,寄存器逻辑用于存储状态,组合逻辑用于状态译码和产生输出信号。根据输出信号产生方法的不同,状态机可分为两类:摩尔型(Moore)和米里型(Mealy)。Moore型状态机的输出只和当前状态有关,和输入无关。 Mealy型状态机的输入是由当前状态和输入共同决定。如图1和图2所示。
使用Verilog HDL语言设计状态机的步骤:
1)将实际问题抽象成状态图
1 状态机的设计与实现
作者:zhsj 日期:2015-7-29
在数字逻辑电路中,状态机是一个非常重要的概念,也是常用的一种结构,状态机常常用于
序列检测、序列信号的产生以及时序产生等方面。利用Verilog语言也可以编写出可综合的状态
机,并有多种编写格式和编写原则,本文主要整理的是状态机的一般编写方法和形式,以及可
综合的状态机的一些设计原则。
一、状态机的结构
1.1 状态机的组成
状态机是组合逻辑和寄存器逻辑的特殊组合,一般包括两个部分:组合逻辑部分和寄存器逻
辑部分。寄存器用于存储状态,组合电路用于状态译码和产生输出信号。状态机的下一个状态
及输出不仅与输入信号有关,还与寄存器当前状态有关,其基本要素有三个,即状态、输入和
输出。
状态也叫做状态变量。在逻辑设计中,使用状态划分逻辑顺序和时序规律。例如,要设计一
个交通灯控制器可以用允许通行、慢行和禁止通行作为状态;设计一个电梯控制器,每层就是
一个状态等。
输入是指状态机中进入每个状态的条件。有的状态机没有输入条件,其中的状态转移比较简
单;有的状态机有输入条件,当某个输入条件存在时,才能转移到相应的状态。例如,交通灯
控制器就没有输入条件,状态随着时间的改变而自动跳转;电梯控制器是存在输入的,每层的
上下按键,以及电梯内的层数选择按键都是输入,会对电梯的下一个状态产生影响。
输出是指在某一状态时特定发生的事件。例如,交通灯控制器在允许通行状态输出绿色,缓
行状态输出黄色,禁止通行状态输出红色;电梯控制器在运行时一直会输出当前所在的层数及
当前运行的方向(上升或下降)。
1.2 状态机的分类
根据输出是否与输入信号有关,状态机可以划分为Mealy型状态机和Moore型状态机两种;
根据输出是否与输入信号同步,状态机可以划分为异步状态机和同步状态机两种。由于目前的
电路设计中以同步设计为主,所以本文只介绍同步状态机。
1.2.1 Mealy型状态机
Mealy型状态机的输出同时依赖于当前的状态和输入信号,其结构如图1.1所示。输出可以
实验四 状态机设计
实验目的
1.进一步熟悉QuartusII 软件使用流程。
2.理解和掌握状态机的概念。
3.学习和掌握用状态机设计电路的方法。
实验内容
在QuartusII 软件中使用状态机的方法设计并实现一个10进制计数器,要求使用一位数码管显示0~9的循环计数过程。脉冲使用1Hz信号源。要求计数器具备一个清零端,“0”时清零;“1”时正常计数。
实验仪器
PC机、R&C型EDA实验箱
实验原理
(1)状态机分为moore和mealy两种,区别在于输出是否只和当前状态有关。
(2)状态机的两种基本操作:一是状态机内部状态的转换,另一是产生输出信号序列。
(3)状态机的分析可以从状态图入手,同样,状态机的设计也可以从状态图入手。
设计状态机时一般先构造出状态图。构造状态图的一般方法是从一个比较容易描述的状态开始,通常初始态是一个很好开始的状态,也就是状态机复位以后开始的状态。在建立每个状态时最好都清楚的写出关于这个状态的文字描述,为硬件设计过程提供清晰的参考资料,也为最后完成的设计提供完整的设计文档。
R&C型EDA实验箱中,8位数码管的连接方式如图所示,数据端为数码管的7个段和小数点段;位选端为SEL0、SEL1、SEL2三个段,接3-8译码器。
数码管为共阴极数码管。实验中只需给位选端赋一个固定的值,确定某一位数码管做计数显示。
实验步骤
1.在QuartusII软件中新建工程,新建VHDL文件,输入代码,进行编译,仿真。
2.指定目标器件,并对编译通过的IO分配管脚(可参考开发板硬件电路图),分配完后再编译一次。
3.将USB连接计算机机箱进行下载。
4.在开发板中验证设计结果。
注意,本次实验使用了Cylone EP1C6Q240C8的24和37引脚,而这两个引脚为复用引脚,因此需要按附录所示方法进行设置。
程序清单:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
《EDA》
设计报告
题 目:状态机控制的流水灯设计
学 院: 电子信息与电气工程学院
专 业: 电子信息工程
班 级:
姓 名:
1课题简介
在计算机技术的推动下,电子技术获得了飞速的发展,现代电子产品几乎渗透于社会的各个领域,有力的推动社会生产力的发展和社会信息程度化的提高,同时又促使现代电子产品性能的进一步提高,产品更新换代的节奏也越来越快。
EDA技术作为现在电子设计技术的核心,它依赖功能强大的计算机,在EDA工具软件平台上,对硬件描述语言Verilog语言为系统描述手段完成的设计文件,自动的完成逻辑化简,逻辑分割,逻辑综合,结构综合,以及逻辑优化和仿真测试等功能。
Verilog语言在这个信息飞速发展的时代已经显得尤为重要。
2 设计目的
1.通过本次课程设计掌握QuartusⅡ环境下的基本电路设计方法。
2.掌握状态机的Verilog设计方法
3.学习仿真工具的使用方法
4.熟悉Verilog语言编程
3设计任务
1.设计一个状态机控制8个LED灯进行花样显示
2.花样不少于6种
3.同时用数码管显示
4.使蜂鸣器报警 4 设计方法
通过锁相环进行分频,进行时钟控制。流水灯的每一种花形与状态机联系起来进行控制。花形的顺序显示由三个按键控制。
5 设计步骤
a.8个流水灯的 6种显示花样模块的建立
图1 点亮后从右向左依次熄灭
图2点亮后从左向右依次熄灭
图3从右向左依次点亮
图4从左向右依次点亮
图5两个灯依次从左向右一次点亮
图6两个灯从右向左一次点亮
b.生成的流水灯模块如图7所示
图7
c.六路选择器模块的建立如图8所示 六路选择器的底层模块如下
图8
由图8编译成功后生成如模块
图9
d.状态机控制模块的建立 图10
生成的宏模块如下
图11
e.分频模块的建立如下
图12
生成如下模块
图13