没有合适的资源?快使用搜索试试~ 我知道了~
首页FPGA怎么样写好三段式状态机
FPGA怎么样写好三段式状态机
需积分: 13 29 下载量 48 浏览量
更新于2023-05-26
收藏 333KB PDF 举报
状态机有一段式,两段式以及三段式。但是一段式的状态机写起来有时候太冗长,三段的状态机在思路清晰的前提下,可以让代码更加清晰化,可以帮助提高状态机的写法。
资源详情
资源推荐
第6章 如何写好状态机
节选自《Verilog 设计与验证》 作者:吴继华、王诚
状态机是逻辑设计的重要内容,状态机的设计水平直接反应工程师的逻辑功底,所以许
多公司的硬件和逻辑工程师面试中,状态机设计几乎是必选题目。本章在引入状态机设计思
想的基础上,重点讨论如何写好状态机。
本章主要内容如下:
• 状态机的基本概念;
• 如何写好状态机;
• 使用 Synplify Pro 分析 FSM。
6.1 状态机的基本概念
本节的重点在于帮助读者理解状态机的基本概念和应用场合。
6.1.1 状态机是一种思想方法
相信大多数工科学生在学习数字电路时都学习过状态机的基本概念,了解一些使用状态
机描述时序电路的基本方法。但是,笔者希望大家能扩展思维,认识到状态机不仅仅是一种
时序电路设计工具,它更是一种思想方法。
我们先看下面一个简单的例子。在大学生活中,某学生的在校的学习生活可以简单地概
括为宿舍、教室、食堂之间的周而复始,用图 6-1 就可以形象地表现出来。这里画这张图,
并不是要讨论这个学生是否是一个“乖乖”类型学生,请大家注意,如果将图中的“地点”
认为是“状态”,将“功能”认为是状态的“输出”,这张图就是一张标准的状态转移图,也
就是说,我们用状态机的方式清晰地描述了这个学生的在校生活方式。
第 6 章 如何写好状态机
138
图6-1 某学生在校生活状态转移图
如果读者认为这张图描述的学生生活过于单调而怀疑状态机描述方法的威力,我们再看
看另一位生活丰富多彩的学生的在校生活,他(她)的在校生活方式可以用图 6-2 表示。
图6-2 另一位学生在校生活状态转移图
同样如果将图中的“地点”认为是“状态”,将“功能”认为是状态的“输出”,将“条
件”认为是状态转移的“输入条件”,图 6-2 也是一张标准的状态转移图,通过状态机的方
式我们再次清晰地描述另一个学生的在校生活方式。
事实上使用状态机方式,我们可以细致入微地描述任何一个学生的在校生活方式。大家
通过前面两个简单举例已经发现状态机特别适合描述那些有发生有先后顺序,或者有逻辑规
律的事情——其实这就是状态机的本质。状态机的本质就是对具有逻辑顺序或时序规律事
件的一种描述方法。这个论断的最重要的两个词就是“逻辑顺序”和“时序规律”,这两点
状态机的基本概念
139
就是状态机所要描述的核心和强项,换言之,所有具有逻辑顺序和时序规律的事情都适合用
状态机描述。
很多初学者不知道何时应用状态机。这里介绍两种应用思路:第一种思路,从状态变量
入手。如果一个电路具有时序规律或者逻辑顺序,我们就可以自然而然地规划出状态,从这
些状态入手,分析每个状态的输入,状态转移和输出,从而完成电路功能;第二种思路是首
先明确电路的输出的关系,这些输出相当于状态的输出,回溯规划每个状态,和状态转移条
件与状态输入。无论那种思路,使用状态机的目的都是要控制某部分电路,完成某种具有逻
辑顺序或时序规律的电路设计。
其实对于逻辑电路而言,小到一个简单的时序逻辑,大到复杂的微处理器,都适合用状
态机方法进行描述。请读者打开思路,不要仅仅局限于时序逻辑,发现电路的内在规律,确
认电路的“状态变量”,大胆使用状态机描述电路模型。由于状态机不仅仅是一种电路描述
工具,它更是一种思想方法,而且状态机的 HDL 语言表达方式比较规范,有章可循,所以
很多有经验的设计者习惯用状态机思想进行逻辑设计,对各种复杂设计都套用状态机的设计
理念,从而提高设计的效率和稳定性。
6.1.2 状态机基本要素与分类
状态机的基本要素有 3 个,其实我们在第一节的举例中都有涉及,只是没有点明,它们
是:状态、输出和输入。
• 状态:也叫状态变量。在逻辑设计中,使用状态划分逻辑顺序和时序规律。
比如:设计伪随机码发生器时,可以用移位寄存器序列作为状态;在设计电机
控制电路时,可以以电机的不同转速作为状态;在设计通信系统时,可以用信
令的状态作为状态变量等。
• 输出:输出指在某一个状态时特定发生的事件。如设计电机控制电路中,如
果电机转速过高,则输出为转速过高报警,也可以伴随减速指令或降温措施
等。
• 输入:指状态机中进入每个状态的条件,有的状态机没有输入条件,其中的
状态转移较为简单,有的状态机有输入条件,当某个输入条件存在时才能转移
到相应的状态。
根据状态机的输出是否与输入条件相关,可将状态机分为两大类:摩尔(Moore)型状
态机和米勒(Mealy)型状态机。
• 摩尔状态机:摩尔状态机的输出仅仅依赖于当前状态,而与输入条件无关。
例如图 6-1 所示的例子,将图中的“地点”认为是“状态”,将“功能”认为
是状态的“输出”,则每个输出仅仅与状态相关,所以它是一个摩尔型状态
机。
• 米勒型状态机:米勒型状态机的输出不仅依赖于当前状态,而且取决于该状
态的输入条件。例如图 6-2 所示的例子,将图中的“地点”认为是“状态”,
将“功能”认为是状态的“输出”,将“条件”认为是状态转移的“输入条
件”,大家可以发现,该学生到达什么地方,做什么事情都是由当前状态和输
第 6 章 如何写好状态机
140
入条件共同决定,所以它是一个米勒型状态机。
根据状态机的数量是否为有限个,可将状态机分为有限状态机(Finite State Machine,
FSM)和无限状态机(Infinite State Machine,ISM)。逻辑设计中一般所涉及的状态都是有
限的,所以以后我们所说的状态机都指有限状态机,用 FSM 表示。
6.1.3 状态机的基本描述方式
逻辑设计中,状态机的基本描述方式有 3 种,分别是:状态转移图,状态转移列表,
HDL 语言描述。
• 状态转移图
状态转移图是状态机描述的最自然的方式。如本章第一节图 6-1,6-2 都使
用了状态转移图这一描述方式。状态转移图经常在设计规划阶段定义逻辑功能
时使用,也可以在分析代码中状态机时使用,通过图形化的方式非常有助于理
解设计意图。
另外值得一提的是目前有一些 EDA 工具支持状态转移图作为逻辑设计的
输入,例如在 StateCAD。在该工具中设计者只要画出状态转移图就可以了,
StateCAD 能自动将状态转移图翻译成 HDL 语言代码,而且翻译出来的代码规
范、可读性较好、可综合、易维护。StateCAD 还能能自动检测状态机的完备
性和正确性,对状态转移图中的冗余状态、自锁状态、歧义转移条件和不完备
状态机等隐含错误都会报警,并协助设计者更正错误。最后 StateCAD 会自动
生成设计的测试激励,并调用仿真程序,验证状态机的正确性,这个测试激励
甚至可在后仿真中使用。总之,StateCAD 提供了状态机的输入、翻译、检
测、优化和测试等一条龙的服务,使状态机的设计变得安全、可靠、快速、便
捷。这类自动转换状态转移图为 HDL 源代码的工具对设计、分析一些规模较
小的状态机非常有效,但是由于自动反应的代码过于程式化,效率不是最高,
所以对于较大规模的逻辑设计,一般还是推荐使用 HDL 语言之间描述。
使用 Synplify Pro 的 RTL 视图配合 FSM Viewer 可以将源代码中描述的 FSM 用状态转移图
显示出来,使用图形化的界面帮助用户分析理解状态机。关于使用 FSM Viewer 分析状态机
的方法在本章 6.3 节有详细介绍。
• 状态转移列表
状态转移列表是用列表的方式描述状态机,是数字逻辑电路常用的设计方
法之一,经常被用于对状态化简,对于可编程逻辑设计,由于可用逻辑资源比
较丰富,而且状态编码要考虑设计的稳定性,安全性等因素,所以并不经常使
用状态转移列表优化状态。
• HDL 语言描述状态机
使用 HDL 语言描述状态机是本章讨论的重点,使用 HDL 语言描述状态机
如何写好状态机
141
有一定的灵活性,但是决不是天马行空,而是有章可循的。通过一些规范的描
述方法,可以使 HDL 语言描述的状态机更安全、稳定、高效、易于维护。
6.2 如何写好状态机
本节重点讨论可综合的状态机描述的一些基本规范,即如何在 RTL 级描述安全、高效
的 FSM。
6.2.1 什么是 RTL 级好的 FSM 描述
首先介绍好的 RTL 级 FSM 的评判标准。其实评判 FSM 的标准很多,这里我们拣选最
重要的几个方面讨论一下。好的 RTL 级 FSM 的评判标准如下:
• FSM 要安全,稳定性高。
所谓 FSM 安全是指 FSM 不会进入死循环,特别是不会进入非预知的状态,而
且由于某些扰动进入非设计状态,也能很快的恢复到正常的状态循环中来。这
里面有两层含义,第一:要求该 FSM 的综合实现结果无毛刺等异常扰动;第
二:要求状态机要完备,即使收到异常扰动进入非设计状态,也能很快恢复到
正常状态。
• FSM 速度快,满足设计的频率要求。
任何 RTL 设计都应该满足设计的频率要求。
• FSM 面积小,满足设计的面积要求。
同理任何 RTL 设计都应该满足设计的面积要求。
• FSM 设计要清晰易懂、易维护。
不规范的 FSM 写法很难让其他人解读,甚至过一段时间后设计者也发现很难
维护。
需要说明的是以上所列的各项标准,特别是前 3 项标准绝不是割裂的,它们直接有紧密
的内在联系。如果读者读过本工作室的其他书籍,应该记得其中花了相当长的篇幅论述
FPGA/CPLD 设计评判的两个基本标准:面积和速度。这里“面积”是指一个设计所消耗
FPGA/CPLD 的逻辑资源数量;“速度”指设计在芯片上稳定运行所能够达到的最高频率。
两者是对立统一的矛盾体,要求一个设计同时具备设计面积最小,运行频率最高,这是不现
实的。科学的设计目标应该是:在满足设计时序要求(包含对设计最高频率的要求)的前提
下,占用最小的芯片面积,或者在所规定的面积下,使设计的时序余量更大,频率更高。
另外,如果要求 FSM 安全,则很多时候需要使用“full case”的编码方式,即将状态转
移变量的所有向量组合情况都在 FSM 中有相应的处理,这经常势必意味着要多花更多的设
计资源,有时也会影响 FSM 的频率。
所以,各条标准要综合考虑,根据设计的要求进行权衡。但是如果各条评判标准发生冲
突时,请按照标准的罗列顺序考虑,前文标准的罗列顺序是根据这些标准在设计中的重要性
排列的,也就是说第一条“FSM 要安全,稳定性高”的优先级最高,最重要;第四条
剩余28页未读,继续阅读
qq_37601157
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- zigbee-cluster-library-specification
- JSBSim Reference Manual
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功