我正在创建一个具有可变位数的完整加法器。我有一个半加器的组件,它接收三个输入(两个要添加的位,一个进位),并提供2个输出(一位输出和一个进位)。
我需要将一个半加法器的执行与另一个加法器的运算联系起来。我需要做不同次数(如果我添加4位数字,我需要4个半加法器。如果我做32位数字,我需要32个半加法器)。 我打算使用信号将一个半加法器的进位与另一个加法器的进位联系起来,但我不知道如何创建可变数量的信号。
我可以在进程中使用for循环实例化可变数量的半加器,但由于信号是在进程外定义的,所以我不能使用for循环。我不知道如何将半加器绑在一起。
答案 0 :(得分:2)
在VHDL中编写加法器的最简单方法是不要担心全加器和半加器,而只需输入:
a <= b + c;
其中a,b和c为signed
或unsigned
95%的时间,综合工具会比你做得更好。
答案 1 :(得分:1)
我认为你想要可变宽度信号而不是可变数量的信号
例如,您的信号必须为std_logic_vector(31 downto 0)
- 然后您将这些信号的位合适地连接到半加器。
当然,由于这些信号是数字,因此请勿使用std_logic_vector
使用signed
或unsigned
(以及ieee.numeric_std lib)。
并且(正如Philippe正确指出的那样)除非这是一次学习练习,否则只需使用+
运算符。