У меня есть следующий код
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.all;
entity LUT is
Port ( LUTin : in STD_LOGIC_VECTOR (15 downto 0);
LUTout : out STD_LOGIC_VECTOR (15 downto 0));
end LUT;
architecture Behavioral of LUT is
signal fullout : std_logic_vector(15 downto 0);
signal tophalf : std_logic_vector(7 downto 0);
signal secondnibble, firstnibble : std_logic_vector(3 downto 0); --break the LSH into 2 nibbles
begin
tophalf(7 downto 0) <= LUTin(15 downto 8);
secondnibble(3 downto 0) <= LUTin(7 downto 4);
firstnibble(3 downto 0) <= LUTin(3 downto 0);
fullout(15 downto 8) <= tophalf(7 downto 0);
--fullout(7 downto 4) <= "0001";
fullout(3 downto 0) <= firstnibble(3 downto 0);
p1: process
begin
case secondnibble is
when "0000" => --0 Sbox1
fullout(7 downto 4) <= "0001";
when others =>
end case;
end process;
end Behavioral;
Я могу закомментировать оператор case из p1: process до конечного процесса и прокомментировать в полном объеме (от 7 до 4) <= "0001"; и это поместит 0001 в 7-4 бита в полном объеме. то, что я хочу сделать, это дать ему 0001, когда LUTin (7 до 4) <= "0000" ;. поэтому мне нужно поместить оператор case и процесс p1: как указано выше. но это означает, что полный аут (от 7 до 4) оставлен как «U».
Как это работает, если его нет в операторе case и оставить как U в выражении case?
Я буду делать то же самое для полного диапазона secondnibble. это всего лишь упрощенная инструкция, поэтому я могу понять, как это сделать </p>