unsigned与signed:想必大家在C语言是经常用到,可不知HDL语言中的unsigned与signed是否常用罗!
其含义与C语言中的意思无异,区别主要是取值范围。
unsigned和signed在一种类型下,unsigned表示在这个范围大小的整数,signed一般都是在这个范围内的从负到正,即其最高位为符号位。
unsigned( 无符号整数 ):无符号整数 (unsigned) 和前面的“ 标准逻辑” 向量 (std_logic_vector) 信号相似, 并且可以相互转换。注:定义无符号数时必须指明这个无符号整数的位数序列编号是从高到低 , 一定要使用 downto 的序列
unsigned与std_logic_vector互相转换如下:
signal a : std_logic_vector(3 downto 0);
signal b : unsigned(3 downto 0);
b 《= unsigned(a);
a 《= std_logic_vector(b);
signed(有符号整数):数据类型表示一个有符号的数值,综合器将其解释为补码,该的最高位是符号位,最高位0 表示为正数,最高位为1表示为负数,补码是指除最高位数据的补码。
如:signed(“1101”) = -5
signed(“0111”) = 7
unsigned与signed:想必大家在C语言是经常用到,可不知HDL语言中的unsigned与signed是否常用罗!
其含义与C语言中的意思无异,区别主要是取值范围。
unsigned和signed在一种类型下,unsigned表示在这个范围大小的整数,signed一般都是在这个范围内的从负到正,即其最高位为符号位。
unsigned( 无符号整数 ):无符号整数 (unsigned) 和前面的“ 标准逻辑” 向量 (std_logic_vector) 信号相似, 并且可以相互转换。注:定义无符号数时必须指明这个无符号整数的位数序列编号是从高到低 , 一定要使用 downto 的序列
unsigned与std_logic_vector互相转换如下:
signal a : std_logic_vector(3 downto 0);
signal b : unsigned(3 downto 0);
b 《= unsigned(a);
a 《= std_logic_vector(b);
signed(有符号整数):数据类型表示一个有符号的数值,综合器将其解释为补码,该的最高位是符号位,最高位0 表示为正数,最高位为1表示为负数,补码是指除最高位数据的补码。
如:signed(“1101”) = -5
signed(“0111”) = 7
举报