欢迎来到天天文库
浏览记录
ID:11177345
大小:84.50 KB
页数:8页
时间:2018-07-10
《vhdl语言中状态机的应用》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、[知识拓展]VHDL语言中的状态机应用在数字系统设计时,通常将一个较大较复杂的系统划分成数个相对独立的较小较简单模块实现,最简单最基本的模块设计可使用本书项目P1和P3中介绍的组合逻辑电路和时序逻辑电路的设计方法,但这种设计方法仅适用于非常简单的模块设计,当设计比较复杂时,这种设计方法就显得过于复杂而失去了实际功效。实际设计中,比较复杂的时序逻辑电路的设计可用有限状态机(finitedstatemachine)来实现。有限状态机没有固定的形式,实现的方式非常接近人们的逻辑思维,通常用于描述数字系统工作的一个完整过程,它具有以下特征:l状态变量定义有限个状态,这些状态概括了系统
2、的工作的完整过程;l具有时钟;l能够进行状态转移控制;在具有外部输入控制信号时,状态的转移由当前状态、时钟与外部输入控制信号共同控制,称为米勒(mealy)型状态机;在没有外部输入控制信号时,状态的转移只受当前状态和时钟的控制,称为摩尔型(moore)状态机;l在不同的状态下对输出信号进行不同的控制;l在系统复位时,指定系统的初始状态并指定在初始状态时系统的各个输出信号的值;在使用VHDL语言实现状态机时,通常先用枚举变量定义系统工作时可能出现的有限个状态,然后在1个或数个进程中用if语句和case语句实现状态的转移控制和输出信号的控制,下面以十字路口的交通灯控制为例,具体说
3、明有限状态机的使用。在某个十字路口,共有东、西、南、北4个方向的交通信号灯。其中东西向的信号灯动作完全一致、可由同一个控制器控制,南北向的信号灯动作完全一致,可由另一个控制器控制,即只要东西、南北2组控制信号即可;在每一个路口有左转、直行、右转三组信号灯,每组信号灯均由红、黄、绿3个灯组成,此外还有一个最大99秒的秒计时器。表4.11包含了交通灯系统所有的工作状态及各个状态下信号灯和秒计时器的状态。交通灯的工作状态共有10种,按照时间顺序分别为东西向直行(east_a)、东西向直行加右转(east_a_r)、东西向直行变信号(east_a_change)、东西向左转(east
4、_l)、东西向左转变信号(east_l_change)、南北向直行(south_a)、南北向直行加右转(south_a_r)、南北向直行变信号(south_a_change)、南北向左转(south_l)、南北向左转变信号(south_l_change),之后又进入东西向直行状态,在这10状态内反复循环。在东西向直行状态时,东西向(east_west)的左转灯(left)为红色(red)、直行灯(ahead)为绿色(green)、右转灯(right)为红色(red),定时器(timer)从40秒到26秒变化,每秒种减1;南北向(south_north)的左转灯(left)为红
5、色(red)、直行灯(ahead)为红色(red)、右转灯(right)为红色(red),定时器(timer)从69秒到55秒变化,每秒种减1;根据表4.11不难看出在其它工作状态时,各个方向灯与定时器的变化要求。在实际编写有限状态机的程序之前,列出类似的工作状态及输出状态的列表会有助于理清编程思路,写出合理简洁的程序。表4.11交通灯的工作状态及各工作状态下定时器与信号灯的输出状态stateeast_westsouth_northtimerleftaheadrighttimerleftaheadrighteast_a40-26redgreenred69-55redredre
6、deast_a_r25-0redgreengreen54-29redredgreeneast_a_change3-0redyellowyellow28-25redredgreeneast_l20-0greenredred24-4redredgreeneast_l_change3-0yellowredred3-0redredyellowsouth_a69-55redredred40-26redgreenredsouth_a_r54-29redredgreen25-0redgreengreensouth_a_change28-25redredgreen3-0redyellowye
7、llowsouth_l24-4redredgreen20-0greenredredsouth_l_change3-0redredyellow3-0yellowredred以下是用于实现表4.11要求的有限状态机的程序,在程序的端口定义中,rst是系统输入的复位信号;clk是系统输入的1秒时钟;east_ahead、east_left、east_right、south_ahead、south_left、south_right分别是东西向直行、东西向左转、东西向右转、南北向直行、南北向左转、南北向右转的信号
此文档下载收益归作者所有