1、第第7 7章章 有限状态机有限状态机 第第7章章 有限状态机有限状态机7.1 有限状态机的基本概念有限状态机的基本概念7.2 有限状态机的基本描述有限状态机的基本描述7.3 有限状态机的同步和复位有限状态机的同步和复位7.4 改进的改进的Moore型有限状态机型有限状态机7.1 有限状态机的基本概念有限状态机的基本概念l有限状态机的定义:有限状态机的定义:l 所谓有限状态机是指那些输出取决于过所谓有限状态机是指那些输出取决于过去输入部分和当前输入部分的时序逻辑电路。去输入部分和当前输入部分的时序逻辑电路。l状态寄存器:状态寄存器:l用来记忆有限状态机内部状态的寄存器,用来记忆有限状态机内部状态
2、的寄存器,它的下一个状态不仅与输入信号有关,而且它的下一个状态不仅与输入信号有关,而且还与该寄存器的当前状态有关。还与该寄存器的当前状态有关。l有限状态机的组成有限状态机的组成:组合逻辑和寄存器逻辑。:组合逻辑和寄存器逻辑。l1、寄存器逻辑的功能:用来存储有限状态机的、寄存器逻辑的功能:用来存储有限状态机的内部状态。内部状态。l2、组合逻辑又可以分为次态逻辑和输出逻辑两、组合逻辑又可以分为次态逻辑和输出逻辑两个部分。其中:次态逻辑的功能是用来确定有限个部分。其中:次态逻辑的功能是用来确定有限状态机的下一个状态;而输出逻辑就是用来确定状态机的下一个状态;而输出逻辑就是用来确定有限状态机的输出。有
3、限状态机的输出。l有限状态机的类型:有限状态机的类型:l Moore型有限状态机和型有限状态机和Mealy型有限状态型有限状态机。机。lMoore型有限状态机型有限状态机:l是指那些输出信号仅与当前状态有关的有是指那些输出信号仅与当前状态有关的有限状态机,即可以把限状态机,即可以把Moore型有限状态机的型有限状态机的输出看成是当前状态的函数。输出看成是当前状态的函数。第第7 7章章 有限状态机有限状态机 Moore型状态机的结构框图:型状态机的结构框图:lMealy型有限状态机:型有限状态机:l 是指那些输出信号不仅与当前状态有关,而且是指那些输出信号不仅与当前状态有关,而且还与所有的输入信
4、号有关的有限状态机,即可以把还与所有的输入信号有关的有限状态机,即可以把Mealy有限状态机的输出看成是当前状态和所有输有限状态机的输出看成是当前状态和所有输入信号的函数。可见,入信号的函数。可见,Mealy有限状态机要比有限状态机要比Moore型有限状态机复杂一些。型有限状态机复杂一些。第第7 7章章 有限状态机有限状态机 Mealy型状态机的结构框图:型状态机的结构框图:第第7 7章章 有限状态机有限状态机 Moore型和型和Mealy型有限状态机的区别:型有限状态机的区别:Moore型有限状态机仅与当前状态有关,而与输入信号无关;型有限状态机仅与当前状态有关,而与输入信号无关;Mealy
5、型有限状态机不但与当前状态有关,而且还与状态机的输入信号有型有限状态机不但与当前状态有关,而且还与状态机的输入信号有关。关。采用何种状态机的判别条件:采用何种状态机的判别条件:1、Moore型有限状态机可能要比相应的型有限状态机可能要比相应的Mealy型有限状态机需要更型有限状态机需要更多的状态。多的状态。2、Moore型有限状态机的输出与当前的输入部分无关,因此当前输型有限状态机的输出与当前的输入部分无关,因此当前输入产生的任何效果将会延迟到下一个时钟周期。可见,入产生的任何效果将会延迟到下一个时钟周期。可见,Moore型状型状态机的最大优点就是可以将输入部分和输出部分隔离开。态机的最大优点
6、就是可以将输入部分和输出部分隔离开。3、对于、对于Mealy型有限状态机来说,由于它的输出是输入信号的函数,型有限状态机来说,由于它的输出是输入信号的函数,因此如果输入信号发生改变,那么输出可以在一个时钟周期的中间因此如果输入信号发生改变,那么输出可以在一个时钟周期的中间发生改变发生改变。l有限状态机的应用场合有限状态机的应用场合:l 用来实现数字系统设计中的控制部分。用来实现数字系统设计中的控制部分。l状态机与控制单元的对应关系:状态机与控制单元的对应关系:有限状态机中的每一个状态对应于控制有限状态机中的每一个状态对应于控制单元的一个控制步;它的次态和输出对应单元的一个控制步;它的次态和输出
7、对应于控制单元中与每一个控制步有关的转移于控制单元中与每一个控制步有关的转移条件。条件。7.2 有限状态机的基本描述有限状态机的基本描述l7.2.1 有限状态机的描述方式有限状态机的描述方式l有限状态机的描述规则有限状态机的描述规则(应该包含的内容):(应该包含的内容):l 1、至少包含一个状态信号,用来指定状态;、至少包含一个状态信号,用来指定状态;l 2、状态转移指定和输出指定;、状态转移指定和输出指定;l 3、时钟信号,一般用来同步;、时钟信号,一般用来同步;l 4、同步或者异步复位信号。、同步或者异步复位信号。l 其中:第其中:第1条到第条到第3条是必须包括的,而第条是必须包括的,而第
8、4 条条则不是必须含有的。则不是必须含有的。l有限状态机的描述方式:有限状态机的描述方式:l三进程、双进程和单进程描述方式。三进程、双进程和单进程描述方式。l三进程描述方式三进程描述方式:l 是指在是指在VHDL语言程序的结构体中,使用三个进语言程序的结构体中,使用三个进程语句来描述有限状态机的功能:一个进程用来描程语句来描述有限状态机的功能:一个进程用来描述有限状态机中的次态逻辑;一个进程用来描述有述有限状态机中的次态逻辑;一个进程用来描述有限状态机中的状态寄存器;另外一个进程用来描述限状态机中的状态寄存器;另外一个进程用来描述有限状态机中的输出逻辑。有限状态机中的输出逻辑。l双进程描述方式
9、:双进程描述方式:l 是指在是指在VHDL语言程序的结构体中,使用两个语言程序的结构体中,使用两个进程语句来描述有限状态机的功能:一个进程语进程语句来描述有限状态机的功能:一个进程语句用来描述有限状态机中次态逻辑、状态寄存器句用来描述有限状态机中次态逻辑、状态寄存器和输出逻辑中的任何两个;另外一个进程则用来和输出逻辑中的任何两个;另外一个进程则用来描述有限状态机剩余的功能。描述有限状态机剩余的功能。l单进程描述方式:单进程描述方式:l 是指在是指在VHDL语言程序的结构体中,使用一个语言程序的结构体中,使用一个进程语句来描述有限状态机中的次态逻辑、状态进程语句来描述有限状态机中的次态逻辑、状态
10、寄存器和输出逻辑。寄存器和输出逻辑。第第7 7章章 有限状态机有限状态机 描述方式列表:描述方式列表:7.2.2 一个一个 Moore 型状态机的设型状态机的设计实例计实例l存储控制器的具体要求:存储控制器的具体要求:l 1、存储控制器能够根据微处理器的读周期或、存储控制器能够根据微处理器的读周期或者写周期,分别对存储器输出写使能信号者写周期,分别对存储器输出写使能信号we和读和读使能信号使能信号oe。2、存储控制器的输入信号有三个:微处理器的、存储控制器的输入信号有三个:微处理器的准备就绪信号准备就绪信号ready、微处理器的读写信号、微处理器的读写信号read_write和时钟信号和时钟信
11、号clk。第第7 7章章 有限状态机有限状态机 存储控制器的工作过程:存储控制器的工作过程:当微处理器的准备就绪信号当微处理器的准备就绪信号ready有效或上电复位时,控有效或上电复位时,控制器开始工作并且在下一个时钟周期到来时判断本次工作是制器开始工作并且在下一个时钟周期到来时判断本次工作是读存储器操作还是写存储器操作:当微处理器的读写信号读存储器操作还是写存储器操作:当微处理器的读写信号read_write有效时,本次工作即为读操作;当微处理器的读有效时,本次工作即为读操作;当微处理器的读写信号写信号read_write无效时,本次工作即为写操作。控制器的无效时,本次工作即为写操作。控制器
12、的输出写使能信号输出写使能信号we在写操作中有效,而读使能信号在写操作中有效,而读使能信号oe在读在读操作中有效。当读操作或写操作完成以后,微处理器的准备操作中有效。当读操作或写操作完成以后,微处理器的准备就绪信号就绪信号ready标志本次处理任务完成,并使控制器回到空标志本次处理任务完成,并使控制器回到空闲状态。闲状态。第第7 7章章 有限状态机有限状态机 存储控制器的状态设定:存储控制器的状态设定:设空闲状态为空闲状态(设空闲状态为空闲状态(idle);当微处理器的准备就);当微处理器的准备就绪信号绪信号ready有效后的下一个时钟周期到来时所处的状态设有效后的下一个时钟周期到来时所处的状
13、态设为判断状态(为判断状态(decision);然后将根据微处理器的读写信号);然后将根据微处理器的读写信号read_write的不同而转入的状态分别设为读状态(的不同而转入的状态分别设为读状态(read)和)和写状态(写状态(write)。)。第第7 7章章 有限状态机有限状态机 存储控制器的状态转移图存储控制器的状态转移图第第7 7章章 有限状态机有限状态机 存储控制器的输出逻辑表:存储控制器的输出逻辑表:第第7 7章章 有限状态机有限状态机 三进程描述方式:三进程描述方式:LIBRARY IEEE;USE IEEE.std_logic_1164.ALL;ENTITY store_cont
14、roller IS PORT(ready:IN std_logic;clk:IN std_logic;read_write:IN std_logic;we,oe:OUT std_logic);END store_controller;第第7 7章章 有限状态机有限状态机 ARCHITECTURE state_machine OF store_controller IS TYPE state_type IS(idle,decision,read,write);SIGNAL present_state,next_state:state_type;BEGIN nextstate_logic:PROC
15、ESS(present_state,ready,read_write)BEGINCASE present_state ISWHEN idle=IF(ready=1)THEN next_state=decision;ELSE next_state IF(read_write=1)THEN next_state=read;第第7 7章章 有限状态机有限状态机 ELSE next_state IF(ready=1)THEN next_state=idle;ELSE next_state IF(ready=1)THEN next_state=idle;ELSE next_state=write;END
16、 IF;END CASE;END PROCESS;第第7 7章章 有限状态机有限状态机 state_register:PROCESS(clk)BEGINIF(clkevent AND clk=1)THENpresent_state we=0;oe we=0;oe we=0;oe we=1;oe IF(ready=1)THENstate=decision;ELSEstate IF(read_write=1)THENstate=read;ELSEstate IF(ready=1)THENstate=idle;ELSEstate IF(ready=1)THENstate=idle;ELSEstate
17、=write;END IF;END CASE;END IF;END PROCESS;oe=1WHEN state=read ELSE 0;we we=0;oe=0;IF(ready=1)THENnext_state=decision;ELSEnext_state we=0;oe=0;IF(read_write=1)THENnext_state=read;ELSEnext_state we=0;oe=1;IF(ready=1)THENnext_state=idle;ELSEnext_state we=1;oe=0;IF(ready=1)THENnext_state=idle;ELSEnext_s
18、tate=write;END IF;END CASE;END PROCESS;第第7 7章章 有限状态机有限状态机 state_register:PROCESS(clk)BEGINIF(clkevent AND clk=1)THENpresent_state we=0;oe=0;IF(ready=1)THENstate=decision;ELSEstate we=0;oe=0;IF(read_write=1)THENstate=read;ELSEstate we=0;oe=1;IF(ready=1)THENstate=idle;ELSEstate we=1;oe=0;IF(ready=1)TH
19、ENstate=idle;ELSEstate=write;END IF;END CASE;END IF;END PROCESS;END state_machine;第第7 7章章 有限状态机有限状态机 7.3.2 有限状态机的同步复位有限状态机的同步复位同步复位的具体操作:同步复位的具体操作:同步复位信号在时钟的跳变沿到来时,将对有限状态机进同步复位信号在时钟的跳变沿到来时,将对有限状态机进行复位操作,同时把复位值赋给输出信号并使有限状态机回行复位操作,同时把复位值赋给输出信号并使有限状态机回到空闲状态。到空闲状态。同步复位的注意事项:同步复位的注意事项:描述带同步复位的有限状态机时候,在对同
20、步复位信号进描述带同步复位的有限状态机时候,在对同步复位信号进行判断的行判断的IF语句中,如果不指定输出信号的值,那么输出信语句中,如果不指定输出信号的值,那么输出信号将保持原来的值不变。这种情况会需要额外的寄存器来保号将保持原来的值不变。这种情况会需要额外的寄存器来保持原值从而增加了占用的资源数,因此需要在持原值从而增加了占用的资源数,因此需要在IF语句中指定语句中指定输出信号的值。输出信号的值。第第7 7章章 有限状态机有限状态机 VHDL语言描述:只需要在前面所示程序的状态转移进语言描述:只需要在前面所示程序的状态转移进程的开始部分添加如下的语句即可:程的开始部分添加如下的语句即可:IF
21、(reset=1)THEN oe=-;we=-;next_state=idle;ELSE-以下是状态转移的以下是状态转移的CASE语句,这里省略。语句,这里省略。第第7 7章章 有限状态机有限状态机 7.3.3 有限状态机的异步复位有限状态机的异步复位异步复位的应用场合:异步复位的应用场合:在上电复位和系统错误时进行的复位操作。在上电复位和系统错误时进行的复位操作。异步复位优于同步复位的地方:异步复位优于同步复位的地方:同步复位方式占用较多的额外资源,而异步复位可以消除同步复位方式占用较多的额外资源,而异步复位可以消除引入额外寄存器的可能性;而且带有异步复位信号的引入额外寄存器的可能性;而且带
22、有异步复位信号的VHDL语言描述十分简单,只需要在描述状态寄存器的进程中引入语言描述十分简单,只需要在描述状态寄存器的进程中引入异步复位信号即可。异步复位信号即可。第第7 7章章 有限状态机有限状态机 VHDL语言描述:只需要将前面所示程序的状态寄存器进语言描述:只需要将前面所示程序的状态寄存器进程改写为:程改写为:state_register:PROCESS(clk,reset)BEGIN IF(reset=1)THEN present_state=idle;ELSIF(clkevent AND clk=1)THEN present_state=next_state;END IF;END P
23、ROCESS;第第7 7章章 有限状态机有限状态机 7.4 改进的改进的Moore型有限状态机型有限状态机7.4.1 状态作为输出信号状态作为输出信号 改进方法:改进方法:把有限状态机的状态直接作为输出信号,相当把有限状态机的状态直接作为输出信号,相当于去掉了输出逻辑电路。于去掉了输出逻辑电路。改进的好处:改进的好处:1、输出信号就直接来自于寄存器,从而避、输出信号就直接来自于寄存器,从而避免了免了“毛刺毛刺”现象的产生;现象的产生;2、由于在有限状态机中少了一级逻辑电路,、由于在有限状态机中少了一级逻辑电路,可以减小输出信号的传输时延。可以减小输出信号的传输时延。第第7 7章章 有限状态机有
24、限状态机 改进后的结构框图:改进后的结构框图:第第7 7章章 有限状态机有限状态机 状态编码的操作步骤:状态编码的操作步骤:1、建立包括状态机各状态和输出信号的表格;、建立包括状态机各状态和输出信号的表格;2、对建立的表格添加状态位;、对建立的表格添加状态位;3、补全表格中的状态编码。、补全表格中的状态编码。VHDL语言描述:语言描述:与前面用可枚举类型定义的状态对象不同,这里与前面用可枚举类型定义的状态对象不同,这里将指定常量来确定各个状态的取值;其余与前面的将指定常量来确定各个状态的取值;其余与前面的VHDL语言程序相同。语言程序相同。第第7 7章章 有限状态机有限状态机 7.4.2 并行
25、输出寄存器的译码输出并行输出寄存器的译码输出改进方法:改进方法:在进行状态锁存之前首先进行输出译码,然后在进行状态锁存之前首先进行输出译码,然后再把它锁存到输出寄存器中。再把它锁存到输出寄存器中。改进的好处:改进的好处:1、使译码输出的信号稳定并避免、使译码输出的信号稳定并避免“毛刺毛刺”现象现象的发生;的发生;2、减少了输出信号的传输延时。、减少了输出信号的传输延时。改进的缺点:改进的缺点:需要较多的逻辑资源。需要较多的逻辑资源。第第7 7章章 有限状态机有限状态机 改进后的结构框图:改进后的结构框图:43写在最后写在最后成功的基础在于好的学习习惯成功的基础在于好的学习习惯The foundation of success lies in good habits谢谢大家荣幸这一路,与你同行ItS An Honor To Walk With You All The Way讲师:XXXXXX XX年XX月XX日