将值分配给RAM时,VHDL结果被擦除

时间:2016-07-09 19:31:14

标签: vhdl

我正在尝试用VHDL构建一个密码。输入I_0并输出O_0。 omega_in是计数器的起始值。我的输入和输出目前正在给出正确的值。但是,如果我删除第二个if中的注释(s(0) <= I_0s(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)分配任何内容(或删除它)以及我如何解决它?

0 个答案:

没有答案