将进位连接到结构VHDL中加法器/减法器的进位

将进位连接到结构VHDL中加法器/减法器的进位,vhdl,Vhdl,因此,我有以下VHDL代码来实现一个Nbit加法器/减法器,它只使用一个2:1的mux、一个反相器(翻转位)和一个全加器。当第一个加法器具有I_控制的进位时,我在将加法器的进位连接到下一个进位时遇到问题。任何帮助都将不胜感激:) IEEE库; 使用IEEE.std_logic_1164.all; 使用work.all; 实体加减是 泛型(N:整数:=16); 端口(i_M:标准逻辑向量中(N-1向下至0); i_N:在标准逻辑向量中(N-1到0); i_控制:在标准逻辑向量中(N-1到0); 输

因此,我有以下VHDL代码来实现一个Nbit加法器/减法器,它只使用一个2:1的mux、一个反相器(翻转位)和一个全加器。当第一个加法器具有I_控制的进位时,我在将加法器的进位连接到下一个进位时遇到问题。任何帮助都将不胜感激:)

IEEE库;
使用IEEE.std_logic_1164.all;
使用work.all;
实体加减是
泛型(N:整数:=16);
端口(i_M:标准逻辑向量中(N-1向下至0);
i_N:在标准逻辑向量中(N-1到0);
i_控制:在标准逻辑向量中(N-1到0);
输出标准逻辑向量(N-1到0);
结束加减法;
加减法的体系结构是
分量位加法器
端口(i_X:标准逻辑中;
i_Y:标准逻辑;
i_Cin:标准逻辑;
输出标准逻辑;
输出:输出标准逻辑);
端部元件;
组件逆变器
端口(i_A:标准逻辑中;
输出标准逻辑);
端部元件;
组件位多路复用器
端口(i_X:标准逻辑中;
i_Y:标准逻辑;
i_S:标准逻辑;
o_N:输出标准逻辑);
端部元件;
信号compvalue、muxvalue、addervalue:std_逻辑_向量(N-1到0);
信号选择,进位:标准逻辑向量(N-1至0);
信号k:整数:=0;
开始
进位(0)i_N(i),
o_F=>compvalue(i));
mux:bit_mux
端口映射(i_X=>i_N(i),
i_Y=>compvalue(i),
i_S=>i_控制(i),
o_N=>muxvalue(i));
结构加法器:位加法器
端口映射(i_X=>i_M(i),
i_Y=>muxvalue(i),
i_Cin=>进位(i),
o_Ss=>o_S(i),
o_Couts=>carry(i));
终端生成;
末端结构;

使进位数组变长一个:

signal carry : std_logic_vector(N downto 0); -- was N-1
改变这一点:

     o_Couts => carry(i));
为此:

     o_Couts => carry(i+1));
在您的generate语句中,同时保持输入关联的原样


如果最后一次进货没有通过输出端口传送,那么在合成过程中,网络将被吃掉。

。没有人实现这样的减法器。只需键入
c,谢谢您的回复。你的建议使加法器/减法器工作正常:)
     o_Couts => carry(i+1));