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 37

Details | Compare with Previous | View Log

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

powered by: WebSVN 2.1.0

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