找回密码
 注册
关于网站域名变更的通知
查看: 291|回复: 1
打印 上一主题 下一主题

FPGA工程师:如何在FPGA中实现状态机?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-2-20 17:58 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x

FPGA常常用于执行基于序列和控制的行动,比如实现一个简单的通信协议。对于设计人员来说,满足这些行动和序列要求的最佳方法则是使用状态机。状态机是在数量有限的状态之间进行转换的逻辑结构。一个状态机在某个特定的时间点只处于一种状态。但在一系列触发器的触发下,将在不同状态间进行转换。

  理论上讲,状态机可以分为Moore状态机和Mealy状态机两大类。它们之间的差异仅在于如何生成状态机的输出。Moore状态机的输出仅为当前状态的函数。典型的例子就是计数器。而Mealy状态机的输出是当前状态和输入的函数。典型的例子就是Richards控制器。

  定义状态机

  当需要定义一个状态机时,首先要绘制一张状态图。状态图可用来显示状态、状态间的转换和状态机的输出。图1显示了Moore状态机的状态图(左)和Mealy状态机的状态图(右)。

  

  图1 用于开/关LED的Moore状态机(左)和Mealy状态机(右)的状态图。

  如果您要在物理组件中实现这些状态图(工程师在FPGA问世之前就是这么做的),首先就得生成当前状态和后续状态表,然后生成实现状态机所需的逻辑。不过由于我们将使用FPGA来实现设计,因此我们可以直接从状态转换图开始工作。

  算法状态图

  虽然有许多状态机是使用图1所示的状态图方法进行设计的,但另外还有一种描述状态机行为的方法,这就是算法状态图法。ASM图(图2)在外观上更加接近软件工程流程图。它由三个基本部分构成:

  1.状态框。它与状态名称有关,并包含Moore状态输出列表。

  2.决策框。如果检验某条件为真,则进行下一状态的判断。

  3.条件输出框。让状态机根据当前状态和输入描述Mealy输出。

  一些工程师认为,如果使用VHDL等硬件描述语言,则采用ASM格式进行描述的状态机更易于映射到实现方案中。

  

  图2,用于图1所示的状态机(Moore状态机(左),Mealy状态机(右))的算法状态图。


( m+ \& L# U% k. O* {

该用户从未签到

2#
发表于 2021-2-20 18:25 | 只看该作者
Mealy状态机的输出是当前状态和输入的函数
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-8-12 15:37 , Processed in 0.125000 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表