type dmemSpace is array(0 to 1023) of std_logic_vector(31 downto 0);
signal dataMem : dmemSpace := (
400 => X"00000000",
404 => X"00001000",
408 => X"FFFFEFFF",
others => X"00000000"
);
signal dAddr : std_logic_vector(31 downto 0);
signal check : integer;
dAddr(31 downto 0) <= Addr(31 downto 2) & "00";
check <= to_integer(unsigned(dAddr));
DataOut <= dataMem(to_integer(unsigned(dAddr))) when (check > 0);
その私は再び....単一サイクルのCPUと他のすべてに取り組んでいると、メモリ内のこの特定の行以外はすべて正常に動作します。
DataOut <= dataMem(to_integer(unsigned(dAddr))) when (check > 0);
DataOutの範囲外のインデックスエラーを防ぎたいのですが、これは機能しません。何か案は?
Check > 0
すべてのデータが出てこないようにします。Check >= 0
例外の原因となるインデックスが-4の場合、エラーを通過させます。