我在vhdl中编写了相当多的代数运算代码,并声明了一些带符号的变量(我知道有更好的类型,但是我需要减少使用的位)。我想知道将它们声明为更好
variable foo1 := signed (7 downto 0);
要么
variable foo2 := signed (0 to 7);
我知道这与忍耐有关,但我很困惑。例如,如果我声明
variable foo3 := signed (0 to 7) := "01100100";
将其解释为十进制的100还是38?如果我有一个条件foo3
为
if (foo3(1) = '1') then
-- whatever you want
endif;
会foo3(1) = '1'
是真的还是假的?
为了使VHDL的数学软件包具有一致性,最好使用downto。
variable foo1 : signed (7 downto 0);
这与numeric_std包无关。与numeric_std包一样,最左边的元素始终是最重要的元素,而与使用downto或to无关。对于numeric_std也很有趣,该值绝不依赖于索引-因此(15降为8)与(7降为0)相同。
另一方面,使用VHDL-2008的定点和浮点软件包,唯一支持的方向是向下。实际范围具有意义。对于定点,索引具有权重。负指数是小数部分。
variable foo4 : sfixed(7 downto -2) ; -- 8 bits of integer, 2 bits of fraction
variable foo5 : sfixed(7 downto 1) ; -- even numbers only.
有关定点和浮点的更多信息,请参见:https : //synthworks.com/papers/vhdl_fixedfloat_lewis_bishop_date_2007.pdf
有关未签名/已签名的更多信息,请参见:https :
//synthworks.com/papers/vhdl_math_tricks_mapld_2003.pdf
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句