Итак, я разрабатываю ALU для архитектуры MIPS и пытаюсь сделать сдвиг влево и вправо, чтобы ALU мог сдвигать любое количество битов.
Идея, которая у меня была, заключается в том,преобразовать значение сдвига в целое число и выбрать часть записи, которая будет в результате (целое число хранится в X), но Quartus не принимает значение переменной, только константы.
ЧтоМогу ли я сделать это?(Случаи в строках "WHEN" 1000 "=> ..." и "WHEN" 1001 "=> ...")
Спасибо.
PROCESS ( ALU_ctl, Ainput, Binput, X )
BEGIN
-- Select ALU operation
--ALU_output_mux <= X"00000000"; --padrao
CASE ALU_ctl IS
WHEN "1000" => ALU_output_mux(31 DOWNTO X) <= (Ainput( 31-X DOWNTO 0 ));
WHEN "1001" => ALU_output_mux(31-X DOWNTO 0) <= (Ainput( 31 DOWNTO X ));
WHEN OTHERS => ALU_output_mux <= X"00000000";
END CASE;
END PROCESS;