




已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第九讲VHDL自定义数据类型及类型转换,本讲知识点:自定义数据类型数据类型转换,(1)TYPE语句用法:TYPE数据类型名IS数据类型定义OF基本数据类型;,用户自定义数据类型,用户定义的数据类型可以有多种,如枚举类型、整数类型、实数类型、数组类型、记录类型和时间类型等。,上述格式中的数据类型名由设计者自定;数据类型定义部分用来描述所定义元素的表达方式和表达内容;基本数据类型是指数据类型定义中所定义的基本数据类型,一般都是取已有的预定义数据类型。,例:typest1isarray(0to15)ofstd_logic;typeweekis(sun,mon,tue,wed,thu,fri,sat);,常用的自定义数据类型,枚举数据类型:,typeweekis(sun,mon,tue,wed,thu,fri,sat);,在逻辑电路中,所有的数据都是用“1”或“0”来表示的,但是人们在考虑逻辑关系时,只有数字往往是不方便的。在VHDL语言中,可以用文字符号来表示一组实际的二进制数。,“000”“001”“010”“011”“100”“101”“110”,例如:typem_stateis(state1,state2,state3,state4,state5);signalp_state,n_state:m_state;,在综合过程中,枚举类型文字元素的编码通常是自动的,编码顺序是默认的,一般将第一个枚举量(最左边的量)编码为0,以后的依次加1。默认编码值如下:state1000;state2001;state3010;state4011;state5100;,思考:如何表示STD_LOGIC类型?,数组类型:,语句格式如下:(1)TYPE数组名ISARRAY(数组范围)OF数据类型;(2)TYPE数组名ISARRAY(数组下标名RANGE)OF数据类型,数组类型属复合类型,是将一组具有相同数据类型的元素集合在一起,作为一个数据对象来处理的数据类型。数组可以是一维数组或多维数组。,例:typestbisarray(7downto0)ofstd_logic;该数组有8个元素,其下标排列是7、6、1、0。typedata_busisarray(0to7)ofbit;该数组有8个元素,其下标排列是0、1、6、7。TYPEbit_numberISARRAY(naturalRANGE)OFBIT;VARIABLEbb:bit_number(1to6);,对数组赋值有两种方法:一是对整个数组进行一次赋值;二是按下标对每一个数组元素进行赋值。例:typedata_busisarray(0to7)ofbit;signala:data_bus;整体赋值:a=“01000111”;分别赋值:a(0)=0;a(1)=1;a(2)=0;a(3)=0;a(4)=0;a(5)=1;a(6)=1;a(7)=1;,物理类型:,语句格式如下:(1)TYPE数据类型名IS范围;UNITS基本单位;单位;ENDUNITS例:P89例4-8,用来表示时间、电压、容量和阻抗等物理量。,记录类型:将不同类型的数据和数据名组织在一起,而形成新的对象。语句格式如下:,TYPE记录类型名ISRECORD记录元素名1:数据类型名;记录元素名2:数据类型名;ENDRECORD;,下面是记录类型定义的一个例子:typec_timeisrecordyear:integerrange0to3000;month:integerrange1to12;date:integerrange1to31;enable:bit;data:std_logic_vector(15downto0);endrecord;记录类型的对象的说明:signalnumber:c_time;,一个记录的每一个元素要由它的记录元素名来进行访问。对于记录类型的对象的赋值和数组类似,可以对其进行整体赋值,也可分别赋值,从记录类型的对象中提取记录元素时应使用“.”。对记录元素分别赋值:number.year=2005;number.mouth=9;number.date=22;number.enable=1;number.data=data_in;对记录元素整体赋值:number=(2005,9,22,1,data_in);例2:P90例4-9,用户定义的子类型SUBTYPE是TYPE所定义的数据类型的一个子集,它满足原数据类型的所有约束条件,原数据类型称为基本数据类型,SUBTYPE格式如下:SUBTYPE子类型名IS基本数据类型约束范围;,上述格式中的子类型名由设计者自定;基本数据类型必须是前面已有过type定义的类型。例:subtypedigisintegerrange0to9;其中,integer是标准程序包中已定义过的数据类型,子类型只是把integer约束到只含10个值的数据类型。P90例4-10,5、数据类型的转换,在VHDL语言中,数据类型的定义是相当严格的,不同的数据类型之间不能进行运算和直接代入。为了实现正确的赋值操作,必须要将带入的数据进行类型转换。转换的方式:(1)转换函数数据类型转换函数通常有程序包来提供。(P91)(2)数据类型限定,【程序】LIBRARYIEEE;USEIEEEstd_logic_1164.ALL;USEIEEEstd_logic_UNSIGNED.ALL;ENTITYadd5ISPORT(num:INstd_logic_vector(2DOWNto0);.);ENDadd5;ARCHITECTURErt1ofadd5issignalin_num:integerrange0to5;.BEGINin_num=CONV_INTEGER(num);变换式.ENDrtl;,例2:Signalb:std_logic;Signalu1:unsigned(3downto0);Signals1:signed(3downto0);Signali1,i2:integer;U1=“1001”;S1=“1001”;B=x;Wa
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 物理学考研备考经验分享
- 水利工程水利工程工艺流程规范
- 合同管理标准化工具及功能详述
- 小区农业种植项目合作协议
- 企业社会责任实践指南与评估系统
- 一次难忘的课堂事件记事话题结合类作文14篇
- 春天的田野描写自然景色作文(9篇)
- 农业资源合理利用与保护项目合作协议
- 我的榜样人物故事4篇
- 企业标准化合同管理体系
- 《小猪变形记》一年级
- 抗菌药物临床应用指导原则
- MirrorView切换手册模板
- 急救车必备药品和物品 急救车物品药品管理
- GB/T 3253.8-2009锑及三氧化二锑化学分析方法三氧化二锑量的测定碘量法
- GB/T 24720-2009交通锥
- GB/T 15065-2009电线电缆用黑色聚乙烯塑料
- 陈嘉庚生平介绍(中文+英文版)
- DB21T 3354-2020 辽宁省绿色建筑设计标准
- 我和我的祖国课件
- 语言领域核心经验《学前儿童语言学习与发展核心经验》
评论
0/150
提交评论