Вы не можете (легко) объединить эти 1-битные ALU в функциональную многоразрядную версию.Не существует способа обработать ввод / вывод, необходимый для правильной работы режимов сложения и вычитания (однако, побитовый и / или должен работать нормально).
Игнорируя проблему переноса на данный момент, вы быобычно просто устанавливают цикл for и создают несколько копий вашей побитовой логики, возможно, специальный регистр первого и / или последнего элементов, например:
MyLabel : for bitindex in 0 to 3 generate
begin
alu_x4 : entity work.alu1
port map (
a => input_a(bitindex),
b => input_b(bitindex),
m => mode,
result => result_x4(bitindex) );
end generate;