vhdl中有+运算符加法运算那么为什么我们需要添加ieee.std_logic_unsigned,并且在这个库中有+的函数,那么为什么在vhdl中已经有+运算符的情况下定义了该函数?
答案 0 :(得分:1)
与所有VHDL运算符一样,+
运算符也具有功能表示法。 a+b
和"+"(a,b)
完全相同。这方面的好处是您可以重载VHDL运算符以对默认情况下未定义的类型进行操作。只需定义一个"+"
函数,它接受您自己类型my_type
和voilà的两个参数。您现在可以使用a+b
a
和b
my_type
类型的+
。
默认情况下,类型std_ulogic_vector
或std_logic_vector
未定义ieee.std_logic_unsigned
运算符。这是事实。您可以不同意这一点,但它是VHDL标准。因此,如果您想将它与这些类型一起使用,您需要以某种方式定义它。
ieee
包重载算术运算符。它是不标准包,并且在标准化ieee.numeric_std
库中有无。 不使用它。而是使用标准unsigned
来声明类型signed
和ieee.numeric_std_unsigned
并重载算术运算符。
请注意,正如user1155120所述,VHDL 2008引入了几个新的综合包。其中一个是std_ulogic_vector
,它会重载let date = NSDate()
let calendar = NSCalendar.currentCalendar()
let components = calendar.components(.CalendarUnitHour | .CalendarUnitMinute, fromDate: date)
let hour = components.hour
let minutes = components.minute
类型的算术运算符,将其视为无符号自然整数。