状态机的写法
有限状态机fsm思想广泛应用于硬件控制电路设计,也是软件上常用的一种处理方法(软件上称为fmm有限消息机)。它把复杂的控制逻辑分解成有限个稳定状态,在每个状态上判断事件,变连续处理为离散数字处理,符合计算机的工作特点。
有限状态机的工作原理如图所示,发生事件(event)后,根据当前状态(cur_state),决定执行的动作(action),并设置下一个状态号(nxt_state)。
图 有限状态机工作原理
下图为一个状态机实例的状态转移图,它的含义是:
在s0状态,如果发生e0事件,那么就执行a0动作,并保持状态不变;
如果发生e1事件,那么就执行a1动作,并将状态转移到s1态;
如果发生e2事件,那么就执行a2动作,并将状态转移到s2态;
在s1状态,如果发生e2事件,那么就执行a2动作,并将状态转移到s2态;
在s2状态,如果发生e0事件,那么就执行a0动作,并将状态转移到s0态。
图0一个有限状态机实例
有限状态机不仅能够用状态转移图表示,还可以用二维的表格代表。一般将当前状态号写在横行上,将事件写在纵列上,如表1所示。其中“--”表示空(不执行动作,也不进行状态转移),“an/sn”表示执行动作an,同时将下一状态设置为sn。下表和图0表示的含义是完全相同的。
表 图2状态机实例的二维表格表示(动作/下一状态)
时序逻辑电路的数学模型是有限状态机(finitestatemachine)。时序逻辑电路的设计通常用触发器来实现,状态机越复杂,设计过程也越复杂。利用msi(medium-scaleintegration)也可以实现复杂状态机,虽然设计过程比利用触发器实现要复杂,但电路相对简单。在数字逻辑系统中,计数器是基本部件之一。集成计数器芯片类型很多,文中主要讨论使用msi同步计数器74ls161进行复杂状态机的设计。
74ls161功能介绍
74ls161的引脚排列和逻辑功能如图1所示。各引出端的逻辑功能如下。1脚为清零端/rd,低电平有效。2脚为时钟脉冲输入端cp,上升沿有效(cp↑)。3~6脚为数据输入端a0~a3,可预置任意四位二进制数。7脚和10脚分别为计数控制端ep和et,当其中有一脚为低电平时计数器保持状态不变,当均为高电平时为计数状态。9脚为同步并行置数控制端/ld,低电平有效。11~14脚为数据输出端qq30~。15脚为进位输出端rco,高电平有效。
图1 四位同步二进制计数器74ls161
(a)引线排列图;(b)逻辑功能图
设计过程
计数器的状态转换一般为顺序转换,电路也很成熟,例如s1→s2、s4→s5等。在实现模m的计数器时,一般也是利用连续状态进行顺序转换。但如要实现复杂状态机,则需要充分了解计数器的特性,利用置零端和置数端,完成非顺序状态转换,例如s1→s0、s4→s6等,从而实现复杂状态机。下面讨论对计数器74ls161的功能进行扩展,实现非顺序状态转换(图2)。计数器状态与符号的对照见表1.
表1 计数器状态与符号的对照表
图2中,74ls161(0)片和74ls161(1)片的初始状态均设为0,两片在cp脉冲到来时同时开始计数,当(1)片循环至状态s4时,会给(0)片一个置位信号,当第5个cp脉冲到来时,(0)片被置位状态s7.之后,一直到第9个cp脉冲到来前,由于(1)片q2端始终为1,故(0)片始终保持状态s7.当第9个cp脉冲到来时,(1)片和(0)片的状态分别为s9和s8,此时,(1)片得到(0)片q3端的置位信号,当下一个cp脉冲到来时,(1)片和(0)片的状态分别为s4和s9.在第10个cp脉冲作用下,(1)片和(0)片的状态分别为s4和s9.在第11个cp脉冲作用下,(1)片和(0)片的状态分别为s4和s7,如此往复。这样,两片74ls161(1)片和(0)片并行输出状态变化为01000111→01010111→01100111→01110111→10000111→10011000→01001001→01000111,7种状态非顺序的转换。
图2 非顺序状态转换电路
如实现非顺序更多状态的转换,就需要使用更多msi芯片,图3为使用三个74ls161芯片实现的复杂状态机。在图3中,三个芯片的初始状态均设为0,并且在cp脉冲到来时同时开始计数,当第7个cp脉冲到来后,实现有效状态循环000001001001→000001001010→000001001011→000001001100→000001001101→000001001110→000001001111→000001000000→000001010001→000001100010→000001110011→000010000100→000110010101→001010100110→001110110111→010011000111→000011011000→000001001001,为17种非顺序状态的转换。可见,实现越复杂的状态机,转换的非顺序状态越多,电路越复杂。
图3 复杂状态机电路图
可能出现的问题
在实际的电路中,由于使用多个集成电路,可能会出现置0不可靠的情况,这是由多个触发器的负载不同,置0时间也不完全相同引起的,此时需要在以上电路设计中做一些改进。另外,msi与负载门电路的连接等问题,可以通过增加上拉电阻、接地电阻及电平转换等措施解决。
JBLTUNE120TWS评测 有着时尚大气的外观以及恰到好处的音质表现
170亿元的电动汽车超级工厂在上海投产
OPPO Reno 10x令人痴迷的拍摄体验
Satechi推两款USB-C HDMI:本周上架 颜色多变
LCR数字电桥安全操作指南
利用74LS161实现复杂状态机
2023年Q1全球芯片市场分析 芯片行业何时走出“寒冬”?
iPhone X购买巨划算,美国日本才是最便宜
Lattice正朝着网络边缘领域进军
MAX15003三输出buck控制器
江波龙SSD产品S800和P800系列分析
荣耀8手机热卖半年多却没降过价,你知道是为什么吗?
抖音再回应起诉腾讯
RJ-45插头
Shortcut Labs Flic智能按钮评测:最酷炫的新技术
汇顶重金收购恩智浦VAS业务,布局音频市场
“数”说智造,为企业赋能
OPPO Reno3系列录屏曝光:可智能切换5G、4G网络
射频、微波天线技术探讨
物联网开发之个性化的网关设计分析