Digital System Design12011/6/21Computer Faculty of Guangdong University of Technology大部分数字系统都可以划分为控制单元和数据单元(存储单元)两个组成部分,通常,控制单元的主体是一个状态机,它接收外部信号以及数据单元产生的状态信息,产生控制信号序列。
Digital System Design22011/6/21Computer Faculty of Guangdong University of Technology有限状态机特别适合描述那些发生有先后顺序或者有逻辑规律的事情(其实这就是状态机的本质)。
状态机的本质就是对具有逻辑顺序或时序规律事件的一种描述方法,即“逻辑顺序”和“时序规律”就是状态机所要描述的核心和强项,换言之,所有具有逻辑顺序和时序规律的事情都适合用状态机来描述。
Digital System Design32011/6/21Computer Faculty of Guangdong University of Technology1、基本概念有限状态机(Finite State Machine ,FSM )是表示实现有限个离散状态及其状态之间的转移等行为动作的数学模型。
(关注Matlab 的Stateflow )(1)状态:也叫状态变量。
在逻辑设计中,使用状态划分逻辑顺序和时序规律。
状态名称、状态编码、进入/退出操作、内部转移、子状态、延迟事件Digital System Design42011/6/21Computer Faculty of Guangdong University of Technology(2)转移:指两个状态之间的关系,表示当发生指定事件且满足指定条件时,第一个状态中的对象将执行某些操作并进入第二个状态,即“触发”了转移。
将触发转移之前的状态定义为“源”状态(初始状态),而触发转移之后的状态定义为“目标”状态(次态)。
初始状态、转移条件、警戒条件、转移操作、目标状态Digital System Design52011/6/21Computer Faculty of Guangdong University of Technology概括而言,状态机由状态组成,各状态由转移连接在一起。
状态是执行某项活动或等待某个事件的条件。
转移是两个状态之间的关系,它由某个事件触发,然后执行特定的操作或评估并导致特定的结束状态。
状态的图示如下转移方向转移条件(触发事件)Digital System Design62011/6/21Computer Faculty of Guangdong University of Technology状态转换图如下图所示。
输出011/00Res/Q1Q2Digital System Design72011/6/21Computer Faculty of Guangdong University of Technology状态转换表如表5.1所示。
Digital System Design82011/6/21Computer Faculty of Guangdong University of Technology(3)状态机的分类①摩尔型状态机和米勒型状态机。
摩尔型状态机:利用组合逻辑链将当前状态译码转化为输出,其状态只在全局时钟信号改变时才改变。
其最重要的特点就是将输入与输出信号隔离,所以输出稳定,能有效消除竞争冒险。
如无特殊功能设计要求,摩尔状态机是设计首选。
Digital System Design92011/6/21Computer Faculty of Guangdong University of Technology输入Digital System Design102011/6/21Computer Faculty of Guangdong University of Technology米勒型状态机:其输出与当前状态和输入都有关,且对输入的响应发生在当前时钟周期,比摩尔型状态机对输入信号的响应要早一个周期。
所以输入信号的噪声会直接影响输出信号,即具有竞争冒险且不能消除。
Digital System Design 11 2011/6/21 Computer Faculty of Guangdong University of Technology输入Digital System Design 122011/6/21 Computer Faculty of Guangdong University of Technology②同步状态机和异步状态机异步状态机的状态转移不由唯一的时钟边沿触发,目前多数综合工具在对异步状态机进行逻辑优化时会胡乱地简化逻辑,使综合后的异步状态机不能正常工作。
因此,应尽量不要使用综合工具来设计异步状态机。
为了能综合出有效的电路,用VerilogHDL 描述的状态机应明确地由唯一时钟触发,称之为同步状态机,它是设计复杂时序逻辑电路最有效、最常用的方法之一。
异步状态机实现的功能通常都可以由同步状态机来实现。
Digital System Design 132011/6/21 Computer Faculty of Guangdong University of Technology③单进程、双进程和多进程状态机一个有限状态机总是可以被分成状态译码、状态寄存器和输出译码三个模块,可以有五种不同的方式将这些模块分配到进程语句,以实现对状态机的描述。
A. 三个模块用一个进程实现,也就是说三个模块均在一个always 块内,这种状态机描述称为单进程有限状态机,它既描述状态转移,又描述状态的寄存和输出。
Digital System Design 14 2011/6/21Computer Faculty of Guangdong University of TechnologyB.每一个模块分别用一个进程实现,也就是说三个模块对应着三个always 块,这种状态机描述称为三进程有限状态机,其中一个always 模块采用同步时序描述状态转移;另一个模块采用组合逻辑判断状态转移条件,描述状态转移规律;第三个always 模块使用同步时序电路描述每个状态的输出。
Digital System Design 152011/6/21 Computer Faculty of Guangdong University of TechnologyC. 次态译码、输出译码分配在一个进程中,状态寄存器用另一个进程描述。
D. 次态译码、状态寄存器分配在一个进程中,输出译码用另一个进程描述。
E. 次态译码用一个进程描述,状态寄存器、输出译码用另一个进程描述。
在后三种状态机描述中,三个模块对应着两个always 块,这种状态机描述称为Digital System Design 16 2011/6/21 Computer Faculty of Guangdong University of Technology2、状态机的设计流程Digital System Design 172011/6/21 Computer Faculty of Guangdong University of Technology3、状态机的编码方式状态机的N 种状态通常需要用某种编码来表示,即状态编码,又称为状态分配。
(1)顺序二进制码:最紧密的编码,使用状态向量的位数最少,类似与前述的二进制编码器。
但从一个状态转移到相邻状态时,可能会有多个比特位发生变化,易产生毛刺。
(2)格雷码:在相邻状态的转换中,每次只有一个比特位发生变化,消除了产生毛刺的问题,但不适用于有很多状态跳转的情况。
(3)独热码:指对任意给定的状态,状态向量中仅有一位“1”,而其Digital System Design 182011/6/21 Computer Faculty of Guangdong University of Technology余为“0”,所以N 状态的状态机需要N 个触发器。
(4) 直接输出型编码:将状态码中的某些位直接输出作为控制信号,要求状态机各状态的编码作特殊的选择,以适应控制信号的要求,该编码需要根据输出变量来定制编码。
独热码是指对任意给定的状态,状态向量中仅有一位为“1”而其余位都为“0”。
(1) 独热编码的状态机具有高速的特点。
状态机的速度与其状态的数量无关,仅取决于状态跳转的数量;(2) 独热编码方法无须考虑最优状态编码,当修改状态机时,添加的状态编码和原始的编码都具有同等的功能;(3) 关键路径很容易被发现,有利于进行准确的静态时序分析;(4) 任何状态都可以直接进行添加/删除等修改而不会影响状态机的其余部分;Digital System Design 19 2011/6/21Computer Faculty of Guangdong University of Technology (5) 具有设计描述简单易懂和维护便利的特点,更有利于使用FPGA 器件完成综合和实现。
Digital System Design 202011/6/21 Computer Faculty of Guangdong University of Technology其缺点是:(1) 当任意状态发生跳转时,与之相关的一位也必发生跳变。
由于状态机的输出是由寄存器生成的,如果变化的状态位越多,产生的毛刺就越多。
(2) 可能会有很多的无效状态,应确保状态机一旦进入无效状态时,可以立即跳转到确定的已知状态以避免死锁现象的出现。
Digital System Design212011/6/21Computer Faculty of Guangdong University of Technology例 给定状态机的状态转换图如下,实现的功能是当输入信号A 出现110序列时输出信号Y 为1,否则为0.0/01/0初始状态Digital System Design222011/6/21Computer Faculty of Guangdong University of Technology编码方式表Digital System Design232011/6/21Computer Faculty of Guangdong University of Technology4 状态机容错和设计准则(1) 状态机的容错一个完备的状态机(健壮性强)应该具备初始化状态和默认状态。
当芯片加电或者复位后,状态机应能够自动将所有判断条件复位,并进入初始化状态。
另一方面,状态机也应有一个默认状态(default ),当转移条件不满足或者状态发生突变时,要能保证逻辑不会陷入“死循环”,即状态机可以自恢复。