OpenCores
URL https://opencores.org/ocsvn/uart_block/uart_block/trunk

Subversion Repositories uart_block

[/] [uart_block/] [trunk/] [hdl/] [iseProject/] [uart_communication_blocks.vhd] - Blame information for rev 36

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 11 leonardoar
--! Top level for interconnection between communication blocks: serial_transmitter, serial_receiver, baud_generator
2
library IEEE;
3
use IEEE.STD_LOGIC_1164.ALL;
4
 
5
--! Use CPU Definitions package
6
use work.pkgDefinitions.all;
7
 
8
entity uart_communication_blocks is
9 36 leonardoar
    Port ( rst : in  STD_LOGIC;                                                                                                                 --! Global reset
10
           clk : in  STD_LOGIC;                                                                                                                 --! Global clock
11
                          cycle_wait_baud : in std_logic_vector((nBitsLarge-1) downto 0);        --! Number of cycles to wait in order to generate desired baud
12
           byte_tx : in  STD_LOGIC_VECTOR ((nBits-1) downto 0);                          --! Byte to transmit
13
           byte_rx : out  STD_LOGIC_VECTOR ((nBits-1) downto 0);                         --! Byte to receive
14
           data_sent_tx : out  STD_LOGIC;                                                                                               --! Indicate that byte has been sent
15
           data_received_rx : out  STD_LOGIC;                                                                           --! Indicate that we got a byte
16
                          serial_out : out std_logic;                                                                                                   --! Uart serial out
17
                          serial_in : in std_logic;                                                                                                     --! Uart serial in
18
           start_tx : in  STD_LOGIC);                                                                                                   --! Initiate transmission
19 11 leonardoar
end uart_communication_blocks;
20
 
21
architecture Behavioral of uart_communication_blocks is
22
 
23
-- Declare components...
24
component baud_generator is
25
    Port ( rst : in STD_LOGIC;
26
                          clk : in  STD_LOGIC;
27
           cycle_wait : in  STD_LOGIC_VECTOR ((nBitsLarge-1) downto 0);
28
                          baud_oversample : out std_logic;
29
           baud : out  STD_LOGIC);
30
end component;
31
 
32
component serial_transmitter is
33
    Port ( rst : in  STD_LOGIC;
34
           baudClk : in  STD_LOGIC;
35
           data_byte : in  STD_LOGIC_VECTOR ((nBits-1) downto 0);
36
                          data_sent : out STD_LOGIC;
37
           serial_out : out  STD_LOGIC);
38
end component;
39
 
40
component serial_receiver is
41
    Port (
42 35 leonardoar
                          rst : in STD_LOGIC;
43 11 leonardoar
                          baudOverSampleClk : in  STD_LOGIC;
44
           serial_in : in  STD_LOGIC;
45
           data_ready : out  STD_LOGIC;
46
           data_byte : out  STD_LOGIC_VECTOR ((nBits-1) downto 0));
47
end component;
48
signal baud_tick : std_logic;
49
signal baud_tick_oversample : std_logic;
50
begin
51 36 leonardoar
        --! Instantiate baud generator
52 11 leonardoar
        uBaudGen : baud_generator port map (
53
                rst => rst,
54
                clk => clk,
55
                cycle_wait => cycle_wait_baud,
56
                baud_oversample => baud_tick_oversample,
57
                baud => baud_tick
58
        );
59
 
60 36 leonardoar
        --! Instantiate serial_transmitter
61 11 leonardoar
        uTransmitter : serial_transmitter port map (
62
                rst => not start_tx,
63
                baudClk => baud_tick,
64
                data_byte => byte_tx,
65
                data_sent => data_sent_tx,
66
                serial_out => serial_out
67
        );
68
 
69 36 leonardoar
        --! Instantiate serial_receiver
70 11 leonardoar
        uReceiver : serial_receiver port map(
71 35 leonardoar
                rst => rst,
72 11 leonardoar
                baudOverSampleClk => baud_tick_oversample,
73
                serial_in => serial_in,
74
                data_ready => data_received_rx,
75
                data_byte => byte_rx
76
        );
77
 
78
end Behavioral;
79
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.