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