基于Verilog和VHDL的状态机设计技术

时间:2022-09-30 08:04:16

基于Verilog和VHDL的状态机设计技术

摘要:对于数字逻辑工程师来说,设计一个同步有限状态机(FSM)是一项很常见的任务。该论文讨论了若干关于设计有限状态机方面的问题,包括用于状态分配的状态编码方法,状态机的输入输出等等。

关键词:有限状态机;状态编码;状态分配

中图分类号:TP399文献标识码:A文章编号:1009-3044(2012)24-5897-02

Design Technology of State Machine Based on Verilog and VHDL

JI Yong

(Yangzhou Polytechnic Institute, Yangzhou 225127, China)

Abstract: Designing a synchronousfinite state machine (FSM) is a common task for a digital logic engineer. This paper will discuss a vari? ety of issues regarding FSM design, including status coding method for status assignment, input and output of state machine.

Key words: FSM; state coding; state assignment

通常情况下设计一个状态机最重要的决策是使用什么状态编码。一个不恰当的选择会导致状态机使用太多的逻辑或者运行太慢,甚至这两种坏结果都会出现。现在已经开发出了很多能够选择优化的状态编码的工具和技术。这些方法一般都使用了最少的状态位或者采取诸如PLA的两层逻辑实现。下面将进行详细讨论。

3.1高级编码的状态分配

一个高级编码的状态分配对于状态向量来说只使用很少的触发器,同时需要一个附加的逻辑来完成状态的编码和译码。

3.1.1一位热码编码

在一位热码方式的编码中,一位状态向量表示一个给定的状态。所有其他的状态位都为零,因此如果有N个状态就要有N个状态触发器。因为状态位本身就直接可以用来指示状态机是否处于一个特定的状态,所以状态的译码是非常简单的,也不需要附加的逻辑。使用一位热码设计技术具有很多优势:

1)一位热码通常运行的更快。速度与状态的数量无关,而是仅仅取决于转换到特定状态的数量。当增加了更多的状态后,高级编码的状态机的速度会明显变慢。

2)无需考虑寻找“最佳的”状态编码的问题。当修改状态机的设计时,这一点具有特别的益处的。因为当你增加了一些状态或者改变了其他一些东西时,一种被认为是最佳的设计可能就不再是最好的了。而一位编码对于任何状态机都可以说是最佳的。

3)很容易用硬件描述代码来设计一位热码状态机,能够在没有状态编码表的情况下直接根据状态图编写。

4)易于修改。当增加或者删除状态或者改变激励方程时,对状态机的修改可以在不影响其余部分的情况下完成。

5)相对于高级编码状态机,通常不需要占用大量的布线区域。

6)通过静态时序分析可以很容易的找出关键路径。

7)易于调试。很容易发现虚假的状态变迁,当前显示的状态也没有很大的意义。

3.1.2准一位热码编码

如果状态机具有两组几乎功能相同的状态时(例如对同一个设备进行读操作和写操作),就可以使用准一位热码,用一个标志或者一位状态位来指示当前有限状态机在哪个状态组里,剩下的状态位就是一位热码的编码。这样对一个给定的状态进行译码时我们就必须检测两个状态位。这种方法拥有纯一位热码的大部分优点,但是需要少量的逻辑。不过需要注意的是虽然标志位在技术上是状态向量的组成部分,但最好把标志触发输出引脚看成状态机的另一个输入。

另一种准一位热码的编码方法对初始状态使用全零或者“无热码”的编码。因为所有的触发器已经置零,所以这种编码使得状态机容易进入复位状态。这一点在需要同步复位的情况下特别有用。

的)。即使在你编写的代码中仅仅使用了你确定什么时候有效的信号,因为设计编译器会进行逻辑优化,这种改变会导致瞬态干扰。唯一的防止这个问题的方法是带有使能输入信号门电路。这个使能信号通常是对状态向量进行简单的译码。只有使能为真时,门电路的输出才是非零,这样就不会出现不确定的情况。门电路的输出用来取代有限状态机中的输入信号。

有限状态机是重要的逻辑设计方法,通过状态转移图可以将复杂的控制时序分解为状态之间的转换关系,并通过硬件描述语言,使硬件电路设计软件化,提高了EDA设计的灵活性和可靠性。该文所讨论的有限状态机的设计思想具有一定的通用性,有助于在实践中快速完成状态机的设计。

上一篇:有机农业之问 下一篇:CELTS-41.1教育资源建设技术规范难点实现