uart sollte jetzt gehen
authorManfred <xzarion@l0725898.(none)>
Tue, 11 Jan 2011 12:41:48 +0000 (13:41 +0100)
committerManfred <xzarion@l0725898.(none)>
Tue, 11 Jan 2011 12:41:48 +0000 (13:41 +0100)
cpu/src/rs232_rx_arc.vhd

index 30d0e5b18db980cf837024c50b631f5386d3867b..d251e09321a2abb5bccac0e02c2c88c45aead4ee 100755 (executable)
@@ -20,7 +20,7 @@ use work.core_pkg.all;
 
 architecture beh of rs232_rx is
        -- definierern der intern verwendeten Signale
-       type STATE_TYPE is (IDLE, READ_START, READ_BIT, READ_STOP, POST_STOP);
+       type STATE_TYPE is (IDLE, READ_START, READ_BIT, READ_STOP);
        signal state, state_next : STATE_TYPE;
        signal bus_rx_last, bus_rx_int, new_rx_data_nxt : std_logic := '0';
        signal cnt, cnt_next : integer := 0;
@@ -99,14 +99,7 @@ begin
                        when READ_STOP =>
                                -- hier wird nur noch auf das Stopbit abgewartet und gelesen um den
                                -- Lesevorgang koerrekt zu beenden
-                               if baud_cnt = bd_rate and bus_rx = '1' then
-                                       state_next <= IDLE;
-                               elsif baud_cnt = bd_rate and bus_rx = '0' then
-                                       state_next <= IDLE;
-                               end if;
-                       when POST_STOP =>
-                               -- hier wird nur noch eine halbe Bitzeit gewartet
-                               if baud_cnt(BAUD_RATE_WIDTH-2 downto 0) = bd_rate(BAUD_RATE_WIDTH-1 downto 1) then
+                               if baud_cnt = bd_rate then
                                        state_next <= IDLE;
                                end if;
                end case;
@@ -153,17 +146,9 @@ begin
                                baud_cnt_next <= std_logic_vector(unsigned(baud_cnt) + 1);
                                if baud_cnt = bd_rate then 
                                        baud_cnt_next <= (others => '0');
-                                       new_rx_data_nxt <= '1';
+                                       new_rx_data_nxt <= bus_rx;
                                        rx_data_res_nxt <= rx_data_int;
                                end if;
-                       when POST_STOP =>
-                               --halbe bitzeit wartenr auf counter warten
-                               baud_cnt_next <= baud_cnt + 1;
-                               if baud_cnt(BAUD_RATE_WIDTH-2 downto 0) = bd_rate(BAUD_RATE_WIDTH-1 downto 1) then 
-                                       new_rx_data_nxt <= '1'; 
-                                       rx_data_res_nxt <= rx_data_int;
-                                       baud_cnt_next <= (others => '0');
-                               end if;
                end case;
        end process;