@@ -28,7 +28,8 @@ use IEEE.MATH_REAL.ALL;
2828 -- Signal BUSY replaced by DIN_RDY.
2929 -- Many other optimizations and changes.
3030-- Version 1.2 -
31- -- added double FF for safe CDC
31+ -- Added double FF for safe CDC.
32+ -- Fixed fake received transaction after FPGA boot without reset.
3233
3334entity UART is
3435 Generic (
@@ -63,8 +64,9 @@ architecture RTL of UART is
6364
6465 signal oversampling_clk_cnt : unsigned (CLK_CNT_WIDTH- 1 downto 0 );
6566 signal oversampling_clk_en : std_logic ;
66- signal uart_rxd_meta : std_logic ;
67- signal uart_rxd_synced : std_logic ;
67+ signal uart_rxd_meta_n : std_logic ;
68+ signal uart_rxd_synced_n : std_logic ;
69+ signal uart_rxd_debounced_n : std_logic ;
6870 signal uart_rxd_debounced : std_logic ;
6971
7072begin
9799 uart_rxd_cdc_reg_p : process (CLK)
98100 begin
99101 if (rising_edge (CLK)) then
100- uart_rxd_meta <= UART_RXD;
101- uart_rxd_synced <= uart_rxd_meta ;
102+ uart_rxd_meta_n <= not UART_RXD;
103+ uart_rxd_synced_n <= uart_rxd_meta_n ;
102104 end if ;
103105 end process ;
104106
@@ -113,15 +115,17 @@ begin
113115 )
114116 port map (
115117 CLK => CLK,
116- DEB_IN => uart_rxd_synced ,
117- DEB_OUT => uart_rxd_debounced
118+ DEB_IN => uart_rxd_synced_n ,
119+ DEB_OUT => uart_rxd_debounced_n
118120 );
119121 end generate ;
120122
121123 not_use_debouncer_g : if (USE_DEBOUNCER = False ) generate
122- uart_rxd_debounced <= uart_rxd_synced ;
124+ uart_rxd_debounced_n <= uart_rxd_synced_n ;
123125 end generate ;
124126
127+ uart_rxd_debounced <= not uart_rxd_debounced_n;
128+
125129 -- -------------------------------------------------------------------------
126130 -- UART RECEIVER
127131 -- -------------------------------------------------------------------------
0 commit comments