A parity generator.
[bos2k9.git] / fhw_rs232 / rs232_uart.vhd
1  -----------------------------------------------------------------------
2 -- Copyright (c) 2009 Malte S. Stretz <http://msquadrat.de> 
3 --
4 -- TODO
5 -- 
6 -----------------------------------------------------------------------
7 -- This entity is part of the following library:
8 -- pragma library fhw_rs232
9 library fhw_rs232;
10
11 library ieee;
12 use ieee.std_logic_1164.all;
13 use ieee.numeric_std.all;
14
15 entity sd_host is
16   generic(
17     clock_interval : time;
18     clock_divider  : positive; -- TODO: calculate this based on clock_interval
19     data_width     : positive := 8;
20     parity_enabled : std_logic := '0';
21     parity_type    : std_logic := '1');
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_interval : time := clock_interval;
43       clock_divider  : positive := clock_divider;
44       data_width     : positive := data_width;
45       parity_enabled : std_logic := parity_enabled;
46       parity_type    : std_logic := parity_type);
47     port(
48       clk : in  std_logic;
49       rst : in  std_logic;
50       
51       tx  : out std_logic;
52       txd : in  std_logic_vector(data_width - 1 downto 0);
53       txb : out std_logic);
54    end component;
55    component rs232_recv is
56     generic(
57       clock_interval : time := clock_interval;
58       clock_divider  : positive := clock_divider;
59       data_width     : positive := data_width;
60       parity_enabled : std_logic := parity_enabled;
61       parity_type    : std_logic := parity_type);
62     port(
63       clk : in  std_logic;
64       rst : in  std_logic;
65       
66       rx  : in  std_logic;
67       rxd : out std_logic_vector(data_width - 1 downto 0);
68       rxb : out std_logic);
69    end component;
70 begin
71   send : rs232_send port map(clk, rst, tx, txd, txb);
72   recv : rs232_recv port map(clk, rst, rx, rxd, rxb);
73 end rtl;