3 use IEEE.std_logic_1164.all;
4 use IEEE.numeric_std.all;
6 use work.common_pkg.all;
7 use work.extension_pkg.all;
9 package extension_uart_pkg is
17 constant UART_WIDTH : integer := 8;
18 subtype uart_data is std_logic_vector(UART_WIDTH-1 downto 0);
19 constant BAUD_RATE_WIDTH : integer := 16;
20 subtype baud_rate_l is std_logic_vector(BAUD_RATE_WIDTH-1 downto 0);
22 --constant CLK_FREQ_MHZ : real := 33.33;
23 --constant BAUD_RATE : integer := 115200;
24 --constant CLK_PER_BAUD : integer := integer((CLK_FREQ_MHZ * 1000000.0) / real(BAUD_RATE) - 0.5);
25 -- constant CLK_PER_BAUD : integer := 434;
26 -- constant CLK_PER_BAUD : integer := 2083; -- @uni, bei 20MHz und 9600 Baud
27 -- constant CLK_PER_BAUD : integer := 50; -- @modelsim
29 component extension_uart is
30 --some modules won't need all inputs/outputs
33 RESET_VALUE : std_logic;
34 CLK_PER_BAUD : integer
40 -- general extension interface
41 ext_reg : in extmod_rec;
42 data_out : out gp_register_t;
44 uart_int : out std_logic;
46 bus_rx : in std_logic;
48 bus_tx : out std_logic
50 end component extension_uart;
55 RESET_VALUE : std_logic
60 sys_clk : in std_logic;
61 sys_res_n : in std_logic;
64 bus_tx : out std_logic;
67 new_tx_data : in std_logic;
68 tx_data : in uart_data;
69 tx_rdy : out std_logic;
70 bd_rate : in baud_rate_l;
71 stop_bit : in std_logic
73 end component rs232_tx;
78 RESET_VALUE : std_logic;
79 SYNC_STAGES : integer range 2 to integer'high
84 sys_clk : in std_logic;
85 sys_res_n : in std_logic;
88 bus_rx_unsync : in std_logic;
91 new_rx_data : out std_logic;
92 rx_data : out uart_data;
93 bd_rate : in baud_rate_l
95 end component rs232_rx;
99 end package extension_uart_pkg;