process (CLK, RST_L)
begin
if (RST_L = '0') then
wWR_EN <= '0';
wWRITE_STATE <= WAIT_DATA;
elsif (CLK'event and CLK = '1') then
case wWRITE_STATE is
when WAIT_DATA =>
wWR_EN <= '0';
if (wBYTE_COMPLETE = '1') then
wWRITE_STATE <= START_WRITE;
else
wWRITE_STATE <= WAIT_DATA;
end if;
when START_WRITE =>
wWR_EN <= '0';
wWRITE_DATA <= wDATA_BUFFER (8 downto 1);
wWRITE_STATE <= WRITING;
when WRITING =>
wWR_EN <= '1';
wWRITE_STATE <= WAIT_DATA;
end case;
end if;
end process;