Line 247... |
Line 247... |
when AS_IMM => L_BASE <= I_IMM;
|
when AS_IMM => L_BASE <= I_IMM;
|
when others => L_BASE <= X"0000";
|
when others => L_BASE <= X"0000";
|
end case;
|
end case;
|
end process;
|
end process;
|
|
|
-- the value of the X/Y/Z/SP register after a potential PRE-decrement
|
-- the value of the X/Y/Z/SP register after a potential PRE-inc/decrement
|
-- (by 1 or 2) and POST-increment (by 1 or 2).
|
-- (by 1 or 2) and POST-inc/decrement (by 1 or 2).
|
--
|
--
|
process(I_AMOD(5 downto 3), I_IMM)
|
process(I_AMOD, I_IMM)
|
begin
|
begin
|
case I_AMOD(5 downto 3) is
|
case I_AMOD is
|
when AO_0 => L_PRE <= X"0000"; L_POST <= X"0000";
|
when AMOD_Xq | AMOD_Yq | AMOD_Zq =>
|
when AO_i => L_PRE <= X"0000"; L_POST <= X"0001";
|
L_PRE <= I_IMM; L_POST <= X"0000";
|
when AO_ii => L_PRE <= X"0000"; L_POST <= X"0002";
|
|
when AO_q => L_PRE <= I_IMM; L_POST <= X"0000";
|
when AMOD_Xi | AMOD_Yi | AMOD_Zi =>
|
when AO_d => L_PRE <= X"FFFF"; L_POST <= X"FFFF";
|
L_PRE <= X"0000"; L_POST <= X"0001";
|
when AO_dd => L_PRE <= X"FFFE"; L_POST <= X"FFFE";
|
|
when others => L_PRE <= X"0000"; L_POST <= X"0000";
|
when AMOD_dX | AMOD_dY | AMOD_dZ =>
|
|
L_PRE <= X"FFFF"; L_POST <= X"FFFF";
|
|
|
|
when AMOD_iSP =>
|
|
L_PRE <= X"0001"; L_POST <= X"0001";
|
|
|
|
when AMOD_iiSP=>
|
|
L_PRE <= X"0001"; L_POST <= X"0002";
|
|
|
|
when AMOD_SPd =>
|
|
L_PRE <= X"0000"; L_POST <= X"FFFF";
|
|
|
|
when AMOD_SPdd=>
|
|
L_PRE <= X"FFFF"; L_POST <= X"FFFE";
|
|
|
|
when others =>
|
|
L_PRE <= X"0000"; L_POST <= X"0000";
|
end case;
|
end case;
|
end process;
|
end process;
|
|
|
L_XYZS <= L_BASE + L_POST;
|
L_XYZS <= L_BASE + L_POST;
|
L_ADR <= L_BASE + L_PRE;
|
L_ADR <= L_BASE + L_PRE;
|