Finally some inline documentation.
[bos2k9.git] / fhw_rs232 / rs232_uart.vhd
1  -----------------------------------------------------------------------
2 -- Copyright (c) 2009 Malte S. Stretz <http://msquadrat.de> 
3 --
4 -- TODO: This is an incomplete UART implementation, only including a 
5 -- sender.  See `rs232_send` for details.
6 -- 
7 -----------------------------------------------------------------------
8 -- This entity is part of the following library:
9 -- pragma library fhw_rs232
10 library fhw_rs232;
11
12 library ieee;
13 use ieee.std_logic_1164.all;
14 use ieee.numeric_std.all;
15
16 entity sd_host is
17   generic(
18     clock_divider  : positive;
19     data_width     : positive := 8;
20     parity_enabled : std_logic := '0';
21     parity_type    : std_logic := '0');
22   port(
23     clk : in  std_logic;
24     rst : in  std_logic;
25     
26     tx  : out std_logic;
27     txd : in  std_logic_vector(data_width - 1 downto 0);
28     txn : in  std_logic;
29     txb : out std_logic;
30     
31     rx  : in  std_logic;
32     rxd : out std_logic_vector(data_width - 1 downto 0);
33     rxn : out std_logic;
34     rxb : out std_logic);
35  end sd_host;
36  
37 -----------------------------------------------------------------------
38
39 architecture rtl of sd_host is
40   component rs232_send is
41     generic(
42       clock_divider  : positive := clock_divider;
43       data_width     : positive := data_width;
44       parity_enabled : std_logic := parity_enabled;
45       parity_type    : std_logic := parity_type);
46     port(
47       clk : in  std_logic;
48       rst : in  std_logic;
49       
50       tx  : out std_logic;
51       txd : in  std_logic_vector(data_width - 1 downto 0);
52       txn : in  std_logic;
53       txb : out std_logic);
54    end component;
55    component rs232_recv is
56     generic(
57       clock_divider  : positive := clock_divider;
58       data_width     : positive := data_width;
59       parity_enabled : std_logic := parity_enabled;
60       parity_type    : std_logic := parity_type);
61     port(
62       clk : in  std_logic;
63       rst : in  std_logic;
64       
65       rx  : in  std_logic;
66       rxd : out std_logic_vector(data_width - 1 downto 0);
67       rxn : out std_logic;
68       rxb : out std_logic);
69    end component;
70 begin
71   send : rs232_send port map(clk, rst, tx, txd, txn, txb);
72   recv : rs232_recv port map(clk, rst, rx, rxd, rxn, rxb);
73 end rtl;