1

我正在创建一个具有可变位数的全加器。我有一个半加器组件,它接受三个输入(要添加的两位和一个进位)并提供 2 个输出(一位输出和一个进位)。

我需要将一个半加器的进位与另一个半加器的进位联系起来。而且我需要多次执行此操作(如果我添加 4 位数字,我需要 4 个半加器。如果我正在做 32 位数字,我需要 32 个半加器)。我打算使用信号将一个半加器的进位与另一个半加器的进位联系起来,但我不知道如何创建可变数量的信号。

我可以在进程中使用 for 循环来实例化可变数量的半加器,但由于信号是在进程之外定义的,因此我不能为其使用 for 循环。我不知道我应该如何将半加法器联系在一起。

4

2 回答 2

2

用 VHDL 编写加法器的最简单方法是不用担心全加器和半加器,只需键入:

a <= b + c;

其中 a,b 和 c 是signedunsigned

95% 的时间里,综合工具会比你做得更好。

于 2012-11-05T21:58:06.083 回答
1

我认为你想要可变宽度信号而不是可变数量的信号

例如,您的信号需要是std_logic_vector(31 downto 0)- 然后您将这些信号的位适当地连接到您的半加器。

当然,由于这些信号是数字,所以不要使用std_logic_vectoruse signedor unsigned(和 ieee.numeric_std 库)。

并且(正如菲利普正确指出的那样)除非这是一个学习练习,否则只需使用+运算符。

于 2012-11-06T10:01:30.427 回答