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

Subversion Repositories or1k_soc_on_altera_embedded_dev_kit

[/] [or1k_soc_on_altera_embedded_dev_kit/] [trunk/] [soc/] [bench/] [CPUboard_tb.v] - Blame information for rev 12

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 12 xianfeng
//===============================================================================
2
//
3
//          FILE:  CPUboard_tb.v
4
// 
5
//         USAGE:  ./CPUboard_tb.v 
6
// 
7
//   DESCRIPTION:  Top of test branch
8
// 
9
//       OPTIONS:  ---
10
//  REQUIREMENTS:  ---
11
//          BUGS:  ---
12
//         NOTES:  ---
13
//        AUTHOR:  Xianfeng Zeng (ZXF), xianfeng.zeng@gmail.com
14
//                                      xianfeng.zeng@gmail.com
15
//       COMPANY:  
16
//       VERSION:  1.0
17
//       CREATED:  04/05/2009 07:54:54 PM HKT
18
//      REVISION:  ---
19
//===============================================================================
20
 
21
`timescale 1ns/10ps
22
`include "bench_defines.v"
23
`include "or1200_defines.v"
24
 
25
module CPUboard_tb ();
26
 
27
integer counter;
28
 
29
reg     clk, rstn, pll_rstn;
30
 
31
// Signals for generic_pll
32
wire    mc_clk;
33
wire    wb_clk;
34
wire    flash_clk;
35
wire    pll_lock;
36
 
37
wire            flash_rstn;
38
wire            flash_oen;
39
wire            flash_cen;
40
wire            flash_wen;
41
wire            flash_rdy;
42
wire [7:0]       flash_d;
43
wire [20:0]      flash_a;
44
wire [31:0]      flash_vpp;              // Special flash inputs
45
wire [31:0]      flash_vcc;              // Special flash inputs
46
wire [1:0]       flash_rpblevel;         // Special flash inputs
47
 
48
 
49
/*
50
        reg [12:0]  a;
51
        reg [1:0]   ba;
52
        reg         cke, csn;
53
        wire        wen, rasn, casn;
54
        wire [15:0] dq;
55
        reg [1:0]   dqm;
56
*/
57
        wire [31:0] mem_dat_pad_io;
58
        wire [12:0] mem_adr_pad_o;
59
        wire [1:0]  mem_ba_pad_o;
60
        wire [3:0]  mem_dqm_pad_o;
61
 
62
        wire [31:0] gpio_pad_io;
63
 
64
//      wire [8:0]  iob;
65
 
66
//      wire        spi2_mosi, spi2_miso, spi2_ss, spi2_sclk;
67
 
68
 
69
        //
70
        // Put the informat here to make someboday know what happen
71
        //
72
        initial begin
73
 
74
`ifdef CONFIG_USE_SRAM
75
                $display("\n\nCurrently, Slave0 is connecting to SRAM, not Memory Controller!!");
76
                $display("If you want to use MC to drive the SDRAM, comment macro CONFIG_USE_SRAM in bench_defines.v");
77
`endif
78
 
79
                if (`OR1200_SR_EPH_DEF == 1'b0) begin
80
                        $display("\n\nOR1k reset ventor = 0x100");
81
                end else begin
82
                        $display("\n\nOR1k reset ventor = 0xf00000100");
83
                end
84
                $display("To change the reset ventor, mondify OR1200_SR_EPH_DEF in rtl/or1200/rtl/verilog/or1200_defines.v");
85
                $display("\n\n");
86
 
87
        end
88
 
89
 
90
        initial begin
91
`ifdef LXT
92
                $dumpfile("wavedump.lxt");
93
                $dumpvars(10, CPUboard_tb );
94
`endif
95
`ifdef VCD
96
                $dumpfile("wavedump.vcd");
97
                $dumpvars(10, CPUboard_tb );
98
`endif
99
 
100
        end
101
 
102
        initial
103
        begin
104
                #0 clk = 1'b0;
105
                forever
106
                #20 clk = !clk;   // 25MHz
107
        end
108
 
109
        initial
110
        begin
111
                rstn <= 1'b1;
112
                #5  rstn <= 1'b0;
113
                #500 rstn <= 1'b1;
114
        end
115
 
116
        initial
117
        begin
118
                pll_rstn <= 1'b1;
119
                #5  pll_rstn <= 1'b0;
120
                #15 pll_rstn <= 1'b1;
121
        end
122
 
123
 
124
        //    
125
        // CLKs Genericed
126
        // clk2x goes to wishbone clock (wb_clk), clk1x to memory contr.
127
        // Unsure if flash_clk used
128
        //
129
        defparam        iclk_gen.DIVIDER=2.4;
130
        generic_pll iclk_gen (
131
                // If we're using the new SDRAM controller we 
132
                // want wb_clk to be 2xmc_clk, and if using the
133
                // old one we want everything to be on same freq
134
                .clk1x          (mc_clk),
135
                .clk2x          (wb_clk),
136
                .clkdiv         (flash_clk),
137
                .locked         (pll_lock),
138
 
139
                //Input
140
                .clk_in         (clk),
141
                .rst_in         (~pll_rstn)
142
        );
143
//
144
//==================================================================
145
//
146
        or1k_soc_top soc0 (
147
                // Clk and reset
148
                .wb_clk_pad_i           (wb_clk),
149
                .wb_rst_pad_i           (~rstn),
150
 
151
                .mc_clk_pad_i           (mc_clk),
152
                .flash_clk_pad_i        (flash_clk),
153
 
154
                .flash_rstn             (flash_rstn),
155
                .flash_cen              (flash_cen),
156
                .flash_oen              (flash_oen),
157
                .flash_wen              (flash_wen),
158
                .flash_rdy              (flash_rdy),
159
                .flash_d                (flash_d),
160
                .flash_a                (flash_a),
161
 
162
                // Memory Controller 
163
                .mem_dat_pad_io         (mem_dat_pad_io),
164
                .mem_adr_pad_o          (mem_adr_pad_o[12:0]),
165
                .mem_dqm_pad_o          (mem_dqm_pad_o[3:0]),
166
                .mem_ba_pad_o           (mem_ba_pad_o[1:0]),
167
                .mem_cs_pad_o           (mem_cs_pad_o),
168
                .mem_ras_pad_o          (mem_ras_pad_o),
169
                .mem_cas_pad_o          (mem_cas_pad_o),
170
                .mem_we_pad_o           (mem_we_pad_o),
171
                .mem_cke_pad_o          (mem_cke_pad_o),
172
 
173
                // SPI_FLASH
174
                .spi_flash_sclk_pad_o   (spi_flash_sclk_pad_o),
175
                .spi_flash_ss_pad_o     (spi_flash_ss_pad_o),
176
                .spi_flash_miso_pad_i   (spi_flash_miso_pad_i),
177
                .spi_flash_mosi_pad_o   (spi_flash_mosi_pad_o),
178
                .spi_flash_w_n_pad_o    (spi_flash_w_n_pad_o),
179
                .spi_flash_hold_n_pad_o (spi_flash_hold_n_pad_o),
180
 
181
/*
182
                // SPI1
183
                .spi_mmc_sclk_pad_o     (spi_mmc_sclk_pad_o),
184
                .spi_mmc_ss_pad_o       (spi_mmc_ss_pad_o),
185
                .spi_mmc_miso_pad_i     (spi_mmc_mosi_pad_o),
186
                .spi_mmc_mosi_pad_o     (spi_mmc_mosi_pad_o),
187
*/
188
                // GPIO
189
                .gpio_a_pad_io          (gpio_pad_io),
190
 
191
                // UART0
192
                .uart_srx_pad_i         (1'b1),
193
                .uart_stx_pad_o         (uart_stx_pad_o)
194
/*
195
                // JTAG
196
                .dbg_tdi_pad_i          (1'b0),
197
                .dbg_tck_pad_i          (1'b0),
198
                .dbg_tms_pad_i          (1'b0),
199
                .dbg_tdo_pad_o          (dbg_tdo),
200
                .iob                    (iob)
201
*/
202
         );
203
 
204
 
205
         always @(posedge clk) begin
206
                if (gpio_pad_io[7:0] == 8'hff) begin
207
                        // 0xff has been written to GPIO, so the
208
                        // sofware has completed its tests
209
                        $display("Software execution complete.");
210
                        $finish();
211
                end else if (gpio_pad_io[7:0] == 8'h55) begin
212
                        // 0x55 has been written to GPIO, so the
213
                        // there was an error during the tests
214
                        $display("***Error during software tests. Finishing simulation.");
215
                        $finish();
216
                end
217
        end
218
 
219
 
220
/*
221
        always @(posedge clk or rstn) begin
222
                if (rstn == 0'b0 ) begin
223
                        counter = 0;
224
                end
225
                if (counter == 1000) begin
226
                        $display("Completed");
227
                        $finish();
228
                end
229
                counter = counter + 1;
230
        end
231
*/
232
// The Flash RAM
233
 
234
assign flash_vpp = 32'h00002ee0;
235
assign flash_vcc = 32'h00001388;
236
assign flash_rpblevel = 2'b10;
237
 
238
i28f016s3 Flash (
239
        .rpb( flash_rstn ),
240
        .ceb( flash_cen ),
241
        .oeb( flash_oen ),
242
        .web( flash_wen ),
243
        .ryby( flash_rdy ),
244
        .dq( flash_d ),
245
        .addr( flash_a ),
246
        .vpp( flash_vpp ),
247
        .vcc( flash_vcc ),
248
        .rpblevel( flash_rpblevel )
249
);
250
 
251
 
252
// This model contains actual timing  MT48LC16M16B2  (4 Meg x 16 x 4 banks)
253
mt48lc16m16a2 i_sdram0(
254
        .Dq    (mem_dat_pad_io[15:0]),
255
        .Addr  (mem_adr_pad_o[12:0]),
256
        .Ba    (mem_ba_pad_o[1:0]),
257
        .Clk   (clk),
258
        .Cke   (mem_cke_pad_o),
259
        .Cs_n  (mem_cs_pad_o),
260
        .Ras_n (mem_ras_pad_o),
261
        .Cas_n (mem_cas_pad_o),
262
        .We_n  (mem_we_pad_o),
263
        .Dqm   (mem_dqm_pad_o[1:0])
264
);
265
 
266
mt48lc16m16a2 i_sdram1(
267
        .Dq    (mem_dat_pad_io[31:16]),
268
        .Addr  (mem_adr_pad_o[12:0]),
269
        .Ba    (mem_ba_pad_o[1:0]),
270
        .Clk   (clk),
271
        .Cke   (mem_cke_pad_o),
272
        .Cs_n  (mem_cs_pad_o),
273
        .Ras_n (mem_ras_pad_o),
274
        .Cas_n (mem_cas_pad_o),
275
        .We_n  (mem_we_pad_o),
276
        .Dqm   (mem_dqm_pad_o[3:2])
277
);
278
 
279
 
280
 
281
   defparam CPUboard_tb.i_spi_flash.MEMORY_FILE="memory.txt";
282
 
283
   AT26DFxxx i_spi_flash(
284
       .CSB    (spi_flash_ss_pad_o),
285
       .SCK    (spi_flash_sclk_pad_o),
286
       .SI     (spi_flash_mosi_pad_o),
287
       .WPB    (spi_flash_w_n_pad_o),
288
       .SO     (spi_flash_miso_pad_i)
289
       );
290
 
291
 
292
 
293
   pulldown(gpio_pad_io[0]);
294
   pulldown(gpio_pad_io[1]);
295
   pulldown(gpio_pad_io[2]);
296
   pulldown(gpio_pad_io[3]);
297
   pulldown(gpio_pad_io[4]);
298
   pulldown(gpio_pad_io[5]);
299
   pulldown(gpio_pad_io[6]);
300
   pulldown(gpio_pad_io[7]);
301
   pulldown(gpio_pad_io[8]);
302
   pulldown(gpio_pad_io[9]);
303
   pulldown(gpio_pad_io[10]);
304
   pulldown(gpio_pad_io[11]);
305
   pulldown(gpio_pad_io[12]);
306
   pulldown(gpio_pad_io[13]);
307
   pulldown(gpio_pad_io[14]);
308
   pulldown(gpio_pad_io[15]);
309
   pulldown(gpio_pad_io[16]);
310
   pulldown(gpio_pad_io[17]);
311
   pulldown(gpio_pad_io[18]);
312
   pulldown(gpio_pad_io[19]);
313
   pulldown(gpio_pad_io[20]);
314
   pulldown(gpio_pad_io[21]);
315
   pulldown(gpio_pad_io[22]);
316
   pulldown(gpio_pad_io[23]);
317
   pulldown(gpio_pad_io[24]);
318
   pulldown(gpio_pad_io[25]);
319
   pulldown(gpio_pad_io[26]);
320
   pulldown(gpio_pad_io[27]);
321
   pulldown(gpio_pad_io[28]);
322
   pulldown(gpio_pad_io[29]);
323
   pulldown(gpio_pad_io[30]);
324
   pulldown(gpio_pad_io[31]);
325
 
326
endmodule

powered by: WebSVN 2.1.0

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