状态机及其VHDL设计

上传人:枫** 文档编号:564438235 上传时间:2023-01-12 格式:DOC 页数:8 大小:76KB
返回 下载 相关 举报
状态机及其VHDL设计_第1页
第1页 / 共8页
状态机及其VHDL设计_第2页
第2页 / 共8页
状态机及其VHDL设计_第3页
第3页 / 共8页
状态机及其VHDL设计_第4页
第4页 / 共8页
状态机及其VHDL设计_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《状态机及其VHDL设计》由会员分享,可在线阅读,更多相关《状态机及其VHDL设计(8页珍藏版)》请在金锄头文库上搜索。

1、.第7章状态机及其VHDL设计容提要:有限状态机Finite State Machine,简称FSM是一类很重要的时序电路,是许多数字系统的核心部件,也是实时系统设计中的一种数学模型,是一种重要的、易于建立的、应用比拟广泛的、以描述控制特性为主的建模方法,它可以应用于从系统分析到设计的所有阶段。有限状态机的优点在于简单易用,状态间的关系清晰直观。建立有限状态机主要有两种方法:状态转移图和状态转移表。标准状态机通常可分为Moore和Mealy两种类型。本章主要介绍了基于VHDL的常见有限状态机的类型、构造、功能及表达方法,重点是如何有效地设计与实现。学习要求:了解状态机的根本构造、功能和分类,掌

2、握有限状态机的一般设计思路与方法、状态机编码方案的恰中选取、Moore和Mealy状态机的本质区别及设计实现。关 键 词:状态机(State Machine),Moore,Mealy,VHDL设计(VHDL Design)7.1 状态机的根本构造和功能7.2一般状态机的VHDL设计7.2.1 状态机的一般组成7.2.2 状态机的编码方案7.3摩尔状态机的VHDL设计7.4米立状态机的VHDL设计7.1 状态机的根本构造和功能状态机的根本构造如图7.1所示。除了输人信号、输出信号外,状态机还包含一组存放器记忆状态机的部状态。状态机存放器的下一个状态及输出,不仅同输入信号有关,而且还与存放器的当前

3、状态有关,状态机可以认为是组合逻辑和存放器逻辑的特殊组合。它包括两个主要局部:即组合逻辑局部和存放器。组合逻辑局部又可分为状态译码器和输出译码器,状态译码器确定状态机的下一个状态,即确定状态机的鼓励方程,输出译码器确定状态机的输出,即确定状态机的输出方程。存放器用于存储状态机的部状态。输出输入状态译码器状态存放器状态图7.1状态机的根本构造状态机的根本操作有两种:1状态机的部状态转换。状态机经历一系列状态,下一状态由状态译码器根据当前状态和输入条件决定。2产生输出信号序列。输出信号由输出译码器根据当前状态和输入条件确定。用输入信号决定下一状态也称为转移。除了转移之外,复杂的状态机还具有重复和历

4、程功能。从一个状态转移到另一状态称为控制定序,而决定下一状态所需的逻辑称为转移函数。在产生输出的过程中,根据是否使用输入信号可以确定状态机的类型。两种典型的状态机是米立Mealy状态机和摩尔Moore状态机。摩尔状态机的输出只是当前状态的函数,而米立状态机的输出一般是当前状态和输入信号的函数。对于这两类状态机,控制定序都取决于当前状态和输入信号。大多数实用的状态机都是同步的时序电路,由时钟信号触发进展状态的转换。时钟信号同所有的边沿触发的状态存放器和输出存放器相连,使状态的改变发生在时钟的上升或下降沿。在数字系统中那些输出取决于过去的输入和当前的输入的局部都可以作为有限状态机。有限状态机的全部

5、历史都反映在当前状态上。当给FSM一个新的输入时,它就会产生一个输出。输出由当前状态和输入共同决定,同时FSM也会转移到下一个新状态,也是随着FSM的当前状态和输入而定。FSM中,其部状态存放在存放器中,下一状态的值由状态译码器中的一个组合逻辑转移函数产生,状态机的输出由另一个组合逻辑输出函数产生。建立有限状态机主要有两种方法:状态转移图状态图和状态转移表状态表。它们是等价的,相互之间可以转换。状态转移图如图7.2所示,图中每个椭圆表示状态机的一个状态,而箭头表示状态之间的一个转换,引起转换的输入信号及当前输出表示在转换箭头上。摩尔状态机和米立状态机的表示方法不同,摩尔状态机的状态译码输出写在

6、状态圈,米立状态机的状态译码输出写在箭头旁,如图7.3所示。输入/出输入/出输入/出输入/出输入/出输入/出状态A状态B状态C状态D状态E状态B01状态A00I/01状态A状态B图7.2 状态转移图图7.3摩尔和米立状态机如果能够写出FSM的状态转移图,就可以使用VHDL的状态机语句对它进展描述。状态转移表形式如表7.1所示。表中的行列出了全部可能的输入信号组合和部状态以及相应的次状态和输出,因此状态表规定了状态机的转换函数和输出函数。然而,状态表不适合具有大量输入的系统,因为随着输入的增加其状态数和系统的复杂性会显著增加。表7.1 状态转移表现态输入次态输出S0-SnI0-ImS0-SnQ0

7、-QP状态转移图、状态转移表这两种有限状态机的建立方法是等价的,都描述了同一硬件构造,它们可以相互转换,但各有优缺点,分别适合于不同场合。7.2一般状态机的VHDL设计7.2.1 状态机的一般组成用VHDL设计有限状态机方法有多种,但最一般和最常用的状态机设计通常包括说明局部,主控时序局部,主控组合局部和辅助进程局部。1) 说明局部说明局部中使用TYPE语句定义新的数据类型,此数据类型为枚举型,其元素通常都用状态机的状态名来定义。状态变量定义为信号,便于信息传递,并将状态变量的数据类型定义为含有既定状态元素的新定义的数据类型。说明局部一般放在构造体的ARCHITECTURE和BEGIN之间。2

8、) 主控时序进程是指负责状态机运转和在时钟驱动正负现状态机转换的进程。状态机随外部时钟信号以同步方式工作,当时钟的有效跳变到来时,时序进程将代表次态的信号ne*t_state中的容送入现态信号current_state中,而ne*t_state中的容完全由其他进程根据实际情况而定,此进程中往往也包括一些清零或置位的控制信号。3) 主控组合进程根据外部输入的控制信号包括来自外部的和状态机容的非主控进程的信号或和当前状态值确定下一状态ne*t_state的取值容,以及对外或对部其他进程输出控制信号的容。4) 辅助进程用于配合状态机工作的组合、时序进程或配合状态机工作的其他时序进程。在一般状态机的设

9、计过程中,为了能获得可综合的,高效的VHDL状态机描述,建议使用枚举类数据类型来定义状态机的状态,并使用多进程方式来描述状态机的部逻辑。例如可使用两个进程来描述,个进程描述时序逻辑,包括状态存放器的工作和存放器状态的输出,另一个进程描述组合逻辑,包括进程间状态值的传递逻辑以及状态转换值的输出。必要时还可以引入第三个进程完成其它的逻辑功能。下例描述的状态机由两个主控进程构成,其中进程REG为主控时序进程,为主控组合进程。 例7.1LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY s_machine IS PORT (clk, reset: IN ST

10、D_LOGIC; State_inputs: IN STD_LOGIC_VECTOR(0 TO 1); b_outputs: OUT STD_LOGIC_VECTOR(0 TO 1);END ENTITY s_machine;ARCHITECTURE behv OF s_machine ISTYPE states IS (st0,st1,st2,st3);-定义states为枚举型数据类型SIGNAL current_state, ne*t_state : states;BEGINREG: PROCESS (reset, clk) -时序逻辑进程 BEGIN IF reset=1 THEN-异

11、步复位 Current_state=st0; ELSIF clk=1 AND clkEVENT THEN current_stateb_outputs = 00; -初始状态译码输出00 IF state_inputs=00 THEN -根据外部的状态控制输入00 ne*t_state=st0; -在下一时钟后,进程REG的状态将维持为st0 ELSE ne*t_state b_outputs=01; -对应状态st1的译码输出01 IF state_inputs=00 THEN -根据外部的状态控制输人00 ne*t_state=st1; -在下一时钟后,进程REG的状态将维持为st1 EL

12、SE ne*t_state b_outputs=10; -以下依次类推 IF state_inputs=11 THEN ne*t_state=st2; ELSE ne*t_stateb_outputs=11; IF state_inputs=11 THEN ne*t_state=st3; ELSE ne*t_state=st0; END IF; END CASE;END PROCESS;END ARCHITECTURE behv;图7.4为上述状态机的工作时序图。reset为异步复位信号,低电平有效,而clk为上升沿有效。如在第3个脉冲上升沿到来时current_state=st0,state

13、_inputs01,输出b_outputs=01。第4个脉冲上升沿到来时current_state=st1,state_inputs00,输出b_outputs=01。综合后的RTL图如图7.5所示。图7.4 例7.1状态机的工作时序图图7.5例7.1状态机的RTL图一般来说,程序的不同进程间是并行运行的,但由于敏感信号设置的不同和电路的延迟,在时序上进程间的动作是有先后的。如对上例中的状态转换行为来说,有进程REG和,它们的敏感信号表分别为reset,clk和current_state,state_inputs,在clk上升沿到来时,进程REG将首先运行,完成状态转换的赋值操作。如果外部控制信号state_inputs不变,只有当来自进程REG的信号current_state改变时,进程才开场动作,并将根

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号