Instead of making the process simply sensitive to SysClk, I would register the signals on the rising edge and make Read and Load combinational.
if (CS_N = '0' and RD_N = '0') then Read <= '1';else Read <= '0';end if;if (CS_N = '0' and WR_N = '0') then Load <= '1';else Load <= '0';end if; if (Read = '1' and Addr = "00") then DataOut <= RxData; elsif (Read = '1' and Addr = "01") then DataOut <= CSReg; end if;if Read = '0' then DataOut <= "ZZZZZZZZ";elsif (Read = '1' and Addr = "00") then DataOut <= RxData;elsif (Read = '1' and Addr = "01") then DataOut <= CSReg;end if;if Load = '0' then TxData <= "ZZZZZZZZ";elsif (Load = '1' and Addr = "00") then TxData <= DataIn;end if; if (Load = '1' and Addr = "00") then TxData <= DataIn; LoadTX <= '1'; else LoadTX <= '0'; end if;