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(逻辑循环右移) 移位运算符移位规则图
3.4.3关系运算符 VHDL中的关系运算符 运算符 功能 相等 不等于 小于 大于 小于等于 大于等于 3.4.4并置运算符 作用是进行位和位矢量的连接,即将并置运算符右边的内容接在左边的内容之后 形成一个新的位矢量。 并置运算符: 三种情况:(1)将两个位连接起来形成一个位矢量; (2)将两个位矢量连接起来形成一个新的位矢量; (3)将位矢量和位连接起来形成一个新的位矢量
3.4.3 关系运算符 运算符 功能 = 相等 /= 不等于 大于 = 大于等于 VHDL中的关系运算符 3.4.4 并置运算符 作用是进行位和位矢量的连接,即将并置运算符右边的内容接在左边的内容之后 形成一个新的位矢量。 并置运算符: & 三种情况: (1)将两个位连接起来形成一个位矢量; (2)将两个位矢量连接起来形成一个新的位矢量; (3)将位矢量和位连接起来形成一个新的位矢量
★位连接的不同表示方法: 定义信号: signal a, b, c: std_logi signal q: std_ logic_vector(2 downto O); (1)直接连接 qa,1=>b,0=>0); 3.4.5运算符的优先级 优先级顺序 运算操作符 * not abs mod rem (正号)负号) +(加)-(减)& sI srl sla sra rol ror /> and or nand nor xor xnor
★位连接的不同表示方法: 定义信号: signal a, b, c: std_logic; signal q: std_logic_vector(2 downto 0); (1)直接连接 q a, 1 =>b, 0=>c); 3.4.5 运算符的优先级 优先级顺序 运算操作符 ** not abs * / mod rem +(正号) -(负号) +(加) -(减) & sll srl sla sra rol ror = /= >= and or nand nor xor xnor
例:BCD7段显示译码器 BCD码:二进制编码的十进制数。用4位二进制数来对每个十进制数进行编码。 如:905(十进制)=100100000101(BCD) 1、显示器 七段字码显示器:七段可以独立控制的发光二极管ED或液晶显示①CD) 单元组成的8字形,可以用于显示十进制数字或其它字符。 分为:共阴极一七段二极管的阴极都连接地; 共阳极—七段二极管的阳极都连接地
例:BCD-7段显示译码器 BCD码:二进制编码的十进制数。用4位二进制数来对每个十进制数进行编码。 如:905(十进制)=1001 0000 0101 (BCD) 1、显示器 七段字码显示器:七段可以独立控制的发光二极管(LED)或液晶显示(LCD) 单元组成的8字形,可以用于显示十进制数字或其它字符。 分为:共阴极—七段二极管的阴极都连接地; 共阳极—七段二极管的阳极都连接地
LED显示的电路条件 Vcc Vcc a a.点亮LED的条件 b.共阴极 C.共阳极
LED显示的电路条件: Vcc a. 点亮LED的条件 a b. 共阴极 b c a b c c. 共阳极 Vcc
BCD-7段显示译码器真值表 输入 输出 数字A3A2A1A0治 a Yb Yc Yd Ye YfYg字形 0 012345678 0000000011111111 00001 010 0 100 011 0 1011010111101011 1101 101000 00 100011111 1111 0 0 0 0 10000 010 00 011 0 010 2 13 00 1111100100 111110100 11110 0111111 0 011110111 456789ABCDEF 14 0 15 1
输入 输出 数字 A3 A2 A1 A0 Ya Yb Yc Yd Ye Yf Yg 字形 0 0 0 0 0 1 1 1 1 1 1 0 0 1 0 0 0 1 0 1 1 0 0 0 0 1 2 0 0 1 0 1 1 0 1 1 0 1 2 3 0 0 1 1 1 1 1 1 0 0 1 3 4 0 1 0 0 0 1 1 0 0 1 1 4 5 0 1 0 1 1 0 1 1 0 1 1 5 6 0 1 1 0 0 1 0 1 1 1 1 6 7 0 1 1 1 1 1 1 0 0 1 0 7 8 1 0 0 0 1 1 1 1 1 1 1 8 9 1 0 0 1 1 1 1 1 0 1 1 9 10 1 0 1 0 1 1 1 0 1 1 1 A 11 1 0 1 1 0 0 1 1 1 1 1 B 12 1 1 0 0 1 0 0 1 1 1 0 C 13 1 1 0 1 0 1 1 1 1 0 1 D 14 1 1 1 0 1 0 0 1 1 1 1 E 15 1 1 1 1 1 0 0 0 1 1 1 F BCD-7段显示译码器真值表