- added UART with FIFO

git-svn-id: http://moon:8086/svn/vhdl/trunk@1353 cc03376c-175c-47c8-b038-4cd826a8556b
This commit is contained in:
2016-12-20 20:36:04 +00:00
parent e4da80768a
commit c5d08ec384
5 changed files with 494 additions and 0 deletions
+140
View File
@@ -0,0 +1,140 @@
-- UART Transmitter with integral 16 byte FIFO buffer
--
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.numeric_std.ALL;
--
------------------------------------------------------------------------------------
--
-- Main Entity for UART_TX
--
entity uart_tx is
Generic
(
fifo_depth_bits : integer := 4
);
Port
(
rst : in std_logic;
clk : in std_logic;
we : in std_logic;
din : in unsigned(7 downto 0);
full : out std_logic;
half_full : out std_logic;
ser_out : out std_logic;
tx_complete : out std_logic;
tx_empty : out std_logic;
en_16_x_baud : in std_logic
);
end uart_tx;
--
------------------------------------------------------------------------------------
--
-- Start of Main Architecture for UART_TX
--
architecture rtl of uart_tx is
--
------------------------------------------------------------------------------------
--
-- Components used in UART_TX and defined in subsequent entities.
--
------------------------------------------------------------------------------------
--
-- Constant (K) Compact UART Transmitter
--
component juart_tx
Port
(
rst : in std_logic;
clk : in std_logic;
din : in unsigned(7 downto 0);
we : in std_logic;
en_16_x_baud : in std_logic;
ser_out : out std_logic;
Tx_complete : out std_logic
);
end component;
--
-- 'Bucket Brigade' FIFO
--
component bbfifo
Generic
(
depth_bits : integer := 4;
data_width : integer := 8
);
Port
(
rst : in std_logic;
clk : in std_logic;
we : in std_logic;
din : in unsigned(7 downto 0);
full : out std_logic;
half_full : out std_logic;
re : in std_logic;
dout : out unsigned(7 downto 0);
dout_vld : out std_logic
);
end component;
--
------------------------------------------------------------------------------------
--
-- Signals used in UART_TX
--
------------------------------------------------------------------------------------
--
signal fifo_data_out : unsigned(7 downto 0);
signal fifo_data_present : std_logic;
signal fifo_read : std_logic;
--
------------------------------------------------------------------------------------
--
-- Start of UART_TX circuit description
--
------------------------------------------------------------------------------------
--
begin
tx_complete <= fifo_read;
tx_empty <= not fifo_data_present;
juart: juart_tx
port map
(
rst => rst,
clk => clk,
din => fifo_data_out,
we => fifo_data_present,
en_16_x_baud => en_16_x_baud,
ser_out => ser_out,
Tx_complete => fifo_read
);
buf: bbfifo
GENERIC MAP
(
depth_bits => fifo_depth_bits,
data_width => 8
)
port map
(
clk => clk,
rst => rst,
din => din,
dout => fifo_data_out,
we => we,
re => fifo_read,
full => full,
half_full => half_full,
dout_vld => fifo_data_present
);
end rtl;
------------------------------------------------------------------------------------
--
-- END OF FILE UART_TX.VHD
--
------------------------------------------------------------------------------------