- 1、本文档共27页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第十讲 有限状态机FSM
引言 现代数字系统的设计中,一般都采用自顶向下的模块化设计方法。即从整个系统的功能出发,将系统分割成若干功能模块。在自顶向下划分的过程中,最重要的是将系统或子系统按计算机组成结构那样划分成控制器和若干个受控功能模块。 受控部分通常是设计者们所熟悉的各种功能的电路,设计较为容易。主要任务是设计控制器,而其控制功能可以用有限状态机来实现。 状态机作用:在时序电路中用来控制电路的状态变化。即在时钟节拍的控制下,电路按节拍执行一系列指定的状态(状态转移)。 传统的设计方法是首先绘制出控制器的状态图,并由此列出状态表,再合并消除状态表中的等价状态项。在完成状态寄存器的分配之后,根据状态表求出次态及输出方程,最后画出设计原理图。这种设计方法设计的复杂状态机很繁杂。 利用VHDL设计状态机,不需要进行繁琐的状态分配、绘制状态表和简化次态方程。设计者不必使用卡诺图进行逻辑化简,不必画电路原理图,也不必搭试硬件电路进行逻辑功能的测试,所有这些工作都可以通过EDA工具自动完成。 状态机的优点: 1.结构模式及设计方案相对固定; 2.易构建良好的同步时序模块,解决竞争冒险是上佳选择; 3.程序层次分明,结构清晰,易读易懂,可移植性好; 4.运行速度快,比CPU高出近两个数量级,在高速运算和控制方面,有着巨大的优势; 5.可靠性高。如复位时间,与CPU相比,复位时间短的多; 由状态机构成的硬件系统广泛应用在一般CPU无法胜任的领域,如超高速串行或并行AD、DA的控制,硬件串行通信接口RS232、PS/2、USB的实现等 5.1 状态机设计相关语句---类型定义语句 VHDL允许用户自行定义新的数据类型,主要由类型定义语句TPYE实现; TYPE 数据类型名IS 数据类型定义; TYPE m_state IS ( st0,st1,st2,st3,st4,st5 ) ; SIGNAL present_state,next_state : m_state ; st0、st1、……是属于枚举类型,是由一组文字符号表示的,而其中的每一文字都代表一个具体的数值; 状态符号化:在状态机的设计中,为了更利于阅读、编译和VHDL综合器的优化,将表征每一状态的二进制数用文字符号来代表; 在综合过程中,枚举类型文字元素的编码通常由综合器自动设置,也可以由设计者来进行特殊设定。 5.1 状态机设计相关语句---状态机结构 状态机的分类: 从信号输出方式划分:Mealy型和Moore型; 从结构上划分:单进程状态机和多进程状态机; 从状态表达方式上划分:符号化状态机和确定状态编码的状态机; 从编码方式上划分:顺序状态编码、一位热码编码或其他编码方式状态机。 最一般和最常用的状态机通常包含说明部分、主控时序进程、主控组合进程、辅助进程 1、说明部分 说明部分中使用TYPE语句定义新的数据类型,此数据类型为枚举型,其元素通常用状态机的状态名来定义; 状态变量(如现态和次态)应定义为信号,便于信息传递,并将状态变量的数据定义为含有既定状态元素的新定义的数据类型; 说明部分放在结构体的Architecture和Begin之间: ARCHITECTURE ...IS TYPE FSM_ST IS (s0,s1,s2,s3); SIGNAL current_state, next_state: FSM_ST; Begin …… 2、主控时序进程 主控时序进程负责状态机运转和在时钟驱动下负责状态转换; 状态机向下一状态(包括再次进入本状态)的转换仅取决于时钟信号的到来; 当时钟的有效跳变到来时,时序进程只是机械地将代表次态的信号nexe_state中的内容送入现态的信号current_state中,而nexe_state中的内容完全由其他进程根据实际情况来决定。 3、主控组合进程 主控组合进程通过信号current_state进入相应的状态,并在此状态中根据外部的信号(指令)如state_inputs等向内或/向外发出控制信号,如comb_outputs,同时确定下一状态的走向,即向次态信号next_state中赋入相应的状态值。此状态值通过next_state传给时序进程,直至下一个时钟脉冲的到来在进入另一次的状态转换周期。 主控组合进程也可称为状态译码过程,负责根据外部输入的控制信号,执行特定的功能。 辅助进程:辅助进程用于配合状态机工作的组合进程或时序进程。例如为了完成某种算法的进程,为了稳定输出设置的数据锁存器等。 ……USE IEEE.STD_LOGIC_1164.ALL; ENTITY s_machine IS PORT ( clk,reset : IN STD_LOGIC; state_inputs : IN
文档评论(0)