资源描述
,*,有限状态机,有限状态机简介(,1,),设计时序电路要比设计组合电路难得多,,有限状态机,是一个为时序系统想要的行为建模的工具,设计者首先设计该系统行为的有限状态模型,然后设计电路来实现这个模型。,有限状态机简介(,2,),一个有限状态机由几个状态组成。状态机的,输入,与其,当前状态,结合来决定新的状态,即状态机的,次态,。根据状态机类型的不同,其,输出,可能基于状态机的状态,也可能基于状态机的状态和输入值,图,1,(,a,)对此作了说明。,状态,状态机,输入,输出,图,1,状态机模型:(,a,)一般模型,简化的状态机的例子,一个学生,为了不耽误第一节课,每个工作日早上六点起床。可是到了周末,可能想睡觉,不用早起。当你还在睡觉,闹钟却在六点响了,并且把你吵醒了。如果是工作日,关掉闹钟,起床,为新的一天做准备。然而,若是周末,你忘记了调整闹钟,则到时候你可能会生气的关掉闹钟(丢掉房子的一边,仍到厕所里冲走,或者把它报废),然后继续睡觉。,我们可以用图,1,(,b,)所示的有限状态机来模拟这一连串的事件。,简化的状态机的例子(续),实际上,这个状态机就是你自己。你可能处于下列三个状态之一:睡眠中,醒了但还在床上,或起床。你接受两个输入:唤你醒来的闹钟和当天是否是工作日,后者决定你对闹钟的反映态度。在这个例子中,唯一的输出就是关掉闹钟。(这里假设你不弄坏闹钟;如果弄坏闹钟,这个例子就需要一个,“,弄坏闹钟,”,的输出),状态,状态机,闹钟,关掉闹钟,图,1,状态机模型:(,b,)闹钟系统,工作日,这是从系统行为描述到时序电路实现的第一步。接着,将行为在状态图和状态表中编码,然后将其设计并实现成一个时序数字电路。,虽然有限状态机能用于设计很简单的电路,比如上边的例子,但是他们对于设计更复杂的系统也非常有用,在计算机体系结构中,他们很适合于设计,微处理器,的任务。,简化的状态机的例子(续),历史视角:有限状态机和微处理器,微处理器有三个主要部分:寄存器,算术逻辑单元和控制单元。控制单元输入将被执行的指令和其他的信息,如标志寄存器的值。控制单元输出控制信号以便加载和修改寄存器的内容,执行算术逻辑功能,存取存储器和输入,/,输出设备。它按照适当的顺序输出这些信号,以便微处理器正确读取,译码和执行每条指令。,微处理器的控制单元本质上是一个有限状态机。指令和标志值是状态机的输入,控制信号是状态机的输出。,1.1,状态图和状态表,状态图和状态表是描述时序系统行为的便利的机制。状态表和真值表类似。但是和真值表不同,状态表在描述其转变是不考虑系统时钟。这说明转变只在时钟允许的时候发生,一般在时钟上升沿或下降沿。,该表有两个输入,闹钟和工作日,以及一个输出,关掉闹钟。当你睡着时,闹钟响了,你从睡眠状态进入清醒但躺在床上的状态,你也会关掉闹钟,如表(,1,)中第一行所示。其他两行代表你关掉闹钟之后的动作:起床或者继续睡觉。,现态,未醒,醒了未起床,醒了未起床,闹钟,on,off,off,工作日,X,Yes,NO,次态,醒了未起床,起床,未醒,关掉闹钟,Yes,No,No,闹钟例子,状态表,(,1,),闹钟例子,状态表,(,2,),该表增加了几个状态(,1,,,3,,,6,行),表示你不会做什么。比如,早上,4,点在睡觉,闹铃也没有响,会继续睡觉(第,1,行)。增加这几行是为了保证情况的完整性。,现态,未醒,未醒,醒了未起床,醒了未起床,醒了未起床,起床,闹钟,off,On,On,off,Off,X,工作日,X,X,X,Yes,NO,X,次态,未醒,醒了未起床,醒了未起床,起床,未醒,起床,关掉闹钟,No,Yes,Yes,No,No,No,状态表与状态图,状态表可以用状态图来表示。为了衍生出状态图,每个状态有一个环形节点来表示。状态表的每行表示从当前状态节点到下一状态节点的有向弧。,闹钟例子的状态图(,1,),图,1,输出与状态相关(,Moore,机),睡着,清醒,但未起床,已起床,闹钟响,闹钟未响,工作日,1,(总是),关掉闹钟,=Yes,闹钟响,闹钟未响,非,工作日,闹钟,未响,图,1,睡着,清醒,但未起床,已起床,闹钟响,/,1,闹钟未响,工作日,/,0,1,(总是),/,0,闹钟响,/,1,闹钟未响,工作日,/,0,闹钟未,响,/,0,图,2,闹钟例子的状态图(,2,),图,2,输出与有向弧相关(输入,,Mealy,机),收费站控制器,收费站控制器有,两个外部传感器,。第一个用来探测汽车是否在收费站中,当车在时,,C=1,,否则,C=0,。第二个传感器探测硬币是否已经投到收费站的收集篮中以及硬币的面值。,如果没有硬币投入,传感器设,I,1,I,0,=00,;,如果投入,5,分,则设,I,1,I,0,=01,;,如果投入,10,分,则设,I,1,I,0,=10,;,如果投入,25,分,则设,I,1,I,0,=11,;,(该收费站不接受面值,1,分和超过,25,分的硬币),收费站控制器(续),收费站有,两个输出灯和一个输出警铃,。当车开进收费站,红灯(,R,)亮,直到司机投入至少,35,分为止,此时红灯灭并且绿(,G,)灯亮。当汽车离开收费站的时候,绿灯灭,红灯又亮。如果汽车没有交足费用就离开收费站,则红的一直亮并且警铃响。直到另一辆车进入收费站时,警铃才关闭。,该系统需要几个状态来对应已经列出的条件。另外它还要几个额外的状态来跟踪已投入了多少钱。下面列表描述有限状态机的状态以及它们的输出。,收费站控制器状态,状态 条件,R G A,S,NOCAR,站中无车,1 0 0,S,0,站中有车,已付费,0,分,1 0 0,S,5,站中有车,已付费,5,分,1 0 0,S,10,站中有车,已付费,10,分,1 0 0,S,15,站中有车,已付费,15,分,1 0 0,S,20,站中有车,已付费,20,分,1 0 0,S,25,站中有车,已付费,25,分,1 0 0,S,30,站中有车,已付费,30,分,1 0 0,S,PAID,站中有车,已付费,35,分,0 1 0,S,CHEAT,未付满过站费车就离开收费站,1 0 1,状态机的输入和状态转换,为了建立状态表,我们再来观察每个独立的状态,并且决定所有可能发生的行为。例如,在状态,S,NOCAR,,既没有车在收费站的时候,只有两件事可能发生,(,1,)汽车进入收费站(,C=1,)而状态机进入,S,0,,或(,2,)没有车到来(,C=0,),而状态机保持,S,NOCAR,。其他的状态更复杂一些。例如在状态,S,5,所有后面的情况都可能发生。,状态机的输入和状态转换(续),下面总结状态之间可以发生的转换。不可能的条件在这里不予考虑,例如:没有汽车在收费站而交费。,该系统的,Moore,机状态图我们下面给出。,Mealy,机状态图的设计留给大家,作为希望课后提高自己的小练习。,收费站控制器状态表,1,现态,S,NOCAR,S,PAID,S,CHEAT,S,0,S,0,S,0,S,0,C,1,0,1,0,1,1,1,I,1,I,0,XX,XX,XX,XX,01,10,11,次态,S,0,S,NOCAR,S,0,S,CHEAT,S,5,S,10,S,2,5,R,1,1,1,1,1,1,1,G,0,0,0,0,0,0,0,A,0,0,0,1,0,0,0,收费站控制器状态表,2,现态,S,5,S,5,S,5,S,5,S,10,S,10,S,10,S,10,C,0,1,1,1,0,1,1,1,I,1,I,0,XX,01,10,11,XX,01,10,11,次态,S,CHEAT,S,10,S,15,S,30,S,CHEAT,S,15,S,20,S,PAID,R,1,1,1,1,1,1,1,0,G,0,0,0,0,0,0,0,1,A,1,0,0,0,1,0,0,0,收费站控制器状态表,3,现态,S,1,5,S,15,S,15,S,15,S,20,S,20,S,20,S,2,0,C,0,1,1,1,0,1,1,1,I,1,I,0,XX,01,10,11,XX,01,10,11,次态,S,CHEAT,S,20,S,25,S,PAID,S,CHEAT,S,25,S,30,S,PAID,R,1,1,1,0,1,1,1,0,G,0,0,0,1,0,0,0,1,A,1,0,0,0,1,0,0,0,收费站控制器状态表,4,现态,S,2,5,S,25,S,25,S,25,S,30,S,30,S,30,S,3,0,C,0,1,1,1,0,1,1,1,I,1,I,0,XX,01,10,11,XX,01,10,11,次态,S,CHEAT,S,30,S,PAID,S,PAID,S,CHEAT,S,PAID,S,PAID,S,PAID,R,1,1,0,0,1,0,0,0,G,0,0,1,1,0,1,1,1,A,1,0,0,0,1,0,0,0,
展开阅读全文