当前课程知识点:EDA技术与应用 >  第四章 VHDL语言概述 >  4.6 VHDL预定义数据类型 >  4.6.2 VHDL预定义数据类型 教学视频

返回《EDA技术与应用》慕课在线视频课程列表

4.6.2 VHDL预定义数据类型 教学视频在线视频

下一节:4.6.4 VHDL预定义数据类型 讨论

返回《EDA技术与应用》慕课在线视频列表

4.6.2 VHDL预定义数据类型 教学视频课程教案、知识点、字幕

同学们好

本讲我们来学习VHDL的数据类型

VHDL语言具有很强的数据类型

对数据类型的使用和要求十分严格

正是由于VHDL强类型语言的这种特征

才使得VHDL编译或综合工具

能够很容易地找出设计中各种常见的错误

为了用好VHDL语言

我们必须深入了解VHDL的数据类型

前面讲到

VHDL对数据类型的要求很严格

这主要体现在以下几个方面

首先

每一个数据对象只能有唯一的数据类型

并且只能具有那个类型的值

第二点,作用于某个数据对象的操作类型

必须和该数据对象的数据类型相匹配

第三点

具有不同数据类型的数据对象之间

是不能够直接进行赋值操作的

为了更有效地编写VHDL代码

必须知道哪些数据类型是可用的

在设计中怎样使用这些数据类型

VHDL的数据类型可以分为

已经在程序包里定义好的

可以直接使用的预定义数据类型

和用户自定义的数据类型两种

其中预定义的数据类型是最常用

也是最基本的数据类型

预定义的数据类型大体上可以分为三类

第一类是VHDL标准的预定义数据类型

第二类

是IEEE预定义标准逻辑位与位矢量类型

第三类是其它预定义标准数据类型

VHDL标准预定义数据类型

是在标准程序包STANDARD中定义的

常用的主要有八种

下面我们来分别学习这些数据类型

布尔类型

布尔类型只有

TRUE(真)和FALSE(假)两种取值

是一种二值枚举类型

布尔类型的数据不属于数值

因此它不能用于算术运算

只能通过关系运算来得到

位类型

位类型也属于二值枚举类型

取值只能是1和0这两个数值

位矢量类型

位矢量类型是基于位类型的数组

使用位矢量类型的时候

必须要注明矢量的宽度

以及数组中元素的个数和排列方式

例如,我们定义一个信号A

SIGNAL a: BIT_VECTOR(7 DOWNTO 0)

再定一个信号B

SIGNAL b: BIT_VECTOR(0 TO 7)

这里这两个信号A和B都是位矢量类型

位宽也都是8位

数组中的元素都是8个

但是它们的排列方式不一样

A的最左边一位是最高位

自左向右依次降低

B的最右边一位是最高位

自左向右依次升高

字符类型

字符类型主要包括单个ASCII码

通常用单引号引起来,例如‘A’

那么需要注意的是

字符类型是区分大小写的

大写的‘B’和小写的‘b’是不一样的

而一般VHDL的标识符

比如实体名、变量名、信号名等等

是不用区分大小写的

所以我们一定要记住

用单引号括起来的字符

是要区分大小写的就可以了

字符串类型是字符型数据的一个组合

字符串类型的数据必须用双引号括起来

同样字符串类型数据

也是要区分字母的大小写

整数类型

整数类型包括正整数、负整数和零

可以用预定义的算术运算符进行算术运算

例如加、减、乘、除等等

整数类型的取值范围是从

-2147483647到+2147483647

那么,这可以用

32位有符号的二进制数来表示

实数类型

实数类型也称浮点数

取值范围是从

-1.0×10的38次方到+1.0×10的38次方

通常实数类型只能用在VHDL仿真器当中

它是不能被综合的

时间类型

时间类型是VHDL中唯一的预定义物理类型

时间类型的数据

包括整数和物理量两个部分

它们之间至少要留一个空格

比如50 ns

同样时间类型也只用于VHDL仿真器

不能被综合

这一类预定义的数据类型

是符合IEEE工业标准的数据类型

是对VHDL标准数据类型的拓展

常用的有两种

一种是标准逻辑位类型:STD_LOGIC

STD_LOGIC类型是对BIT位类型的拓展

它一共定义了八种取值

也就是说如果一个数据对象

被定义为STD_LOGIC类型

那么它可能的取值就不像BIT类型那样

只有逻辑0和逻辑1两种可能

另一种是标准逻辑位矢量类型:

STD_LOGIC_VECTOR

这种类型是STD_LOGIC类型的一维数组

数组中每一个元素的数据类型

都是STD_LOGIC类型

在使用STD_LOGIC_VECTOR类型时

必须严格考虑位矢量的宽度、排序等问题

需要注意的是

STD_LOGIC类型

和STD_LOGIC_VECTOR类型

都是在IEEE库的

STD_LOGIC_1164程序包中预定义的

因此在使用的时候

必须做相应的库声明和程序包声明

否则就不能正常使用这两种数据类型

随着VHDL库和程序包的不断丰富

以及第三方综合工具对VHDL程序包的扩展

VHDL预定义的数据类型

也在不断的丰富和拓展

除了前面讲到的那些预定义的数据类型之外

还有一些数据类型

也可以在设计中来加以使用

例如

在STD_LOGIC_ARITH程序包中定义的

无符号数UNSIGNED类型

和有符号数SIGNED类型

和小整形等数据类型

那么从外观上看

它们和STD_LOGIC_VECTOR相同

但是

它们能够支持与整数类型类似的算术运算

关于这些类型

我们在此暂时不做详细讨论

VHDL

是一种对数据类型要求严格的设计语言

在设计中每一个常量、变量、信号、函数

以及设定的各种参量

都必须具有确定的数据类型

只有相同类型的数据

才可以互相传递和作用

VHDL的各种运算操作和赋值操作

也对数据类型有严格要求

使用时必须注意这一点

预定义的数据类型已经在程序包中定义

可以直接使用

掌握这些数据类型的特点和应用

对编写VHDL代码非常重要

好,本讲到这里就结束了

同学们,再见

EDA技术与应用课程列表:

第一章 EDA技术概述

-1.1 EDA技术概述

--1.1.1 EDA技术概述 导学

--1.1.2 EDA技术概述 教学视频

--1.1.3 EDA技术概述 单元测验

--1.1.4 EDA技术概述 讨论

第二章 可编程逻辑器件概述

-2.1 可编程逻辑器件(PLD)概述

--2.1.1 可编程逻辑器件 导学

--2.1.2 可编程逻辑器件概述 教学视频

--2.1.3 可编程逻辑器件概述 单元测验

--2.1.4 可编程逻辑器件概述 讨论

-2.2 CPLD的结构和原理

--2.2.1 CPLD结构和原理 导学

--2.2.2 CPLD的结构和原理 教学视频

--2.2.3 CPLD的结构和原理 单元测验

--2.2.4 CPLD的结构和原理 讨论

-2.3 FPGA的结构和原理

--2.3.1 FPGA的结构和原理 导学

--2.3.2 FPGA的结构和原理 教学视频

--2.3.3 FPGA的结构和原理 单元测验

--2.3.4 FPGA的结构和原理 讨论

-2.4 FPGA和CPLD的选用

--2.4.1 FPGA和CPLD的选用 导学

--2.4.2 FPGA和CPLD的选用 教学视频

--2.4.3 FPGA和CPLD的选用 单元测验

--2.4.4 FPGA和CPLD的选用 讨论

-2.5 FPGA与CPLD的编程和配置

--2.5.1 FPGA与CPLD的编程与配置 导学

--2.5.2 FPGA与CPLD的编程与配置 教学视频

--2.5.3 FPGA与CPLD的编程与配置 单元测验

--2.5.4 FPGA与CPLD的编程与配置 讨论

第三章 EDA开发平台——QuartusII应用

-3.1 QuartusII概述

--3.1.1 Quartus Ⅱ概述 导学

--3.1.2 Quartus Ⅱ概述 教学视频

--3.1.3 Quartus Ⅱ概述 单元测验

--3.1.4 Quartus Ⅱ概述 讨论

-3.2 新建工程

--3.2.1 新建工程 导学

--3.2.2 新建工程 教学视频

--3.2.3 新建工程 单元测验

-3.3 设计输入

--3.3.1 设计输入 导学

--3.3.2 设计输入 教学视频

--3.3.3 设计输入 单元测验

--3.3.4 设计输入 讨论

-3.4 设计编译

--3.4.1 设计编译 导学

--3.4.2 设计编译 教学视频

--3.4.3 设计编译 单元测验

--3.4.4 设计编译 讨论

-3.5 仿真验证

--3.5.1 仿真验证 导学

--3.5.2 仿真验证 教学视频

--3.5.3 仿真验证 单元测验

--3.5.4 仿真验证 讨论

-3.6 器件编程

--3.6.1 器件编程 导学

--3.6.2 器件编程1 教学视频

--3.6.3 器件编程2 教学视频

--3.6.4 器件编程 单元测验

--3.6.5 器件编程 讨论

-3.7层次化设计

--3.7.1 层次化设计 导学

--3.7.2 层次化设计 教学视频

--3.7.3 层次化设计 单元测验

--3.7.4 层次化设计 讨论

-3.8 宏功能模块的使用

--3.8.1 宏功能模块的使用 导学

--3.8.2 宏功能模块的使用 教学视频

--3.8.3 宏功能模块的使用 单元测验

--3.8.4 宏功能模块的使用 讨论

第四章 VHDL语言概述

-4.1 VHDL语言概述

--4.1.1 VHDL概述 导学

--4.1.2 VHDL语言概述 教学视频

--4.1.3 VHDL语言概述 单元测验

--4.1.4 VHDL概述 讨论

-4.2 VHDL代码的结构

--4.2.1 VHDL代码的结构 导学

--4.2.2 VHDL代码的结构 教学视频

--4.2.3 VHDL代码的结构 单元测验

--4.2.4 VHDL代码的结构 讨论

-4.3 库和库声明

--4.3.1 库和库声明 导学

--4.3.2 库和库声明 教学视频

--4.3.3 库和库声明 单元测验

--4.3.4库和库声明 讨论

-4.4 实体说明

--4.4.1 实体说明 导学

--4.4.2 实体说明 教学视频

--4.4.3 实体说明 单元测验

--4.4.4 实体说明 讨论

-4.5 结构体

--4.5.1 结构体 导学

--4.5.2 结构体 教学视频

--4.5.3 结构体 单元测验

--4.5.3 结构体 讨论

-4.6 VHDL预定义数据类型

--4.6.1 VHDL预定义数据类型 导学

--4.6.2 VHDL预定义数据类型 教学视频

--4.6.3 VHDL预定义数据类型 单元测验

--4.6.4 VHDL预定义数据类型 讨论

-4.7 常量、变量和信号

--4.7.1 常量、变量和信号 导学

--4.7.2 常量、变量和信号 教学视频

--4.7.3 常量、变量和信号 单元测验

--4.7.4 常量、变量和信号 讨论

-4.8 运算操作符和属性

--4.8.1 运算操作符和属性 导学

--4.8.2 运算操作符和属性 教学视频

--4.8.3 运算操作符和属性 单元测验

--4.8.4 运算操作符和属性 讨论

-4.9 IF语句和WAIT语句

--4.9.1 IF语句和WAIT语句 导学

--4.9.2 IF语句和WAIT语句 教学视频

--4.9.3 IF语句和WAIT语句 单元测验

--4.9.4 IF语句和WAIT语句 讨论

-4.10 CASE语句

--4.10.1 CASE语句 导学

--4.10.2 CASE语句 教学视频

--4.10.3 CASE语句 单元测验

--4.10.4 CASE语句 讨论

-4.11 LOOP循环语句

--4.11.1 LOOP循环语句 导学

--4.11.2 LOOP循环语句 教学视频

--4.11.3 LOOP循环语句 单元测验

--4.11.4 LOOP循环语句 讨论

-4.12 进程

--4.12.1 进程 导学

--4.12.2 进程 教学视频

--4.12.3 进程 单元测验

--4.12.4 进程 讨论

-4.13 条件信号赋值语句

--4.13.1 条件信号赋值语句 导学

--4.13.2 条件信号赋值语句 教学视频

--4.13.3 条件信号赋值语句 单元测验

-4.14 选择信号赋值语句

--4.14.1 选择信号赋值语句 导学

--4.14.2 选择信号赋值语句 教学视频

--4.14.3 选择信号赋值语句 单元测验

-4.15 元件例化语句

--4.15.1 元件例化语句 导学

--4.15.2 元件例化语句 教学视频

--4.15.3 元件例化语句 单元测验

--4.15.4 元件例化语句 讨论

-4.16 VHDL模块化设计

--4.16.1 VHDL模块化设计

--4.16.2 VHDL模块化设计 教学视频

--4.16.3 VHDL模块化设计 单元测验

--4.16.4 VHDL模块化设计 讨论

第五章 设计方法概述

-5.1 设计方法概述

--5.1.1 设计方法概述 导学

--5.1.2 设计方法概述 教学视频

--5.1.3 设计方法概述 单元测验

--5.1.4 设计方法概述 讨论

-5.2 EDA综合设计案例(1)— 数字钟的设计

--5.2.1 EDA综合设计案例1 导学

--5.2.2 EDA综合设计设计案例1— 数字钟的设计 教学视频

--5.2.3 EDA综合设计案例1 单元测验

--5.2.4 EDA综合设计案例1 讨论

-5.3 EDA综合设计案例(2)—16×16点阵控制器设计

--5.3.1 EDA综合设计案例2 导学

--5.3.2 EDA综合设计案例2—16×16点阵控制器设计 教学视频

--5.3.3 EDA综合设计案例2 单元测验

--5.3.4 EDA综合设计案例2 讨论

思政教育

-国产EDA技术如何突破?

4.6.2 VHDL预定义数据类型 教学视频笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。