From f7af661eda8279dee20b263862bc83028f222c60 Mon Sep 17 00:00:00 2001 From: Jens Ahrensfeld Date: Sun, 18 Dec 2016 00:12:24 +0000 Subject: [PATCH] [Uart] - no auto reload for idle count - removed hard coded numbers git-svn-id: http://moon:8086/svn/vhdl/trunk@1342 cc03376c-175c-47c8-b038-4cd826a8556b --- lib/uart/juart_rx.vhd | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/lib/uart/juart_rx.vhd b/lib/uart/juart_rx.vhd index ca6e337..177ac58 100644 --- a/lib/uart/juart_rx.vhd +++ b/lib/uart/juart_rx.vhd @@ -41,14 +41,19 @@ architecture behavior of juart_rx is -- ------------------------------------------------------------------------------------ -- +constant OVERSAMPLING : natural := 16; + +subtype bit_count_t is natural range 0 to OVERSAMPLING-1; +subtype idle_count_t is natural range 0 to OVERSAMPLING-1; + signal bit_count_rst : std_logic; -signal bit_count : natural range 0 to 15; +signal bit_count : bit_count_t; signal data_valid : std_logic; signal shiftreg_en : std_logic; signal shiftreg : unsigned (7 downto 0); signal sample_count_rst : std_logic; -signal sample_count : unsigned (15 downto 0); -signal idle_count : natural range 0 to 15; +signal sample_count : unsigned (OVERSAMPLING-1 downto 0); +signal idle_count : idle_count_t; signal is_idle : std_logic; signal bit_sample : std_logic; @@ -60,7 +65,7 @@ signal state_next : state_t; -- begin -bit_sample <= sample_count(8); +bit_sample <= sample_count(OVERSAMPLING/2); is_idle <= '1' when idle_count = 0 else '0'; data_out_reg: @@ -157,7 +162,7 @@ begin if rising_edge(clk) then if bit_count_rst = '1' then bit_count <= 0; - elsif bit_count /= 15 and bit_sample = '1' then + elsif bit_count /= bit_count_t'high and bit_sample = '1' then bit_count <= bit_count + 1; end if; end if; @@ -168,11 +173,9 @@ process(clk) begin if rising_edge(clk) then if serial_in = '0' then - idle_count <= 15; + idle_count <= idle_count_t'high; elsif idle_count /= 0 then idle_count <= idle_count - 1; - else - idle_count <= 15; end if; end if; end process;