如前面的笔记所述,在VHDL语言中信号、变量、常数都要指定数据类型。为此,VHDL提供了多种标准的数据类型。另外,为使用户设计方便,还可以由用户自定义数据类型。这样使语言的描述能力及自由度更进一步提高,从而为系统高层次的仿真提供了必要手段。

同时,VHDL语言数据类型的定义相当严格,不同类型之间的数据不能直接代入,而且,即使数据类型相同,而位长不同时也不能直接代入。这样,为了熟练地使用VHDL语言编写程序,必须准确理解各种数据类型的定义。

一、标准的数据类型

标准的数据类型共有10种,如表3.2所示。

表3.2 标准数据类型

1.整数(integer)

整数与数学中的整数的定义相同。在VHDL中,整数的表示范围为-2 147 483 647~

2 147 483 647,即从一(231-l)到(231-1)。千万不要把一个实数(含小数点的数)赋予一个整数变量,这是因为VHDL是一个强类型语言,它要求在赋值语句中的数据类型必须匹配。整数的例子如 +136,+12 456,-457。

尽管整数值在电子系统中可能是用一系列二进制位来表示的,但是整数不能看作是位矢量,也不能按位来进行运算,对整数不能用逻辑操作符。当需要进行位操作时,可以用转换函数,将整数转换成位矢量。

2.实数(real)

实数的定义值范围为一1.0E+38 ~ +1.0E+38。实数有正负数,书写时一定要有小数点。例如:

-1.0,十 2.5,-1.0E3 8

有些数可以用整数表示也可以用实数表示。例如,数字1的整数表示为1,而用实数表示则为1.0。两个数的值是一样的,但数据类型却不一样。

3.位(bit)

在数字系统中,信号值通常用一个位来表示。位值的表示方法是,用字符‘0’或者‘1’表示之。位与整数中的1和0不同,‘0’和‘1’仅表示一个位的两种取值。另外,位不能用来描述三态信号。

4.位矢量(bit_vector)

位矢量是用双引号括起来的一组位数据。例如:“001100”,X“00BB”。这里,位矢量最前面的X表示是十六进制。用位矢量数据表示总线状态最形象也最方便。

5.布尔量(boolean)

一个布尔量具有两种状态,“真”或者“假”。虽然布尔量也是二值枚举量,但它和位不同,布尔量没有数值的含义,也不能进行算术运算。它能进行关系运算。例如,它可以在IF语句中被测试,测试结果产生一个布尔量TRUE或者FALSE。

一个布尔量常用来表示信号的状态或者总线上的情况。如果某个信号或者变量被定义为布尔量,那么在仿真中将自动地对其赋值进行核查。一般这一类型的数据的初始值总为 FALSE。

6.字符(character)

字符也是一种数据类型,所定义的字符量通常用单引号括起来,如‘A’。一般情况下VHDL对大小写不敏感,但是对字符量中的大、小写字符VHDL则认为是不一样的。例如,‘A’不同于‘a’。字符量中的字符可以是a~z中的任一个字母,0~9中的任一个数以及空白或者特殊字符,如$,@,%等等。包集合STANDARD中给出了预定义的128个ASCII码字符类型,不能打印的用标识符给出。

7.字符串(string)

字符串是由双引号括起来的一个字符序列,它也称字符矢量或字符串数组。例如:

“ Integer range”

字符串常用于程序的提示和说明。

8.时间(time)

时间是一个物理量数据。完整的时间量数据应包含整数和单位两部分,而且整数和单位之间至少应留一个空格的位置。例如,55 sec,2 min等。在包集合STANDARD中给出了时间的预定义,其单位为fs,ps,ns,µs,ms,sec,min,hr。下面是时间数据的例子:

20 fs,100 ps,3 sec

在系统仿真时,时间数据特别有用,用它可以表示信号延时,从而使模型系统能更逼近实际系统的运行环境。

9.错误等级

错误等级类型数据用来表征系统的状态,它共有4种:NOTE(注意),WARNING(警告),ERROR(出错),FAILURE(失败)。在系统仿真过程中可以用这4种状态来提示系统当前的工作情况。这样可以使操作人员随时了解当前系统工作的情况,并根据系统的不同状态采取相应的对策。

二、用户定义的数据类型

用户自定义的数据类型包括枚举类型、整数类型、实数类型、数组类型、记录类型、存取类型、文件类型等。对于自定义的数据类型的一般书写格式是:

TYPE 数据类型名{,数据类型名} 数据类型定义;

1.枚举类型(enumerated type)

定义:把类型中的各个元素列表出来。

说明:方便、直观,提高程序的可读性。

格式:TYPE 数据类型名 IS(元素1,元素2,……);

例如:TYPE states is( state0,state1,state2,state3);

2.整数类型、实数类型

定义:将数规定在某个范围内。

说明:在标准的数据类型中已经有整数和实数的数据类型,用户再自定义一般是为了

电路设计的特殊要求。

格式:TYPE 数据类型名 IS 数据类型约束范围

例如:TYPE data IS INTEGER range 0 to 7;

3.数组类型(array type)

定义:把两个以上的同一类型的数据组织在一起而形成的新的数据类型称为数组。

说明:数组中的元素可以是VHDL语言的任何一种数据类型;可以是一维或多维数组,多维数组要用多个范围来描述。但多维数组不能生成逻辑电路,EDA工具不能用多维数组进行设计综合,只能用于设计仿真和系统建模。

格式:TYPE数据类型名 IS ARRAY (INTEGER 0 TO 9) OF STD_LOGIC;

例如:

TYPE d IS ARRAY(INTEGER range 0 to 3)of STD_LOGIC_VECTOR(7 downto 0)

SIGNAL data:d;

BEGIN

d(0)<= “01010110”;

d(1)<= “10101000”;

d(2)<= “01100011”;

d(3)<= “00010110”;

4.记录类型(record type)

定义:由不同类型的数据对象组织在一起而形成的单一的对象组称为记录。

说明:记录中的每个元素通过字段名访问;记录中的元素可以是相同或不同的类型;适用于仿真,不能用于综合;从记录中提取元素的数据类型应该用“.”。

格式:TYPE 数据类型 IS RECORD

元素名:数据类型名;

元素名:数据类型名;

END RECORD;

例如:TYPE date IS RECORD

year:INTEGER range 2000 to 2009;

month:INTEGER range 1 to 12;

date:INTERGER range 1 to 31;

END RECORD;

SIGNAL d:date;

BEGIN

d.year <= 2004;

d.month <= 2;

d.date <= 15;

END;

5.存取类型(access type)

定义:存储类型也称为寻址类型,用来在对象之间建立联系,或者给新对象分配或释放存储空间,与高级语言中使用的指针类似。在VHDL’ 93语言标准IEEE std_1076的程序包TEXTIO中定义了一个存取类型。

TYPE line IS ACESS string;

表示类型为line的变量,它的值是指向字符值的指针。只有变量才能定义为存取类型。

6.文件类型(files type)

定义:文件类型是在系统环境中定义为代表文件的数据对象。文件对象的值是系统文件中值的序列。文件类型允许对象有二个文件类型的说明。文件对象由规定的两个过程读出(read)、写入(write)和函数(endfile)检查文件的结尾。

格式:TYPE文件类型名 IS FILE;

VHDL语言的数据类型相关推荐

  1. VHDL语言基础-数据类型及运算符

    目录 VHDL的数据类型: VHDL中定义的10种标准数据类型: 约束区间说明: 用户自定义数据类型: 使用格式: 常用的用户自定义类型: 枚举类型: 子类型SUBTYPE: 整数类型和实数类型: 数 ...

  2. 第三章 VHDL语言的基本结构

    VHDL语言的基本结构 一.VHDL设计简述 VHDL主要用于描述数字系统的结构.行为.功能和接口. VHDL将一个设计(元件.电路.系统)分为: 外部(可视部分.端口) 内部(不可视部分.内部功能. ...

  3. FPGA笔记:VHDL语言总结

    VHDL语言总结 前言 一. VHDL是什么? 1. 缩写 2. 作用 3. VHDL与原理图描述的比较 4. VHDL语言特点 5. 与其他语言比较 二.VHDL程序架构 VHDL基本结构 1. 实 ...

  4. VHDL 语言学习笔记(1)

    一,VHDL语言的基本语法 1.VHDL语言的标识符规则:1).由大小写字母,数字和下划线组成: 2).任何标识符必须以英文字母开头: 3).不以_为末字符: 4)不能出现连续的_; 5)不区分大小写 ...

  5. VHDL语言基础-VHDL程序的基本结构与主要构件

    目录 VHDL程序的基本结构: 一个完整的VHDL程序包括: Example: VHDL的主要构件: VHDL程序的基本构件: 主要构件: VHDL的主要构件-库: 使用格式: Example: VH ...

  6. 基于VHDL语言的状态机设计

    基于VHDL语言的状态机(FSM)设计 状态机(Finite State Machine,FSM) 状态机的组成:如图所示 状态机的种类: Mealy型:当前状态.当前输入相关 Moore型:仅当前状 ...

  7. VHDL硬件描述语言(三)VHDL语言要素

    一.文字规则 1.1 标识符 标识符主要用来为端口.信号.变量.子程序.常数和参数等命名. 其规则如下: 有效的字符:包括26个大小写英文字母,数字包括0-9 以及下划线"_" 任 ...

  8. 笔记:FPGA与VHDL语言学习2

    FPGA与VHDL语言学习2 目录 1. 7位2进制计数器程序,要求计算器从0开始计数,计数到59(十进制的59,看到的是二进制数)后归零,重新循环计数 2. 2位十进制计数器程序,要求计数器从00开 ...

  9. VHDL语言的基本结构(结构框架说明)

    VHDL语言的基本结构 一.实体说明 主要描述的是一个设计单元的外部特征,即对外的输入/输出接口及一些用于结构体的参数定义. 规则一:建议将VHDL的标识符或基本语句关键词,以大写方式表示:而又设计者 ...

最新文章

  1. 深入理解JVM—性能监控工具
  2. 手动抽油机_察雅县抽油机钢丝绳橡胶皮带生产厂家
  3. AtCoder Beginner Contest 178 总结
  4. 最大子序和(Leetcode第53题)
  5. STM32那点事(2)_时钟树(下)
  6. 软银准备以超400亿美元向英伟达出售Arm,交易最快下周达成
  7. iOS 数据持久化 NSUserDefault
  8. word文字铺满页面_word如何把行铺满页面 怎样使word文档铺满页面
  9. 怎样避免每次运行都启用宏的麻烦
  10. 软件项目管理考试指南—By XJTUSE【YJQ】
  11. 软碟通 刻录linux光盘,使用UltraISO软碟通刻录光盘
  12. Java实现阿里云云通短信通知发送
  13. 韦东山ARM第一期总结
  14. 考研复试-传输层-计算机网络面试题
  15. 在python中下列代码的运行结果是print abc_下列代码运行结果是?
  16. Django auth用户认证模块
  17. webservice-SOAP报文抓取与分析
  18. 计算机常用端口号一览表,计算机常用端口一览表
  19. Vivado 报错:[Place 30-574] Poor placement for routing between an IO pin and BUFG.
  20. StirMarkBenchmark——图像攻击软件简介资源

热门文章

  1. Список систем управления базами данных России в 2022 году
  2. 基于EC57 标准 上的数据库 测试室颤VF节律准确性的一个问题
  3. ThinkPad 水货笔记本
  4. 软件测试需求频繁变更,测试中如何应对需求变更问题
  5. vb.net 简单的方法模拟三体(有行星)
  6. 深入理解微服务Maven父子项目构造以及项目打包部署
  7. Windows 7 桌面上的 Internet Explorer 图标消失
  8. 【2022新书】有趣的数据结构
  9. 厉害了,蚂蚁金服!创造了中国自己的数据库OceanBase
  10. ⑨tiny4412 Linux驱动开发之1-wire子系统(DS18B20)驱动程序