当前位置:首页 >> 工学 >>

基于VHDL的有限状态机设计方法与实现


第 25 卷第 1 期 2006 年 3 月

武 汉 工 业 学 院 学 报 Journal of W uhan Polytechnic University

Vol 25No. 1 . M ar 2006 .

文章编号 : 1009 - 4881 ( 2006 ) 01 - 0012 - 03

基于 VHDL 的有限状态机设计方法与实现
吴佳凤 , 肖 , 聂 安 兵
(武汉工业学院 电气信息工程系 ,湖北 武汉 430023 )

摘 : 介绍了有限状态机的设计步骤 ,给出了有限状态机的 VHDL 设计方法与实现手段 ,然 要 后完成了利用 VHDL 实现有限状态机的一个电梯控制器实例 ,并给出了仿真结果 . 关键词 : 状态机 ; VHDL; 电梯控制 中图分类号 : TP 391 文献标识码 : A

0 引言
自 IEEE 公布 VHDL (Very2 igh 2Speed Integrated H C ircuit Hardware Descrip tion Language ) 的标准版本 , VHDL 在电子 设计 领 域 被 广 泛 接 受 , 并 得 到 众 多 EDA 公司的支持 , 在电子工程领域 , 已成为事实上 的通用硬件描述语言 .VHDL 主要用于描述数字系 统的结构 , 行为 , 功能和接口 .其程序结构特点是 , 将一项工程设计实体 (可以是一个元件 , 一个电路 模块或一个系统 )分成外部 (即端口 ) 或内部 .在对 一个设计实体定义了外部界面后 , 一旦其内部开发 完成 ,其它设计就可以直接调用这个实体 .这种设 计实体分成内外部分的概念就是 VHDL 系统设计 [1] 的基本点 .设计实体可用传统有限状态机 ( Finite State M achine, FS )模型来描述 ,每一个控制步或进 M 程代表一种状态 ,与每一控制步相关的转移条件决 定次态的状态和输出 .有限状态机设计因其程序结 构较简单 , 是 VHDL 语言中一种较常用的描述方 法 .无论与基于 VHDL 的其他设计方案相比 , 还是 与可完成相同功能的 CPU 相比 ,状态机都有难以超 [2] 越的优越性 , 主要表现在以下几个方面 : ①控制
收稿日期 : 2005 - 06 - 06 作者简介 : 吴佳凤 ( 1980 - ) ,女 ,山东省新泰市人 ,学士 .

控制方面 ,状态机具有巨大的优势 ; ⑤ 状态机系统由 纯硬件电路构成 ,它的运行不依赖软件指令的逐条 执行 ,而且在它的设计中可使用完整的容错技术 ,所 以状态机具有极高的可靠性 .

1 设计方法
所谓状态机就是事物存在状态的一种综合描 述 ,说明任意两个状态之间的转变条件 .有限状态 机传统设计步骤是 : ① 绘制控制器的状态图 ; ② 列 出状态表 ,合并消除状态表中的等价状态 ; ③ 分配状 态寄存器 ; ④ 根据状态表拟定状态方程和输出方程 ; ⑤ 编写有限状态机设计程序 . 在 VHDL 设计中 ,可以不需要进行繁琐的状态 分配 , 化简状态方程等步骤 ,可以简便地定义状态变 量 ,将状态描述成进程 ,这个进程可以传出信号来控 制其他进程 ,从而实现各种功能 . 在 VHDL 语言中 ,状态机的状态通常用枚举型 [4] 数据 进 行 定 义 , 每 个 状 态 均 可 表 达 为 CASE _
WHEN 语句结构中的一条 CASE 语句 ; 状态机的转

灵活方便 ; ②结构模式相对简单 , 设计方案相对固 定 ,以 及 可 定 义 符 号 化 枚 举 类 型 的 状 态 , 对 发 挥 VHDL 综合器强大的优化功能提供了有利条件 ; ③ 状态机容易构成性能良好的同步时序模块 , 有利于 消除电路中的毛刺现象 ; ④ 由于状态机可以由多个 进程构成 ,而进程是并行执行的 ,所以在高速运算和

移条件则用 IF 语句描述 ,其输出组合逻辑可以用并 行信号赋值语句或独立的进程描述 , 生成的硬件电 路较简单 ,也就是节省硬件资源 .

2 一个设计实例
下面以三层电梯模型的电梯控制器为对象 , 完 成一个状态机的实现 . 三层电梯模型控制器的要求如下 : 每层电梯入

1994-2010 China Academic Journal Electronic Publishing House. All rights reserved.

http://www.cnki.net

1期

吴佳凤 ,肖安 ,聂兵 : 基于 VHDL 的有限状态机设计方法与实现

13

口处设有上下请求开关 , 电梯内设有顾客到达层次 的停站请求开关 ; 电梯内部设有所处位置指示装置 及电梯运行模式 (上升或下降 ) 指示装置 ; 电梯到达 有停站请求的楼层 ,经过 1 秒电梯门打开 ,开门 4 秒 后 ,电梯门关闭 (开门指示灯灭 ) , 电梯继续运行 , 直 至执行完最后一个请求信号后停留在当前层 ; 能记 忆电梯内外所有请求信号 , 并按照电梯运行规则按 顺序响应 ,每个请求信号保留至执行后消除 . 由此 ,设定电梯运行规则 : 当电梯处于上升模式 时 ,只响应比电梯所在位置高的上楼请求信号 ,由下 而上逐个执行 ,直到最后一个上楼请求执行完毕 ; 如 果高层有下楼请求 , 则直接升到有下楼请求的最高 层 ,然后进入下降模式 .当电梯处于下降模式时则 与上升模式相反 .电梯初始状态为一层开门 . 根据以上控制模型要求 , 可以描述为有限状态 机 形 式 , 可 以 划 分 为 doorwait, doorclose, stop ( dooropen ) , up , down 等主要状态 , 图 1 是简化了的 状态图 .

fdnlight: buffer std _ logic _ vector ( 3 downto 1 ) ; - - 电梯外部下降请求指示灯 stop1button, stop2button, stop3button: in std_logic; - - 电梯内部各层请求按键 stop light: buffer std _ logic _ vector ( 3 downto 1 ) ; - - 电梯内部各层请求指示灯 position: buffer integer range 1 to 3; - - 电梯位

图 1 简化的状态图 图中转换条件为 : ① 没有任何请求 ; ②内部有 下降请求或在较低层有下降或上升请求 ; ③ 内部有 上升请求或在较高层有上升或下降请求 ; ④ 电梯在 下降模式时 ,等待请求 ; ⑤ 电梯处于上升模式时 , 等 待请求 ; ⑥ 电梯所到楼层的下一层有停站请求或外 部有下降请求或底层有上升请求 ; ⑦ 电梯所到楼层 的上一层有停站请求或外部有上升请求或顶层有下 降请求 . 由图 1 的状态转换图便可对电梯控制器状态机 进行描述 .各状态定义为枚举变量 , 其实体定义 如下 : en tity threeflift is port ( buttonclk: in std_logic; - - 按键时钟 liftclk: in std_logic; - - 电梯时钟 reset: in std_logic; - - 异步置位按键 f1upbutton: in std_logic; - - 1 层上升请求 f2upbutton: in std_logic; - - 2 层上升请求 f2dnbutton: in std_logic; - - 2 层下降请求 f3dnbutton: in std_logic; - - 3 层下降请求 fup light: buffer std _ logic _ vector ( 3 downto 1 ) ; - - 电梯外部上升请求指示灯

置指示 doorlight: out std_logic; - - 电梯门开关指示灯 udsig: buffer std _ logic ) ; - - 电 梯 升 降 指 示 end threeflift; 在 entity 实 体 说 明 定 义 完 端 口 之 后 , 需 要 在 architecture 和 begin 之间 用如 下的 语句 来 定 义 状 态机 . - - 电梯状态总共有 10 个 type lift_state is ( stopon1, dooropen, doorclose, doorwait1, doorwait2, doorwait3, door wait4, up , down, stop ) ; - - 定义为 lift类型的信号 m ylift: 表示状态的转 换 signal m ylift: lift_state; 主控进 程 中 一 个 典 型 的 状 态 转 换 环 节 如 下 所示 : ctrlift: p rocess ( reset, liftclk ) begin …… case mylift is - - 处于上升模式 when up => position < = position + 1; - - 上升一层 pos: = pos + 1; - - 变量 pos + 1 表示上升一层 - - 若即将到达的不是最高层且该层内部有停 站请求或外部有上升请求 if pos < 3 and ( stop light ( pos) = ' 'or fup light 1 ( pos) = ' ' then ) 1 m ylift < = stop; - - 转移为停止状态 - - 若即将到达的是最高层且该层内部有停站 请求或外部有下降请求 elsif pos = 3 and ( stop light ( pos ) = ' ' or 1 fdnlight ( pos) = ' ' then 1 ) mylift < = stop; else mylift < = doorclose; - - 转移到关门状态 end if; …… end case;
http://www.cnki.net

1994-2010 China Academic Journal Electronic Publishing House. All rights reserved.

14

武 汉 工 业 学 院 学 报

2006 年

…… end p rocess ctrlift; 当设置如图 2 中所示的输入 (按钮波形 ) 时 , 通 过 M axPlusII软件仿真得到输出 (位置和运行显示 ) 的仿真结果如图 2 所示 (设定时钟周期为 0. 2 s) . 当 2 楼有上升请求时 fup light 的值由 0 变为 2 (注 意 , fup light和 fdnlight是 3 位的二进制向量 ,这里的 2 代表"010 "表示二楼有请求 ) position 值的由 1 变 , 为 2,电梯开门 , 表明上升请求被响应 , fup light的值 又变为 0,之后有 3 楼停止请求 , position值的由 2 变 为 3,电梯开门后又收到 2 楼下降请求 , fdnlight的值 由 0 变为 2, position 值的由 3 变为 2 后下降请求被 响应 fdnlight的值又变为 0.通过分析仿真结果可 以看出结果达到设计要求 .

3 结束语
通过应用状态机转换原理 , 并采用 VHDL 语言 完成一个电梯控制器实例的设计 , 这个设计预留了 扩展空间 ,同时还可以以模块的形式加入显示部分 . 以状态机来实现控制可以使程序结构较简单 , 设计 方法也较为固定 ,在高速运算和控制方面优势明显 . 参考文献 :
[1] 张亦华 ,延明 , 肖冰 . 数字逻辑器设计实践技

术与 EDA 工具 [M ]. 北京 : 北京邮电大学出 版社 , 2003. [2] 潘松 , 黄继业 . EDA 技术实用教程 [M ]. 北 京 : 科学出版社 , 2002.
[ 3 ] 王振红 . VHDL 数字设计与应用实践教 程 [M ]. 北京 : 机械工业出版社 , 2003. [4] 孔健 ,杨洪斌 ,吴悦 ,等 . 基于 VHDL 的有限状

态机描述及综合 [ J ]. 计算机工程 , 2003, 29 ( 15 ) : 82 - 83.

图 2 仿真结果

D ES IGN M ETHOD AND M PLEM EN TAT I N O F FSM I O BASED ON VHDL
(Depart ent of Electrical and Information Engineering, W uhan Polytechnic University, W uhan 430023, China ) m Ab s tra c t: This paper describes the design method of Finite State M achine ( FS ) . The i p lem entation of FS M m M based on VHDL is p roposed and the sim ulation results are given. Ke y wo rd s: FS VHDL; elevator control M;
WU J ia 2feng, X IAO A n, N IE B ing

1994-2010 China Academic Journal Electronic Publishing House. All rights reserved.

http://www.cnki.net


相关文章:
基于VHDL的有限状态机设计_图文.pdf
基于VHDL的有限状态机设计 - 第 卷第 期 !?# 北 京 工 业 大 学
状态机及其VHDL设计.doc
状态机及其VHDL设计 - 同步状态机的原理、结构和设计同步状态机的原理、结构和设计... 本章主要介绍了基于 VHDL 的常见有限状态机的类型、结构、功能及表达方法, 重...
第10章 VHDL有限状态机设计.ppt
状态机的一般结构 10.1 VHDL状态机的一般形式 10.1.2 状态机的一般结构 10.1 VHDL状态机的一般形式 10.1.3 状态机设计初始约束与表述 (1)打开“状态机...
第7章 VHDL有限状态机设计_图文.ppt
第7章 VHDL有限状态机设计_工学_高等教育_教育专区。EDA技术实用教程 第7章 VHDL有限状态机设计 7.1 VHDL状态机的一般形式 7.1.1 为什么要使用状态机(1)...
基于VHDL的Mealy状态机设计.doc
基于VHDL的Mealy状态机设计 - 基于 VHDL 的 Mealy 状态机设计 物理与电子信息科学系 姓名: 姓名:孙家芳 指导教师: 指导教师:胡湘娟 电子信息科学与技术专业 学号...
基于VHDL的有限状态机设计_图文.pdf
基于VHDL的有限状态机设计 - 维普资讯 http://www.cqvip.c
第10章 VHDL有限状态机设计_图文.ppt
第10章 VHDL有限状态机设计 - 《EDA技术实用教程VHDL潘松(第五版)》课件(共14章)... 第10章 VHDL有限状态机设计 10.1 VHDL状态机的一般形式 10.1.1 状态机...
第十章 VHDL有限状态机设计_图文.ppt
第十章 VHDL有限状态机设计 - 第十章 VHDL有限状态机设计 10.1 VHDL状态机的一般形式 10.1.1 状态机的特点与优势 1.状态机克服了纯硬件数字系统顺序方式控制...
第7章 VHDL有限状态机设计N_图文.ppt
第7章 VHDL有限状态机设计N - EDA技术实用教程 第7章 VHDL有限状态机设计 内容提要 ?有限状态机及其设计技术,时使用数字系统设计中的重要 组成部分,是实现高效、...
有限状态机的VHDL设计方法研究_论文.pdf
有限状态机VHDL设计方法研究 - 有限状态机及其设计技术是实用数字系统设计中的重要组成部分,是实现高效率、高可靠性逻辑控制的重要途径。VHDL是一种面向设计、多...
有限状态机的VHDL设计.pdf
实现基于 VHDL 的有限状态机现代数字系统设计 Moore 状态机 VHDL 设计 现代数...设计方法 状态机的传统设计方法十分繁杂 而利用 VHDL 语言设计状态机 不需要进行...
有限状态机的VHDL设计.pdf
完成所有的工作,同时以一个波形发生器的实例设计, 说明了设计的特点和优越性, 通过仿真 波形验证了设计的正确性,实现基于 VHDL 的有限状态机现代数字系统设计。...
论文-用VHDL设计有限状态机的方法.pdf
论文-用VHDL设计有限状态机的方法 - 计算机应用 用 #$%& 设计有限状态机的方法 湖南衡阳南华大学电气工程学院 ! )&%##% 单长虹摘要 ! 以...
有限状态机的VHDL设计及优化.pdf
有限状态机VHDL设计及优化_材料科学_工程科技_专业...的编 码风格是用 CASE 语句或其他等价方法来描述。...一种基于 ASP 技术的 Web MIS 安全系统 ) 78 )...
第7章 VHDL有限状态机设计_图文.ppt
第7章 VHDL有限状态机设计 - EDA技术实用教程 第7章 VHDL有限状态机设计 内容提要 ?有限状态机及其设计技术,时使用数字系统设计中的重要 组成部分,是实现高效、...
状态机及其VHDL设计.doc
标准状态机通常可分为 Moore 和 Mealy 两种类型。本章主要介绍了基于 VHDL 的常见有限状态机的类型、结构、功能及表达方法, 重点是如何有效地设计与实现。 学习...
基于Verilog 的有限状态机设计.doc
基于Verilog 的有限状态机设计 - 基于 Verilog 的有限状态机设计与优化 1 引言 在集成电路的设计过程中 , 不论是使用 FPGA 还是 ASIC 来实现, 有限状态机经常...
第7章 VHDL有限状态机设计_图文.ppt
第7章 VHDL有限状态机设计_工学_高等教育_教育专区...状态机图形编辑设计方法 7.4 状态机图形编辑设计...(4)实验报告: )实验报告: 基于5E+系统的演示示例...
第7章 VHDL有限状态机设计_图文.ppt
设计 Mealy型有限状态机的设计 状态机图形编辑设计方法 状态编码 安全状态机设计 硬件数字技术排除毛刺 教学要求:学习和掌握用VHDL设计不同类型的有限状 态机的方法...
第7章 VHDL有限状态机设计_图文.ppt
第7章 VHDL有限状态机设计 - EDA技术实用教程 第7章 VHDL有限状态机设计 有限状态机及其设计技术是实用数字系统设计中的重 要组成部分,是实现高效率高可靠性逻辑...
更多相关标签: