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

Subversion Repositories adv_debug_sys

[/] [adv_debug_sys/] [trunk/] [Hardware/] [adv_dbg_if/] [bench/] [full_system/] [xsv_fpga_top.v] - Blame information for rev 56

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 3 nyawn
//////////////////////////////////////////////////////////////////////
2
////                                                              ////
3
////  OR1K test application for XESS XSV board, Top Level         ////
4
////                                                              ////
5
////  This file is part of the OR1K test application              ////
6
////  http://www.opencores.org/cores/or1k/                        ////
7
////                                                              ////
8
////  Description                                                 ////
9
////  Top level instantiating all the blocks.                     ////
10
////                                                              ////
11
////  To Do:                                                      ////
12
////   - nothing really                                           ////
13
////                                                              ////
14
////  Author(s):                                                  ////
15
////      - Damjan Lampret, lampret@opencores.org                 ////
16
////                                                              ////
17
//////////////////////////////////////////////////////////////////////
18
////                                                              ////
19
//// Copyright (C) 2001 Authors                                   ////
20
////                                                              ////
21
//// This source file may be used and distributed without         ////
22
//// restriction provided that this copyright statement is not    ////
23
//// removed from the file and that any derivative work contains  ////
24
//// the original copyright notice and the associated disclaimer. ////
25
////                                                              ////
26
//// This source file is free software; you can redistribute it   ////
27
//// and/or modify it under the terms of the GNU Lesser General   ////
28
//// Public License as published by the Free Software Foundation; ////
29
//// either version 2.1 of the License, or (at your option) any   ////
30
//// later version.                                               ////
31
////                                                              ////
32
//// This source is distributed in the hope that it will be       ////
33
//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////
34
//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////
35
//// PURPOSE.  See the GNU Lesser General Public License for more ////
36
//// details.                                                     ////
37
////                                                              ////
38
//// You should have received a copy of the GNU Lesser General    ////
39
//// Public License along with this source; if not, download it   ////
40
//// from http://www.opencores.org/lgpl.shtml                     ////
41
////                                                              ////
42
//////////////////////////////////////////////////////////////////////
43
//
44
// CVS Revision History
45
//
46
// $Log: xsv_fpga_top.v,v $
47 56 nyawn
// Revision 1.6  2011-02-14 04:16:25  natey
48
// Major functionality enhancement - now duplicates the full OR1K self-test performed by adv_jtag_bridge.
49
//
50 32 nyawn
// Revision 1.5  2010-01-16 02:15:22  Nathan
51
// Updated to match changes in hardware.  Added support for hi-speed mode.
52
//
53
// Revision 1.4  2010-01-08 01:41:07  Nathan
54
// Removed unused, non-existant include from CPU behavioral model.  Minor text edits.
55
//
56 3 nyawn
// Revision 1.3  2008/07/11 08:22:17  Nathan
57
// Added code to make the native TAP simulate a Xilinx BSCAN device, and code to simulate the behavior of the xilinx_internal_jtag module.  The adv_dbg_module should get inputs that emulate the xilinx_internal_jtag device outputs.
58
//
59
// Revision 1.10  2004/04/05 08:44:35  lampret
60
// Merged branch_qmem into main tree.
61
//
62
// Revision 1.8  2003/04/07 21:05:58  lampret
63
// WB = 1/2 RISC clock test code enabled.
64
//
65
// Revision 1.7  2003/04/07 01:28:17  lampret
66
// Adding OR1200_CLMODE_1TO2 test code.
67
//
68
// Revision 1.6  2002/08/12 05:35:12  lampret
69
// rty_i are unused - tied to zero.
70
//
71
// Revision 1.5  2002/03/29 20:58:51  lampret
72
// Changed hardcoded address for fake MC to use a define.
73
//
74
// Revision 1.4  2002/03/29 16:30:47  lampret
75
// Fixed port names that changed.
76
//
77
// Revision 1.3  2002/03/29 15:50:03  lampret
78
// Added response from memory controller (addr 0x60000000)
79
//
80
// Revision 1.2  2002/03/21 17:39:16  lampret
81
// Fixed some typos
82
//
83
//
84
 
85
`include "xsv_fpga_defines.v"
86
//`include "bench_defines.v"
87
 
88
module xsv_fpga_top (
89
 
90
        //
91
        // Global signals
92
        //
93
        //clk,
94
        //rstn,
95
 
96
        // UART signals
97
        uart_stx, uart_srx
98
 
99
        // SDRAM signals
100
        /*
101
        sdram_clk_i, sdram_addr_o, sdram_ba_o, sdram_dqm_o,
102
        sdram_we_o, sdram_cas_o, sdram_ras_o,
103
        sdram_cke_o, sdram_cs_o, sdram_data_io
104
        */
105
);
106
 
107
//
108
// I/O Ports
109
//
110
 
111
//
112
// Global
113
//
114
//input                 clk;
115
//input                 rstn;
116
 
117
// UART
118
input uart_srx;
119
output uart_stx;
120
 
121
// SDRAM
122
/*
123
input sdram_clk_i;
124
output [11:0] sdram_addr_o;
125
output [1:0] sdram_ba_o;
126
output [3:0] sdram_dqm_o;
127
output sdram_we_o;
128
output sdram_cas_o;
129
output sdram_ras_o;
130
output sdram_cke_o;
131
output sdram_cs_o;
132
inout [31:0] sdram_data_io;
133
*/
134
 
135
//
136
// Internal wires
137
//
138
 
139
wire clk;
140
wire rstn;
141
 
142
//
143
// Debug core master i/f wires
144
//
145
wire    [31:0]           wb_dm_adr_o;
146
wire    [31:0]           wb_dm_dat_i;
147
wire    [31:0]           wb_dm_dat_o;
148
wire    [3:0]            wb_dm_sel_o;
149
wire                    wb_dm_we_o;
150
wire                    wb_dm_stb_o;
151
wire                    wb_dm_cyc_o;
152
wire                    wb_dm_ack_i;
153
wire                    wb_dm_err_i;
154
 
155
//
156
// Debug <-> RISC wires
157
//
158
wire    [3:0]            dbg_lss;
159
wire    [1:0]            dbg_is;
160
wire    [10:0]   dbg_wp;
161
wire                    dbg_bp;
162
wire    [31:0]   dbg_dat_dbg;
163
wire    [31:0]   dbg_dat_risc;
164
wire    [31:0]   dbg_adr;
165
wire                    dbg_ewt;
166
wire                    dbg_stall;
167
wire                    dbg_we;
168
wire                    dbg_stb;
169
wire                    dbg_ack;
170
wire     dbg_cpu0_rst;
171
 
172
//
173
// TAP<->dbg_interface
174
//      
175
wire debug_rst;
176
wire debug_select;
177
wire debug_tdi;
178
wire debug_tdo;
179
wire shift_dr;
180
wire pause_dr;
181
wire update_dr;
182
wire capture_dr;
183
wire drck;  // To emulate the BSCAN_VIRTEX/SPARTAN devices
184
 
185
//
186
// RISC instruction master i/f wires
187
//
188
wire    [31:0]           wb_rim_adr_o;
189
wire                    wb_rim_cyc_o;
190
wire    [31:0]           wb_rim_dat_i;
191
wire    [31:0]           wb_rim_dat_o;
192
wire    [3:0]            wb_rim_sel_o;
193
wire                    wb_rim_ack_i;
194
wire                    wb_rim_err_i;
195
wire                    wb_rim_rty_i = 1'b0;
196
wire                    wb_rim_we_o;
197
wire                    wb_rim_stb_o;
198
//wire  [31:0]          wb_rif_adr;
199
//reg                   prefix_flash;
200
 
201
//
202
// RISC data master i/f wires
203
//
204
wire    [31:0]           wb_rdm_adr_o;
205
wire                    wb_rdm_cyc_o;
206
wire    [31:0]           wb_rdm_dat_i;
207
wire    [31:0]           wb_rdm_dat_o;
208
wire    [3:0]            wb_rdm_sel_o;
209
wire                    wb_rdm_ack_i;
210
wire                    wb_rdm_err_i;
211
wire                    wb_rdm_rty_i = 1'b0;
212
wire                    wb_rdm_we_o;
213
wire                    wb_rdm_stb_o;
214
 
215
//
216
// RISC misc
217
//
218
//wire  [19:0]          pic_ints;
219
 
220
//
221
// SRAM controller slave i/f wires
222
//
223
wire    [31:0]           wb_ss_dat_i;
224
wire    [31:0]           wb_ss_dat_o;
225
wire    [31:0]           wb_ss_adr_i;
226
wire    [3:0]            wb_ss_sel_i;
227
wire                    wb_ss_we_i;
228
wire                    wb_ss_cyc_i;
229
wire                    wb_ss_stb_i;
230
wire                    wb_ss_ack_o;
231
wire                    wb_ss_err_o;
232
 
233
 
234
//
235
// UART16550 core slave i/f wires
236
//
237
wire    [31:0]           wb_us_dat_i;
238
wire    [31:0]           wb_us_dat_o;
239
wire    [31:0]           wb_us_adr_i;
240
wire    [3:0]            wb_us_sel_i;
241
wire                    wb_us_we_i;
242
wire                    wb_us_cyc_i;
243
wire                    wb_us_stb_i;
244
wire                    wb_us_ack_o;
245
wire                    wb_us_err_o;
246
 
247
//
248
// UART external i/f wires
249
//
250
wire                    uart_stx;
251
wire                    uart_srx;
252
 
253
 
254
//
255
// Memory controller core slave i/f wires
256
//
257
/*
258
wire    [31:0]          wb_mem_dat_i;
259
wire    [31:0]          wb_mem_dat_o;
260
wire    [31:0]          wb_mem_adr_i;
261
wire    [3:0]           wb_mem_sel_i;
262
wire                    wb_mem_we_i;
263
wire                    wb_mem_cyc_i;
264
wire                    wb_mem_stb_i;
265
wire                    wb_mem_ack_o;
266
wire                    wb_mem_err_o;
267
 
268
// Internal mem control wires
269
wire [7:0] mc_cs;
270
wire [12:0] mc_addr_o;
271
 
272
 
273
// Memory control external wires
274
wire sdram_clk_i;
275
wire [11:0] sdram_addr_o;
276
wire [1:0] sdram_ba_o;
277
wire [3:0] sdram_dqm_o;
278
wire sdram_we_o;
279
wire sdram_cas_o;
280
wire sdram_ras_o;
281
wire sdram_cke_o;
282
wire sdram_cs_o;
283
wire [31:0] sdram_data_io;
284
*/
285
 
286
//
287
// JTAG wires
288
//
289
wire                    jtag_tdi;
290
wire                    jtag_tms;
291
wire                    jtag_tck;
292
wire                    jtag_trst;
293
wire                    jtag_tdo;
294
 
295
 
296
//
297
// Reset debounce
298
//
299
reg      rstn_debounce;
300
wire     rst_r;
301
reg      wb_rst;
302
reg      cpu_rst;
303
 
304
//
305
// Global clock
306
//
307
`ifdef OR1200_CLMODE_1TO2
308
reg                     wb_clk;
309
`else
310
wire                    wb_clk;
311
`endif
312
 
313
//
314
// Reset debounce
315
//
316
always @(posedge wb_clk or negedge rstn)
317
        if (~rstn)
318
                rstn_debounce <= 1'b0;
319
        else
320
                rstn_debounce <= #1 1'b1;
321
 
322
assign rst_r = ~rstn_debounce;
323
//assign dbg_trst = rstn_debounce & jtag_trst;
324
 
325
//
326
// Reset debounce
327
//
328
always @(posedge wb_clk)
329
        wb_rst <= #1 rst_r;
330
 
331
always @ (posedge wb_clk)
332
        cpu_rst <= dbg_cpu0_rst | rst_r;
333
 
334
//
335
// This is purely for testing 1/2 WB clock
336
// This should never be used when implementing in
337
// an FPGA. It is used only for simulation regressions.
338
//
339
`ifdef OR1200_CLMODE_1TO2
340
initial wb_clk = 0;
341
always @(posedge clk)
342
        wb_clk = ~wb_clk;
343
`else
344
//
345
// Some Xilinx P&R tools need this
346
//
347
`ifdef TARGET_VIRTEX
348
IBUFG IBUFG1 (
349
        .O      ( wb_clk ),
350
        .I      ( clk )
351
);
352
`else
353
assign wb_clk = clk;
354
`endif
355
`endif // OR1200_CLMODE_1TO2
356
 
357
//
358
// Unused WISHBONE signals
359
//
360
assign wb_us_err_o = 1'b0;
361
 
362
 
363
assign jtag_tvref = 1'b1;
364
assign jtag_tgnd = 1'b0;
365
 
366
// JTAG / adv. debug control testbench
367
adv_debug_tb tb (
368
 
369
.jtag_tck_o(jtag_tck),
370
.jtag_tms_o(jtag_tms),
371
.jtag_tdo_o(jtag_tdi),
372
.jtag_tdi_i(jtag_tdo),
373
 
374
.wb_clk_o(clk),
375
.sys_rstn_o(rstn)
376
);
377
 
378
//
379
// JTAG TAP controller instantiation
380
//
381
tap_top tap (
382
                // JTAG pads
383
                .tms_pad_i(jtag_tms),
384
                .tck_pad_i(jtag_tck),
385
                .trstn_pad_i(1'b1),
386
                .tdi_pad_i(jtag_tdi),
387
                .tdo_pad_o(jtag_tdo),
388
                .tdo_padoe_o(),
389
 
390
                // TAP states
391
                                   .test_logic_reset_o(debug_rst),
392
                                   .run_test_idle_o(),
393
                .shift_dr_o(shift_dr),
394
                .pause_dr_o(),
395
                .update_dr_o(update_dr),
396
                .capture_dr_o(capture_dr),
397
 
398
                // Select signals for boundary scan or mbist
399
                .extest_select_o(),
400
                .sample_preload_select_o(),
401
                .mbist_select_o(),
402
                .debug_select_o(debug_select),
403
 
404
                // TDO signal that is connected to TDI of sub-modules.
405 32 nyawn
                .tdi_o(debug_tdi),
406 3 nyawn
 
407
                // TDI signals from sub-modules
408 32 nyawn
                .debug_tdo_i(debug_tdo),    // from debug module
409
                .bs_chain_tdo_i(1'b0), // from Boundary Scan Chain
410
                .mbist_tdo_i(1'b0)     // from Mbist Chain
411 3 nyawn
              );
412
 
413
// This is taken from the xilinx bscan_virtex4.v module
414
// It simulates the DRCK output of a BSCAN_* block
415
assign drck = ((debug_select & !shift_dr & !capture_dr) ||
416
               (debug_select & shift_dr & jtag_tck) ||
417
               (debug_select & capture_dr & jtag_tck));
418
 
419
reg xshift;
420
reg xcapture;
421
reg xupdate;
422
reg xselect;
423
 
424
// TAP state outputs are also delayed half a cycle.
425
always @(negedge jtag_tck)
426
begin
427
   xshift = shift_dr;
428
   xcapture = capture_dr;
429
   xupdate = update_dr;
430
   xselect = debug_select;
431
end
432
 
433
//////////////////////////////////////////               
434
 
435
 
436
wire tck2;
437
assign tck2 = (drck & !xupdate);
438
 
439
reg update2;
440
 
441
always @ (posedge xupdate or posedge xcapture or negedge xselect)
442
begin
443
   if(xupdate) update2 <= 1'b1;
444
   else if(xcapture) update2 <= 1'b0;
445
   else if(!xselect) update2 <= 1'b0;
446
end
447
 
448
//
449
// Instantiation of the development i/f
450
//
451 32 nyawn
adbg_top dbg_top  (
452 3 nyawn
 
453
        // JTAG pins
454
        .tck_i  ( tck2 ),
455
        .tdi_i  ( debug_tdi ),
456
        .tdo_o  ( debug_tdo ),
457
        .rst_i  ( debug_rst ),
458
 
459
     // TAP states
460
     .shift_dr_i( xshift ),
461
     .pause_dr_i( pause_dr ),
462
     .update_dr_i( update2 ),
463
     .capture_dr_i (xcapture),
464
 
465
     // Instructions
466
     .debug_select_i( xselect ),
467
 
468
        // RISC signals
469
        .cpu0_clk_i             ( wb_clk ),
470
        .cpu0_addr_o    ( dbg_adr ),
471
        .cpu0_data_i    ( dbg_dat_risc ),
472
        .cpu0_data_o    ( dbg_dat_dbg ),
473
        .cpu0_bp_i              ( dbg_bp ),
474
        .cpu0_stall_o   ( dbg_stall ),
475
        .cpu0_stb_o     ( dbg_stb ),
476
        .cpu0_we_o              ( dbg_we ),
477
        .cpu0_ack_i     ( dbg_ack ),
478
        .cpu0_rst_o             ( dbg_cpu0_rst),
479
 
480
        // WISHBONE common
481
        .wb_clk_i       ( wb_clk ),
482
 
483
        // WISHBONE master interface
484
        .wb_adr_o       ( wb_dm_adr_o ),
485
        .wb_dat_o       ( wb_dm_dat_o ),
486
        .wb_dat_i       ( wb_dm_dat_i ),
487
        .wb_cyc_o       ( wb_dm_cyc_o ),
488
        .wb_stb_o       ( wb_dm_stb_o ),
489
        .wb_sel_o       ( wb_dm_sel_o ),
490
        .wb_we_o        ( wb_dm_we_o  ),
491
        .wb_ack_i       ( wb_dm_ack_i ),
492
        .wb_cab_o       ( wb_dm_cab_o ),
493
        .wb_err_i       ( wb_dm_err_i ),
494
        .wb_cti_o   (),
495
        .wb_bte_o   ()
496
);
497
 
498
 
499
//
500
// Instantiation of the OR1200 RISC
501
//
502
or1200_top or1200_top (
503
 
504
        // Common
505
        .rst_i          ( cpu_rst ),
506
        .clk_i          ( clk ),
507
`ifdef OR1200_CLMODE_1TO2
508
        .clmode_i       ( 2'b01 ),
509
`else
510
`ifdef OR1200_CLMODE_1TO4
511
        .clmode_i       ( 2'b11 ),
512
`else
513
        .clmode_i       ( 2'b00 ),
514
`endif
515
`endif
516
 
517
        // WISHBONE Instruction Master
518
        .iwb_clk_i      ( wb_clk ),
519
        .iwb_rst_i      ( wb_rst ),
520
        .iwb_cyc_o      ( wb_rim_cyc_o ),
521
        .iwb_adr_o      ( wb_rim_adr_o ),
522
        .iwb_dat_i      ( wb_rim_dat_i ),
523
        .iwb_dat_o      ( wb_rim_dat_o ),
524
        .iwb_sel_o      ( wb_rim_sel_o ),
525
        .iwb_ack_i      ( wb_rim_ack_i ),
526
        .iwb_err_i      ( wb_rim_err_i ),
527
        .iwb_rty_i      ( wb_rim_rty_i ),
528
        .iwb_we_o       ( wb_rim_we_o  ),
529
        .iwb_stb_o      ( wb_rim_stb_o ),
530
 
531
        // WISHBONE Data Master
532
        .dwb_clk_i      ( wb_clk ),
533
        .dwb_rst_i      ( wb_rst ),
534
        .dwb_cyc_o      ( wb_rdm_cyc_o ),
535
        .dwb_adr_o      ( wb_rdm_adr_o ),
536
        .dwb_dat_i      ( wb_rdm_dat_i ),
537
        .dwb_dat_o      ( wb_rdm_dat_o ),
538
        .dwb_sel_o      ( wb_rdm_sel_o ),
539
        .dwb_ack_i      ( wb_rdm_ack_i ),
540
        .dwb_err_i      ( wb_rdm_err_i ),
541
        .dwb_rty_i      ( wb_rdm_rty_i ),
542
        .dwb_we_o       ( wb_rdm_we_o  ),
543
        .dwb_stb_o      ( wb_rdm_stb_o ),
544
 
545
        // Debug
546
        .dbg_stall_i    ( dbg_stall ),  // Set to 1'b0 if debug is absent / broken
547
        .dbg_dat_i      ( dbg_dat_dbg ),
548
        .dbg_adr_i      ( dbg_adr ),
549
        .dbg_ewt_i      ( 1'b0 ),
550
        .dbg_lss_o      ( ),
551
        .dbg_is_o       ( ),
552
        .dbg_wp_o       ( ),
553
        .dbg_bp_o       ( dbg_bp ),
554
        .dbg_dat_o      ( dbg_dat_risc ),
555
        .dbg_ack_o      ( dbg_ack ),
556
        .dbg_stb_i      ( dbg_stb ),
557
        .dbg_we_i       ( dbg_we ),
558
 
559
        // Power Management
560
        .pm_clksd_o     ( ),
561
        .pm_cpustall_i  ( 1'b0 ),
562
        .pm_dc_gate_o   ( ),
563
        .pm_ic_gate_o   ( ),
564
        .pm_dmmu_gate_o ( ),
565
        .pm_immu_gate_o ( ),
566
        .pm_tt_gate_o   ( ),
567
        .pm_cpu_gate_o  ( ),
568
        .pm_wakeup_o    ( ),
569
        .pm_lvolt_o     ( ),
570
 
571
        // Interrupts
572
        .pic_ints_i     (20'b0)
573
);
574
 
575
 
576
//
577
// Instantiation of the On-chip RAM controller
578
//
579
onchip_ram_top  #(
580
        .dwidth  (32),
581
        .size_bytes(16384)
582
        ) onchip_ram_top (
583
 
584
        // WISHBONE common
585
        .wb_clk_i       ( wb_clk ),
586
        .wb_rst_i       ( wb_rst ),
587
 
588
        // WISHBONE slave
589
        .wb_dat_i       ( wb_ss_dat_i ),
590
        .wb_dat_o       ( wb_ss_dat_o ),
591
        .wb_adr_i       ( wb_ss_adr_i ),
592
        .wb_sel_i       ( wb_ss_sel_i ),
593
        .wb_we_i        ( wb_ss_we_i  ),
594
        .wb_cyc_i       ( wb_ss_cyc_i ),
595
        .wb_stb_i       ( wb_ss_stb_i ),
596
        .wb_ack_o       ( wb_ss_ack_o ),
597
        .wb_err_o       ( wb_ss_err_o )
598
);
599
 
600
//
601
// Instantiation of the UART16550
602
//
603
uart_top uart_top (
604
 
605
        // WISHBONE common
606
        .wb_clk_i       ( wb_clk ),
607
        .wb_rst_i       ( wb_rst ),
608
 
609
        // WISHBONE slave
610
        .wb_adr_i       ( wb_us_adr_i[4:0] ),
611
        .wb_dat_i       ( wb_us_dat_i ),
612
        .wb_dat_o       ( wb_us_dat_o ),
613
        .wb_we_i        ( wb_us_we_i  ),
614
        .wb_stb_i       ( wb_us_stb_i ),
615
        .wb_cyc_i       ( wb_us_cyc_i ),
616
        .wb_ack_o       ( wb_us_ack_o ),
617
        .wb_sel_i       ( wb_us_sel_i ),
618
 
619
        // Interrupt request
620
        .int_o          ( ),
621
 
622
        // UART signals
623
        // serial input/output
624
        .stx_pad_o      ( uart_stx ),
625
        .srx_pad_i      ( uart_srx ),
626
 
627
        // modem signals
628
        .rts_pad_o      ( ),
629
        .cts_pad_i      ( 1'b0 ),
630
        .dtr_pad_o      ( ),
631
        .dsr_pad_i      ( 1'b0 ),
632
        .ri_pad_i       ( 1'b0 ),
633
        .dcd_pad_i      ( 1'b0 )
634
);
635
 
636
/*
637
mc_wrapper mc_wrapper (
638
        .clk_i ( wb_clk ),
639
        .rst_i ( wb_rst ),
640
        .clk_mem_i ( sdram_clk_i ),
641
 
642
        .wb_data_i ( wb_mem_dat_i ),
643
        .wb_data_o ( wb_mem_dat_o ),
644
        .wb_addr_i ( wb_mem_adr_i ),
645
        .wb_sel_i ( wb_mem_sel_i ),
646
        .wb_we_i ( wb_mem_we_i ),
647
        .wb_cyc_i ( wb_mem_cyc_i ),
648
        .wb_stb_i ( wb_mem_stb_i ),
649
        .wb_ack_o ( wb_mem_ack_o ),
650
        .wb_err_o ( wb_mem_err_o ),
651
 
652
        .susp_req_i ( 1'b0 ),
653
        .resume_req_i ( 1'b0 ),
654
        .suspended_o (),
655
        .poc_o ( ),  // This is an output so the rest of the system can configure itself
656
 
657
        .sdram_addr_o ( mc_addr_o ),
658
        .sdram_ba_o ( sdram_ba_o ),
659
        .sdram_cas_n_o ( sdram_cas_o ),
660
        .sdram_ras_n_o ( sdram_ras_o ),
661
        .sdram_cke_n_o ( sdram_cke_o ),
662
 
663
        .mc_dqm_o ( sdram_dqm_o  ),
664
        .mc_we_n_o ( sdram_we_o ),
665
        .mc_oe_n_o ( ),
666
        .mc_data_io ( sdram_data_io ),
667
        .mc_parity_io ( ),
668
        .mc_cs_n_o ( mc_cs )
669
        );
670
 
671
assign sdram_cs_o = mc_cs[0];
672
assign sdram_addr_o = mc_addr_o[11:0];
673
*/
674
 
675
//
676
// Instantiation of the Traffic COP
677
//
678
wb_conbus_top #(.s0_addr_w  (`APP_ADDR_DEC_W),
679
         .s0_addr    (`APP_ADDR_SDRAM),
680
         .s1_addr_w  (`APP_ADDR_DEC2_W),
681
         .s1_addr    (`APP_ADDR_OCRAM),
682
         .s27_addr_w (`APP_ADDR_DECP_W),
683
         .s2_addr    (`APP_ADDR_VGA),
684
         .s3_addr    (`APP_ADDR_ETH),
685
         .s4_addr    (`APP_ADDR_AUDIO),
686
         .s5_addr    (`APP_ADDR_UART),
687
         .s6_addr    (`APP_ADDR_PS2),
688
         .s7_addr    (`APP_ADDR_RES1)
689
        ) tc_top (
690
 
691
        // WISHBONE common
692
        .clk_i  ( wb_clk ),
693
        .rst_i  ( wb_rst ),
694
 
695
        // WISHBONE Initiator 0
696
        .m0_cyc_i       ( 1'b0 ),
697
        .m0_stb_i       ( 1'b0 ),
698
        .m0_cab_i       ( 1'b0 ),
699
        .m0_adr_i       ( 32'h0000_0000 ),
700
        .m0_sel_i       ( 4'b0000 ),
701
        .m0_we_i        ( 1'b0 ),
702
        .m0_dat_i       ( 32'h0000_0000 ),
703
        .m0_dat_o       ( ),
704
        .m0_ack_o       ( ),
705
        .m0_err_o       ( ),
706
 
707
        // WISHBONE Initiator 1
708
        .m1_cyc_i       ( 1'b0 ),
709
        .m1_stb_i       ( 1'b0 ),
710
        .m1_cab_i       ( 1'b0 ),
711
        .m1_adr_i       ( 32'h0000_0000 ),
712
        .m1_sel_i       ( 4'b0000 ),
713
        .m1_we_i        ( 1'b0 ),
714
        .m1_dat_i       ( 32'h0000_0000 ),
715
        .m1_dat_o       ( ),
716
        .m1_ack_o       ( ),
717
        .m1_err_o       ( ),
718
 
719
        // WISHBONE Initiator 2
720
        .m2_cyc_i       ( 1'b0 ),
721
        .m2_stb_i       ( 1'b0 ),
722
        .m2_cab_i       ( 1'b0 ),
723
        .m2_adr_i       ( 32'h0000_0000 ),
724
        .m2_sel_i       ( 4'b0000 ),
725
        .m2_we_i        ( 1'b0 ),
726
        .m2_dat_i       ( 32'h0000_0000 ),
727
        .m2_dat_o       ( ),
728
        .m2_ack_o       ( ),
729
        .m2_err_o       ( ),
730
 
731
        // WISHBONE Initiator 3
732
        .m3_cyc_i       ( wb_dm_cyc_o ),
733
        .m3_stb_i       ( wb_dm_stb_o ),
734 56 nyawn
        .m3_cab_i       ( 1'b0 ),
735 3 nyawn
        .m3_adr_i       ( wb_dm_adr_o ),
736
        .m3_sel_i       ( wb_dm_sel_o ),
737
        .m3_we_i        ( wb_dm_we_o  ),
738
        .m3_dat_i       ( wb_dm_dat_o ),
739
        .m3_dat_o       ( wb_dm_dat_i ),
740
        .m3_ack_o       ( wb_dm_ack_i ),
741
        .m3_err_o       ( wb_dm_err_i ),
742
 
743
        // WISHBONE Initiator 4
744
        .m4_cyc_i       ( wb_rdm_cyc_o ),
745
        .m4_stb_i       ( wb_rdm_stb_o ),
746 56 nyawn
        .m4_cab_i       ( 1'b0 ),
747 3 nyawn
        .m4_adr_i       ( wb_rdm_adr_o ),
748
        .m4_sel_i       ( wb_rdm_sel_o ),
749
        .m4_we_i        ( wb_rdm_we_o  ),
750
        .m4_dat_i       ( wb_rdm_dat_o ),
751
        .m4_dat_o       ( wb_rdm_dat_i ),
752
        .m4_ack_o       ( wb_rdm_ack_i ),
753
        .m4_err_o       ( wb_rdm_err_i ),
754
 
755
        // WISHBONE Initiator 5
756
        .m5_cyc_i       ( wb_rim_cyc_o ),
757
        .m5_stb_i       ( wb_rim_stb_o ),
758 56 nyawn
        .m5_cab_i       ( 1'b0 ),
759 3 nyawn
        .m5_adr_i       ( wb_rim_adr_o ),
760
        .m5_sel_i       ( wb_rim_sel_o ),
761
        .m5_we_i        ( wb_rim_we_o  ),
762
        .m5_dat_i       ( wb_rim_dat_o ),
763
        .m5_dat_o       ( wb_rim_dat_i ),
764
        .m5_ack_o       ( wb_rim_ack_i ),
765
        .m5_err_o       ( wb_rim_err_i ),
766
 
767
        // WISHBONE Initiator 6
768
        .m6_cyc_i       ( 1'b0 ),
769
        .m6_stb_i       ( 1'b0 ),
770
        .m6_cab_i       ( 1'b0 ),
771
        .m6_adr_i       ( 32'h0000_0000 ),
772
        .m6_sel_i       ( 4'b0000 ),
773
        .m6_we_i        ( 1'b0 ),
774
        .m6_dat_i       ( 32'h0000_0000 ),
775
        .m6_dat_o       ( ),
776
        .m6_ack_o       ( ),
777
        .m6_err_o       ( ),
778
 
779
        // WISHBONE Initiator 7
780
        .m7_cyc_i       ( 1'b0 ),
781
        .m7_stb_i       ( 1'b0 ),
782
        .m7_cab_i       ( 1'b0 ),
783
        .m7_adr_i       ( 32'h0000_0000 ),
784
        .m7_sel_i       ( 4'b0000 ),
785
        .m7_we_i        ( 1'b0 ),
786
        .m7_dat_i       ( 32'h0000_0000 ),
787
        .m7_dat_o       ( ),
788
        .m7_ack_o       ( ),
789
        .m7_err_o       ( ),
790
 
791
        // WISHBONE Target 0
792
        .s0_cyc_o       ( ),
793
        .s0_stb_o       ( ),
794
        .s0_cab_o       ( ),
795
        .s0_adr_o       ( ),
796
        .s0_sel_o       ( ),
797
        .s0_we_o        ( ),
798
        .s0_dat_o       ( ),
799
        .s0_dat_i       ( 32'h0000_0000 ),
800
        .s0_ack_i       ( 1'b0 ),
801
        .s0_err_i       ( 1'b0 ),
802
        .s0_rty_i ( 1'b0 ),
803
        /*
804
        .s0_cyc_o       ( wb_mem_cyc_i ),
805
        .s0_stb_o       ( wb_mem_stb_i ),
806
        .s0_cab_o       ( wb_mem_cab_i ),
807
        .s0_adr_o       ( wb_mem_adr_i ),
808
        .s0_sel_o       ( wb_mem_sel_i ),
809
        .s0_we_o        ( wb_mem_we_i ),
810
        .s0_dat_o       ( wb_mem_dat_i ),
811
        .s0_dat_i       ( wb_mem_dat_o ),
812
        .s0_ack_i       ( wb_mem_ack_o ),
813
        .s0_err_i       ( wb_mem_err_o ),
814
        .s0_rty_i ( 1'b0),
815
        */
816
 
817
        // WISHBONE Target 1
818
        .s1_cyc_o       ( wb_ss_cyc_i ),
819
        .s1_stb_o       ( wb_ss_stb_i ),
820
        .s1_cab_o       ( wb_ss_cab_i ),
821
        .s1_adr_o       ( wb_ss_adr_i ),
822
        .s1_sel_o       ( wb_ss_sel_i ),
823
        .s1_we_o        ( wb_ss_we_i  ),
824
        .s1_dat_o       ( wb_ss_dat_i ),
825
        .s1_dat_i       ( wb_ss_dat_o ),
826
        .s1_ack_i       ( wb_ss_ack_o ),
827
        .s1_err_i       ( wb_ss_err_o ),
828
        .s1_rty_i ( 1'b0 ),
829
 
830
        // WISHBONE Target 2
831
        .s2_cyc_o       ( ),
832
        .s2_stb_o       ( ),
833
        .s2_cab_o       ( ),
834
        .s2_adr_o       ( ),
835
        .s2_sel_o       ( ),
836
        .s2_we_o        ( ),
837
        .s2_dat_o       ( ),
838
        .s2_dat_i       ( 32'h0000_0000 ),
839
        .s2_ack_i       ( 1'b0 ),
840
        .s2_err_i       ( 1'b0 ),
841
        .s2_rty_i ( 1'b0 ),
842
 
843
        // WISHBONE Target 3
844
        .s3_cyc_o       ( ),
845
        .s3_stb_o       ( ),
846
        .s3_cab_o       ( ),
847
        .s3_adr_o       ( ),
848
        .s3_sel_o       ( ),
849
        .s3_we_o        ( ),
850
        .s3_dat_o       ( ),
851
        .s3_dat_i       ( 32'h0000_0000 ),
852
        .s3_ack_i       ( 1'b0 ),
853
        .s3_err_i       ( 1'b0 ),
854
        .s3_rty_i ( 1'b0),
855
 
856
        // WISHBONE Target 4
857
        .s4_cyc_o       ( ),
858
        .s4_stb_o       ( ),
859
        .s4_cab_o       ( ),
860
        .s4_adr_o       ( ),
861
        .s4_sel_o       ( ),
862
        .s4_we_o        ( ),
863
        .s4_dat_o       ( ),
864
        .s4_dat_i       ( 32'h0000_0000 ),
865
        .s4_ack_i       ( 1'b0 ),
866
        .s4_err_i       ( 1'b0 ),
867
        .s4_rty_i ( 1'b0),
868
 
869
        // WISHBONE Target 5
870
        .s5_cyc_o       ( wb_us_cyc_i ),
871
        .s5_stb_o       ( wb_us_stb_i ),
872
        .s5_cab_o       ( wb_us_cab_i ),
873
        .s5_adr_o       ( wb_us_adr_i ),
874
        .s5_sel_o       ( wb_us_sel_i ),
875
        .s5_we_o        ( wb_us_we_i  ),
876
        .s5_dat_o       ( wb_us_dat_i ),
877
        .s5_dat_i       ( wb_us_dat_o ),
878
        .s5_ack_i       ( wb_us_ack_o ),
879
        .s5_err_i       ( wb_us_err_o ),
880
        .s5_rty_i ( 1'b0 ),
881
 
882
        // WISHBONE Target 6
883
        .s6_cyc_o       ( ),
884
        .s6_stb_o       ( ),
885
        .s6_cab_o       ( ),
886
        .s6_adr_o       ( ),
887
        .s6_sel_o       ( ),
888
        .s6_we_o        ( ),
889
        .s6_dat_o       ( ),
890
        .s6_dat_i       ( 32'h0000_0000 ),
891
        .s6_ack_i       ( 1'b0 ),
892
        .s6_err_i       ( 1'b0 ),
893
        .s6_rty_i ( 1'b0),
894
 
895
        // WISHBONE Target 7
896
        .s7_cyc_o       ( ),
897
        .s7_stb_o       ( ),
898
        .s7_cab_o       ( ),
899
        .s7_adr_o       ( ),
900
        .s7_sel_o       ( ),
901
        .s7_we_o        ( ),
902
        .s7_dat_o       ( ),
903
        .s7_dat_i       ( 32'h0000_0000 ),
904
        .s7_ack_i       ( 1'b0 ),
905
        .s7_err_i       ( 1'b0 ),
906
        .s7_rty_i ( 1'b0)
907
 
908
);
909
 
910
//initial begin
911
//  $dumpvars(0);
912
//  $dumpfile("dump.vcd");
913
//end
914
 
915
endmodule

powered by: WebSVN 2.1.0

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