下载 - Xilinx
下载 - Xilinx
下载 - Xilinx
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
状态机往往是 FPGA 开<br />
发的主力。选择合适的架<br />
构和实现方法将确保您获<br />
得一款最佳解决方案。<br />
手把手课堂:FPGA 101<br />
FPGA 常 常 用 于 执 行 基 于 序 列 和 控 制 的 行 动, 比<br />
如实现一个简单的通信协议。对于设计人员来说,<br />
满足这些行动和序列要求的最佳方法则是使用状<br />
态机。状态机是在数量有限的状态之间进行转换的逻辑结<br />
构。一个状态机在某个特定的时间点只处于一种状态。但<br />
在一系列触发器的触发下,将在不同状态间进行转换。<br />
理论上讲,状态机可以分为 Moore 状态机和 Mealy 状态机<br />
两大类。它们之间的差异仅在于如何生成状态机的输出。<br />
Moore 状态机的输出仅为当前状态的函数。典型的例子就是计<br />
数器。而 Mealy 状态机的输出是当前状态和输入的函数。典型<br />
的例子就是 Richards 控制器(参见 http://en.wikipedia.org/wiki/<br />
Richards_controller)。<br />
定义状态机<br />
当需要定义一个状态机时,首先要绘制一张状态图。状态<br />
图可用来显示状态、状态间的转换和状态机的输出。图 1 显示<br />
了 Moore 状态机的状态图(左)和 Mealy 状态机的状态图(右)。<br />
如果您要在物理组件中实现这些状态图(工程师在 FPGA<br />
问世之前就是这么做的),首先就得生成当前状态和后续状态表,<br />
然后生成实现状态机所需的逻辑。不过由于我们将使用 FPGA<br />
来实现设计,因此我们可以直接从状态转换图开始工作。<br />
算法状态图<br />
虽然有许多状态机是使用图 1 所示的状态图方法进行设计<br />
的,但另外还有一种描述状态机行为的方法,这就是算法状态<br />
图法。ASM 图(图 2)在外观上更加接近软件工程流程图。它<br />
由三个基本部分构成:<br />
1. 状态框。它与状态名称有关,并包含 Moore 状态输出列<br />
2012 年冬季刊 赛灵思中国通讯 46 期 47<br />
表。<br />
2. 决策框。如果检验某条件为真,则进行下一状态的判断。<br />
3. 条件输出框。让状态机根据当前状态和输入描述 Mealy<br />
输出。<br />
一些工程师认为,如果使用 VHDL 等硬件描述语言,则采<br />
用 ASM 格式进行描述的状态机更易于映射到实现方案中。<br />
MOORE 和 MEALY:应该选择哪个?<br />
实现 Moore 状态机还是 Mealy 状态机,取决于状态机需要<br />
实现的功能,以及特定的反应次数要求。两种状态机之间的最<br />
大差别在于状态机如何对输入做出反应。在输入和设置的适当<br />
输出之间,Moore 状态机一般有一个时钟周期的延迟。这就意<br />
味着 Moore 状态机无法对输入变化立即做出反应,这点在图 3<br />
中可以清楚地看到。而 Mealy 状态机则能够立即对输入做出反<br />
应,这通常意味着:实现相同的函数,Mealy 状态机比 Moore