电子设计自动化技术 第四章 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描述程序