- added UART with FIFO git-svn-id: http://moon:8086/svn/vhdl/trunk@1353 cc03376c-175c-47c8-b038-4cd826a8556b
141 lines
3.1 KiB
VHDL
141 lines
3.1 KiB
VHDL
-- 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
|
|
--
|
|
------------------------------------------------------------------------------------
|
|
|