Почему мой синтезированный дизайн в VHDL не так нужен, когда я использую для - генерировать для создания компонентов в дизайне - PullRequest
0 голосов
/ 29 ноября 2018

Я пытаюсь создать 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;
...