blob: 889a3a054c61960dcea2c55a613fcbd4dfa9fd90 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
library ieee;
use ieee.std_logic_1164.all;
entity uart_top is
generic (
C_BITS : integer := 8
);
port (
isl_clk : in std_logic;
isl_data_n : in std_logic;
osl_data_n : out std_logic;
osl_ready : out std_logic
);
end uart_top;
architecture behavioral of uart_top is
constant C_QUARTZ_FREQ : integer := 12000000; -- Hz
constant C_BAUDRATE : integer := 115200; -- words / s
constant C_CYCLES_PER_BIT : integer := C_QUARTZ_FREQ / C_BAUDRATE;
signal sl_valid_out_tx : std_logic := '0';
signal slv_data_out_tx : std_logic_vector(C_BITS-1 downto 0) := (others => '0');
begin
i_uart_rx: entity work.uart_rx
generic map (
C_BITS => C_BITS,
C_CYCLES_PER_BIT => C_CYCLES_PER_BIT
)
port map (
isl_clk => isl_clk,
isl_data_n => isl_data_n,
oslv_data => slv_data_out_tx,
osl_valid => sl_valid_out_tx
);
i_uart_tx: entity work.uart_tx
generic map (
C_BITS => C_BITS,
C_CYCLES_PER_BIT => C_CYCLES_PER_BIT
)
port map (
isl_clk => isl_clk,
isl_valid => sl_valid_out_tx,
islv_data => slv_data_out_tx,
osl_data_n => osl_data_n,
osl_ready => osl_ready
);
end behavioral;
|