你好我想问一下,如何在VHDL中添加两个向量,其中一个是7 downto 0,另一个是8 downto 0。我试过这样的事情,但它不起作用。先感谢您。

IS_CARRY <= '0' & (IN1 + IN2)

最佳答案

您需要将较短的向量扩展到 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_ARITHSTD_LOGIC_UNSIGNED 。请改用 NUMERIC_STD。在 STD_LOGIC_VECTOR s 上做算术不是一个好的风格。为此使用 SIGNEDUNSIGNED 类型。

关于vector - 如何添加两个不同大小的向量 VHDL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33584342/

10-11 18:02