17.08.2013 Views

下载 - Xilinx

下载 - Xilinx

下载 - Xilinx

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!