(原创)HDL中的unsigned与signed

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

作者:tdyizhen1314

        (现从事LED行业,专注于户外大型LED显示屏控制系统的研发,希望与大家一起交流,共同进步)

邮箱: 495567585@qq.com  

        td.logic@hotmail.com

原文地址:https://www.cnblogs.com/tdyizhen1314/p/2633057.html