(VHDL)如何在一个时钟中部分分配求和结果

时间:2014-03-01 12:18:40

标签: concatenation vhdl partial

我想在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

2 个答案:

答案 0 :(得分:2)

使用ieee.numeric_std并声明a,b,c,虚拟为unsigned而不是std_logic_vector。或signed如果这是您的申请所要求的。

答案 1 :(得分:0)

只需使用您的第一次尝试,并使abc为数字类型。 std_logic_vector没有数字含义,所以你不能对它们进行算术运算。

要么全部integer,要么像Brian建议的那样,并使用ieee.numeric_stdsignedunsigned矢量类型。