- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[工学]第07章状态机设计
* EDA技术与VHDL 第7章 状态机设计 状态编码 状态机处理 Mealy型有限状态机 一般有限状态机 Moore型有限状态机设计 4. 本章教学基本要求 2. 掌握Moore型有限状态机设计 掌握一般有限状态机 1. 3. 掌握Mealy型有限状态机 掌握状态编码、掌握状态机处理 7.1.1 数据类型定义语句 有限状态机涉及的相关语句类型和语法表述在此前的语法介绍中多己涉及,这里仅介绍于状态机设计有联系的其他语法现象,即自定义数据类型定义语句及相关的语法。 除一些标准的预定义数据类型外,如整数类型、BOOLEAN类型、标准逻辑位类型STD_LOGIC等,VHDL还允许用户自行定义新的数据类型。由用户定义的数据类型可以有多种,如枚举类型(Enumeration Types)、整数类型(Interger Types)、数组类型(Array Types)、记录类型(Record Types)、时间类型(Time Types)、实数类型(Real Types)等。 用户自定义数据类型是用类型定义语句TYPE和子类型定义语句SUBTYPE实现的。 TYPE语句的用法如下: TYPE 数据类型名 IS 数据类型定义 OF 基本数据类型; 或 TYPE 数据类型名 IS 数据类型定义 7.1 一般有限状态机 利用TYPE语句进行数据类型定义有两种不同的格式,但方法是相同的。其中,数据类型名由设计者自定,此名将作为数据类型定义时用,方法与以上提到的预定义数据类型的用法一样;数据类型定义部分用来描述所定义的数据类型的表达方式和表送内容;关键词OF后的基本数据类型是指数据类型定义中所定义的元素的基本数据类型,一般都是取己有的预定义数据类型,如BIT、STD_LOGIC或INTEGER等。 以下列出了两种不同的定义方式。 TYPE st1 IS ARRAY (0 TO 15) OF STD_LOGIC; TYPE week IS (sun,mon,tue,wed,thu,fri,sat); 第一句定义的数据类型st1是一个具有16个元素的数组型数据类型,数组中的每一个元素的数据类型都是STD_LOGIC型,第二句定义的数据类型属于枚举类型,是由一组文字符号表示的,而其中的每一文字都代表一个其体的数值,如可令sun=”1010”。 VHDL中的枚举数据类型是一种特殊的数据类型.它们是用文字符号来表示一组实际的二进制数。例如状态机的每一状态在实际电路中是以一组触发器的当前二进制数位的组合来表示的,但设计者在状态机的设计中,为了更利于阅读、编译和VHDL综合器的优化,往往将表征每一状态的二进制数组用文字符号来代表,即所谓状态符号化,例如: TYPE m_state IS (st0,st1,st2,st3,st4,st5) SIGNAL presen_state,next_state : m_state; 在此,信号present_state和next_stave的数据类型被定义为m_state,它们的取值范围是可枚举的,即从st0-st5共6种,而这些状态代表6组唯一的二进制数值。实际上,在VHDL中许多常用的数据类型,如位(bit),布尔量(boolean),字符(charcacter)及STD_LOGIC等都是程序包中已定义的枚举型数据类型。例如布尔数据类型的定义语句是: TYPE BOOLEAN IS (FALSE,TRUE); 其中FALSE和TRUE都是可枚举的符号,如前所述,综合后它们被分别用逻辑值0和1表示。对于此类枚举数据,在综合过程中,都将转化成二进制代码。当然权举类型也可以直接用数值来定义,但必须使用单引号,如; TYPE my_logic IS (‘e’,‘d’,‘a’); SIGNAL s1:my_logic; s1=‘d’; 在综合过程中,枚举类型文字元素的编码通常是自动设置的综合器根据优化情况、优化控制的设置或设计者的特殊设定来确定各元素具体编码的二进制位数、数值及元素间编码的顺序。一般情况下,编码顺序是默认的。如一般将第一个枚举量〔最左边的量)编码为0或0000等,以后的依次 加1。综合器在编码过程中自动将每一枚举元素转变成位矢量,位矢量的长度根据实际情况决定。 子类型SUBTYPE只是由TYPE所定义的原数据类型的一个子集,它满足原数据类型的有约束条件,原数据类型称为基本数据类型。子类型SUBTYPE的语句格式如下: SUBTYPE 子类型名 IS 基本数据类型 RANGE 约束范围; 子类型的定义只在基本数据类型上作一些约束.并没有定义新的数据类型,这是与TYPE最大的不同之处。子类型定义中的基本
文档评论(0)