您好我想问一下,我怎么能在VHDL中添加两个向量,其中一个是7 downto 0而另一个是8 downto 0.我试过这样的东西,但是它不起作用。提前谢谢。
IS_CARRY <= '0' & (IN1 + IN2)
答案 0 :(得分:6)
您需要将较短的向量扩展为9位,然后进行加法。
声明:
signal in1 : UNSIGNED(7 downto 0);
signal in2 : UNSIGNED(8 downto 0);
signal res : UNSIGNED(8 downto 0);
示例:
res <= ('0' & in1) + in2;
不建议使用STD_LOGIC_ARITH
和STD_LOGIC_UNSIGNED
。请改用NUMERIC_STD
。对STD_LOGIC_VECTOR
进行算术运算并不好。为此,请使用SIGNED
和UNSIGNED
类型。