uart:uart entitiy
[calu.git] / cpu / src / extension_uart_pkg.vhd
1 library IEEE;
2
3 use IEEE.std_logic_1164.all;
4 use IEEE.numeric_std.all;
5
6 use work.common_pkg.all;
7
8
9 package extension_uart_pkg is
10
11 constant EXTWORDL : integer := log2c(4);
12 constant BYTEADDR : integer := log2c(4);
13 constant PCOUNT   : integer := 3;
14 constant EXTWORDS : integer := EXTWORDL + BYTEADDR;
15
16 subtype ext_addrid_t  is std_logic_vector(gp_register_t'high - EXTWORDS downto 0);
17 subtype ext_addr_t    is std_logic_vector((gp_register_t'high-BYTEADDR) downto 0);    
18 subtype paddr_t is std_logic_vector(log2c(PCOUNT)-1 downto 0);   
19
20         type extmod_rec is record
21                 sel   : std_logic;
22                 wr_en : std_logic;
23                 byte_en : std_logic_vector(gp_register_t'length/byte_t'length-1 downto 0); 
24                 data : gp_register_t;
25                 addr : ext_addr_t;     
26         end record; 
27
28
29 type status_rec is record
30                 zero : std_logic;
31                 oflo : std_logic;
32                 sign : std_logic;
33                 carry : std_logic;
34 end record;
35
36 constant EXT_7SEG_ADDR:   ext_addrid_t := x"FFFFFFA";
37 constant EXT_EXTMEM_ADDR: ext_addrid_t := x"FFFFFFB";
38 constant EXT_TIMER_ADDR:  ext_addrid_t := x"FFFFFFC";
39 constant EXT_AC97_ADDR:   ext_addrid_t := x"FFFFFFD";
40 constant EXT_UART_ADDR:   ext_addrid_t := x"FFFFFFE";
41 constant EXT_GPMP_ADDR:    ext_addrid_t := x"FFFFFFF";
42 --RS232
43 constant UART_WIDTH : integer := 8;
44 subtype uart_data is std_logic_vector(UART_WIDTH-1 downto 0);
45 --CLKs
46 constant CLK_FREQ_MHZ : real := 33.33;
47 constant BAUD_RATE : integer := 115200;
48 constant CLK_PER_BAUD : integer := integer((CLK_FREQ_MHZ * 1000000.0) / real(BAUD_RATE) - 0.5);
49
50  component extension_uart is
51         --some modules won't need all inputs/outputs
52         generic (
53                         -- active reset value
54                         RESET_VALUE : std_logic
55                         );
56         port(
57                 --System inputs
58                         clk :   in std_logic;
59                         reset : in std_logic;
60                 -- general extension interface                  
61                         ext_reg  : in extmod_rec;
62                         data_out : out gp_register_t;
63                 -- Input
64
65                 -- Ouput
66                         bus_tx : out std_logic
67                 );
68  end component extension_uart;
69
70 component rs232_tx is
71
72         port(
73                 --System inputs
74                 sys_clk : in std_logic;
75                 sys_res_n : in std_logic;
76
77                 --Bus
78                 bus_tx : out std_logic;
79
80                 --From/to sendlogic
81                 new_tx_data : in std_logic;
82                 tx_data : in uart_data;
83                 tx_rdy : out std_logic
84         );
85 end component rs232_tx;
86
87 end package extension_uart_pkg;