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

基于VHDL有限状态机控制器的设计方法


控制系统
文章编号 :1008-0570(2010)05-1-0074-02

《微计算机信息》 (测控自动化 )2010 年第 26 卷第 5-1 期

基于 VHDL 有限状态机控制器的设计方法
A controller design method based on VHDL Finite state machine
(空军工程大学)

李 云 冯永浩 孟 涛

LI Yun FENG Yong-hao MENG Tao
摘要 : 有 限 状 态 机 作 为 形 式 化 描 述 方 法 具 有 独 特 优 点 , 在 利 用 VHDL 进 行 电 子 系 统 控 制 功 能 的 设 计 和 实 现 中 , 有 限 状 态 机 已 成 为 有 力 的 手 段 和 途 径 。 通 过 一 个 循 环 控 制 器 的 设 计 实 例,说 明 了 利 用 有 限 状 态 机 的 基 本 流 程 和 方 法,并 给 出 了 程 序 与 仿 真 结果。 关键词 : VHDL; 有限状态机 ; 循环控制器 中图分类号 : TP332 文献标识码 : A

技 术 创 新

Abstract: Finite state machine as a formal description method has unique advantages. In the use of VHDL for control of electronic systems and implementation, finite state machine has become a powerful tool and means. The basic processes and methods using finite state machine is illustrated through a examples of periodic controller design. The procedures and simulation results are given. Key words: VHDL; finite state machine; periodic controller

1 引言
有限状态机 FSM(finite state machine)是一种基本的、 简单 的、 重要的形式化技术,在软件设计中常常采用。FSM 就是描述 一个由有限个独立状态组成的过程,这些状态可以互相迁移,直 到最终离开这个过程。 采用有限状态机可以使设计过程直观简 单易于理解,大大加快设计流程。 随着硬件设计软件化趋势的加 剧,在运用 VHDL 硬件描述语言设计数字系统时,利用有限状态 机成为了可靠方便的途径, 有许多电路功能可以利用有限状态 机的设计方案来描述和实现。 控制器作为电子系统设计的核心 部分,在 EDA 软件平台上,借助有限状态机表示方法符合人的 思维逻辑的特性,将控制功能用有限状态机来建模实现,有许多 优越之处,已使 FSM 成为大型控制电路设计的有力工具。

照预先设定的状态进行顺序运行, 在运行和控制方式上类似于 控制灵活和方便的 CPU, 而在设计中能使用各种完整的容错技 术,使其在运行速度和工作可靠性方面又都优于 CPU。 ② 用 VHDL 设计有限状态机,设计方案相对固定,程序层 次分明, 结构清晰, 特别是可以定义符号化枚举类型的状态,使 VHDL 综合器对状态机具有强大的优化功能。 ③ 状态机容易构成性能良好的同步时序模块,为了消除电 路中的毛刺现象,在状态机设计中有多种设计方案可供选择,相 比其他硬件设计方法,电路的完善性更能得到保证。 因此,在控制灵活、 高速、 高可靠性要求的系统设计中应用 VHDL 设计有限状态机将是非常实用的好选择。

3 用 VHDL 设 计 有 限 状 态 机 的 方 法
3.1 设计流程 数字系统中状态机传统的设计方法十分复杂, 首先是绘制 出控制器的状态转移图,由此列出状态转移表,再合并状态转移 表中等价状态项, 然后根据状态转移表求出次态方程和输出方 程,画出设计电路图。而利用 VHDL 设计状态机,不必进行繁杂 的状态分配、 状态表绘制和化简,更不必画设计电路图和搭试硬 件电路测试逻辑功能,这些工作全可以由 EDA 工具完成。 用 VHDL 设计状态机,是通过简便地定义状态变量,将状态 描述成进程,每个状态均可表达为 CASE_WHEN 语句结构中的 一条 CASE 语句,状态的转移通过 IF_THEN_ELSE 语句实现,并 输出信号以控制其它进程,从而实现所需功能。

2 有限状态机的基本特性
有限状态机由有限的状态及其相互之间的转移构成, 在任 意时刻 t 机器只能处于有限状态中的一个。当在某一瞬时 t 机 器接收到一个输入事件时,状态机产生一个输出,同时也可能伴 随着状态的转移。 状态的转移和输出信号不仅与输入有关,而且 与机器在前一瞬间的状态有关。有限状态机 FSM 把复杂的控 制逻辑分解成有限稳定状态,在每个状态上判断事件,变连续处 理为离散数字处理,符合计算机的工作特点。同时,因为有限状 态机具有有限个状态,所以可以在实际的工程上实现。 但这并不 意味着其只能进行有限次的处理。相反, 有限状态机是闭环系 统,可以用有限的状态,处理无穷的事务。 在 VHDL 语言中用有限状态机来设计实用系统,可使程序 结构较简单。无论与 VHDL 的其它设计方案相比,还是与可完 成相同功能的 CPU 相比,状态机有其独特的难以超越的优越性, 主要表现在以下几个方面: ① 有限状态机由纯硬件构成,工作方式是根据控制信号按
李 云 : 副教授
- 74 - 360 元 / 年 邮局订阅号:82-946

图 1 VHDL 设计有限状态机的流程 《现场总线技术应用 200 例》

您的论文得到两院院士关注

控制系统
(3)彩灯控制器模块的程序设计及仿真 由图 2 的时序可以设计彩灯控制器模块的有限状态机,彩 灯控制器模块正常工作时共有三种状态, 其状态转移图如图 4 所示。 当复位信号 rst=1 有效时, 控制器模块 cai_deng 的状态由 s0→s1→s2 循环,当 rst=0 无效时,控制器模块的状态均回到 s0 状 态。用有限状态机编写的 VHDL 彩灯控制器模块的源程序如下: --用有限状态机编写的 VHDL 彩灯控制器模块的源程序: library ieee; use ieee.std_logic_1164.all; entity cai_deng is port(rst,clk:in std_logic; led_r,led_g,led_y: out std_logic); end; architecture one of cai_deng is type states is (s0,s1,s2); signal state:states; begin process(clk,rst) variable a:integer range 0 to 2; variable b:bit ; begin if rst ='0' then state <=s0;led_r <='0';led_g <='0'; led_y<='0'; elsif (clk'event and clk='1')then if b='0' then a:=0; else a:=a+1; end if; case state is when s0 => led_r<='1';led_g<='0';led_y<='0'; if a=1 then state<=s1;b:='0'; else state<=s0;b:='1'; end if; when s1 => led_r<='0';led_g<='1';led_y<='0'; if a=2 then state<=s2;b:='0'; else state<=s1;b:='1'; end if; when s2 => led_r <='0';led_g<='0';led_y<='1'; if a=0 then state<=s0;b:='0'; else state<=s2;b:='1'; end if; end case; end if; end process ; end; 将该彩灯控制器模块的程序在 EDA 工具软件 QuartusII 平 台上进行编译、 仿真,可得到如图 5 所示的仿真波形。由仿真波 形可以看出,仿真结果正确,实现了预期的控制功能。

有此外,与 VHDL 的其它描述方式相比,状态机的 VHDL 表 修改和 述丰富多样,程序层次分明,结构清晰,易读易懂,在排错、 模块移植方面也有其独到的特点。 VHDL 设计有限状态机的 用 设计流程如图 1 所示。 首先,根据系统整体功能要求确定状态数 量、 状态转移条件和各状态输出信号,画出状态转移图;其后,按 照状态转移图编写有限状态机的 VHDL 设计程序; 之后, 利用 EDA 工具对有限状态机功能进行仿真验证。 3.2 设计实例 下面以一个循环彩灯控制器电路为例来说明有限状态机 的设计。 (1)系统功能及分析 实现循环彩灯控制的方案很多,不同的控制方案,其设计方 法和思路也不一样。 本文介绍设计的循环彩灯控制器,采用两种 频率控制红、 黄三个发光管循环闪亮,要求红灯、 绿、 绿灯、 黄灯 先后点亮的时间长短比为红:绿:黄=2:3:1。 由以上系统功能可以看出, 本设计的关键是要产生如图 2 所示的时序关系。其中,led_r、 绿灯、 led_g、 led_y 分别表示红灯、 黄灯的控制信号。

图 2 循环彩灯控制器的时序图 (2)循环彩灯控制器整体设计 按照系统功能要求, 循环彩灯控制器的整体框图如图 3 所 频率选择控制模块和彩灯控制 示,它主要由 2 输出分频器模块、 器模块三部分组成。其中 2 输出分频器模块 fen_pin24 将输入 的时钟信号 clk 进行 2 分频、 分频得到 2 种频率信号 div2、 4 div4,同时还产生频率选择信号 div16,div16 应是 div4 的倍数,以 控制每种频率维持的时间长短。频率选择控制模块 xuan_ze 根 据地址选择端 s 将选择不同频率的时钟信号送给彩灯控制器 模块,实现彩灯闪烁的频率变化。 彩灯控制器模块 cai_deng 是整 个电路设计的核心,它负责整个设计的输出效果,即彩灯图案的 样式变化,rst 为复位信号,低电平有效。

技 术 创 新

图 3 彩灯控制器整体框图

图 5 彩灯控制器模块的仿真波形 图 4 彩灯控制模块的状态转移图 《P LC 技术应用 200 例》

(下转第 103 页)
邮局订阅号:82-946 360 元 / 年 - 75 -

您的论文得到两院院士关注

数采与监测
(上接第 75 页) 将 fen_pin24、 xuan_e 和 cai_deng 模块按照图 3 所示电路用 原理图输入进行连接构成循环彩灯控制器的顶层文件, 并在 QuartusII 平台上进行编译、仿真, 最终下载到可编程逻辑器件 EP1K30QC208-3 中,经过测试,循环彩灯控制器正常工作,完全 符合设计要求。

4 结束语
有限状态机及其设计技术是数字系统中实现高效率可靠 性逻辑控制的重要途径。 基于 VHDL 的数字系统电路设计实际 上是在 EDA 软件平台上,使硬件设计软件化,电路设计程序化, 从而提高了设计的灵活性和可靠性,降低了电路的设计成本,缩 短了设计周期。 以上有限状态机的设计方法具有通用性, 对于较为复杂的 图 5 软件系统架构 有限状态机可采用多个进程分别完成任意复杂组合逻辑和时 序逻辑,包括进程间状态值的传递以及状态转换值的输出。 本文创新点: 在用 VHDL 设计硬件数字系统电路时, 特别 是含有控制器的系统设计,运用有限状态机的方法,编程思路清 晰,程序易懂易读,简单明了,体现了现代数字系统的硬件设计软 件化,控制器电路设计程序化的新理念。 参考文献 [1]周飚,谢晓阳.有限状态机在 RTC 设计中的分析与应用[J].计算 机系统应用,2008,5:77-78。 [2]李云,侯传教,冯永浩.VHDL 电路设计实用教程[M] . 北京:机 械工业出版社,2009。 [3]井新宇.基于 VHDL 设计有限状态机 FSM 的方法[J].信息技术 与信息化,2004,4:29-31。 [4]赵明富.基于 CPLD 的彩灯控制器 [J].微计算机信息,2008,5-1: 53-54。 作者 简 介 :李云(1962-),女,汉族,江苏苏州人,空军工程大学副教 授,主要从事通信电子新技术方面研究。 Biography:LI Yun (1962 - ), Female, Han nationality, Jiangsu Province. Air Force Engineering University, Associate Professor. Main Field: New technologies of electronic communication (710077 陕西西安 空军工程大学电讯工程学院 ) 李 云 冯 永浩
孟 涛

5 结论
本文设计实现的并行实时采集系统,可以非常方便、 简易、 低成本的实现多达 64 路串行总线并行工作的数据实时采集、 监控。尤其是 FPGA 的模块化设计大大提升了系统的灵活度和 并行实时性。 同时软件接口设计上的创新,进一步提升了系统的 处理性能。 本文创新点:将各种串行总线控制器集成在 FPGA 中,方便 的实现了并行实时数据采集,同时模块化的设计可以无缝扩展。 参考文献 [1]The I2C-BUS specification Version 2.1, Philips Semiconductors, January 2000 [2]System Management Bus (SMBUS) Specification Version 2.0, SBS Implementers Forum, August 2000 [3]Designing with SMBus 2.0 Dale Stolizka Analog Devices, Inc. January 2001 [4]李家星.嵌入式系统和 FPGA 的总线控制器的设计实现.微计 算机信息[J].2007,1-2, 242-243 [5]Transmitting Data and Power over a One -Wire Bus, Dan Awtrey, Dallas Semiconductor, the Journal of Applied Sensing Technology, 1997 [6]Spartan-3E FPGA Family datasheet DS312 V3.8, Xilinx Corp. August 2009 [7]吴明晖.基于 ARM 的嵌入式系统开发与应用[M].北京:人民邮 电出版社,2004 [8]ATMEL. ARM920T-based Mierocontroller AT91RM9200 Guide [Z]. 2003. 8. 85-96. [9]AT91RM9200 User Manual [Z]. ATMEL, 2005. 作 者 简 介 :李家星,(1979—)女(汉),黑龙江人,天津科技大学海洋 学院讲师,硕士,主要研究方向有:信号处理,计算机应用。 Biography:LI Jia -xing, (1979 - ), female (Han), Heilongjiang Pronvince,Working University, University Of Science and Technology Of Tianjin,Major, signal processing, computer application. (300457 天津 天津科技大学 ) 李家星 (Tianjin University of Science and Technology,300457, China) LI Jia-xing 通讯地址 :(300457 天津 天津科技大学 ) 李家星
(收稿日期:2010.03.08)(修稿日期:2010.04.25)

技 术 创 新

(The Telecommunication Engineering Institute,Air Force Engineering University, Xi'an, Shaanxi 710077, China) LI Yun FENG Yong-hao MENG Tao 通 讯 地 址 :(710077 陕 西 省 西 安 市 丰 镐 路 1 号 空 军 工 程 大 学 电 讯工程学院六系电子线路室 ) 李 云
(收稿日期:2009.06.15)(修稿日期:2009.09.15)

微计算机信息杂志 旬刊 每册定价:10 元 一年订价:360 元
地址: 北京市海淀 区 中 关 村 南大 街 乙 12 号 天 作 1 号 楼 B 座 812 室 微计算机信息 邮编:100081 电话:010-62132436 010-82168297 (T/F )

欢迎订阅 欢迎刊登广告
邮局订阅号:82-946 360 元 / 年 - 103 -

《P LC 技术应用 200 例》


相关文章:
基于VHDL的四层电梯控制器
基于VHDL的四层电梯控制器 - 四层电梯控制器 实验目的: 1、掌握更复杂的 VHDL 设计。 2、掌握状态机设计方法。 实验环境: EP1C3 适配板、装有 Quartusii ...
基于VHDL的Mealy状态机设计
基于VHDL 的 Mealy 状态机设计 物理与电子信息科学系 姓名: 姓名:孙家芳 指导教师: 指导教师:胡湘娟 电子信息科学与技术专业 学号: 学号:05120126 摘要: 伴随着...
VHDL状态机的设计
VHDL状态机的设计 - 状态机电路设计 状态机(STATE MACHINE)可以说是一个广义时序电路,触发器, 计数器,移位寄存器都算是它的特殊功能的一种.在电子设计自动化 ...
状态机VHDL讲解
状态机VHDL讲解 - VHDL 的结构非常适合编写状态机, 而且编写方式不唯一, 电路的集成也会随着编写的方式 而改变。状态机的设计主要用到 case when 和 if else ...
自动售货机控制系统VHDL有限状态机实现
自动售货机控制系统VHDL有限状态机实现 - 自动售货机控制系统 VHDL 有限状态机实现 1 引言 有限状态机 FSM(Finite State Machine)及其设计技术是实用数字系统设计....
状态机及其VHDL设计
比较广泛的、以描述控制特性为主的建模方法,它可以应用于从系统分析到设计 的...本章主要介绍了基于 VHDL 的常见有限状态机的类型、结构、功能及表达方法, 重点...
VHDL设计 有限状态机设计
基于VHDL的有限状态机设计... 3页 1财富值喜欢此文档的还喜欢 有限状态机FSM...熟悉有限状态机设计 2) 熟悉利用有限状态机设计控制系统的方法 二、 实验内容 ...
基于VHDL语言状态机编写流水灯
基于VHDL语言状态机编写流水灯_电子/电路_工程科技_专业资料。基于VHDL语言利用状态机编写流水灯 程序采用元件例化方式编写基于VHDL 语言状态机编写流水灯采用元件例化...
实验六 循环彩灯控制器的设计
实验六 循环彩灯控制器的设计 - 1、学习用状态机设计特色电路; 2、牢固掌握用VHDL语言编写状态机程序的方法和技巧。
10进制加减计数器状态机的VHDL设计
10进制加减计数器状态机的VHDL设计 - 本次设计选用的功能状态为: A. 复位功能 B. 十进制加法计数 C. 十进制减法计数 D. 数码管闪动 E. 8个led灯闪动 F....
更多相关标签: