首页 > 编程知识 正文

状态机的三个基本要素,状态机的作用

时间:2023-05-04 18:32:55 阅读:40136 作者:4217

描述状态机的三种方法总结Author: SSSZW

email : szwsongzhengwei @ 163.com

目录记述状态机3种方法的总结1 .一段式记述2 .两段式记述3 .三段式记述4 .总结1 .一段式记述

用一个always模块用时序逻辑电路同时描述状态转移和状态输出。

不符合将时序电路和组合电路分开描述的编码样式。 整体代码不清晰,不利于综合器优化。 //状态转换和输出always @(posedge clk ) begincase(current_state ) state 13360 beginstate1_ transition _ statement; //基于当前描述的下一状态state1_output_statement; //基于当前状态和输入信号描述输出endstate 2: beginstate2_ transition _ statement; state2_output_statement; 结束……default : begin Staten _ transition _ statement; staten_output_statement; end endcaseend一段式记述结构:

2 .两段式描述第一个always模块用时序逻辑电路描述状态转换。

第二个always模块在组合逻辑电路上计算子状态并更新输出。

在输出中组合逻辑电路时,容易发生毛刺。 可以在允许的条件下插入额外的时钟节奏,但输出比状态慢一拍。 //状态转换always @(posedge clk ) begin current_state=next_state; //时钟利用沿到达时状态转变的end//组合逻辑电路计算二次状态,输出always@(current_stateordata_in ) begincase(current_state ) state //根据当前状态和输入信号计算下一个状态endstate 2: beginstate2_ output _ statement; state2_transition_statement; 结束……default : begin Staten _ output _ statement; staten_transition_statement; 结束案例结束两段式描述结构:

3 .用三段式将第一个always模块用时序逻辑电路描述状态迁移。

第二个always模块在组合逻辑电路上计算能级。

第三个always模块在到达时序逻辑电路时钟沿时更新输出。

使用时序逻辑输出,有效去除毛刺。 请注意,输出模块确定next_state,并在时钟沿到达时同时更新状态和输出。 //状态转换always @(posedge clk ) begin current_state=next_state; //时钟使用沿到达时的状态转变的end//组合逻辑电路进行准always@(current_stateordata_in ) begincase(current_state ) state 13360 结束……default : begin Staten _ transition _ statement; 使用end endcaseend//时序逻辑电路执行always @(posedge clk ) begincase(next_state ) state 13360 beginstate1_ output _ statement; //通过次描述输出,等待时钟信号的到来,输出endstate 2: beginstate2_ output _ statement; 结束……default : begin Staten _ output _ statement; endend三段式记述结构:

4 .总结一般不使用一段式的记述,根据情况用两段式或三段式记述FSM,优先使用三段式。 FSM中寄存器前的组合逻辑复杂时,选择二段式记述。

两段式和三段式的主要区别有以下两点。

两段式直接以组合逻辑输出,因此容易产生毛刺,需要在后级电路中追加寄存器进行解决。 三段式法中,在从输入到寄存器状态输出的路径上,依次进行以下状态计算组合逻辑和输出组合逻辑这2个组合逻辑,在时间序列上可以把这一部分视为一体。 也就是说,需要在一个时钟周期内完成这两个组合逻辑。 另外一方面,在两段式地使输出组合逻辑成为寄存器状态后,相当于分割了这两个部分,在一个时钟周期内完成下一个状态计算组合逻辑即可。 相比之下,三段式的这一段时机很紧张。 如果组合逻辑过于复杂,其路径将成为关键路径,因此需要进行三段式三段式三段式三段式建模,在FSM后级电路中插入寄存器,调整时序完成功能。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。