|
- -- UART Transmitter with integral 16 byte FIFO buffer
- --
- -- 8 bit, no parity, 1 stop bit
- --
- -- Special version made 2nd November 2005 in which the data_present signal
- -- was brough out as well as the half and full status signals.
- --
- -- Version : 1.00
- -- Version Date : 14th October 2002
- --
- -- Start of design entry : 14th October 2002
- --
- -- Ken Chapman
- -- Xilinx Ltd
- -- Benchmark House
- -- 203 Brooklands Road
- -- Weybridge
- -- Surrey KT13 ORH
- -- United Kingdom
- --
- -- chapman@xilinx.com
- --
- ------------------------------------------------------------------------------------
- --
- -- NOTICE:
- --
- -- Copyright Xilinx, Inc. 2002. This code may be contain portions patented by other
- -- third parties. By providing this core as one possible implementation of a standard,
- -- Xilinx is making no representation that the provided implementation of this standard
- -- is free from any claims of infringement by any third party. Xilinx expressly
- -- disclaims any warranty with respect to the adequacy of the implementation, including
- -- but not limited to any warranty or representation that the implementation is free
- -- from claims of any third party. Futhermore, Xilinx is providing this core as a
- -- courtesy to you and suggests that you contact all third parties to obtain the
- -- necessary rights to use this implementation.
- --
- ------------------------------------------------------------------------------------
- --
- -- Library declarations
- --
- -- The Unisim Library is used to define Xilinx primitives. It is also used during
- -- simulation. The source can be viewed at %XILINX%\vhdl\src\unisims\unisim_VCOMP.vhd
- --
- library IEEE;
- use IEEE.STD_LOGIC_1164.ALL;
- use IEEE.STD_LOGIC_ARITH.ALL;
- use IEEE.STD_LOGIC_UNSIGNED.ALL;
- library unisim;
- use unisim.vcomponents.all;
- --
- ------------------------------------------------------------------------------------
- --
- -- Main Entity for uart_tx_plus
- --
- entity uart_tx_plus is
- Port ( data_in : in std_logic_vector(7 downto 0);
- write_buffer : in std_logic;
- reset_buffer : in std_logic;
- en_16_x_baud : in std_logic;
- serial_out : out std_logic;
- buffer_data_present : out std_logic;
- buffer_full : out std_logic;
- buffer_half_full : out std_logic;
- clk : in std_logic);
- end uart_tx_plus;
- --
- ------------------------------------------------------------------------------------
- --
- -- Start of Main Architecture for uart_tx_plus
- --
- architecture macro_level_definition of uart_tx_plus is
- --
- ------------------------------------------------------------------------------------
- --
- -- Components used in uart_tx_plus and defined in subsequent entities.
- --
- ------------------------------------------------------------------------------------
- --
- -- Constant (K) Compact UART Transmitter
- --
- component kcuart_tx
- Port ( data_in : in std_logic_vector(7 downto 0);
- send_character : in std_logic;
- en_16_x_baud : in std_logic;
- serial_out : out std_logic;
- Tx_complete : out std_logic;
- clk : in std_logic);
- end component;
- --
- -- 'Bucket Brigade' FIFO
- --
- component bbfifo_16x8
- Port ( data_in : in std_logic_vector(7 downto 0);
- data_out : out std_logic_vector(7 downto 0);
- reset : in std_logic;
- write : in std_logic;
- read : in std_logic;
- full : out std_logic;
- half_full : out std_logic;
- data_present : out std_logic;
- clk : in std_logic);
- end component;
- --
- ------------------------------------------------------------------------------------
- --
- -- Signals used in uart_tx_plus
- --
- ------------------------------------------------------------------------------------
- --
- signal fifo_data_out : std_logic_vector(7 downto 0);
- signal fifo_data_present : std_logic;
- signal fifo_read : std_logic;
- --
- ------------------------------------------------------------------------------------
- --
- -- Start of UART_TX circuit description
- --
- ------------------------------------------------------------------------------------
- --
- begin
-
- -- 8 to 1 multiplexer to convert parallel data to serial
-
- kcuart: kcuart_tx
- port map ( data_in => fifo_data_out,
- send_character => fifo_data_present,
- en_16_x_baud => en_16_x_baud,
- serial_out => serial_out,
- Tx_complete => fifo_read,
- clk => clk);
-
-
- buf: bbfifo_16x8
- port map ( data_in => data_in,
- data_out => fifo_data_out,
- reset => reset_buffer,
- write => write_buffer,
- read => fifo_read,
- full => buffer_full,
- half_full => buffer_half_full,
- data_present => fifo_data_present,
- clk => clk);
-
- buffer_data_present <= fifo_data_present;
-
- end macro_level_definition;
-
- ------------------------------------------------------------------------------------
- --
- -- END OF FILE uart_tx_plus.vhd
- --
- ------------------------------------------------------------------------------------
-
-
|