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

Subversion Repositories versatile_mem_ctrl

[/] [versatile_mem_ctrl/] [trunk/] [bench/] [tb.v] - Blame information for rev 9

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

Line No. Rev Author Line
1 9 unneback
`timescale 1ns/1ns
2
module versatile_mem_ctrl_tb
3
  (
4
   output OK
5
   );
6
 
7
   reg    sdram_clk, wb_clk, wb_rst;
8
 
9
   wire [31:0] wb0_dat_i;
10
   wire [3:0]  wb0_sel_i;
11
   wire [31:0] wb0_adr_i;
12
   wire [2:0]  wb0_cti_i;
13
   wire [1:0]  wb0_bte_i;
14
   wire        wb0_cyc_i;
15
   wire        wb0_stb_i;
16
   wire [31:0] wb0_dat_o;
17
   wire        wb0_ack_o;
18
 
19
   wire [31:0] wb1_dat_i;
20
   wire [3:0]  wb1_sel_i;
21
   wire [31:0] wb1_adr_i;
22
   wire [2:0]  wb1_cti_i;
23
   wire [1:0]  wb1_bte_i;
24
   wire        wb1_cyc_i;
25
   wire        wb1_stb_i;
26
   wire [31:0] wb1_dat_o;
27
   wire        wb1_ack_o;
28
 
29
   wire [31:0] wb4_dat_i;
30
   wire [3:0]  wb4_sel_i;
31
   wire [31:0] wb4_adr_i;
32
   wire [2:0]  wb4_cti_i;
33
   wire [1:0]  wb4_bte_i;
34
   wire        wb4_cyc_i;
35
   wire        wb4_stb_i;
36
   wire [31:0] wb4_dat_o;
37
   wire        wb4_ack_o;
38
 
39
   wire [1:0]  ba, bad;
40
   wire [12:0] a, ad;
41
   wire [15:0] dq_i;
42
   wire [15:0] dq_o;
43
   wire [15:0] dq_io;
44
   wire [1:0]  dqm, dqmd;
45
   wire        dq_oe;
46
   wire        cs_n, cs_nd, ras, rasd, cas, casd, we, wed, cke, cked;
47
 
48
   wb0 wb0i
49
     (
50
      .adr(wb0_adr_i),
51
      .bte(wb0_bte_i),
52
      .cti(wb0_cti_i),
53
      .cyc(wb0_cyc_i),
54
      .dat(wb0_dat_i),
55
      .sel(wb0_sel_i),
56
      .stb(wb0_stb_i),
57
      .we (wb0_we_i),
58
      .ack(wb0_ack_o),
59
      .clk(wb_clk),
60
      .dat_i(wb0_dat_o),
61
      .reset(wb_rst)
62
      );
63
   wb1 wb1i
64
     (
65
      .adr(wb1_adr_i),
66
      .bte(wb1_bte_i),
67
      .cti(wb1_cti_i),
68
      .cyc(wb1_cyc_i),
69
      .dat(wb1_dat_i),
70
      .sel(wb1_sel_i),
71
      .stb(wb1_stb_i),
72
      .we (wb1_we_i),
73
      .ack(wb1_ack_o),
74
      .clk(wb_clk),
75
      .dat_i(wb1_dat_o),
76
      .reset(wb_rst)
77
      );
78
   wb4 wb4i
79
     (
80
      .adr(wb4_adr_i),
81
      .bte(wb4_bte_i),
82
      .cti(wb4_cti_i),
83
      .cyc(wb4_cyc_i),
84
      .dat(wb4_dat_i),
85
      .sel(wb4_sel_i),
86
      .stb(wb4_stb_i),
87
      .we (wb4_we_i),
88
      .ack(wb4_ack_o),
89
      .clk(wb_clk),
90
      .dat_i(wb4_dat_o),
91
      .reset(wb_rst)
92
      );
93
 
94
   wb_sdram_ctrl_top dut
95
  (
96
   .wbs0_dat_i(wb0_dat_i),
97
   .wbs0_dat_o(wb0_dat_o),
98
   .wbs0_adr_i(wb0_adr_i[31:2]),
99
   .wbs0_sel_i(wb0_sel_i),
100
   .wbs0_cti_i(wb0_cti_i),
101
   .wbs0_bte_i(wb0_bte_i),
102
   .wbs0_we_i (wb0_we_i),
103
   .wbs0_cyc_i(wb0_cyc_i),
104
   .wbs0_stb_i(wb0_stb_i),
105
   .wbs0_ack_o(wb0_ack_o),
106
   .wbs1_dat_i(wb1_dat_i),
107
   .wbs1_dat_o(wb1_dat_o),
108
   .wbs1_adr_i(wb1_adr_i[31:2]),
109
   .wbs1_sel_i(wb1_sel_i),
110
   .wbs1_cti_i(wb1_cti_i),
111
   .wbs1_bte_i(wb1_bte_i),
112
   .wbs1_we_i (wb1_we_i),
113
   .wbs1_cyc_i(wb1_cyc_i),
114
   .wbs1_stb_i(wb1_stb_i),
115
   .wbs1_ack_o(wb1_ack_o),
116
   .wbs4_dat_i(wb4_dat_i),
117
   .wbs4_dat_o(wb4_dat_o),
118
   .wbs4_adr_i(wb4_adr_i[31:2]),
119
   .wbs4_sel_i(wb4_sel_i),
120
   .wbs4_cti_i(wb4_cti_i),
121
   .wbs4_bte_i(wb4_bte_i),
122
   .wbs4_we_i (wb4_we_i),
123
   .wbs4_cyc_i(wb4_cyc_i),
124
   .wbs4_stb_i(wb4_stb_i),
125
   .wbs4_ack_o(wb4_ack_o),
126
   // SDR SDRAM 16
127
   .ba_pad_o(ba),
128
   .a_pad_o(a),
129
   .cs_n_pad_o(cs_n),
130
   .ras_pad_o(ras),
131
   .cas_pad_o(cas),
132
   .we_pad_o(we),
133
   .dq_o(dq_o),
134
   .dqm_pad_o(dqm),
135
   .dq_i(dq_i),
136
   .dq_oe(dq_oe),
137
   .cke_pad_o(cke),
138
   // misc     
139
   .wb_clk(wb_clk),
140
   .wb_rst(wb_rst),
141
   .sdram_clk(sdram_clk)
142
   );
143
 
144
   assign #1 dq_io = dq_oe ? dq_o : {16{1'bz}};
145
   assign #1 dq_i  = dq_io;
146
   assign #1 dqmd = dqm;
147
 
148
 
149
   assign #1 ad = a;
150
   assign #1 bad = ba;
151
   assign #1 cked = cke;
152
   assign #1 cs_nd = cs_n;
153
   assign #1 rasd = ras;
154
   assign #1 casd = cas;
155
   assign #1 wed = we;
156
 
157
mt48lc16m16a2 sdram
158
  (
159
   .Dq(dq_io),
160
   .Addr(ad),
161
   .Ba(bad),
162
   .Clk(sdram_clk),
163
   .Cke(cked),
164
   .Cs_n(cs_nd),
165
   .Ras_n(rasd),
166
   .Cas_n(casd),
167
   .We_n(wed),
168
   .Dqm(dqmd)
169
   );
170
 
171
   initial
172
     begin
173
        #0 wb_rst = 1'b1;
174
        #200 wb_rst = 1'b1;
175
        #400 wb_rst = 1'b0;
176
     end
177
 
178
   initial
179
     begin
180
        #0 wb_clk = 1'b0;
181
        forever
182
          #20 wb_clk = !wb_clk;   // 25MHz
183
     end
184
 
185
   initial
186
     begin
187
        #0 sdram_clk = 1'b0;
188
        forever
189
          #4 sdram_clk = !sdram_clk;   // 125MHz
190
     end
191
 
192
endmodule // versatile_mem_ctrl_tb

powered by: WebSVN 2.1.0

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