- 1、本文档共124页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
图6-1 同步状态机框图 6.1.2 有限状态机的描述方式 常用的描述有限状态机的方法是状态转移图(State Transition Graph,STG)和算法状态机表(ASM chart)。这两种方法都是用来描述系统内部以及系统与周围接口信号的有效输入与状态转移关系的,其中状态转移图描述比较紧凑简洁,非常适合简单的应用,而算法状态图类似于软件流程图,适合描述复杂的状态转换和数据传输。 1.状态转移图 状态转移图是一种有向图,由节点和弧线组成。节点与时序状态机的状态一一对应,弧线为有向线,表示起点状态在输入信号的作用下可能发生的状态转移的条件,当条件满足时,触发起点状态跳转到新的状态。如图6-2(a)所示为一个简单的状态转移图节点,标注在弧线上的外部输入信号的逻辑表达式为状态跳转的条件。 摩尔状态机的输出值仅与当前状态有关,所以其值在节点圆中表示。而米利状态机的输出值与当前状态和外部输入都有关,为了简化状态图的分支,输出值随跳转条件一起在弧线上列举出来,如果没有列举,则输出值保持默认值。 图6-2 状态机符号描述 图6-3(a)所示为一个复杂的状态图,包含有三个状态、两个外部输入信号(a和b)、一个摩尔输出(y1)和一个米利输出(y0)。y1在状态机状态为s0和s1时逻辑输出;y0在状态为s0并且a和b信号为“11”时逻辑输出。 图6-3 状态机STG和ASM图描述 2.算法状态机图 算法状态机(Algorithmic State Machine,ASM)图是时序状态机功能的抽象表达方式,类似于软件流程图。该图在描述时序状态机的行为方面以及设计状态机来控制数据通道方面都是非常有用的。其描述主要由四部分组成:状态转移框、条件输出、寄存器操作框和判决框。状态转移框为状态机主体,对于摩尔状态机,其输出逻辑值在状态转移框中表示,并且仅有一条输出路径。对于米利状态机,条件判决框通过判断外部输入决定状态输出路径,它有两条输出路径,标记为T和F,分别对应外部输入条件为真和假两种情况下的输出路径。米利状态机的输出逻辑在条件判断框之后,表示在对应状态条件和外部条件同时满足的情况下,米利状态机才可输出。 状态转移图和ASM图之间可以灵活转换,如图6-2(a)和(b)及图6-3(a)和(b)所示,采用两种不同的描述方式描述同一个状态机。 6.1.3 有限状态机的HDL开发 1.状态机描述的编码方式 在状态机的描述中,为了更清楚地表示状态,一般采用带有意义的常数符号来定义状态参数。如图6-3所示的三个状态可以定义为 localparam[1:0] s0 = 2b00, s1 = 2b01, s2 = 2b10; 需要注意的是,状态机的定义用localparam或者parameter,不推荐使用define宏定义的方式。这是因为采用define宏定义在编译时会自动替换整个设计中所有的宏,而parameter仅仅定义模块内部的参数,定义的参数不会与模块外的其他状态机混淆。 状态机的编码方式很多,包括顺序编码、格雷玛(Gray Encoding)、一位热码(One-Hot Encoding)、BCD码等。虽然在综合过程中,综合工具可以辨别出状态机结构,并可以根据需求将这些状态机符号常数映射为各种二进制形式,但是在FPGA设计中,编码方式可影响状态机的执行效率和功能,所以建议读者在设计中根据不同的需求,选择不同的编码方式,具体请参考表6-1。 2.状态机HDL描述 状态机HDL描述包含三部分:同步时序描述状态转移、下一状态逻辑跳转产生、摩尔和米利逻辑输出。 【程序6-1】 三段式状态机描述。 module three_seg_fsm ( input wire clk, reset, input wire a, b, output wire y0, y1 ); // 定义状态常数 localparam [1:0] s0 = 2b00, s1 = 2b01, s2 = 2b10; // 信号声明 reg [1:0] state_reg, state_next; // 状态机寄存器描述 always @(posedge clk, posedge reset) if (reset) state_reg = s0; else state_
您可能关注的文档
- Windows应用程序设计案例教程 湖南省教育科学“十一五”规划重点资助课题研究成果教材 教学课件 陈承欢 第8章 名片管理应用程序设计.ppt
- Windows应用程序设计案例教程 湖南省教育科学“十一五”规划重点资助课题研究成果教材 教学课件 陈承欢 第9章 图书管理应用程序设计.ppt
- Windows应用程序设计案例教程 湖南省教育科学“十一五”规划重点资助课题研究成果教材 教学课件 陈承欢 第10章 Windows应用程序设计综合实训.ppt
- Word 2000、Excel 2000实用教程 第二版 教学课件 作者 高长铎 胡维青 项目八 使用Word制作数学试卷.ppt
- Word 2000、Excel 2000实用教程 第二版 教学课件 作者 高长铎 胡维青 项目二 使用Word制作杂志页.ppt
- Word 2000、Excel 2000实用教程 第二版 教学课件 作者 高长铎 胡维青 项目九 使用Word制作小报.ppt
- Word 2000、Excel 2000实用教程 第二版 教学课件 作者 高长铎 胡维青 项目六 使用Word制作成绩通知单.ppt
- Word 2000、Excel 2000实用教程 第二版 教学课件 作者 高长铎 胡维青 项目三 使用Word制作履历表.ppt
- Word 2000、Excel 2000实用教程 第二版 教学课件 作者 高长铎 胡维青 项目十 使用Excel制作校历.ppt
- Word 2000、Excel 2000实用教程 第二版 教学课件 作者 高长铎 胡维青 项目十二 使用Excel制作奖金发放表.ppt
文档评论(0)