[UART]
- added UART with FIFO git-svn-id: http://moon:8086/svn/vhdl/trunk@1353 cc03376c-175c-47c8-b038-4cd826a8556b
This commit is contained in:
@@ -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
|
||||
--
|
||||
------------------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user