Verilog描述有限状态机(一段式、二段式、三段式)

本文详细介绍了有限状态机(FSM)的基本概念及其在Verilog中的一段式、二段式和三段式描述方法。FSM由状态集合、初态、终态、输入符号集、输出符号集和状态转移函数组成。文章通过对比分析,揭示了一段式FSM的杂糅缺点,二段式FSM的输出不稳定问题,以及三段式FSM如何克服这些问题。并通过仿真验证了不同描述方式的1011序列产生器,展示了三段式和二段式输出的一致性,以及一段式输出的时钟滞后现象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有限状态机(FSM)的输出取决于过去状态以及当前输入,是时序逻辑电路。适合描述那些发生有先后顺序或者有逻辑规律的事情,状态机的本质就是对具有逻辑顺序或时序规律的事件进行描述的一种方法,广泛用于多种场合。

因此,掌握有限状态机的Verilog描述方式至关重要;通过许多大神前辈的博客,我了解到状态机的描述具有三种方式,反思自己之前的描述深感逻辑混乱,毫无章法,因此重新对这方面进行学习与记录

一、FSM的组成

状态机:状态机描绘状态变迁的状态迁移图,体现了系统对外界事件的反应;
状态机组成六要素:状态集合,初态,终态,输入符号集,输出符号集,状态转移函数;
状态机工作四要素:现态 ,次态,输入,输出;

状态机主要分为三部分:

状态转移部分,描述状态机在时钟驱动下的状态转移这一过程(现态---次态);

状态转移条件,之前我们已经知道状态机会不断进行状态转移,但是由当前状态转移为何种状态?也就是次态的取值是什么,这个工作是状态转移条件部分来描述执行;

输出部分描述状态机的输出,即当前状态下的输出为什么;

这三部分的描述可以放在Verilog描述过程的不同部分,即对应FSM的三种描述方式;

二、FSM的三种描述方式

一段式FSM描述:状态机写在1个always块,既描述状态转移,又描述状态的输入输出;(但是其各部分杂糅,在功能比较复杂的场合会比较混乱,不建议使用)
二段式FSM描述:鉴于一段式描述的缺点,两段式描述使用2个always块,一个always块利用同步时序逻辑描述状态转移,一个always块利用组合逻辑描述状态转移条件以及输出;(但是输出一般使用组合逻辑描述,而组合逻辑易产生毛刺等不稳定因素,并影响系统执行速率)
三段式FSM描述:三段式描述应运而生,通过使用3个always块,一个always块利用同步时序逻辑描述状态转移,一个always块利用组合逻辑描述状态转移条件,一个always块利用同步时序逻辑描述输出,避免了前两种描述方式的弊端;

更详细的描述见下连接:

基于Verilog HDL的有限状态机

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值