电-第3章-3.4VHDL数据类型.ppt_第1页
电-第3章-3.4VHDL数据类型.ppt_第2页
电-第3章-3.4VHDL数据类型.ppt_第3页
电-第3章-3.4VHDL数据类型.ppt_第4页
电-第3章-3.4VHDL数据类型.ppt_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

EDA技术与FPGA应用设计 第 3 章 VHDL设计初步 孙 静 物理与机械电子工程学院 3.4 VHDL数据类型【P324 9.8】 pVHDL是一种强类型语言,要求设计实体中的每一个常 数、信号、变量、函数以及设定的各种参量都必须具 有确定的数据类型,并且只有数据类型相同的量才能 互相传递和作用。 pVHDL不允许不同类型的数值相互赋值或使用类型 不允许的运算符进行运算。 pVHDL中的数据类型:标量(整数、浮点、枚举、物理 )、复合(数组、记录)、文件、存取。 pVHDL中的数据类型引用方式有:预定义、自定义 和类型转换等。 o一、VHDL中的数据类型 数据类型说 明 标量类型“Scalar Type” 枚举类型 整数类型 物理类型,例如时间类型等 浮点(或实数)类型 复合类 “Composite Type” 数组“Array”,其中的所有元素具有 相同类型 记录“Record”,其中的元素的类型 可能不同 存取类型“Access Type” 为给定数据类型的数据对象提供存取 方式 文件类型“Files Type” 用于提供多值的存取 一、预定义数据类型(可直接引用) 在VHDL标准程序包STANDARD中定义的,在实际使用 中,已自动包含进VHDL的源文件中,因而不必通过USE 语句以显式调用。 布尔(BOOLEAN)类型 位(BIT)类型 位矢量(BIT_VECTOR)类型 整数(INTEGER)类型 自然数(NATURAL)和正整数 (POSITIVE)类型 实数(REAL)类型 字符(CHARACTER)类型 字符串(STRING)类型 时间(TIME)类型 错误等级(SEVERITY_LEVEL) 类型 (1)布尔(BOOLEAN) 布尔数据类型实际上是一个二值枚举型数据类型,它 的取值有FALSE(伪)和TRUE(真)两种。 p可以进行关系运算和逻辑运算,不能用于算术运算。 p布尔量常用来表示信号的状态或者总线上的情况。 l例如:IF a=b p综合器用一个二进制位表示BOOLEAN型变量或信号。综合 器将TRUE转变为信号量“1”,将FALSE转变为信号量 “0”。 一、预定义数据类型(可直接引用) (2) 位(BIT) 位数据类型属于枚举型,取值 1或0。 p可以进行逻辑运算,运算结果仍是位数据类型。VHDL 综合器用一个二进制位表示BIT。 l例如: signal a,b,c: bit; c) OF STD_LOGIC; p赋值原则:同位宽、同数据类型的矢量间才能进行赋值 。 l例如: signal a: std_logic_vector(7 downto 0); a= Fri else 0; 1.枚举类型 l应用 TYPE M_STATE IS( STATE1,STATE2,STATE3,STATE4,STATE5); SIGNAL CURRENT_STATE,NEXT_STATE:M_STATE; 信号CURRENT_STATE和NEXT_STATE的数据类型定义 为M_STATE,它们的取值范围是可枚举的,即从 STATE1STATE5共五种,而这些状态代表五组唯一的 二进制数值。 1.枚举类型 l在综合中,整数和实数非枚举型数据类型的取值定义范 围太大,综合器无法进行综合。需要定义其约束范围, 综合时将负数编码为二进制补码,正数编码为二进制原 码。 2.整数和实数子类型 l定义格式: TYPE 数据类型名 IS 数据类型定义 约束范围; SUBTYPE 子类型名 基本类型 RANGE 约束范围; 【例】 TYPE current IS REAL RANGE -1E4 TO 1E4; TYPE digit1 IS INTEGER RANGE 0 TO 9; SUBTYPE digit2 INTEGER RANGE -9 TO 9; 综合时digit1为4位二进制原码;digit2为5位二进制补码 。 2.整数和实数子类型 lVHDL支持两种复合类数据类型:数组和记录。数组是 相同类型元素的组合,记录则是不同类型元素的组合 。综合器只支持一维数组或者线性记录。 l数组的元素可以是任何一种数据类型,用以定义数组 元素的下标范围子句决定了数组中元素的个数以及元 素的排序方向,即下标数是由低到高,或是由高到低 。 l定义格式: TYPE 数据类型名 IS ARRAY 范围 OF 原数据类型名; 3.数组类型 l数组定义示例 【例】 TYPE word IS ARRAY (1 TO 8) OF STD_LOGIC; TYPE word IS ARRAY (INTEGER 1 TO 8) OF STD_LOGIC; TYPE instruction IS (ADD,SUB,INC,SRL,SRF,LDA,LDB); SUBTYPE digit IS INTEGER 0 TO 9; TYPE indflag IS ARRAY (instruction ADD TO SRF) OF digit; 3.数组类型 l数组赋值与引用:以单个元素、段元素或数组整体为单位。 【例】 type byte is array(7 downto 0)of bit; signal a,b:byte; signal c: bit; signal d: bit_vector(0 to 3); 赋值:aBX); VARIABLE INSTR3OPERATION; INSTR3.OPSTR:=“MUL AX,BX“; INSTR3.OP1:=AX; 4.记录类型 pVHDL是强类型语言,不同数据类型的对象,不能直接运算 和代入。为了实现正确的运算和赋值操作,必须要对信号 或者变量进行类型转换。 p一般用类型转换函数实现转换。 p数据类型的变换函数通常由“STD_LOGIC_1164”、 “STD_LOGIC_ARITH”、“STD_LOGIC_UNSIGNED” 、 “STD_LOGIC_OPS”等程序包提供。 p数据类型转换函数的输入参数为被转换的数据类型,返回 值为转换后的数据类型。 五、数据类型转换 五、数据类型转换 表4-1 常用类型转换函数 函数名 定义程序包功能 TO_STDLOGICVECTOR(A)STD_LOGIC_1164BIT_VECTOR转STD_LOGIC_VECTOR TO_BITVECTOR(A)STD_LOGIC_1164STD_LOGIC_VECTOR转BIT_VECTOR TO_STDLOGIC(A)STD_LOGIC_1164BIT转STD_LOGIC TO_BIT(A)STD_LOGIC_1164STD_LOGIC转BIT CONV_STD_LOGIC_VECTOR(a,位长)STD_LOGIC_ARITHINTEGER, UNSIGNED, SIGNED转 STD_LOGIC_VECTOR CONV_INTEGER(a)STD_LOGIC_ARITHUNSIGNED,SIGNED 转INTEGER CONV_INTEGER(a)STD_LOGIC_UNSIGNEDSTD_LOGIC_VECTOR转INTEGER TO_VECTOR(a,位长)DATAIO库STD_LOGIC_OPSINTEGER 转STD_LOGIC_VECTOR TO_INTEGER(a)STD_LOGIC_VECTOR转INTEGER 五、数据类型转换 p【例】类型转换函数应用举例。 SIGNAL A:BIT_VECTOR(11 DOWNTO 0);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论