Я пытаюсь создать n-битный сумматор, генерируя n базовых ячеек фулладдера (здесь код ALCell).Итак, я сделал код, как показано, но он не синтезирует 3 из них (как я уже писал), но я получаю одну ячейку с сигналами, подключенными неправильно.Если я изменю выходные сигналы oRes и oCarry на: oRes <= sFnc (cell_num -1);oCarry <= sCarry (cell_num -1);тогда будут генерироваться 2 ячейки с некоторыми предупреждениями (что sCarry (3) и sRes (3) нигде не связаны в проекте).Можете ли вы помочь мне понять, почему из написанного кода я не разыскиваю дизайн.Спасибо, Небойша </p>
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity mul_cell is
generic ( cell_num : integer := 3 );
port ( iL : in std_logic_vector(cell_num-1 downto 0);
iCarry : in std_logic;
oRes : out std_logic;
oCarry : out std_logic );
end mul_cell;
architecture Behavioral of mul_cell is
component ALCell
port( iA : in std_logic;
iB : in std_logic;
iC : in std_logic;
oFnc : out std_logic;
oC : out std_logic );
end component;
signal sL : std_logic_vector(cell_num-1 downto 0);
signal sCarry: std_logic_vector(cell_num downto 0);
signal sFnc : std_logic_vector(cell_num downto 0);
begin
sL <= iL;
sFnc(0) <= '0';
sCarry(0) <= iCarry;
GEN_ADD_Level_3:
for I in 1 to cell_num generate
ADDX : ALCell
port map(iA => sL(I-1),
iB => sFnc(I-1),
iC => sCarry(I-1),
oFnc => sFnc(I),
oC => sCarry(I) );
end generate GEN_ADD_Level_3;
oRes <= sFnc(cell_num);
oCarry <= sCarry(cell_num);
end Behavioral;