彻底搞清三段状态机的来龙去脉(2)

(1)一个完备的状态机应该具有初始状态默认状态 。当芯片加电或者复位后,状态机能够自动将所有的判断条件复位,并进入初始状态 ;起始状态是指电路复位后所处的状态,选择一个合理的起始状态将使整个系统更简捷高效 。当转移条件不满足,或者状态发生突变时,状态机进入一个**默认(default)**状态,能保证逻辑不会陷入“死循环”,这是对状态机健壮性的一个重要要求,即自动恢复功能 。在case语句的最后,不要忘了加上default分支语句,以避免锁存器的产生

(2)对于状态编码,主要有二进制,格雷,一位独热编码三种方式:
二进制 :S0=3’d0,S1=3’d1,S2=3’d2,S3=3’d3,S4=3’d4
格雷码 :S0=3’b000,S1=3’b001,S2=3’b010,S3=3’b011,S4=3’b110
独热:S0=5’b00001,S1=5’b00010,S2=5’b00100,S3=5’b01000,S4=5’b10000
二进制码适用于触发器资源较少,组合电路资源丰富的情况(CPLD),其缺点是由一个状态转换到相邻状态时,可能有多个比特位发生变化,瞬变次数多,易发生毛刺,引起逻辑错误。独热编码虽占用寄存器资源多,但是占用的组合逻辑少,充分发挥了芯片触发器数量多的优点,保障电路性能同时,提高状态机运行速度。

(3)根据触发条件的不同,时序逻辑电路可以分为异步时序和同步时序逻辑。在异步时序逻辑中触发条件很随意,任何时刻都有可能发生,所以记忆状态的触发器输出在任何时刻都有可能发生;而同步时序逻辑中表示状态的触发器输出只能在惟一确定的触发条件发生时刻改变,例如只能由时钟的上升沿或下降沿触发。同步时序逻辑的触发输入至少可以维持一个时钟周期后才会发生第二次触发,利用这一段时间,即在下一次触发信号来到前,为电路的状态改变创造了一个稳定可靠的条件。因此,同步时序逻辑比异步时序逻辑具有更可靠、更简单的逻辑关系。目前,综合工具只支持同步时序逻辑的设计,用Verilog设计可综合的状态机也都使用同步时序逻辑。实用的状态机都应设计为由唯一时钟边沿触发的同步运行方式。

(4)编码风格对组合逻辑建模采用阻塞式赋值,对时序逻辑建模采用非阻塞式赋值,尽量不要在同一个always块里面混合使用“阻塞赋值”和“非阻塞赋值”,如果在同一个always块里面既为组合逻辑,又为时序逻辑建模,应使用“非阻塞赋值”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值