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

Subversion Repositories uart_block

[/] [uart_block/] [trunk/] [hdl/] [iseProject/] [testSerial_receiver.vhd] - Blame information for rev 37

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

Line No. Rev Author Line
1 2 leonardoar
--! Test serial_receiver module
2
LIBRARY ieee;
3
USE ieee.std_logic_1164.ALL;
4
 
5
--! Use CPU Definitions package
6
use work.pkgDefinitions.all;
7
 
8
ENTITY testSerial_receiver IS
9
END testSerial_receiver;
10
 
11
ARCHITECTURE behavior OF testSerial_receiver IS
12
 
13
    -- Component Declaration for the Unit Under Test (UUT)
14
 
15
    COMPONENT serial_receiver
16 37 leonardoar
   Port (
17
                          rst : in STD_LOGIC;                                                                                                   --! Reset input           
18
                          baudOverSampleClk : in  STD_LOGIC;                                                            --! Baud oversampled 8x (Best way to detect start bit)
19
           serial_in : in  STD_LOGIC;                                                                                   --! Uart serial input
20
           data_ready : out  STD_LOGIC;                                                                         --! Data received and ready to be read
21
           data_byte : out  STD_LOGIC_VECTOR ((nBits-1) downto 0));      --! Data byte received
22 2 leonardoar
    END COMPONENT;
23
 
24
 
25
   --Inputs
26 37 leonardoar
   signal rst : std_logic := '0';                                        --! Signal to connect with UUT
27
   signal baudClk : std_logic := '0';                            --! Signal to connect with UUT
28
   signal baudOverSampleClk : std_logic := '0';  --! Signal to connect with UUT
29
   signal serial_in : std_logic := '0';                  --! Signal to connect with UUT
30 2 leonardoar
 
31
        --Outputs
32 37 leonardoar
   signal data_ready : std_logic;                                                                       --! Signal to connect with UUT
33
   signal data_byte : std_logic_vector((nBits-1) downto 0);      --! Signal to connect with UUT
34 2 leonardoar
 
35
   -- Clock period definitions
36
   constant baudClk_period : time := 8.6805 us;
37 35 leonardoar
   constant baudOverSampleClk_period : time :=1.085 us;
38 2 leonardoar
 
39
BEGIN
40
 
41 36 leonardoar
        --! Instantiate the Unit Under Test (UUT)
42 2 leonardoar
   uut: serial_receiver PORT MAP (
43 35 leonardoar
          rst => rst,
44 2 leonardoar
          baudOverSampleClk => baudOverSampleClk,
45
          serial_in => serial_in,
46
          data_ready => data_ready,
47
          data_byte => data_byte
48
        );
49
 
50
   -- Clock process definitions
51
   baudClk_process :process
52
   begin
53
                baudClk <= '0';
54
                wait for baudClk_period/2;
55
                baudClk <= '1';
56
                wait for baudClk_period/2;
57
   end process;
58
 
59
   baudOverSampleClk_process :process
60
   begin
61
                baudOverSampleClk <= '0';
62
                wait for baudOverSampleClk_period/2;
63
                baudOverSampleClk <= '1';
64
                wait for baudOverSampleClk_period/2;
65
   end process;
66
 
67
 
68
   -- Stimulus process
69
   stim_proc: process
70
   begin
71
      rst <= '1';
72
                serial_in <= '1';       -- Idle
73
      wait for 3 us;
74
                rst <= '0';
75
                wait for baudClk_period * 3;
76
 
77
                -- Receive 0xC4 value (11000100)
78
                -- Start bit here
79
                serial_in <= '0';
80
                wait for baudClk_period;
81
 
82
                serial_in <= '0';
83
      wait for baudClk_period;
84
                serial_in <= '0';
85
      wait for baudClk_period;
86
                serial_in <= '1';
87
      wait for baudClk_period;
88
                serial_in <= '0';
89
      wait for baudClk_period;
90
                serial_in <= '0';
91
      wait for baudClk_period;
92
                serial_in <= '0';
93
      wait for baudClk_period;
94
                serial_in <= '1';
95
      wait for baudClk_period;
96
                serial_in <= '1';
97
      wait for baudClk_period;
98
 
99
                -- Stop bit here
100
                serial_in <= '1';
101 15 leonardoar
                wait for baudClk_period * 8;
102 3 leonardoar
 
103
                -- Receive 0x55 value (01010101)
104
                -- Start bit here
105
                serial_in <= '0';
106
                wait for baudClk_period;
107
 
108
                serial_in <= '1';
109
      wait for baudClk_period;
110
                serial_in <= '0';
111
      wait for baudClk_period;
112
                serial_in <= '1';
113
      wait for baudClk_period;
114
                serial_in <= '0';
115
      wait for baudClk_period;
116
                serial_in <= '1';
117
      wait for baudClk_period;
118
                serial_in <= '0';
119
      wait for baudClk_period;
120
                serial_in <= '1';
121
      wait for baudClk_period;
122
                serial_in <= '0';
123
      wait for baudClk_period;
124
 
125
                -- Stop bit here
126
                serial_in <= '1';
127 4 leonardoar
                wait for baudClk_period * 1;
128 2 leonardoar
 
129
      -- Stop Simulation
130
                assert false report "NONE. End of simulation." severity failure;
131
 
132
      wait;
133
   end process;
134
 
135
END;

powered by: WebSVN 2.1.0

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