第八章-状态机.ppt

  1. 1、本文档共86页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

8.1VHDL一般状态机有限状态机设计技术是实用数字系统设计中的重要组成部分,是实现高效率、高可靠逻辑控制的重要途径。有限状态机的设计理论并没有增加多少新的内容,然而面对先进的EDA工具、日益发展的大规模集成电路技术和强大的VHDL硬件描述语言等,有限状态机在其具体的设计技术和实现方法上又有了许多新的内容。本章从实用的目的,重点介绍用VHDL设计不同类型有限状态机的方法,同时考虑EDA工具和设计实现中许多必须重点关注的问题。用VHDL可以设计不同表达方式和不同实用功能的状态机,然而它们都有相对固定语句和程序表达方式,只要把握了这些固定的语句表达部分,就能根据实际需要写出各种不同风格的VHDL状态机。8.1.1类型定义语句TYPEVHDL有限状态机涉及的相关语句类型和语法表述在此前的语法介绍中多己涉及,本节将介绍与有限状态机设计有重要联系的用户自定义数据类型定义语句。除了上述一些标准的预定义数据类型外,如整数类型、Boolean类型、标准逻辑位类型std_logic等,VHDL还允许用户自行定义新的数据类型。由用户定义的数据类型可以有多种,如枚举类型、整数类型、数组类型、记录类型、时间类型、实数类型等。用户自定义数据类型是用类型定义语句TYPE和子类型定义语句SUBTYPE实现的.格式:TYPE数据类型名IS数据类型定义OF基本数据类型;或TYPE数据类型名IS数据类型定义;其中,数据类型名由设计者自定,此名将作为数据类型定义之用,方法与以上提到的预定义数据类型的用法一样;数据类型定义部分用来描述所定义的数据类型的表达方式和表达内容;关键词OF后的基本数据类型是指数据类型定义中所定义的元素的基本数据类型,一般都是取已有的预定义数据类型,如BIT、STD_LOGIC或INTEGER等。以下列出了两种不同的定义方式:TYPEst1ISARRAY(0TO15)OFSTD_LOGIC;TYPEweekIS(sun,mon,tue,wed,thu,fri,sat);第一句定义的数据类型stl是一个具有16个元素的数组型数据类型,数组中的每一个元素的数据类型都是STD_LOGIC型;第二句定义的数据类型属于枚举类型,是由一组文字符号表示的,而其中的每一文字都代表一个具体的数值,如可令sun=“10l0”。VHDL中的枚举数据类型是一种特殊的数据类型,它们是用文字符号来表示一组实际的二进制数。例如,状态机的每一状态在实际电路中是以一组触发器的当前二进制数位的组合来表示的,但设计者在状态机的设计中,为了更利于阅读、编译和VHDL综合器的优化,往往将表征每一状态的二进制数组用文字符号来代表,即所谓状态符号化。例如:TYPEm_stateIS(st0,st1,st2,st3,st4,st5);SIGNALpresent_state,next_state:m_state;在这里,信号Present_state和next_state的数据类型定义为m_state,它们的取值范围是可枚举的,即从st0~st5共六种,而这些状态代表六组惟一的二进制数值。实际上,在VHDL中的许多十分常用的数据类型,如位(BIT)、布尔量(B00LEAN)、字符(CHARACTER)及STD_LOGIC等都是程序包中已定义的枚举型数据类型。例如布尔数据类型的定义语句是:TYPEBOOLEANIS(FALSE,TRUE);其中FALSE和TRUE都是可枚举的符号,综合后它们分别用逻辑值’0’和’1’表示。对于此类枚举数据,在综合过程中,都将转化成二进制代码。当然枚举类型也可以直接用数值来定义,但必须使用单引号,如:TYPEmy_logicIS(1,Z,U,0);SIGNALs1:my_logic;s1=Z;在综合过程中,枚举类型文字元素的编码通常是自动设置的,综合器根据优化情况、优化控制的设置或设计者的特殊设定来确定各元素具体编码的二进制位数、数值及元素间编码顺序。一般情况下,编码顺序是默认的,如一般将第一个枚举量(最左边的量)编码为0或0000等,以后的依次加l。综合器在编码过程中自动将每一枚举元素转变成位矢量,位矢量的长度根据实际情况决定。如前例中用于表达6个状态的位矢量长度可以为3,编码

文档评论(0)

177****7891 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档