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

Subversion Repositories rs232_interface

[/] [rs232_interface/] [trunk/] [uart_tb.vhd] - Blame information for rev 18

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 17 akram.mash
----------------------------------------------------------------------------------
2
-- Creation Date: 13:07:48 27/03/2011 
3
-- Module Name: RS232/UART Interface - Testbench
4
-- Used TAB of 4 Spaces
5
----------------------------------------------------------------------------------
6
library IEEE;
7
use IEEE.STD_LOGIC_1164.ALL;
8
use IEEE.STD_LOGIC_ARITH.ALL;
9
use IEEE.STD_LOGIC_UNSIGNED.ALL;
10
 
11
entity uart_tb is
12
end uart_tb;
13
 
14
architecture Behavioral of uart_tb is
15
 
16
        ----------------------------------------------
17
        -- Constants
18
        ----------------------------------------------
19
        constant MAIN_CLK_PER   :       time := 20 ns;          -- 50 MHz
20 18 akram.mash
        constant MAIN_CLK     : integer := 50;
21 17 akram.mash
        constant BAUD_RATE              :       integer := 9600;        -- Bits per Second
22
        constant RST_LVL                :       std_logic := '1';       -- Active Level of Reset
23
 
24
        ----------------------------------------------
25
        -- Signal Declaration
26
        ----------------------------------------------
27
        -- Clock and reset Signals
28
        signal clk_50m                                  :       std_logic := '0';
29
        signal rst                                              :       std_logic;
30
        -- Transceiver Interface
31
        signal data_from_transceiver    :       std_logic;
32
        signal data_to_transceiver              :       std_logic;
33
        -- Configuration signals
34
        signal par_en                                   :       std_logic;
35
        -- uPC Interface
36
        signal tx_req                                   :       std_logic;
37
        signal tx_end                                   :       std_logic;
38 18 akram.mash
        signal tx_data                                  :       std_logic_vector(7 downto 0) := x"5A";
39 17 akram.mash
        signal rx_ready                                 :       std_logic;
40
        signal rx_data                                  :       std_logic_vector(7 downto 0);
41
 
42
        -- Testbench Signals
43
        signal uart_clk                                 :       std_logic := '0';
44
begin
45
 
46
        ----------------------------------------------
47
        -- Components Instantiation
48
        ----------------------------------------------
49
        uut:entity work.uart
50
        generic map(
51
                CLK_FREQ        => MAIN_CLK,                            -- Main frequency (MHz)
52
                SER_FREQ        => BAUD_RATE                            -- Baud rate (bps)
53
        )
54
        port map(
55
                -- Control
56
                clk                     => clk_50m,                                     -- Main clock
57
                rst                     => rst,                                         -- Main reset
58
                -- External Interface
59
                rx                      => data_from_transceiver,       -- RS232 received serial data
60
                tx                      => data_to_transceiver,         -- RS232 transmitted serial data
61
                -- RS232/UART Configuration
62
                par_en          => par_en,                                      -- Parity bit enable
63
                -- uPC Interface
64 18 akram.mash
                tx_req          => '1',                                 -- Request SEND of data
65 17 akram.mash
                tx_end          => tx_end,                                      -- Data SENDED
66
                tx_data         => tx_data,                                     -- Data to transmit
67
                rx_ready        => rx_ready,                            -- Received data ready to uPC read
68
                rx_data         => rx_data                                      -- Received data 
69
        );
70
 
71
        ----------------------------------------------
72
        -- Main Signals Generation
73
        ----------------------------------------------
74
        -- Main Clock generation
75
        main_clock_generation:process
76
        begin
77
                wait for MAIN_CLK_PER/2;
78
                clk_50m         <= not clk_50m;
79
        end process;
80
 
81
        -- UART Clock generation
82
        uart_clock_generation:process
83
        begin
84
                wait for (MAIN_CLK_PER*5208)/2;
85
                uart_clk        <= not uart_clk;
86
        end process;
87
 
88
        -- Reset generation
89
        rst     <=      RST_LVL, not RST_LVL after MAIN_CLK_PER*5;
90 18 akram.mash
   data_from_transceiver <= data_to_transceiver;
91 17 akram.mash
end Behavioral;
92
 

powered by: WebSVN 2.1.0

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