Ответ 1
Попробуйте следующее: bus_S <= (0 => Ne, others => '0')
Это означает: установите бит 0 на Ne
и установите остальные биты в '0'.
Здравствуйте, я пытаюсь найти способ заменить эту команду: 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' или что-то в этом роде? Спасибо.
Попробуйте следующее: bus_S <= (0 => Ne, others => '0')
Это означает: установите бит 0 на Ne
и установите остальные биты в '0'.
альтернатива данным ответам:
architecture Behavioral of SLT_32x is
begin
Bus_S <= (others => '0');
Bus_S(0) <= ne;
end Behavioral;
Всегда учитывается последнее задание в комбинаторном процессе. Это делает очень читаемый код при назначении по умолчанию для большинства случаев и после этого добавляет особые случаи, то есть подает широкую шину (определенную как запись) через иерархический блок и просто модифицирует некоторые из сигналов.