From: Manfred Date: Tue, 11 Jan 2011 12:41:48 +0000 (+0100) Subject: uart sollte jetzt gehen X-Git-Tag: bootrom_v1~7 X-Git-Url: http://wien.tomnetworks.com/gitweb/?p=calu.git;a=commitdiff_plain;h=667cacc3afde14286378b3cbc54d2123c9d8807c uart sollte jetzt gehen --- diff --git a/cpu/src/rs232_rx_arc.vhd b/cpu/src/rs232_rx_arc.vhd index 30d0e5b..d251e09 100755 --- a/cpu/src/rs232_rx_arc.vhd +++ b/cpu/src/rs232_rx_arc.vhd @@ -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;