8 位进位-select 加法器中的未知错误

Unknown error in 8 bit carry-select adder

所以我必须为我的实验室制作一个 8 位进位 select 加法器。我查看了维基百科,在那里我找到了一个 n 位进位 select 加法器的图表,并创建了我认为应该正确的内容,但是当我 运行 模拟时,我得到了一个错误的答案。如果有人能告诉我正确建模 8 位进位 select 加法器有什么问题,我将附上我的 vhdl 代码,我将不胜感激。

entity CarrySelect is
port(   a : in std_logic_vector(7 downto 0);
      b : in std_logic_vector(7 downto 0);
    s : out std_logic_vector(7 downto 0);
      co : out std_logic;
      ci : in std_logic

    );
end CarrySelect;

architecture behav of CarrySelect is

component multiplexer2 is
port (
  a : in std_logic;
  b : in std_logic;
  s : in std_logic;
  y : out std_logic
 );
end component;

component RCA4 is --add RCA4 component for use by CS adder
port (ci: in std_logic;
a, b: in std_logic_vector(3 downto 0);
s: out std_logic_vector(3 downto 0);
co: out std_logic
);
end component;

signal t0,t1,c0,c1 : std_logic_vector(7 downto 0); --temp signals for    passing from RCAs to muxes
signal co1 : std_logic;
begin

--for carry 0
RCA0 : RCA4 port map('0', a(3 downto 0), b(3 downto 0), t0(3 downto 0), c0(0));
RCA2 : RCA4 port map('0', a(7 downto 4), b(7 downto 4), t0(7 downto 4), c0(1));

--for carry 1
RCA1 : RCA4 port map('1', a(3 downto 0), b(3 downto 0), t1(3 downto 0), c1(0));
RCA3 : RCA4 port map('1', a(7 downto 4), b(7 downto 4), t1(7 downto 4), c1(1));

--mux for carry
MUX0 : multiplexer2 port map(c0(0),c1(0),ci,co1);
MUX9 : multiplexer2 port map(c0(1),c1(1),co1,co);
--muxes for sum
MUX1 : multiplexer2 port map(t0(0),t1(0),ci,s(0));
MUX2 : multiplexer2 port map(t0(1),t1(1),ci,s(1));
MUX3 : multiplexer2 port map(t0(2),t1(2),ci,s(2));
MUX4 : multiplexer2 port map(t0(3),t1(3),ci,s(3));
MUX5 : multiplexer2 port map(t0(4),t1(4),co1,s(4));
MUX6 : multiplexer2 port map(t0(5),t1(5),co1,s(5));
MUX7 : multiplexer2 port map(t0(6),t1(6),co1,s(6));
MUX8 : multiplexer2 port map(t0(7),t1(7),co1,s(7));

end architecture behav;

通过查看这段代码(没有组件和任何测试平台的代码),我想我发现了一些可能有问题的地方。 当您使用 RCA4 组件创建一个更大的 RCA 并以 0 作为进位时,您编写了 2 个 RCA4,RCA2(在端口映射中)需要将来自 RCA0 的进位作为进位而不是 0。 尝试改变它,我希望我有所帮助。