我想在VHDL上实现这个:
a<=(b+c)/16;
我试过这个,但综合不接受它。
signal b,c : std_logic_vector(7 downto 0);
signal a : std_logic_vector(8 downto 0);
signal dummy : std_logic_vector(3 downto 0);
(a & dummy) <= ("00000" & b) + ("00000" & 'c');
然后我使用了a但它失败了。 (操作&amp;不能与正式模式OUT相关联。)
有什么建议吗? 谢谢, CEM
答案 0 :(得分:2)
使用ieee.numeric_std
并声明a,b,c,虚拟为unsigned
而不是std_logic_vector
。或signed
如果这是您的申请所要求的。
答案 1 :(得分:0)
只需使用您的第一次尝试,并使a
,b
和c
为数字类型。 std_logic_vector
没有数字含义,所以你不能对它们进行算术运算。
要么全部integer
,要么像Brian建议的那样,并使用ieee.numeric_std
和signed
或unsigned
矢量类型。