Подтвердить что ты не робот

Как объявить вывод с несколькими нулями в VHDL

Здравствуйте, я пытаюсь найти способ заменить эту команду: Bus_S <= "0000000000000000000000000000000" & Ne; с чем-то более удобным. Подсчет нулей один за другим не очень изощрен. Программа представляет собой блок SLT для ALU в mips. SLT получает только 1 бит (MSB ADDSU32) и имеет выход из 32 бит всех нулей, но первый бит, который зависит от Ne = MSB ADDSU32. (PLZ игнорировать ALUop на данный момент)

entity SLT_32x is
   Port ( Ne : in  STD_LOGIC;
         ALUop : in STD_LOGIC_VECTOR (1 downto 0);
         Bus_S : out  STD_LOGIC_VECTOR (31 downto 0));
end SLT_32x;

architecture Behavioral of SLT_32x is
begin
  Bus_S <= "0000000000000000000000000000000" & Ne; 
end Behavioral;

Есть ли способ использовать (30 downto 0) = '0' или что-то в этом роде? Спасибо.

4b9b3361

Ответ 1

Попробуйте следующее: bus_S <= (0 => Ne, others => '0') Это означает: установите бит 0 на Ne и установите остальные биты в '0'.

Ответ 2

альтернатива данным ответам:

architecture Behavioral of SLT_32x is
begin
  Bus_S <= (others => '0');
  Bus_S(0) <= ne;
end Behavioral;

Всегда учитывается последнее задание в комбинаторном процессе. Это делает очень читаемый код при назначении по умолчанию для большинства случаев и после этого добавляет особые случаи, то есть подает широкую шину (определенную как запись) через иерархический блок и просто модифицирует некоторые из сигналов.