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

Subversion Repositories sdram_ctrl

[/] [sdram_ctrl/] [trunk/] [test_bench/] [sdram_ctrl_tb.vhd] - Blame information for rev 9

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

Line No. Rev Author Line
1 2 ntpqa
LIBRARY ieee;
2
USE ieee.std_logic_1164.ALL;
3
USE ieee.numeric_std.ALL;
4
 
5
entity sdram_ctrl_tb is
6
end sdram_ctrl_tb;
7
 
8
architecture structure of sdram_ctrl_tb is
9
        component pll
10
                port (
11
                        inclk0          : IN STD_LOGIC  := '0';
12
                        c0              : OUT STD_LOGIC ;
13
                        e0              : OUT STD_LOGIC ;
14
                        locked          : OUT STD_LOGIC
15
                        ) ;
16
        end component ;
17
        component sdram_ctrl is
18
                port(
19
                        signal clk : IN STD_LOGIC;
20
                        signal reset : IN STD_LOGIC;
21
 
22
                        signal avs_nios_chipselect : IN STD_LOGIC;
23
                        signal avs_nios_address : IN STD_LOGIC_VECTOR (21 DOWNTO 0);
24
                        signal avs_nios_byteenable : IN STD_LOGIC_VECTOR (3 DOWNTO 0);
25
                        signal avs_nios_writedata : IN STD_LOGIC_VECTOR (31 DOWNTO 0);
26
                        signal avs_nios_write : IN STD_LOGIC;
27
                        signal avs_nios_read : IN STD_LOGIC;
28
                        signal avs_nios_readdata : OUT STD_LOGIC_VECTOR (31 DOWNTO 0);
29
                        signal avs_nios_readdatavalid : OUT STD_LOGIC;
30
                        signal avs_nios_waitrequest : OUT STD_LOGIC;
31
 
32
                        signal sdram_addr : OUT STD_LOGIC_VECTOR (11 DOWNTO 0);
33
                        signal sdram_ba : OUT STD_LOGIC_VECTOR (1 DOWNTO 0);
34
                        signal sdram_cas_n : OUT STD_LOGIC;
35
                        signal sdram_cke : OUT STD_LOGIC;
36 7 ntpqa
                        signal sdram_cs_n : OUT STD_LOGIC_VECTOR(0 downto 0);
37 2 ntpqa
                        signal sdram_dq : INOUT STD_LOGIC_VECTOR (31 DOWNTO 0);
38
                        signal sdram_dqm : OUT STD_LOGIC_VECTOR (3 DOWNTO 0);
39
                        signal sdram_ras_n : OUT STD_LOGIC;
40
                        signal sdram_we_n : OUT STD_LOGIC
41
                        );
42
        end component;
43
 
44
        component mt48lc4m32b2 IS
45
                PORT (
46
                        Dq    : INOUT STD_LOGIC_VECTOR (31 DOWNTO 0) := (OTHERS => 'Z');
47
                        Addr  : IN    STD_LOGIC_VECTOR (11 DOWNTO 0) := (OTHERS => '0');
48
                        Ba    : IN    STD_LOGIC_VECTOR (1 DOWNTO 0) := "00";
49
                        Clk   : IN    STD_LOGIC := '0';
50
                        Cke   : IN    STD_LOGIC := '1';
51
                        Cs_n  : IN    STD_LOGIC := '1';
52
                        Ras_n : IN    STD_LOGIC := '1';
53
                        Cas_n : IN    STD_LOGIC := '1';
54
                        We_n  : IN    STD_LOGIC := '1';
55
                        Dqm   : IN    STD_LOGIC_VECTOR (3 DOWNTO 0) := "0000"
56
                        );
57
        END component;
58
 
59
        component cpu_simulator IS
60
                PORT(clk, reset: IN std_logic;
61
                        address : OUT std_logic_vector(21 downto 0):=(others=>'0');
62
                        writedata : out std_logic_vector(31 downto 0):=(others=>'0');
63
                        byteenable : out std_logic_vector(3 downto 0):=(others=>'0');
64
                        write : out std_logic:='0';
65
                        read : out std_logic:='0';
66
                        readdata : in std_logic_vector(31 downto 0);
67
                        waitrequest : in std_logic;
68
                        readdatavalid : in std_logic
69
                        );
70
        END component;
71
 
72
        signal reset, clk_ok: std_logic;
73
        signal run_nios_n : std_logic:='1';
74
        signal clk,i_clk: std_logic:='0';
75
 
76
        signal SDRAM_CLK :  std_logic;
77
        signal SDRAM_CKE :  std_logic;
78 7 ntpqa
        signal SDRAM_NCS :  std_logic_vector(0 downto 0);
79 2 ntpqa
        signal SDRAM_NRAS :  std_logic;
80
        signal SDRAM_NCAS :  std_logic;
81
        signal SDRAM_NWE :  std_logic;
82
        signal SDRAM_ADDRESS :  std_logic_vector(11 downto 0);
83
        signal SDRAM_BANK :  std_logic_vector(1 downto 0);
84
        signal SDRAM_DQM :  std_logic_vector(3 downto 0);
85
        signal SDRAM_DATA :  std_logic_vector(31 downto 0);
86
 
87
        signal address : std_logic_vector(21 downto 0);
88
        signal writedata : std_logic_vector(31 downto 0):=(others=>'0');
89
        signal byteenable : std_logic_vector(3 downto 0):=(others=>'0');
90
        signal write : std_logic;
91
        signal read : std_logic;
92
        signal chipselect : std_logic:='1';
93
        signal readdata : std_logic_vector(31 downto 0);
94
        signal waitrequest : std_logic;
95
        signal readdatavalid : std_logic;
96
 
97
begin
98
 
99
        reset<= not clk_ok;
100
        run_nios_n<= reset after 140 us;
101
 
102
        UUT: sdram_ctrl
103
        port map(
104
                clk => i_clk,
105
                reset => reset,
106
 
107
                avs_nios_chipselect => chipselect,
108
                avs_nios_address => address,
109
                avs_nios_byteenable => byteenable,
110
                avs_nios_writedata => writedata,
111
                avs_nios_write => write,
112
                avs_nios_read => read,
113
                avs_nios_readdata => readdata,
114
                avs_nios_readdatavalid => readdatavalid,
115
                avs_nios_waitrequest => waitrequest,
116
 
117
                sdram_addr => SDRAM_ADDRESS,
118
                sdram_ba => SDRAM_BANK,
119
                sdram_cas_n => SDRAM_NCAS,
120
                sdram_cke => SDRAM_CKE,
121
                sdram_cs_n => SDRAM_NCS,
122
                sdram_dq => SDRAM_DATA,
123
                sdram_dqm => SDRAM_DQM,
124
                sdram_ras_n => SDRAM_NRAS,
125
                sdram_we_n => SDRAM_NWE
126
                );
127
 
128
        sdram:mt48lc4m32b2
129
        PORT MAP(
130
                Dq => SDRAM_DATA,
131
                Addr => SDRAM_ADDRESS,
132
                Ba  => SDRAM_BANK,
133
                Clk  => SDRAM_CLK,
134
                Cke => SDRAM_CKE,
135 7 ntpqa
                Cs_n => SDRAM_NCS(0),
136 2 ntpqa
                Ras_n => SDRAM_NRAS,
137
                Cas_n  => SDRAM_NCAS,
138
                We_n => SDRAM_NWE,
139
                Dqm  => SDRAM_DQM
140
                );
141
 
142
        cpu: cpu_simulator
143
        PORT MAP(
144
                clk     => i_clk,
145
                reset => run_nios_n,
146
                address => address,
147
                writedata => writedata,
148
                byteenable => byteenable,
149
                write => write,
150
                read => read,
151
                readdata => readdata,
152
                waitrequest     => waitrequest,
153
                readdatavalid   => readdatavalid
154
                );
155
 
156
        U1 : pll
157
        port map(
158
                inclk0 => clk,
159
                c0 => i_clk,
160
                e0 => SDRAM_CLK,
161
                locked =>clk_ok
162
                );
163
 
164
        clock_generator:process
165
        begin
166
                wait for 21 ns;
167
                clk<= clk xor '1';
168
        end process;
169
end structure;

powered by: WebSVN 2.1.0

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