我正在尝试用VHDL构建一个密码。输入I_0
并输出O_0
。 omega_in是计数器的起始值。我的输入和输出目前正在给出正确的值。但是,如果我删除第二个if中的注释(s(0) <= I_0
和s(0) <= s(0) xor I_0
),我的ram在0处没有分配任何内容,因此O_0
不能保持正确的值。
问题可以通过用omega_in替换第一个if语句中的omega来解决,但这不是我想要的,因为最终代码将包含更多的if语句,而omega和omega_in将有所不同。
我的代码看起来像
entity Piston_Crypt is
Port (I_0 :in std_logic_vector (7 downto 0);
O_0 :out std_logic_vector (7 downto 0);
omega_in :in integer;
unwrapFlag :in std_logic;
Rs :in integer;
CryptEnd :in integer
);
end Piston_Crypt;
architecture Behavioral of Piston_Crypt is
signal omega : integer;
type ram_type is array(0 to 800) of std_logic_vector(7 downto 0);
signal s : ram_type;
begin
process(omega_in, Rs, omega)
begin
s(0) <= X"aa";
s(1) <= X"80";
s(2) <= X"9d";
omega <= omega_in;
if (omega < Rs) then
O_0 <= s(0) xor I_0; -- O.PUSHBYTE(s[omega] xor x)
if (unwrapFlag = '1') then
--s(0) <= I_0;
else
--s(0) <= s(0) xor I_0;
end if;
end if;
end process;
end Behavioral;
有人可以向我解释为什么VHDL没有为s(0)
分配任何内容(或删除它)以及我如何解决它?