process (clk, reset) is
begin
- if reset = '1' then
- state <= waiting;
- rx_reset <= '0';
- rx_en <= '0';
- fifo_we <= '0';
- clk_en <= '0';
-
- elsif clk'event and clk = '1' then
- case state is
- when resetting =>
- state <= waiting;
- rx_reset <= '0';
- rx_en <= '0';
- fifo_we <= '0';
- clk_en <= '0';
-
-
- when waiting =>
- rx_reset <= '0';
- rx_en <= '0';
- fifo_we <= '0';
- clk_en <= '0';
-
- if rx = '0' then
- state <= next_frame;
- rx_en <= '1';
- clk_en <= '1';
- end if;
-
-
- when next_frame =>
- rx_reset <= '0';
- rx_en <= '1';
- fifo_we <= '0';
- clk_en <= '1';
-
- if rx_ready = '0' then
- if bad_start_bit = '1' then
- state <= resetting;
- rx_reset <= '1';
- rx_en <= '0';
- clk_en <= '0';
-
- else
- state <= receiving;
- rx_en <= '0';
+ if clk'event and clk = '1' then
+ if reset = '1' then
+ state <= waiting;
+ rx_reset <= '0';
+ rx_en <= '0';
+ fifo_we <= '0';
+ clk_en <= '0';
+
+ else
+ case state is
+ when resetting =>
+ state <= waiting;
+ rx_reset <= '0';
+ rx_en <= '0';
+ fifo_we <= '0';
+ clk_en <= '0';
+
+
+ when waiting =>
+ rx_reset <= '0';
+ rx_en <= '0';
+ fifo_we <= '0';
+ clk_en <= '0';
+
+ if rx = '0' then
+ state <= next_frame;
+ rx_en <= '1';
+ clk_en <= '1';
end if;
- end if;
- when receiving =>
- rx_reset <= '0';
- rx_en <= '0';
- fifo_we <= '0';
- clk_en <= '1';
+ when next_frame =>
+ rx_reset <= '0';
+ rx_en <= '1';
+ fifo_we <= '0';
+ clk_en <= '1';
- if rx_ready = '1' then
- state <= waiting;
- fifo_we <= '1';
- clk_en <= '0';
- end if;
+ if rx_ready = '0' then
+ if bad_start_bit = '1' then
+ state <= resetting;
+ rx_reset <= '1';
+ rx_en <= '0';
+ clk_en <= '0';
- end case;
+ else
+ state <= receiving;
+ rx_en <= '0';
+ end if;
+ end if;
+
+
+ when receiving =>
+ rx_reset <= '0';
+ rx_en <= '0';
+ fifo_we <= '0';
+ clk_en <= '1';
+
+ if rx_ready = '1' then
+ state <= waiting;
+ fifo_we <= '1';
+ clk_en <= '0';
+ end if;
+
+ end case;
+ end if;
end if;
end process;