电子设计自动化技术
第四章
VHDL中的语言要素
本章内容
? 标识符
? 数据对象(对象的申明)
? 数据类型
? 操作符
标识符
基本标识符 扩展标识符
以反斜杠 \ 界定
4.1 标识符
4.1.1基本标识符
? 有效的字符是大小写字母 a~z(不区分大小写) ,
数字0~9以及中划线 “- ”和下划线“ _”。
? 标识符 必须以英文字母开头,最后一个字 不能
是下划线。
比如:drive-bus const32-59 r2d2
ram_address
? 两个中划线 不能连续出现。若出现则成了注释
语句。
4.1 标识符
4.1.2 扩展标识符
? 以反斜杠界定,所有下例字符都可以使
用,包括!、@ 、回车符等图形符号。
如: IR\DY#\,C \/BE\ 等都是合法的。
? 扩展标识符要区分大小写。
? 两个连续的反斜杠表示一个反斜杠。
4.1 标识符
本章内容
? 标识符
? 数据对象(对象的申明)
? 数据类型
? 操作符
4.2 数据对象
凡是可以被赋值的对象就称
为数据对象
? 常量( CONSTANT)
? 变量( VARIABLE)
? 信号(SIGNAL )
Object的含义和说明场合
对象 含义 说明场合
Constant 常量说明全局量
PACKAGE, ENTITY,
ARCHITECTURE
PROCESS, FUNCTION,
PROCEDURE
Variable 变量说明局部量
PROCESS, FUNCTION,
PROCEDURE
Signal 信号说明全局量
PACKAGE, ENTITY,
ARCHITECTURE
4.2 数据对象
对象申明的一般格式
对象类型 对象名 :数据类型 := 初值;
CONSTANT INTEGER
VARIABLE BIT
SIGNAL ···
4.2 数据对象
4.2.1 常量声明
常量声明格式:
CONSTANT 常量名 : 数据类型 := 表达式;
注:常量在设计中一旦被赋值就不能再改变。
4.2 数据对象
变量声明格式:
VARIABLE 变量名: 数据类型 约束条件 := 表达式;
变量赋值格式:
变量名 := 表达式;
注:变量可多次赋值,且赋值立刻生效,不能 产生附加延
时。
4.2 数据对象
4.2.2 变量声明
信号声明格式:
SIGNAL 信号名 : 数据类型约束条件: = 表达式;
信号赋值格式:
信号名 <=表达式;
注:信号也可多次赋值,代入时可以加附加延时。
4.2 数据对象
4.2.3 信号声明
4.2 数据对象
4.2.3 信号与变量值的代入
4.2 数据对象
4.2.3 信号与变量值的代入
本章内容
? 标识符
? 数据对象(对象的申明)
? 数据类型
? 操作符
? 标准数据类型
? 用户自定义数据类型
4.3 数据类型
4.3 数据类型
4.3.1 标准数据类型
? 枚举( Enumerated)类型
? 整数( Integer)类型
? 实数( Real)、浮点数(Floating )类型
? 数组( Array)类型
? 记录( Record)类型
? 存取( Access)类型
? 文件( File)类型
? 时间( Time)类型
4.3 数据类型
4.3.2 用户自定义数据类型
? 枚举( Enumerated)类型
TYPE 数据类型名 IS (元素,元素, ???) ;
例: TYPE STD_LOGIC IS
(‘U’,’X’,’0’,’1’,’Z’,’W’,’L’,’H’,’-’);
4.3 数据类型
4.3.2 用户自定义数据类型
? 整数(Integer )、实数( Real)类型
TYPE 数据类型名 IS 数据类型 约束范围;
例 :TYPE digit IS RANGE 0 TO 9;
4.3 数据类型
4.3.2 用户自定义数据类型
? 数组( Array)类型
TYPE 数据类型名 IS Array 范围 OF 原数据类型 ;
例 :TYPE word IS ARRAY ( INTEGER 0
TO 7) OF STD_LOGIC;
4.3 数据类型
4.3.2 用户自定义数据类型
? 记录( Record)类型
TYPE 数据类型名 IS RECORD
元素名: 原数据类型名 ;
元素名: 原数据类型名 ;
???
END RECORD;
4.3 数据类型
4.3.2 用户自定义数据类型
? 记录( Record)类型
例: TYPE bank IS RECORD
addr0:STD_LOGIC_VECTOR(7 DOWNTO 0);
addr1:STD_LOGIC_VECTOR(7 DOWNTO 0);
END RECORD;
SIGNAL addrbus: STD_LOGIC_VECTOR(7 DOWNTO
0);
SIGNAL sbus:bank:=(“00001100”,”00000010”);
addrbus<=sbus.addr0;
4.3 数据类型
4.3.2 用户自定义数据类型
SUBTYPE 子类型名 IS 数据类型名 【范
围】;
例:
SUBTYPE digit IS INTEGER RANGE
0 TO 9;
4.3 数据类型
4.3.3 用户自定义数据子类型
4.3 数据类型
4.3.3 数据类型的转换
本章内容
? 标识符
? 数据对象(对象的申明)
? 数据类型
? 操作符
? 逻辑运算符 :逻辑运算(Logical)
? 算术运算符 :算术运算(Arithmetic)
? 关系运算符 :关系运算(Relational)
? 并置运算符 :并置运算(Concatenation)
4.4 操作符
4.4.1 逻辑运算符
4.4 操作符
? 在VHDL中逻辑运算符主要有6
种它们分别是:
? NOT——取反;
? AND——与;
? OR——或;
? 可以对STD_LOGIC、BIT、
STD_LOGIC_VECTOR等逻辑型数
据及布尔型数据进行运算
?NAND——与非;
?NOR——或非;
?XOR——异或。
4.4.2 算术运算符
4.4 操作符
VHDL有10种算术运算符,它们分别是:
? + ——加;
? - ——减;
? *——乘;
? / ——除;
? MOD——求模;
? REM——取余;
? + ——正;(一元运算)
? - ——负(一元运算)
? ** ——指数;
? ABS——取绝对值。
VHDL中有6种关系运算符,它们分别是:
4.4.3 关系运算符
4.4 操作符
?<=——小于等于;
? > ——大于;
? >=——大于等于。
? = ——等于;
? /= ——不等于;
? < ——小于;
4.4.3 关系运算符
4.4 操作符
? 等号 “=”和不等号 “/=”可以适用所有类型的数据。
? 其它关系运算符则可使用于整数(INTEGER)
和实数(REAL)、位(STD_LOGIC)等数据类
型以及位矢量(STD_LOGIC_VECTOR)等数组类
型的关系运算。
? 在进行关系运算时,左右两边的操作数的数据
类型必须相同,但是位长度不一定相同。
并置运算符 “&”用于位或位
矢量的连接 。
4.4.4 并置运算符
4.4 操作符
作业
A0011
b0101
cout 0 0 0 1
sum0110
请根据真值表给出半加器的VHDL描述程序