如何写好状态机
节选自《Verilog设计与验证》 作者:吴继华、王诚
状态机是逻辑设计的重要内容,状态机的设计水平直接反应工程师的逻辑功底,所以许多公司的硬件和逻辑工程师面试中,状态机设计几乎是必选题目。本章在引入状态机设计思想的基础上,重点讨论如何写好状态机。
本章主要内容如下:
· 状态机的基本概念;
· 如何写好状态机;
· 使用 Synplify Pro 分析 FSM。
6.1 状态机的基本概念
本节的重点在于帮助读者理解状态机的基本概念和应用场合。
6.1.1 状态机是一种思想方法
相信大多数工科学生在学习数字电路时都学习过状态机的基本概念,了解一些使用状态机描述时序电路的基本方法。但是,笔者希望大家能扩展思维,认识到状态机不仅仅是一种时序电路设计工具,它更是一种思想方法。 我们先看下面一个简单的例子。在大学生活中,某学生的在校的学习生活可以简单地概括为宿舍、教室、食堂之间的周而复始,用图 6-1 就可以形象地表现出来。这里画这张图,并不是要讨论这个学生是否是一个“乖乖”类型学生,请大家注意,如果将图中的“地点”认为是“状态” ,将“功能”认为是状态的“输出” ,这张图就是一张标准的状态转移图,也就是说,我们用状态机的方式清晰地描述了这个学生的在校生活方式。
同样如果将图中的“地点”认为是“状态” ,将“功能”认为是状态的“输出” ,将“条件”认为是状态转移的“输入条件” ,图 6-2 也是一张标准的状态转移图,通过状态机的方式我们再次清晰地描述另一个学生的在校生活方式。 事实上使用状态机方式,我们可以细致入微地描述任何一个学生的在校生活方式。大家通过前面两个简单举例已经发现状态机特别适合描述那些有发生有先后顺序,或者有逻辑规律的事情——其实这就是状态机的本质。状态机的本质就是对具有逻辑顺序或时序规律事件的一种描述方法。这个论断的最重要的两个词就是“逻辑顺序”和“时序规律” ,这两点就是状态机所要描述的核心和强项,换言之,所有具有逻辑顺和时序规律的事情都适合用
状态机描述。
很多初学者不知道何时应用状态机。这里介绍两种应用思路:第一种思路,从状态变量入手。如果一个电路具有时序规律或者逻辑顺序,我们就可以自然而然地规划出状态,从这些状态入手,分析每个状态的输入,状态转移和输出,从而完成电路功能;第二种思路是首先明确电路的输出的关系,这些输出相当于状态的输出,回溯规划每个状态,和状态转移条件与状态输入。无论那种思路,使用状态机的目的都是要控制某部分电路,完成某种具有逻辑顺序或时序规律的电路设计。
其实对于逻辑电路而言,小到一个简单的时序逻辑,大到复杂的微处理器,都适合用状
态机方法进行描述。请读者打开思路,不要仅仅局限于时序逻辑,发现电路的内在规律,认电路的“状态变量” ,大胆使用状态机描述电路模型。由于状态机不仅仅是一种电路描述工具,它更是一种思想方法,而且状态机的 HDL 语言表达方式比较规范,有章可循,所以很多有经验的设计者习惯用状态机思想进行逻辑设计,对各种复杂设计都套用状态机的设计理念,从而提高设计的效率和稳定性。
完整的pdf格式文档51黑下载地址(共29页):
怎样写好三段式状态机.pdf
(332.6 KB, 下载次数: 54)
|