X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=cpu%2Fsrc%2Frs232_rx_arc.vhd;h=0a9df83efd043ea824540ad389a46121539673e5;hb=61ccae8df4f138fd753bd1e5e7e8b8f25159d969;hp=1bdc472806753a562cbf6c9c933d4f3969bcb9dc;hpb=3e9337b7a4d81fb059f90716d7df9aa3bec9d719;p=calu.git diff --git a/cpu/src/rs232_rx_arc.vhd b/cpu/src/rs232_rx_arc.vhd index 1bdc472..0a9df83 100755 --- a/cpu/src/rs232_rx_arc.vhd +++ b/cpu/src/rs232_rx_arc.vhd @@ -26,6 +26,8 @@ architecture beh of rs232_rx is signal cnt, cnt_next : integer := 0; signal baud_cnt, baud_cnt_next : std_logic_vector(BAUD_RATE_WIDTH-1 downto 0); signal rx_data_int, rx_data_nxt, rx_data_res_int, rx_data_res_nxt : uart_data; + signal sync : std_logic_vector(1 to SYNC_STAGES); + signal bus_rx : std_logic; begin -- syncronisierungs Prozess @@ -36,7 +38,9 @@ begin state <= IDLE; cnt <= 0; rx_data_res_int <= x"00"; + rx_data_int <= (others => '0'); baud_cnt <= (others => '0'); + sync <= (others => '1'); elsif rising_edge(sys_clk) then -- sync Zustand, uebernehmen der next-Signale @@ -48,11 +52,17 @@ begin rx_data_res_int <= rx_data_res_nxt; new_rx_data <= new_rx_data_nxt; + sync(1) <= bus_rx_unsync; + for i in 2 to SYNC_STAGES loop + sync(i) <= sync(i - 1); + end loop; + end if; end process; -- setzen des Ausgangsignals, Rxt-Daten rx_data <= rx_data_res_int; + bus_rx <= sync(SYNC_STAGES); -- Zustandsmaschienen Prozess rs232_states : process(sys_clk,state,cnt, bus_rx, bus_rx_last, baud_cnt,bus_rx_int,bd_rate)