333数据类型的转换 转换方法:函数转换法、类型标识符转换法和常量转换法 1、函数转换法 即利用一些转换函数进行对象数据类型的转换。 在 std_logic_1164中定义了四个转换函数 a.to_ stdlogicvector(a)将对象a由 bit vector类型转换为 std_logic_vector b.to_ bitvector(a)将对象 a tstd_logic_vector类型转换为 bit vector c.to_ stdlogic(a)将对象a由b类型转换为 std_ logic类型 d.to_bi(a)将对象a由 std_logic类型转换为b类型 ★在设计ⅥHDL程序过程中,若要调用程序包中的转换函数,必须在调用前 进行程序包使用的说明。 如:要调用 std_logic_unsigned程序包中的转换函数 library ieee use ieee std_logic_1164. all: use ieee std_logic_unsigned. all
3.3.3数据类型的转换 转换方法:函数转换法、类型标识符转换法和常量转换法 1、函数转换法 即利用一些转换函数进行对象数据类型的转换。 在std_logic_1164中定义了四个转换函数: a. to_stdlogicvector(a) 将对象a由bit_vector类型转换为std_logic_vector b. to_bitvector(a) 将对象a由std_logic_vector类型转换为bit_vector c. to_stdlogic(a) 将对象a由bit类型转换为std_logic类型 d. to_bit(a) 将对象a由std_logic类型转换为bit类型 ★在设计VHDL程序过程中,若要调用程序包中的转换函数,必须在调用前 进行程序包使用的说明。 如:要调用std_logic_unsigned程序包中的转换函数 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all;
2、类型标识符转换法 类型标识符就是类型的名称,适用于标量类型之间的转换,如整数和浮点数,如: variable a: integer; variable b: real; a: =integer(b) b =reala; §3.4VHDL的运算符 四种运算符:逻辑运算符、算数运算符、关系运算符和并置运算符 3.4.1逻辑运算符 VHDL中的逻辑运算符 运算符 功能 and 与或 nand 与非 nor 或非 Xor 异或 xnor 异或非 not 非
2、类型标识符转换法 类型标识符就是类型的名称,适用于标量类型之间的转换,如整数和浮点数,如: variable a: integer; variable b: real; a :=integer(b); b:=real(a); §3.4 VHDL的运算符 四种运算符:逻辑运算符、算数运算符、关系运算符和并置运算符 3.4.1 逻辑运算符 运算符 功能 and 与 or 或 nand 与非 nor 或非 xor 异或 xnor 异或非 not 非 VHDL中的逻辑运算符
优先级:not的优先级最高,其它6个逻辑运算符的优先级相同 VHDL中左右没有优先级差别。 q<= a and b or not c and d 应为:q<=( a and b)or( notc and d; 注意: 使用逻辑运算符时允许在一个表达式中出现两个或两个以上and运算符而不加括号; 0r、xOr、nor的规定与and相同; 不允许一个表达式中出现两个或连个以上nand和xnor而不加括号 例 g<=a and b and c and d; g<= a or b or c or d; q<= a xor b xor c xor d; g<= a nand b and c and d;
优先级:not的优先级最高,其它6个逻辑运算符的优先级相同; q <= a and b or not c and d; 应为: q <= (a and b) or (not c and d); VHDL中左右没有优先级差别。 注意: 使用逻辑运算符时允许在一个表达式中出现两个或两个以上and运算符而不加括号; or、xor、nor的规定与and相同; 不允许一个表达式中出现两个或连个以上nand和xnor而不加括号。 例: q<= a and b and c and d; q<= a or b or c or d; q<= a xor b xor c xor d; q<= a nand b and c and d;
3.4.2算数运算符 VHDL中的算数运算符 运算符 功能 运算符 功能 加 正号 减 负号 乘 sIl 逻辑左移 除 srl 逻辑右移 mod 取模 sla 算数左移 rem 取余 sra 算数右移 乘方 rol 逻辑循环左移 abs 取绝对值 ror 逻辑循环右移 sll、srl、sla、sra、rol和ror为二元运算操作符,只能定义在一维数组上, 其元素必须是bit和 boolean型
3.4.2 算数运算符 运算符 功能 运算符 功能 + 加 + 正号 - 减 - 负号 * 乘 sll 逻辑左移 / 除 srl 逻辑右移 mod 取模 sla 算数左移 rem 取余 sra 算数右移 ** 乘方 rol 逻辑循环左移 abs 取绝对值 ror 逻辑循环右移 VHDL中的算数运算符 sll、srl、sla、sra、rol和ror为二元运算操作符,只能定义在一维数组上, 其元素必须是bit和boolean型
sl(逻辑左移) 舍弃 填0 srl(逻辑右移) 填0 舍弃 sla(算术左移) 舍弃 srl(算术右移) 填0 舍弃 rol(逻辑循环左移) ror(逻辑循环右移) 移位运算符移位规则图
sll(逻辑左移) 舍弃 填0 srl(逻辑右移) 填0 舍弃 sla(算术左移) 舍弃 srl(算术右移) 填0 舍弃 rol(逻辑循环左移) ror(逻辑循环右移) 移位运算符移位规则图