Немного обойдемся, но можете ли вы поместить все свои переменные в массив, а затем просто выбрать переменную из этого массива? Вам нужно будет поместить переменные в массив. Я не пытался скомпилировать его, но он должен выглядеть примерно так.
Предполагается, что на выходе получится значение slv (от 7 до 0), и у вас есть общий MAX для установки размера
architecture A1 of example is
type t_output_array is array (INTEGER range <>) of std_logic_vector(7 downto 0);
signal output_array : t_output_array(1 to MAX);
signal I : integer range 0 to MAX; -- To select in the array
begin
process( CLK )
begin
if Rising_edge( CLK ) then
block_output <= output_array(I);
end if;
end process;
end architecture A1;
Альтернативой было бы как-то использовать оператор создания. Вы можете попытаться поэкспериментировать с ним, чтобы увидеть, можете ли вы создать процесс, который нумерует и перечисляет из заданного диапазона.
G1: for I in 0 to N generate
-- Component instances and/or process
end generate G1;