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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [orpsocv2/] [boards/] [xilinx/] [ml501/] [rtl/] [verilog/] [orpsoc_top/] [orpsoc_top.v] - Blame information for rev 412

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

Line No. Rev Author Line
1 412 julius
//////////////////////////////////////////////////////////////////////
2
///                                                               //// 
3
/// ORPSoC top for ML501 board                                    ////
4
///                                                               ////
5
/// Instantiates modules, depending on ORPSoC defines file        ////
6
///                                                               ////
7
/// Julius Baxter, julius@opencores.org                           ////
8
///                                                               ////
9
//////////////////////////////////////////////////////////////////////
10
////                                                              ////
11
//// Copyright (C) 2009, 2010 Authors and OPENCORES.ORG           ////
12
////                                                              ////
13
//// This source file may be used and distributed without         ////
14
//// restriction provided that this copyright statement is not    ////
15
//// removed from the file and that any derivative work contains  ////
16
//// the original copyright notice and the associated disclaimer. ////
17
////                                                              ////
18
//// This source file is free software; you can redistribute it   ////
19
//// and/or modify it under the terms of the GNU Lesser General   ////
20
//// Public License as published by the Free Software Foundation; ////
21
//// either version 2.1 of the License, or (at your option) any   ////
22
//// later version.                                               ////
23
////                                                              ////
24
//// This source is distributed in the hope that it will be       ////
25
//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////
26
//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////
27
//// PURPOSE.  See the GNU Lesser General Public License for more ////
28
//// details.                                                     ////
29
////                                                              ////
30
//// You should have received a copy of the GNU Lesser General    ////
31
//// Public License along with this source; if not, download it   ////
32
//// from http://www.opencores.org/lgpl.shtml                     ////
33
////                                                              ////
34
//////////////////////////////////////////////////////////////////////
35
 
36
`include "orpsoc-defines.v"
37
`include "synthesis-defines.v"
38
module orpsoc_top
39
  (
40
`ifdef JTAG_DEBUG
41
    tdo_pad_o, tms_pad_i, tck_pad_i, tdi_pad_i,
42
`endif
43
`ifdef XILINX_DDR2
44
    ddr2_a, ddr2_ba, ddr2_ras_n, ddr2_cas_n, ddr2_we_n,
45
    ddr2_cs_n, ddr2_odt, ddr2_cke, ddr2_dm,
46
    ddr2_dq, ddr2_dqs, ddr2_dqs_n, ddr2_ck, ddr2_ck_n,
47
`endif
48
`ifdef XILINX_SSRAM
49
    sram_clk, sram_clk_fb, sram_flash_addr, sram_flash_data,
50
    sram_cen, sram_flash_oe_n, sram_flash_we_n, sram_bw,
51
    sram_adv_ld_n, sram_mode,
52
`endif
53
`ifdef UART0
54
    uart0_srx_pad_i, uart0_stx_pad_o,
55
    uart0_srx_expheader_pad_i, uart0_stx_expheader_pad_o,
56
`endif
57
`ifdef SPI0
58
    spi0_sck_o, spi0_mosi_o, spi0_miso_i, spi0_ss_o,
59
`endif
60
`ifdef I2C0
61
    i2c0_sda_io, i2c0_scl_io,
62
`endif
63
`ifdef I2C1
64
    i2c1_sda_io, i2c1_scl_io,
65
`endif
66
`ifdef GPIO0
67
    gpio0_io,
68
`endif
69
 
70
`ifdef ETH0
71
    eth0_tx_clk, eth0_tx_data, eth0_tx_en, eth0_tx_er,
72
    eth0_rx_clk, eth0_rx_data, eth0_dv, eth0_rx_er,
73
    eth0_col, eth0_crs,
74
    eth0_mdc_pad_o, eth0_md_pad_io,
75
 `ifdef ETH0_PHY_RST
76
    eth0_rst_n_o,
77
 `endif
78
`endif
79
 
80
    sys_clk_in_p,sys_clk_in_n,
81
 
82
    rst_n_pad_i
83
 
84
    );
85
 
86
`include "orpsoc-params.v"
87
 
88
   input sys_clk_in_p,sys_clk_in_n;
89
 
90
   input rst_n_pad_i;
91
 
92
`ifdef JTAG_DEBUG
93
   output tdo_pad_o;
94
   input  tms_pad_i;
95
   input  tck_pad_i;
96
   input  tdi_pad_i;
97
`endif
98
`ifdef XILINX_DDR2
99
   output [12:0]               ddr2_a;
100
   output [1:0]        ddr2_ba;
101
   output                     ddr2_ras_n;
102
   output                     ddr2_cas_n;
103
   output                     ddr2_we_n;
104
   output [1:0]        ddr2_cs_n;
105
   output [1:0]        ddr2_odt;
106
   output [1:0]        ddr2_cke;
107
   output [7:0]        ddr2_dm;
108
 
109
   inout [63:0]        ddr2_dq;
110
   inout [7:0]                 ddr2_dqs;
111
   inout [7:0]                 ddr2_dqs_n;
112
   output [1:0]        ddr2_ck;
113
   output [1:0]        ddr2_ck_n;
114
`endif
115
`ifdef XILINX_SSRAM
116
   // ZBT SSRAM
117
    output         sram_clk,
118
    input          sram_clk_fb,
119
    output [21:1]  sram_flash_addr,
120
    inout [31:0]   sram_flash_data,
121
    output         sram_cen,
122
    output         sram_flash_oe_n,
123
    output         sram_flash_we_n,
124
    output [3:0]   sram_bw,
125
    output         sram_adv_ld_n,
126
    output         sram_mode,
127
`endif
128
`ifdef UART0
129
   input         uart0_srx_pad_i;
130
   output        uart0_stx_pad_o;
131
   // Duplicates of the UART signals, this time to the USB debug cable
132
   input         uart0_srx_expheader_pad_i;
133
   output        uart0_stx_expheader_pad_o;
134
`endif
135
`ifdef SPI0
136
   output        spi0_sck_o;
137
   output        spi0_mosi_o;
138
   output [spi0_ss_width-1:0] spi0_ss_o;
139
   input                      spi0_miso_i;
140
`endif
141
`ifdef I2C0
142
   inout                      i2c0_sda_io, i2c0_scl_io;
143
`endif
144
`ifdef I2C1
145
   inout                      i2c1_sda_io, i2c1_scl_io;
146
`endif
147
`ifdef GPIO0
148
   inout [gpio0_io_width-1:0] gpio0_io;
149
`endif
150
`ifdef ETH0
151
   input                      eth0_tx_clk;
152
   output [3:0]        eth0_tx_data;
153
   output                     eth0_tx_en;
154
   output                     eth0_tx_er;
155
   input                      eth0_rx_clk;
156
   input [3:0]                 eth0_rx_data;
157
   input                      eth0_dv;
158
   input                      eth0_rx_er;
159
   input                      eth0_col;
160
   input                      eth0_crs;
161
   output                     eth0_mdc_pad_o;
162
   inout                      eth0_md_pad_io;
163
 `ifdef ETH0_PHY_RST
164
   output                     eth0_rst_n_o;
165
 `endif
166
`endif //  `ifdef ETH0
167
 
168
   ////////////////////////////////////////////////////////////////////////
169
   //
170
   // Clock and reset generation module
171
   // 
172
   ////////////////////////////////////////////////////////////////////////
173
 
174
   //
175
   // Wires
176
   //
177
   wire                       wb_clk, wb_rst;
178
   wire                       ddr2_if_clk, ddr2_if_rst;
179
   wire                       clk200;
180
   wire                       dbg_tck;
181
 
182
 
183
   clkgen clkgen0
184
     (
185
      .sys_clk_in_p              (sys_clk_in_p),
186
      .sys_clk_in_n              (sys_clk_in_n),
187
 
188
      .wb_clk_o                  (wb_clk),
189
      .wb_rst_o                  (wb_rst),
190
 
191
`ifdef JTAG_DEBUG
192
      .tck_pad_i                 (tck_pad_i),
193
      .dbg_tck_o                 (dbg_tck),
194
`endif
195
`ifdef XILINX_DDR2
196
      .ddr2_if_clk_o             (ddr2_if_clk),
197
      .ddr2_if_rst_o             (ddr2_if_rst),
198
      .clk200_o                  (clk200),
199
`endif
200
 
201
      // Asynchronous active low reset
202
      .rst_n_pad_i               (rst_n_pad_i)
203
      );
204
 
205
 
206
   ////////////////////////////////////////////////////////////////////////
207
   //
208
   // Arbiter
209
   // 
210
   ////////////////////////////////////////////////////////////////////////
211
 
212
   // Wire naming convention:
213
   // First: wishbone master or slave (wbm/wbs)
214
   // Second: Which bus it's on instruction or data (i/d)
215
   // Third: Between which module and the arbiter the wires are
216
   // Fourth: Signal name
217
   // Fifth: Direction relative to module (not bus/arbiter!)
218
   //        ie. wbm_d_or12_adr_o is address OUT from the or1200
219
 
220
   // OR1200 instruction bus wires
221
   wire [wb_aw-1:0]            wbm_i_or12_adr_o;
222
   wire [wb_dw-1:0]            wbm_i_or12_dat_o;
223
   wire [3:0]                  wbm_i_or12_sel_o;
224
   wire                       wbm_i_or12_we_o;
225
   wire                       wbm_i_or12_cyc_o;
226
   wire                       wbm_i_or12_stb_o;
227
   wire [2:0]                  wbm_i_or12_cti_o;
228
   wire [1:0]                  wbm_i_or12_bte_o;
229
 
230
   wire [wb_dw-1:0]            wbm_i_or12_dat_i;
231
   wire                       wbm_i_or12_ack_i;
232
   wire                       wbm_i_or12_err_i;
233
   wire                       wbm_i_or12_rty_i;
234
 
235
   // OR1200 data bus wires   
236
   wire [wb_aw-1:0]            wbm_d_or12_adr_o;
237
   wire [wb_dw-1:0]            wbm_d_or12_dat_o;
238
   wire [3:0]                  wbm_d_or12_sel_o;
239
   wire                       wbm_d_or12_we_o;
240
   wire                       wbm_d_or12_cyc_o;
241
   wire                       wbm_d_or12_stb_o;
242
   wire [2:0]                  wbm_d_or12_cti_o;
243
   wire [1:0]                  wbm_d_or12_bte_o;
244
 
245
   wire [wb_dw-1:0]            wbm_d_or12_dat_i;
246
   wire                       wbm_d_or12_ack_i;
247
   wire                       wbm_d_or12_err_i;
248
   wire                       wbm_d_or12_rty_i;
249
 
250
   // Debug interface bus wires   
251
   wire [wb_aw-1:0]            wbm_d_dbg_adr_o;
252
   wire [wb_dw-1:0]            wbm_d_dbg_dat_o;
253
   wire [3:0]                  wbm_d_dbg_sel_o;
254
   wire                       wbm_d_dbg_we_o;
255
   wire                       wbm_d_dbg_cyc_o;
256
   wire                       wbm_d_dbg_stb_o;
257
   wire [2:0]                  wbm_d_dbg_cti_o;
258
   wire [1:0]                  wbm_d_dbg_bte_o;
259
 
260
   wire [wb_dw-1:0]            wbm_d_dbg_dat_i;
261
   wire                       wbm_d_dbg_ack_i;
262
   wire                       wbm_d_dbg_err_i;
263
   wire                       wbm_d_dbg_rty_i;
264
 
265
   // Byte bus bridge master signals
266
   wire [wb_aw-1:0]            wbm_b_d_adr_o;
267
   wire [wb_dw-1:0]            wbm_b_d_dat_o;
268
   wire [3:0]                  wbm_b_d_sel_o;
269
   wire                       wbm_b_d_we_o;
270
   wire                       wbm_b_d_cyc_o;
271
   wire                       wbm_b_d_stb_o;
272
   wire [2:0]                  wbm_b_d_cti_o;
273
   wire [1:0]                  wbm_b_d_bte_o;
274
 
275
   wire [wb_dw-1:0]            wbm_b_d_dat_i;
276
   wire                       wbm_b_d_ack_i;
277
   wire                       wbm_b_d_err_i;
278
   wire                       wbm_b_d_rty_i;
279
 
280
   // Instruction bus slave wires //
281
 
282
   // rom0 instruction bus wires
283
   wire [31:0]                 wbs_i_rom0_adr_i;
284
   wire [wbs_i_rom0_data_width-1:0] wbs_i_rom0_dat_i;
285
   wire [3:0]                        wbs_i_rom0_sel_i;
286
   wire                             wbs_i_rom0_we_i;
287
   wire                             wbs_i_rom0_cyc_i;
288
   wire                             wbs_i_rom0_stb_i;
289
   wire [2:0]                        wbs_i_rom0_cti_i;
290
   wire [1:0]                        wbs_i_rom0_bte_i;
291
   wire [wbs_i_rom0_data_width-1:0] wbs_i_rom0_dat_o;
292
   wire                             wbs_i_rom0_ack_o;
293
   wire                             wbs_i_rom0_err_o;
294
   wire                             wbs_i_rom0_rty_o;
295
 
296
   // mc0 instruction bus wires
297
   wire [31:0]                       wbs_i_mc0_adr_i;
298
   wire [wbs_i_mc0_data_width-1:0]  wbs_i_mc0_dat_i;
299
   wire [3:0]                        wbs_i_mc0_sel_i;
300
   wire                             wbs_i_mc0_we_i;
301
   wire                             wbs_i_mc0_cyc_i;
302
   wire                             wbs_i_mc0_stb_i;
303
   wire [2:0]                        wbs_i_mc0_cti_i;
304
   wire [1:0]                        wbs_i_mc0_bte_i;
305
   wire [wbs_i_mc0_data_width-1:0]  wbs_i_mc0_dat_o;
306
   wire                             wbs_i_mc0_ack_o;
307
   wire                             wbs_i_mc0_err_o;
308
   wire                             wbs_i_mc0_rty_o;
309
 
310
   // Data bus slave wires //
311
 
312
   // mc0 data bus wires
313
   wire [31:0]                       wbs_d_mc0_adr_i;
314
   wire [wbs_d_mc0_data_width-1:0]  wbs_d_mc0_dat_i;
315
   wire [3:0]                        wbs_d_mc0_sel_i;
316
   wire                             wbs_d_mc0_we_i;
317
   wire                             wbs_d_mc0_cyc_i;
318
   wire                             wbs_d_mc0_stb_i;
319
   wire [2:0]                        wbs_d_mc0_cti_i;
320
   wire [1:0]                        wbs_d_mc0_bte_i;
321
   wire [wbs_d_mc0_data_width-1:0]  wbs_d_mc0_dat_o;
322
   wire                             wbs_d_mc0_ack_o;
323
   wire                             wbs_d_mc0_err_o;
324
   wire                             wbs_d_mc0_rty_o;
325
 
326
   // i2c0 wires
327
   wire [31:0]                       wbs_d_i2c0_adr_i;
328
   wire [wbs_d_i2c0_data_width-1:0] wbs_d_i2c0_dat_i;
329
   wire [3:0]                        wbs_d_i2c0_sel_i;
330
   wire                             wbs_d_i2c0_we_i;
331
   wire                             wbs_d_i2c0_cyc_i;
332
   wire                             wbs_d_i2c0_stb_i;
333
   wire [2:0]                        wbs_d_i2c0_cti_i;
334
   wire [1:0]                        wbs_d_i2c0_bte_i;
335
   wire [wbs_d_i2c0_data_width-1:0] wbs_d_i2c0_dat_o;
336
   wire                             wbs_d_i2c0_ack_o;
337
   wire                             wbs_d_i2c0_err_o;
338
   wire                             wbs_d_i2c0_rty_o;
339
 
340
   // i2c1 wires
341
   wire [31:0]                       wbs_d_i2c1_adr_i;
342
   wire [wbs_d_i2c1_data_width-1:0] wbs_d_i2c1_dat_i;
343
   wire [3:0]                        wbs_d_i2c1_sel_i;
344
   wire                             wbs_d_i2c1_we_i;
345
   wire                             wbs_d_i2c1_cyc_i;
346
   wire                             wbs_d_i2c1_stb_i;
347
   wire [2:0]                        wbs_d_i2c1_cti_i;
348
   wire [1:0]                        wbs_d_i2c1_bte_i;
349
   wire [wbs_d_i2c1_data_width-1:0] wbs_d_i2c1_dat_o;
350
   wire                             wbs_d_i2c1_ack_o;
351
   wire                             wbs_d_i2c1_err_o;
352
   wire                             wbs_d_i2c1_rty_o;
353
 
354
   // spi0 wires
355
   wire [31:0]                       wbs_d_spi0_adr_i;
356
   wire [wbs_d_spi0_data_width-1:0] wbs_d_spi0_dat_i;
357
   wire [3:0]                        wbs_d_spi0_sel_i;
358
   wire                             wbs_d_spi0_we_i;
359
   wire                             wbs_d_spi0_cyc_i;
360
   wire                             wbs_d_spi0_stb_i;
361
   wire [2:0]                        wbs_d_spi0_cti_i;
362
   wire [1:0]                        wbs_d_spi0_bte_i;
363
   wire [wbs_d_spi0_data_width-1:0] wbs_d_spi0_dat_o;
364
   wire                             wbs_d_spi0_ack_o;
365
   wire                             wbs_d_spi0_err_o;
366
   wire                             wbs_d_spi0_rty_o;
367
 
368
   // uart0 wires
369
   wire [31:0]                        wbs_d_uart0_adr_i;
370
   wire [wbs_d_uart0_data_width-1:0] wbs_d_uart0_dat_i;
371
   wire [3:0]                         wbs_d_uart0_sel_i;
372
   wire                              wbs_d_uart0_we_i;
373
   wire                              wbs_d_uart0_cyc_i;
374
   wire                              wbs_d_uart0_stb_i;
375
   wire [2:0]                         wbs_d_uart0_cti_i;
376
   wire [1:0]                         wbs_d_uart0_bte_i;
377
   wire [wbs_d_uart0_data_width-1:0] wbs_d_uart0_dat_o;
378
   wire                              wbs_d_uart0_ack_o;
379
   wire                              wbs_d_uart0_err_o;
380
   wire                              wbs_d_uart0_rty_o;
381
 
382
   // gpio0 wires
383
   wire [31:0]                        wbs_d_gpio0_adr_i;
384
   wire [wbs_d_gpio0_data_width-1:0] wbs_d_gpio0_dat_i;
385
   wire [3:0]                         wbs_d_gpio0_sel_i;
386
   wire                              wbs_d_gpio0_we_i;
387
   wire                              wbs_d_gpio0_cyc_i;
388
   wire                              wbs_d_gpio0_stb_i;
389
   wire [2:0]                         wbs_d_gpio0_cti_i;
390
   wire [1:0]                         wbs_d_gpio0_bte_i;
391
   wire [wbs_d_gpio0_data_width-1:0] wbs_d_gpio0_dat_o;
392
   wire                              wbs_d_gpio0_ack_o;
393
   wire                              wbs_d_gpio0_err_o;
394
   wire                              wbs_d_gpio0_rty_o;
395
 
396
   // eth0 slave wires
397
   wire [31:0]                             wbs_d_eth0_adr_i;
398
   wire [wbs_d_eth0_data_width-1:0]        wbs_d_eth0_dat_i;
399
   wire [3:0]                              wbs_d_eth0_sel_i;
400
   wire                                   wbs_d_eth0_we_i;
401
   wire                                   wbs_d_eth0_cyc_i;
402
   wire                                   wbs_d_eth0_stb_i;
403
   wire [2:0]                              wbs_d_eth0_cti_i;
404
   wire [1:0]                              wbs_d_eth0_bte_i;
405
   wire [wbs_d_eth0_data_width-1:0]        wbs_d_eth0_dat_o;
406
   wire                                   wbs_d_eth0_ack_o;
407
   wire                                   wbs_d_eth0_err_o;
408
   wire                                   wbs_d_eth0_rty_o;
409
 
410
   // eth0 master wires
411
   wire [wbm_eth0_addr_width-1:0]          wbm_eth0_adr_o;
412
   wire [wbm_eth0_data_width-1:0]          wbm_eth0_dat_o;
413
   wire [3:0]                              wbm_eth0_sel_o;
414
   wire                                   wbm_eth0_we_o;
415
   wire                                   wbm_eth0_cyc_o;
416
   wire                                   wbm_eth0_stb_o;
417
   wire [2:0]                              wbm_eth0_cti_o;
418
   wire [1:0]                              wbm_eth0_bte_o;
419
   wire [wbm_eth0_data_width-1:0]         wbm_eth0_dat_i;
420
   wire                                   wbm_eth0_ack_i;
421
   wire                                   wbm_eth0_err_i;
422
   wire                                   wbm_eth0_rty_i;
423
 
424
 
425
 
426
   //
427
   // Wishbone instruction bus arbiter
428
   //
429
 
430
   arbiter_ibus arbiter_ibus0
431
     (
432
      // Instruction Bus Master
433
      // Inputs to arbiter from master
434
      .wbm_adr_o                        (wbm_i_or12_adr_o),
435
      .wbm_dat_o                        (wbm_i_or12_dat_o),
436
      .wbm_sel_o                        (wbm_i_or12_sel_o),
437
      .wbm_we_o                         (wbm_i_or12_we_o),
438
      .wbm_cyc_o                        (wbm_i_or12_cyc_o),
439
      .wbm_stb_o                        (wbm_i_or12_stb_o),
440
      .wbm_cti_o                        (wbm_i_or12_cti_o),
441
      .wbm_bte_o                        (wbm_i_or12_bte_o),
442
      // Outputs to master from arbiter
443
      .wbm_dat_i                        (wbm_i_or12_dat_i),
444
      .wbm_ack_i                        (wbm_i_or12_ack_i),
445
      .wbm_err_i                        (wbm_i_or12_err_i),
446
      .wbm_rty_i                        (wbm_i_or12_rty_i),
447
 
448
      // Slave 0
449
      // Inputs to slave from arbiter
450
      .wbs0_adr_i                       (wbs_i_rom0_adr_i),
451
      .wbs0_dat_i                       (wbs_i_rom0_dat_i),
452
      .wbs0_sel_i                       (wbs_i_rom0_sel_i),
453
      .wbs0_we_i                        (wbs_i_rom0_we_i),
454
      .wbs0_cyc_i                       (wbs_i_rom0_cyc_i),
455
      .wbs0_stb_i                       (wbs_i_rom0_stb_i),
456
      .wbs0_cti_i                       (wbs_i_rom0_cti_i),
457
      .wbs0_bte_i                       (wbs_i_rom0_bte_i),
458
      // Outputs from slave to arbiter      
459
      .wbs0_dat_o                       (wbs_i_rom0_dat_o),
460
      .wbs0_ack_o                       (wbs_i_rom0_ack_o),
461
      .wbs0_err_o                       (wbs_i_rom0_err_o),
462
      .wbs0_rty_o                       (wbs_i_rom0_rty_o),
463
 
464
      // Slave 1
465
      // Inputs to slave from arbiter
466
      .wbs1_adr_i                       (wbs_i_mc0_adr_i),
467
      .wbs1_dat_i                       (wbs_i_mc0_dat_i),
468
      .wbs1_sel_i                       (wbs_i_mc0_sel_i),
469
      .wbs1_we_i                        (wbs_i_mc0_we_i),
470
      .wbs1_cyc_i                       (wbs_i_mc0_cyc_i),
471
      .wbs1_stb_i                       (wbs_i_mc0_stb_i),
472
      .wbs1_cti_i                       (wbs_i_mc0_cti_i),
473
      .wbs1_bte_i                       (wbs_i_mc0_bte_i),
474
      // Outputs from slave to arbiter
475
      .wbs1_dat_o                       (wbs_i_mc0_dat_o),
476
      .wbs1_ack_o                       (wbs_i_mc0_ack_o),
477
      .wbs1_err_o                       (wbs_i_mc0_err_o),
478
      .wbs1_rty_o                       (wbs_i_mc0_rty_o),
479
 
480
      // Clock, reset inputs
481
      .wb_clk                           (wb_clk),
482
      .wb_rst                           (wb_rst));
483
 
484
   defparam arbiter_ibus0.wb_addr_match_width = ibus_arb_addr_match_width;
485
 
486
   defparam arbiter_ibus0.slave0_adr = ibus_arb_slave0_adr; // FLASH ROM
487
   defparam arbiter_ibus0.slave1_adr = ibus_arb_slave1_adr; // Main memory
488
 
489
   //
490
   // Wishbone data bus arbiter
491
   //
492
 
493
   arbiter_dbus arbiter_dbus0
494
     (
495
      // Master 0
496
      // Inputs to arbiter from master
497
      .wbm0_adr_o                       (wbm_d_or12_adr_o),
498
      .wbm0_dat_o                       (wbm_d_or12_dat_o),
499
      .wbm0_sel_o                       (wbm_d_or12_sel_o),
500
      .wbm0_we_o                        (wbm_d_or12_we_o),
501
      .wbm0_cyc_o                       (wbm_d_or12_cyc_o),
502
      .wbm0_stb_o                       (wbm_d_or12_stb_o),
503
      .wbm0_cti_o                       (wbm_d_or12_cti_o),
504
      .wbm0_bte_o                       (wbm_d_or12_bte_o),
505
      // Outputs to master from arbiter
506
      .wbm0_dat_i                       (wbm_d_or12_dat_i),
507
      .wbm0_ack_i                       (wbm_d_or12_ack_i),
508
      .wbm0_err_i                       (wbm_d_or12_err_i),
509
      .wbm0_rty_i                       (wbm_d_or12_rty_i),
510
 
511
      // Master 0
512
      // Inputs to arbiter from master
513
      .wbm1_adr_o                       (wbm_d_dbg_adr_o),
514
      .wbm1_dat_o                       (wbm_d_dbg_dat_o),
515
      .wbm1_we_o                        (wbm_d_dbg_we_o),
516
      .wbm1_cyc_o                       (wbm_d_dbg_cyc_o),
517
      .wbm1_sel_o                       (wbm_d_dbg_sel_o),
518
      .wbm1_stb_o                       (wbm_d_dbg_stb_o),
519
      .wbm1_cti_o                       (wbm_d_dbg_cti_o),
520
      .wbm1_bte_o                       (wbm_d_dbg_bte_o),
521
      // Outputs to master from arbiter      
522
      .wbm1_dat_i                       (wbm_d_dbg_dat_i),
523
      .wbm1_ack_i                       (wbm_d_dbg_ack_i),
524
      .wbm1_err_i                       (wbm_d_dbg_err_i),
525
      .wbm1_rty_i                       (wbm_d_dbg_rty_i),
526
 
527
      // Slaves
528
 
529
      .wbs0_adr_i                       (wbs_d_mc0_adr_i),
530
      .wbs0_dat_i                       (wbs_d_mc0_dat_i),
531
      .wbs0_sel_i                       (wbs_d_mc0_sel_i),
532
      .wbs0_we_i                        (wbs_d_mc0_we_i),
533
      .wbs0_cyc_i                       (wbs_d_mc0_cyc_i),
534
      .wbs0_stb_i                       (wbs_d_mc0_stb_i),
535
      .wbs0_cti_i                       (wbs_d_mc0_cti_i),
536
      .wbs0_bte_i                       (wbs_d_mc0_bte_i),
537
      .wbs0_dat_o                       (wbs_d_mc0_dat_o),
538
      .wbs0_ack_o                       (wbs_d_mc0_ack_o),
539
      .wbs0_err_o                       (wbs_d_mc0_err_o),
540
      .wbs0_rty_o                       (wbs_d_mc0_rty_o),
541
 
542
      .wbs1_adr_i                       (wbs_d_eth0_adr_i),
543
      .wbs1_dat_i                       (wbs_d_eth0_dat_i),
544
      .wbs1_sel_i                       (wbs_d_eth0_sel_i),
545
      .wbs1_we_i                        (wbs_d_eth0_we_i),
546
      .wbs1_cyc_i                       (wbs_d_eth0_cyc_i),
547
      .wbs1_stb_i                       (wbs_d_eth0_stb_i),
548
      .wbs1_cti_i                       (wbs_d_eth0_cti_i),
549
      .wbs1_bte_i                       (wbs_d_eth0_bte_i),
550
      .wbs1_dat_o                       (wbs_d_eth0_dat_o),
551
      .wbs1_ack_o                       (wbs_d_eth0_ack_o),
552
      .wbs1_err_o                       (wbs_d_eth0_err_o),
553
      .wbs1_rty_o                       (wbs_d_eth0_rty_o),
554
 
555
      .wbs2_adr_i                       (wbm_b_d_adr_o),
556
      .wbs2_dat_i                       (wbm_b_d_dat_o),
557
      .wbs2_sel_i                       (wbm_b_d_sel_o),
558
      .wbs2_we_i                        (wbm_b_d_we_o),
559
      .wbs2_cyc_i                       (wbm_b_d_cyc_o),
560
      .wbs2_stb_i                       (wbm_b_d_stb_o),
561
      .wbs2_cti_i                       (wbm_b_d_cti_o),
562
      .wbs2_bte_i                       (wbm_b_d_bte_o),
563
      .wbs2_dat_o                       (wbm_b_d_dat_i),
564
      .wbs2_ack_o                       (wbm_b_d_ack_i),
565
      .wbs2_err_o                       (wbm_b_d_err_i),
566
      .wbs2_rty_o                       (wbm_b_d_rty_i),
567
 
568
      // Clock, reset inputs
569
      .wb_clk                   (wb_clk),
570
      .wb_rst                   (wb_rst));
571
 
572
   // These settings are from top level params file
573
   defparam arbiter_dbus0.wb_addr_match_width = dbus_arb_wb_addr_match_width;
574
   defparam arbiter_dbus0.wb_num_slaves = dbus_arb_wb_num_slaves;
575
   defparam arbiter_dbus0.slave0_adr = dbus_arb_slave0_adr;
576
   defparam arbiter_dbus0.slave1_adr = dbus_arb_slave1_adr;
577
 
578
   //
579
   // Wishbone byte-wide bus arbiter
580
   //   
581
 
582
   arbiter_bytebus arbiter_bytebus0
583
     (
584
 
585
      // Master 0
586
      // Inputs to arbiter from master
587
      .wbm0_adr_o                       (wbm_b_d_adr_o),
588
      .wbm0_dat_o                       (wbm_b_d_dat_o),
589
      .wbm0_sel_o                       (wbm_b_d_sel_o),
590
      .wbm0_we_o                        (wbm_b_d_we_o),
591
      .wbm0_cyc_o                       (wbm_b_d_cyc_o),
592
      .wbm0_stb_o                       (wbm_b_d_stb_o),
593
      .wbm0_cti_o                       (wbm_b_d_cti_o),
594
      .wbm0_bte_o                       (wbm_b_d_bte_o),
595
      // Outputs to master from arbiter
596
      .wbm0_dat_i                       (wbm_b_d_dat_i),
597
      .wbm0_ack_i                       (wbm_b_d_ack_i),
598
      .wbm0_err_i                       (wbm_b_d_err_i),
599
      .wbm0_rty_i                       (wbm_b_d_rty_i),
600
 
601
      // Byte bus slaves
602
 
603
      .wbs0_adr_i                       (wbs_d_uart0_adr_i),
604
      .wbs0_dat_i                       (wbs_d_uart0_dat_i),
605
      .wbs0_we_i                        (wbs_d_uart0_we_i),
606
      .wbs0_cyc_i                       (wbs_d_uart0_cyc_i),
607
      .wbs0_stb_i                       (wbs_d_uart0_stb_i),
608
      .wbs0_cti_i                       (wbs_d_uart0_cti_i),
609
      .wbs0_bte_i                       (wbs_d_uart0_bte_i),
610
      .wbs0_dat_o                       (wbs_d_uart0_dat_o),
611
      .wbs0_ack_o                       (wbs_d_uart0_ack_o),
612
      .wbs0_err_o                       (wbs_d_uart0_err_o),
613
      .wbs0_rty_o                       (wbs_d_uart0_rty_o),
614
 
615
      .wbs1_adr_i                       (wbs_d_gpio0_adr_i),
616
      .wbs1_dat_i                       (wbs_d_gpio0_dat_i),
617
      .wbs1_we_i                        (wbs_d_gpio0_we_i),
618
      .wbs1_cyc_i                       (wbs_d_gpio0_cyc_i),
619
      .wbs1_stb_i                       (wbs_d_gpio0_stb_i),
620
      .wbs1_cti_i                       (wbs_d_gpio0_cti_i),
621
      .wbs1_bte_i                       (wbs_d_gpio0_bte_i),
622
      .wbs1_dat_o                       (wbs_d_gpio0_dat_o),
623
      .wbs1_ack_o                       (wbs_d_gpio0_ack_o),
624
      .wbs1_err_o                       (wbs_d_gpio0_err_o),
625
      .wbs1_rty_o                       (wbs_d_gpio0_rty_o),
626
 
627
      .wbs2_adr_i                       (wbs_d_i2c0_adr_i),
628
      .wbs2_dat_i                       (wbs_d_i2c0_dat_i),
629
      .wbs2_we_i                        (wbs_d_i2c0_we_i),
630
      .wbs2_cyc_i                       (wbs_d_i2c0_cyc_i),
631
      .wbs2_stb_i                       (wbs_d_i2c0_stb_i),
632
      .wbs2_cti_i                       (wbs_d_i2c0_cti_i),
633
      .wbs2_bte_i                       (wbs_d_i2c0_bte_i),
634
      .wbs2_dat_o                       (wbs_d_i2c0_dat_o),
635
      .wbs2_ack_o                       (wbs_d_i2c0_ack_o),
636
      .wbs2_err_o                       (wbs_d_i2c0_err_o),
637
      .wbs2_rty_o                       (wbs_d_i2c0_rty_o),
638
 
639
      .wbs3_adr_i                       (wbs_d_i2c1_adr_i),
640
      .wbs3_dat_i                       (wbs_d_i2c1_dat_i),
641
      .wbs3_we_i                        (wbs_d_i2c1_we_i),
642
      .wbs3_cyc_i                       (wbs_d_i2c1_cyc_i),
643
      .wbs3_stb_i                       (wbs_d_i2c1_stb_i),
644
      .wbs3_cti_i                       (wbs_d_i2c1_cti_i),
645
      .wbs3_bte_i                       (wbs_d_i2c1_bte_i),
646
      .wbs3_dat_o                       (wbs_d_i2c1_dat_o),
647
      .wbs3_ack_o                       (wbs_d_i2c1_ack_o),
648
      .wbs3_err_o                       (wbs_d_i2c1_err_o),
649
      .wbs3_rty_o                       (wbs_d_i2c1_rty_o),
650
 
651
      .wbs4_adr_i                       (wbs_d_spi0_adr_i),
652
      .wbs4_dat_i                       (wbs_d_spi0_dat_i),
653
      .wbs4_we_i                        (wbs_d_spi0_we_i),
654
      .wbs4_cyc_i                       (wbs_d_spi0_cyc_i),
655
      .wbs4_stb_i                       (wbs_d_spi0_stb_i),
656
      .wbs4_cti_i                       (wbs_d_spi0_cti_i),
657
      .wbs4_bte_i                       (wbs_d_spi0_bte_i),
658
      .wbs4_dat_o                       (wbs_d_spi0_dat_o),
659
      .wbs4_ack_o                       (wbs_d_spi0_ack_o),
660
      .wbs4_err_o                       (wbs_d_spi0_err_o),
661
      .wbs4_rty_o                       (wbs_d_spi0_rty_o),
662
 
663
      // Clock, reset inputs
664
      .wb_clk                   (wb_clk),
665
      .wb_rst                   (wb_rst));
666
 
667
   defparam arbiter_bytebus0.wb_addr_match_width = bbus_arb_wb_addr_match_width;
668
   defparam arbiter_bytebus0.wb_num_slaves = bbus_arb_wb_num_slaves;
669
 
670
   defparam arbiter_bytebus0.slave0_adr = bbus_arb_slave0_adr;
671
   defparam arbiter_bytebus0.slave1_adr = bbus_arb_slave1_adr;
672
   defparam arbiter_bytebus0.slave2_adr = bbus_arb_slave2_adr;
673
   defparam arbiter_bytebus0.slave3_adr = bbus_arb_slave3_adr;
674
   defparam arbiter_bytebus0.slave4_adr = bbus_arb_slave4_adr;
675
 
676
 
677
`ifdef JTAG_DEBUG
678
   ////////////////////////////////////////////////////////////////////////
679
   //
680
   // JTAG TAP
681
   // 
682
   ////////////////////////////////////////////////////////////////////////
683
 
684
   //
685
   // Wires
686
   //
687
   wire                                   dbg_if_select;
688
   wire                                   dbg_if_tdo;
689
   wire                                   jtag_tap_tdo;
690
   wire                                   jtag_tap_shift_dr, jtag_tap_pause_dr,
691
                                          jtag_tap_upate_dr, jtag_tap_capture_dr;
692
   //
693
   // Instantiation
694
   //
695
 
696
   jtag_tap jtag_tap0
697
     (
698
      // Ports to pads
699
      .tdo_pad_o                        (tdo_pad_o),
700
      .tms_pad_i                        (tms_pad_i),
701
      .tck_pad_i                        (dbg_tck),
702
      .trst_pad_i                       (async_rst),
703
      .tdi_pad_i                        (tdi_pad_i),
704
 
705
      .tdo_padoe_o                      (tdo_padoe_o),
706
 
707
      .tdo_o                            (jtag_tap_tdo),
708
 
709
      .shift_dr_o                       (jtag_tap_shift_dr),
710
      .pause_dr_o                       (jtag_tap_pause_dr),
711
      .update_dr_o                      (jtag_tap_update_dr),
712
      .capture_dr_o                     (jtag_tap_capture_dr),
713
 
714
      .extest_select_o                  (),
715
      .sample_preload_select_o          (),
716
      .mbist_select_o                   (),
717
      .debug_select_o                   (dbg_if_select),
718
 
719
 
720
      .bs_chain_tdi_i                   (1'b0),
721
      .mbist_tdi_i                      (1'b0),
722
      .debug_tdi_i                      (dbg_if_tdo)
723
 
724
      );
725
 
726
   ////////////////////////////////////////////////////////////////////////
727
`endif //  `ifdef JTAG_DEBUG
728
 
729
   ////////////////////////////////////////////////////////////////////////
730
   //
731
   // OpenRISC processor
732
   // 
733
   ////////////////////////////////////////////////////////////////////////
734
 
735
   // 
736
   // Wires
737
   // 
738
 
739
   wire [30:0]                             or1200_pic_ints;
740
 
741
   wire [31:0]                             or1200_dbg_dat_i;
742
   wire [31:0]                             or1200_dbg_adr_i;
743
   wire                                   or1200_dbg_we_i;
744
   wire                                   or1200_dbg_stb_i;
745
   wire                                   or1200_dbg_ack_o;
746
   wire [31:0]                             or1200_dbg_dat_o;
747
 
748
   wire                                   or1200_dbg_stall_i;
749
   wire                                   or1200_dbg_ewt_i;
750
   wire [3:0]                              or1200_dbg_lss_o;
751
   wire [1:0]                              or1200_dbg_is_o;
752
   wire [10:0]                             or1200_dbg_wp_o;
753
   wire                                   or1200_dbg_bp_o;
754
   wire                                   or1200_dbg_rst;
755
 
756
   wire                                   or1200_clk, or1200_rst;
757
   wire                                   sig_tick;
758
 
759
   //
760
   // Assigns
761
   //
762
   assign or1200_clk = wb_clk;
763
   assign or1200_rst = wb_rst | or1200_dbg_rst;
764
 
765
   // 
766
   // Instantiation
767
   //    
768
   or1200_top or1200_top0
769
       (
770
        // Instruction bus, clocks, reset
771
        .iwb_clk_i                      (wb_clk),
772
        .iwb_rst_i                      (wb_rst),
773
        .iwb_ack_i                      (wbm_i_or12_ack_i),
774
        .iwb_err_i                      (wbm_i_or12_err_i),
775
        .iwb_rty_i                      (wbm_i_or12_rty_i),
776
        .iwb_dat_i                      (wbm_i_or12_dat_i),
777
 
778
        .iwb_cyc_o                      (wbm_i_or12_cyc_o),
779
        .iwb_adr_o                      (wbm_i_or12_adr_o),
780
        .iwb_stb_o                      (wbm_i_or12_stb_o),
781
        .iwb_we_o                               (wbm_i_or12_we_o),
782
        .iwb_sel_o                      (wbm_i_or12_sel_o),
783
        .iwb_dat_o                      (wbm_i_or12_dat_o),
784
        .iwb_cti_o                      (wbm_i_or12_cti_o),
785
        .iwb_bte_o                      (wbm_i_or12_bte_o),
786
 
787
        // Data bus, clocks, reset            
788
        .dwb_clk_i                      (wb_clk),
789
        .dwb_rst_i                      (wb_rst),
790
        .dwb_ack_i                      (wbm_d_or12_ack_i),
791
        .dwb_err_i                      (wbm_d_or12_err_i),
792
        .dwb_rty_i                      (wbm_d_or12_rty_i),
793
        .dwb_dat_i                      (wbm_d_or12_dat_i),
794
 
795
        .dwb_cyc_o                      (wbm_d_or12_cyc_o),
796
        .dwb_adr_o                      (wbm_d_or12_adr_o),
797
        .dwb_stb_o                      (wbm_d_or12_stb_o),
798
        .dwb_we_o                               (wbm_d_or12_we_o),
799
        .dwb_sel_o                      (wbm_d_or12_sel_o),
800
        .dwb_dat_o                      (wbm_d_or12_dat_o),
801
        .dwb_cti_o                      (wbm_d_or12_cti_o),
802
        .dwb_bte_o                      (wbm_d_or12_bte_o),
803
 
804
        // Debug interface ports
805
        .dbg_stall_i                    (or1200_dbg_stall_i),
806
        //.dbg_ewt_i                    (or1200_dbg_ewt_i),
807
        .dbg_ewt_i                      (1'b0),
808
        .dbg_lss_o                      (or1200_dbg_lss_o),
809
        .dbg_is_o                               (or1200_dbg_is_o),
810
        .dbg_wp_o                               (or1200_dbg_wp_o),
811
        .dbg_bp_o                               (or1200_dbg_bp_o),
812
 
813
        .dbg_adr_i                      (or1200_dbg_adr_i),
814
        .dbg_we_i                               (or1200_dbg_we_i ),
815
        .dbg_stb_i                      (or1200_dbg_stb_i),
816
        .dbg_dat_i                      (or1200_dbg_dat_i),
817
        .dbg_dat_o                      (or1200_dbg_dat_o),
818
        .dbg_ack_o                      (or1200_dbg_ack_o),
819
 
820
        .pm_clksd_o                     (),
821
        .pm_dc_gate_o                   (),
822
        .pm_ic_gate_o                   (),
823
        .pm_dmmu_gate_o                 (),
824
        .pm_immu_gate_o                 (),
825
        .pm_tt_gate_o                   (),
826
        .pm_cpu_gate_o                  (),
827
        .pm_wakeup_o                    (),
828
        .pm_lvolt_o                     (),
829
 
830
        // Core clocks, resets
831
        .clk_i                          (or1200_clk),
832
        .rst_i                          (or1200_rst),
833
 
834
        .clmode_i                               (2'b00),
835
        // Interrupts      
836
        .pic_ints_i                     (or1200_pic_ints),
837
        .sig_tick(sig_tick),
838
        /*
839
         .mbist_so_o                    (),
840
         .mbist_si_i                    (0),
841
         .mbist_ctrl_i                  (0),
842
         */
843
 
844
        .pm_cpustall_i                  (1'b0)
845
 
846
        );
847
 
848
   ////////////////////////////////////////////////////////////////////////
849
 
850
 
851
`ifdef JTAG_DEBUG
852
   ////////////////////////////////////////////////////////////////////////
853
         //
854
   // OR1200 Debug Interface
855
   // 
856
   ////////////////////////////////////////////////////////////////////////
857
 
858
   dbg_if dbg_if0
859
     (
860
      // OR1200 interface
861
      .cpu0_clk_i                       (or1200_clk),
862
      .cpu0_rst_o                       (or1200_dbg_rst),
863
      .cpu0_addr_o                      (or1200_dbg_adr_i),
864
      .cpu0_data_o                      (or1200_dbg_dat_i),
865
      .cpu0_stb_o                       (or1200_dbg_stb_i),
866
      .cpu0_we_o                        (or1200_dbg_we_i),
867
      .cpu0_data_i                      (or1200_dbg_dat_o),
868
      .cpu0_ack_i                       (or1200_dbg_ack_o),
869
 
870
 
871
      .cpu0_stall_o                     (or1200_dbg_stall_i),
872
      .cpu0_bp_i                        (or1200_dbg_bp_o),
873
 
874
      // TAP interface
875
      .tck_i                            (dbg_tck),
876
      .tdi_i                            (jtag_tap_tdo),
877
      .tdo_o                            (dbg_if_tdo),
878
      .rst_i                            (wb_rst),
879
      .shift_dr_i                       (jtag_tap_shift_dr),
880
      .pause_dr_i                       (jtag_tap_pause_dr),
881
      .update_dr_i                      (jtag_tap_update_dr),
882
      .debug_select_i                   (dbg_if_select),
883
 
884
      // Wishbone debug master
885
      .wb_clk_i                         (wb_clk),
886
      .wb_dat_i                         (wbm_d_dbg_dat_i),
887
      .wb_ack_i                         (wbm_d_dbg_ack_i),
888
      .wb_err_i                         (wbm_d_dbg_err_i),
889
      .wb_adr_o                         (wbm_d_dbg_adr_o),
890
      .wb_dat_o                         (wbm_d_dbg_dat_o),
891
      .wb_cyc_o                         (wbm_d_dbg_cyc_o),
892
      .wb_stb_o                         (wbm_d_dbg_stb_o),
893
      .wb_sel_o                         (wbm_d_dbg_sel_o),
894
      .wb_we_o                          (wbm_d_dbg_we_o ),
895
      .wb_cti_o                         (wbm_d_dbg_cti_o),
896
      .wb_cab_o                         (/*   UNUSED  */),
897
      .wb_bte_o                         (wbm_d_dbg_bte_o)
898
      );
899
 
900
   ////////////////////////////////////////////////////////////////////////   
901
`else // !`ifdef JTAG_DEBUG
902
 
903
   assign wbm_d_dbg_adr_o = 0;
904
   assign wbm_d_dbg_dat_o = 0;
905
   assign wbm_d_dbg_cyc_o = 0;
906
   assign wbm_d_dbg_stb_o = 0;
907
   assign wbm_d_dbg_sel_o = 0;
908
   assign wbm_d_dbg_we_o  = 0;
909
   assign wbm_d_dbg_cti_o = 0;
910
   assign wbm_d_dbg_bte_o = 0;
911
 
912
   assign or1200_dbg_adr_i = 0;
913
   assign or1200_dbg_dat_i = 0;
914
   assign or1200_dbg_stb_i = 0;
915
   assign or1200_dbg_we_i = 0;
916
   assign or1200_dbg_stall_i = 0;
917
 
918
   ////////////////////////////////////////////////////////////////////////   
919
`endif // !`ifdef JTAG_DEBUG
920
 
921
`ifdef XILINX_DDR2
922
   ////////////////////////////////////////////////////////////////////////
923
   //
924
   // Xilinx MIG DDR2 controller, Wishbone interface
925
   // 
926
   ////////////////////////////////////////////////////////////////////////
927
   xilinx_ddr2 xilinx_ddr2_0
928
     (
929
      .wbm0_adr_i                       (wbm_eth0_adr_o),
930
      .wbm0_bte_i                       (wbm_eth0_bte_o),
931
      .wbm0_cti_i                       (wbm_eth0_cti_o),
932
      .wbm0_cyc_i                       (wbm_eth0_cyc_o),
933
      .wbm0_dat_i                       (wbm_eth0_dat_o),
934
      .wbm0_sel_i                       (wbm_eth0_sel_o),
935
      .wbm0_stb_i                       (wbm_eth0_stb_o),
936
      .wbm0_we_i                        (wbm_eth0_we_o),
937
      .wbm0_ack_o                       (wbm_eth0_ack_i),
938
      .wbm0_err_o                       (wbm_eth0_err_i),
939
      .wbm0_rty_o                       (wbm_eth0_rty_i),
940
      .wbm0_dat_o                       (wbm_eth0_dat_i),
941
 
942
      .wbm1_adr_i                       (wbs_d_mc0_adr_i),
943
      .wbm1_bte_i                       (wbs_d_mc0_bte_i),
944
      .wbm1_cti_i                       (wbs_d_mc0_cti_i),
945
      .wbm1_cyc_i                       (wbs_d_mc0_cyc_i),
946
      .wbm1_dat_i                       (wbs_d_mc0_dat_i),
947
      .wbm1_sel_i                       (wbs_d_mc0_sel_i),
948
      .wbm1_stb_i                       (wbs_d_mc0_stb_i),
949
      .wbm1_we_i                        (wbs_d_mc0_we_i),
950
      .wbm1_ack_o                       (wbs_d_mc0_ack_o),
951
      .wbm1_err_o                       (wbs_d_mc0_err_o),
952
      .wbm1_rty_o                       (wbs_d_mc0_rty_o),
953
      .wbm1_dat_o                       (wbs_d_mc0_dat_o),
954
 
955
      .wbm2_adr_i                       (wbs_i_mc0_adr_i),
956
      .wbm2_bte_i                       (wbs_i_mc0_bte_i),
957
      .wbm2_cti_i                       (wbs_i_mc0_cti_i),
958
      .wbm2_cyc_i                       (wbs_i_mc0_cyc_i),
959
      .wbm2_dat_i                       (wbs_i_mc0_dat_i),
960
      .wbm2_sel_i                       (wbs_i_mc0_sel_i),
961
      .wbm2_stb_i                       (wbs_i_mc0_stb_i),
962
      .wbm2_we_i                        (wbs_i_mc0_we_i),
963
      .wbm2_ack_o                       (wbs_i_mc0_ack_o),
964
      .wbm2_err_o                       (wbs_i_mc0_err_o),
965
      .wbm2_rty_o                       (wbs_i_mc0_rty_o),
966
      .wbm2_dat_o                       (wbs_i_mc0_dat_o),
967
 
968
      .wb_clk                           (wb_clk),
969
      .wb_rst                           (wb_rst),
970
 
971
      .ddr2_a                           (ddr2_a[12:0]),
972
      .ddr2_ba                          (ddr2_ba[1:0]),
973
      .ddr2_ras_n                       (ddr2_ras_n),
974
      .ddr2_cas_n                       (ddr2_cas_n),
975
      .ddr2_we_n                        (ddr2_we_n),
976
      .ddr2_cs_n                        (ddr2_cs_n),
977
      .ddr2_odt                         (ddr2_odt),
978
      .ddr2_cke                         (ddr2_cke),
979
      .ddr2_dm                          (ddr2_dm[7:0]),
980
      .ddr2_ck                          (ddr2_ck[1:0]),
981
      .ddr2_ck_n                        (ddr2_ck_n[1:0]),
982
      .ddr2_dq                          (ddr2_dq[63:0]),
983
      .ddr2_dqs                         (ddr2_dqs[7:0]),
984
      .ddr2_dqs_n                       (ddr2_dqs_n[7:0]),
985
      .ddr2_if_clk                      (ddr2_if_clk),
986
      .clk200                           (clk200),
987
      .ddr2_if_rst                      (ddr2_if_rst)
988
      );
989
 
990
`endif
991
 
992
 
993
   ////////////////////////////////////////////////////////////////////////
994
   //
995
   // ROM
996
   // 
997
   ////////////////////////////////////////////////////////////////////////
998
 
999
   rom rom0
1000
     (
1001
      .wb_dat_o                         (wbs_i_rom0_dat_o),
1002
      .wb_ack_o                         (wbs_i_rom0_ack_o),
1003
      .wb_adr_i                         (wbs_i_rom0_adr_i[(wbs_i_rom0_addr_width+2)-1:2]),
1004
      .wb_stb_i                         (wbs_i_rom0_stb_i),
1005
      .wb_cyc_i                         (wbs_i_rom0_cyc_i),
1006
      .wb_cti_i                         (wbs_i_rom0_cti_i),
1007
      .wb_bte_i                         (wbs_i_rom0_bte_i),
1008
      .wb_clk                           (wb_clk),
1009
      .wb_rst                           (wb_rst));
1010
 
1011
   defparam rom0.addr_width = wbs_i_rom0_addr_width;
1012
 
1013
   assign wbs_i_rom0_err_o = 0;
1014
   assign wbs_i_rom0_rty_o = 0;
1015
 
1016
   ////////////////////////////////////////////////////////////////////////
1017
 
1018
`ifdef RAM_WB
1019
   ////////////////////////////////////////////////////////////////////////
1020
   //
1021
   // Generic RAM
1022
   // 
1023
   ////////////////////////////////////////////////////////////////////////
1024
 
1025
   ram_wb ram_wb0
1026
     (
1027
      // Wishbone slave interface 0
1028
      .wbm0_dat_i                       (wbs_i_mc0_dat_i),
1029
      .wbm0_adr_i                       (wbs_i_mc0_adr_i),
1030
      .wbm0_sel_i                       (wbs_i_mc0_sel_i),
1031
      .wbm0_cti_i                       (wbs_i_mc0_cti_i),
1032
      .wbm0_bte_i                       (wbs_i_mc0_bte_i),
1033
      .wbm0_we_i                        (wbs_i_mc0_we_i ),
1034
      .wbm0_cyc_i                       (wbs_i_mc0_cyc_i),
1035
      .wbm0_stb_i                       (wbs_i_mc0_stb_i),
1036
      .wbm0_dat_o                       (wbs_i_mc0_dat_o),
1037
      .wbm0_ack_o                       (wbs_i_mc0_ack_o),
1038
      .wbm0_err_o                       (),
1039
      .wbm0_rty_o                       (),
1040
      // Wishbone slave interface 1
1041
      .wbm1_dat_i                       (wbs_d_mc0_dat_i),
1042
      .wbm1_adr_i                       (wbs_d_mc0_adr_i),
1043
      .wbm1_sel_i                       (wbs_d_mc0_sel_i),
1044
      .wbm1_cti_i                       (wbs_d_mc0_cti_i),
1045
      .wbm1_bte_i                       (wbs_d_mc0_bte_i),
1046
      .wbm1_we_i                        (wbs_d_mc0_we_i ),
1047
      .wbm1_cyc_i                       (wbs_d_mc0_cyc_i),
1048
      .wbm1_stb_i                       (wbs_d_mc0_stb_i),
1049
      .wbm1_dat_o                       (wbs_d_mc0_dat_o),
1050
      .wbm1_ack_o                       (wbs_d_mc0_ack_o),
1051
      .wbm1_err_o                       (),
1052
      .wbm1_rty_o                       (),
1053
      // Clock, reset
1054
      .wb_clk_i                         (wb_clk),
1055
      .wb_rst_i                         (wb_rst));
1056
 
1057
   assign wbs_i_mc0_err_o = 0;
1058
   assign wbs_i_mc0_rty_o = 0;
1059
 
1060
   assign wbs_d_mc0_err_o = 0;
1061
   assign wbs_d_mc0_rty_o = 0;
1062
 
1063
   defparam ram_wb0.aw = wb_aw;
1064
   defparam ram_wb0.dw = wb_dw;
1065
   defparam ram_wb0.mem_span = internal_sram_mem_span;
1066
   defparam ram_wb0.adr_width_for_span = internal_sram_adr_width_for_span;
1067
   ////////////////////////////////////////////////////////////////////////
1068
`endif //  `ifdef RAM_WB
1069
 
1070
 
1071
`ifdef ETH0
1072
 
1073
   //
1074
   // Wires
1075
   //
1076
   wire        eth0_irq;
1077
   wire [3:0]  eth0_mtxd;
1078
   wire        eth0_mtxen;
1079
   wire        eth0_mtxerr;
1080
   wire        eth0_mtx_clk;
1081
   wire        eth0_mrx_clk;
1082
   wire [3:0]  eth0_mrxd;
1083
   wire        eth0_mrxdv;
1084
   wire        eth0_mrxerr;
1085
   wire        eth0_mcoll;
1086
   wire        eth0_mcrs;
1087
   wire        eth0_speed;
1088
   wire        eth0_duplex;
1089
   wire        eth0_link;
1090
   // Management interface wires
1091
   wire        eth0_md_i;
1092
   wire        eth0_md_o;
1093
   wire        eth0_md_oe;
1094
 
1095
 
1096
   //
1097
   // assigns
1098
 
1099
   // Hook up MII wires
1100
   assign eth0_mtx_clk   = eth0_tx_clk;
1101
   assign eth0_tx_data   = eth0_mtxd[3:0];
1102
   assign eth0_tx_en     = eth0_mtxen;
1103
   assign eth0_tx_er     = eth0_mtxerr;
1104
   assign eth0_mrxd[3:0] = eth0_rx_data;
1105
   assign eth0_mrxdv     = eth0_dv;
1106
   assign eth0_mrxerr    = eth0_rx_er;
1107
   assign eth0_mrx_clk   = eth0_rx_clk;
1108
   assign eth0_mcoll     = eth0_col;
1109
   assign eth0_mcrs      = eth0_crs;
1110
 
1111
`ifdef XILINX
1112
   // Xilinx primitive for MDIO tristate
1113
   IOBUF iobuf_phy_smi_data
1114
     (
1115
      // Outputs
1116
      .O                                 (eth0_md_i),
1117
      // Inouts
1118
      .IO                                (eth0_md_pad_io),
1119
      // Inputs
1120
      .I                                 (eth0_md_o),
1121
      .T                                 (!eth0_md_oe));
1122
`else // !`ifdef XILINX
1123
 
1124
   // Generic technology tristate control for management interface
1125
   assign eth0_md_pad_io = eth0_md_oe ? eth0_md_o : 1'bz;
1126
   assign eth0_md_i = eth0_md_pad_io;
1127
 
1128
`endif // !`ifdef XILINX
1129
 
1130
`ifdef ETH0_PHY_RST
1131
   assign eth0_rst_n_o = !wb_rst;
1132
`endif
1133
 
1134
   ethmac ethmac0
1135
     (
1136
      // Wishbone Slave interface
1137
      .wb_clk_i         (wb_clk),
1138
      .wb_rst_i         (wb_rst),
1139
      .wb_dat_i         (wbs_d_eth0_dat_i[31:0]),
1140
      .wb_adr_i         (wbs_d_eth0_adr_i[wbs_d_eth0_addr_width-1:2]),
1141
      .wb_sel_i         (wbs_d_eth0_sel_i[3:0]),
1142
      .wb_we_i          (wbs_d_eth0_we_i),
1143
      .wb_cyc_i         (wbs_d_eth0_cyc_i),
1144
      .wb_stb_i         (wbs_d_eth0_stb_i),
1145
      .wb_dat_o         (wbs_d_eth0_dat_o[31:0]),
1146
      .wb_err_o         (wbs_d_eth0_err_o),
1147
      .wb_ack_o         (wbs_d_eth0_ack_o),
1148
      // Wishbone Master Interface
1149
      .m_wb_adr_o       (wbm_eth0_adr_o[31:0]),
1150
      .m_wb_sel_o       (wbm_eth0_sel_o[3:0]),
1151
      .m_wb_we_o        (wbm_eth0_we_o),
1152
      .m_wb_dat_o       (wbm_eth0_dat_o[31:0]),
1153
      .m_wb_cyc_o       (wbm_eth0_cyc_o),
1154
      .m_wb_stb_o       (wbm_eth0_stb_o),
1155
      .m_wb_cti_o       (wbm_eth0_cti_o[2:0]),
1156
      .m_wb_bte_o       (wbm_eth0_bte_o[1:0]),
1157
      .m_wb_dat_i       (wbm_eth0_dat_i[31:0]),
1158
      .m_wb_ack_i       (wbm_eth0_ack_i),
1159
      .m_wb_err_i       (wbm_eth0_err_i),
1160
 
1161
      // Ethernet MII interface
1162
      // Transmit
1163
      .mtxd_pad_o       (eth0_mtxd[3:0]),
1164
      .mtxen_pad_o      (eth0_mtxen),
1165
      .mtxerr_pad_o     (eth0_mtxerr),
1166
      .mtx_clk_pad_i    (eth0_mtx_clk),
1167
      // Receive
1168
      .mrx_clk_pad_i    (eth0_mrx_clk),
1169
      .mrxd_pad_i       (eth0_mrxd[3:0]),
1170
      .mrxdv_pad_i      (eth0_mrxdv),
1171
      .mrxerr_pad_i     (eth0_mrxerr),
1172
      .mcoll_pad_i      (eth0_mcoll),
1173
      .mcrs_pad_i       (eth0_mcrs),
1174
      // Management interface
1175
      .md_pad_i         (eth0_md_i),
1176
      .mdc_pad_o        (eth0_mdc_pad_o),
1177
      .md_pad_o         (eth0_md_o),
1178
      .md_padoe_o       (eth0_md_oe),
1179
 
1180
      // Processor interrupt
1181
      .int_o            (eth0_irq)
1182
 
1183
      /*
1184
       .mbist_so_o                      (),
1185
       .mbist_si_i                      (),
1186
       .mbist_ctrl_i                    ()
1187
       */
1188
 
1189
      );
1190
 
1191
   assign wbs_d_eth0_rty_o = 0;
1192
 
1193
`else
1194
   assign wbs_d_eth0_dat_o = 0;
1195
   assign wbs_d_eth0_err_o = 0;
1196
   assign wbs_d_eth0_ack_o = 0;
1197
   assign wbs_d_eth0_rty_o = 0;
1198
   assign wbm_eth0_adr_o = 0;
1199
   assign wbm_eth0_sel_o = 0;
1200
   assign wbm_eth0_we_o = 0;
1201
   assign wbm_eth0_dat_o = 0;
1202
   assign wbm_eth0_cyc_o = 0;
1203
   assign wbm_eth0_stb_o = 0;
1204
   assign wbm_eth0_cti_o = 0;
1205
   assign wbm_eth0_bte_o = 0;
1206
`endif
1207
 
1208
`ifdef UART0
1209
   ////////////////////////////////////////////////////////////////////////
1210
   //
1211
   // UART0
1212
   // 
1213
   ////////////////////////////////////////////////////////////////////////
1214
 
1215
   //
1216
   // Wires
1217
   //
1218
   wire        uart0_srx;
1219
   wire        uart0_stx;
1220
 
1221
   wire        uart0_irq;
1222
 
1223
   //
1224
   // Assigns
1225
   //
1226
   assign wbs_d_uart0_err_o = 0;
1227
   assign wbs_d_uart0_rty_o = 0;
1228
 
1229
   // Two UART lines coming to single one (ensure they go high when unconnected)
1230
   assign uart_srx = uart0_srx_pad_i & uart0_srx_expheader_pad_i;
1231
   assign uart0_stx_pad_o = uart0_stx;
1232
   assign uart0_stx_expheader_pad_o = uart0_stx;
1233
 
1234
 
1235
   uart16550 uart16550_0
1236
     (
1237
      // Wishbone slave interface
1238
      .wb_clk_i                         (wb_clk),
1239
      .wb_rst_i                         (wb_rst),
1240
      .wb_adr_i                         (wbs_d_uart0_adr_i[uart0_addr_width-1:0]),
1241
      .wb_dat_i                         (wbs_d_uart0_dat_i),
1242
      .wb_we_i                          (wbs_d_uart0_we_i),
1243
      .wb_stb_i                         (wbs_d_uart0_stb_i),
1244
      .wb_cyc_i                         (wbs_d_uart0_cyc_i),
1245
      //.wb_sel_i                               (),
1246
      .wb_dat_o                         (wbs_d_uart0_dat_o),
1247
      .wb_ack_o                         (wbs_d_uart0_ack_o),
1248
 
1249
      .int_o                            (uart0_irq),
1250
      .stx_pad_o                        (uart0_stx),
1251
      .rts_pad_o                        (),
1252
      .dtr_pad_o                        (),
1253
      //      .baud_o                           (),
1254
      // Inputs
1255
      .srx_pad_i                        (uart0_srx),
1256
      .cts_pad_i                        (1'b0),
1257
      .dsr_pad_i                        (1'b0),
1258
      .ri_pad_i                         (1'b0),
1259
      .dcd_pad_i                        (1'b0));
1260
 
1261
   ////////////////////////////////////////////////////////////////////////          
1262
`else // !`ifdef UART0
1263
 
1264
   //
1265
   // Assigns
1266
   //
1267
   assign wbs_d_uart0_err_o = 0;
1268
   assign wbs_d_uart0_rty_o = 0;
1269
   assign wbs_d_uart0_ack_o = 0;
1270
   assign wbs_d_uart0_dat_o = 0;
1271
 
1272
   ////////////////////////////////////////////////////////////////////////       
1273
`endif // !`ifdef UART0
1274
 
1275
`ifdef SPI0
1276
   ////////////////////////////////////////////////////////////////////////
1277
   //
1278
   // SPI0 controller
1279
   // 
1280
   ////////////////////////////////////////////////////////////////////////
1281
 
1282
   //
1283
   // Wires
1284
   //
1285
   wire                              spi0_irq;
1286
 
1287
   //
1288
   // Assigns
1289
   //
1290
   assign wbs_d_spi0_err_o = 0;
1291
   assign wbs_d_spi0_rty_o = 0;
1292
   //assign spi0_hold_n_o = 1;
1293
   //assign spi0_w_n_o = 1;
1294
 
1295
 
1296
   simple_spi spi0
1297
     (
1298
      // Wishbone slave interface
1299
      .clk_i                            (wb_clk),
1300
      .rst_i                            (wb_rst),
1301
      .cyc_i                            (wbs_d_spi0_cyc_i),
1302
      .stb_i                            (wbs_d_spi0_stb_i),
1303
      .adr_i                            (wbs_d_spi0_adr_i[spi0_wb_adr_width-1:0]),
1304
      .we_i                             (wbs_d_spi0_we_i),
1305
      .dat_i                            (wbs_d_spi0_dat_i),
1306
      .dat_o                            (wbs_d_spi0_dat_o),
1307
      .ack_o                            (wbs_d_spi0_ack_o),
1308
      // SPI IRQ
1309
      .inta_o                           (spi0_irq),
1310
      // External SPI interface
1311
      .sck_o                            (spi0_sck_o),
1312
      .ss_o                             (spi0_ss_o),
1313
      .mosi_o                           (spi0_mosi_o),
1314
      .miso_i                           (spi0_miso_i)
1315
      );
1316
 
1317
   defparam spi0.slave_select_width = spi0_ss_width;
1318
 
1319
   ////////////////////////////////////////////////////////////////////////   
1320
`else // !`ifdef SPI0
1321
 
1322
   //
1323
   // Assigns
1324
   //
1325
   assign wbs_d_spi0_dat_o = 0;
1326
   assign wbs_d_spi0_ack_o = 0;
1327
   assign wbs_d_spi0_err_o = 0;
1328
   assign wbs_d_spi0_rty_o = 0;
1329
 
1330
   ////////////////////////////////////////////////////////////////////////
1331
`endif // !`ifdef SPI0   
1332
 
1333
 
1334
`ifdef I2C0
1335
   ////////////////////////////////////////////////////////////////////////
1336
   //
1337
   // i2c controller 0
1338
   // 
1339
   ////////////////////////////////////////////////////////////////////////
1340
 
1341
   //
1342
   // Wires
1343
   //
1344
   wire                              i2c0_irq;
1345
   wire                              scl0_pad_o;
1346
   wire                              scl0_padoen_o;
1347
   wire                              sda0_pad_o;
1348
   wire                              sda0_padoen_o;
1349
 
1350
  i2c_master_slave
1351
    #
1352
    (
1353
     .DEFAULT_SLAVE_ADDR(HV0_SADR)
1354
    )
1355
  i2c_master_slave0
1356
    (
1357
     .wb_clk_i                       (wb_clk),
1358
     .wb_rst_i                       (wb_rst),
1359
     .arst_i                         (wb_rst),
1360
     .wb_adr_i                       (wbs_d_i2c0_adr_i[i2c_0_wb_adr_width-1:0]),
1361
     .wb_dat_i                       (wbs_d_i2c0_dat_i),
1362
     .wb_we_i                        (wbs_d_i2c0_we_i ),
1363
     .wb_cyc_i                       (wbs_d_i2c0_cyc_i),
1364
     .wb_stb_i                       (wbs_d_i2c0_stb_i),
1365
     .wb_dat_o                       (wbs_d_i2c0_dat_o),
1366
     .wb_ack_o                       (wbs_d_i2c0_ack_o),
1367
     .scl_pad_i                      (i2c0_scl_io     ),
1368
     .scl_pad_o                      (scl0_pad_o         ),
1369
     .scl_padoen_o                   (scl0_padoen_o      ),
1370
     .sda_pad_i                      (i2c0_sda_io        ),
1371
     .sda_pad_o                      (sda0_pad_o         ),
1372
     .sda_padoen_o                   (sda0_padoen_o      ),
1373
 
1374
      // Interrupt
1375
     .wb_inta_o                      (i2c0_irq)
1376
 
1377
      );
1378
 
1379
   assign wbs_d_i2c0_err_o = 0;
1380
   assign wbs_d_i2c0_rty_o = 0;
1381
 
1382
   // i2c phy lines
1383
   assign i2c0_scl_io = scl0_padoen_o ? 1'bz : scl0_pad_o;
1384
   assign i2c0_sda_io = sda0_padoen_o ? 1'bz : sda0_pad_o;
1385
 
1386
 
1387
   ////////////////////////////////////////////////////////////////////////
1388
`else // !`ifdef I2C0
1389
 
1390
   assign wbs_d_i2c0_dat_o = 0;
1391
   assign wbs_d_i2c0_ack_o = 0;
1392
   assign wbs_d_i2c0_err_o = 0;
1393
   assign wbs_d_i2c0_rty_o = 0;
1394
 
1395
   ////////////////////////////////////////////////////////////////////////
1396
`endif // !`ifdef I2C0   
1397
 
1398
`ifdef I2C1
1399
   ////////////////////////////////////////////////////////////////////////
1400
   //
1401
   // i2c controller 1
1402
   // 
1403
   ////////////////////////////////////////////////////////////////////////
1404
 
1405
   //
1406
   // Wires
1407
   //
1408
   wire                              i2c1_irq;
1409
   wire                              scl1_pad_o;
1410
   wire                              scl1_padoen_o;
1411
   wire                              sda1_pad_o;
1412
   wire                              sda1_padoen_o;
1413
 
1414
   i2c_master_slave
1415
    #
1416
    (
1417
     .DEFAULT_SLAVE_ADDR(HV1_SADR)
1418
    )
1419
   i2c_master_slave1
1420
     (
1421
      .wb_clk_i                      (wb_clk),
1422
      .wb_rst_i                      (wb_rst),
1423
      .arst_i                        (wb_rst),
1424
      .wb_adr_i                      (wbs_d_i2c1_adr_i[i2c_1_wb_adr_width-1:0]),
1425
      .wb_dat_i                      (wbs_d_i2c1_dat_i),
1426
      .wb_we_i                       (wbs_d_i2c1_we_i ),
1427
      .wb_cyc_i                      (wbs_d_i2c1_cyc_i),
1428
      .wb_stb_i                      (wbs_d_i2c1_stb_i),
1429
      .wb_dat_o                      (wbs_d_i2c1_dat_o),
1430
      .wb_ack_o                      (wbs_d_i2c1_ack_o),
1431
      .scl_pad_i                     (i2c1_scl_io     ),
1432
      .scl_pad_o                     (scl1_pad_o         ),
1433
      .scl_padoen_o                  (scl1_padoen_o      ),
1434
      .sda_pad_i                     (i2c1_sda_io        ),
1435
      .sda_pad_o                     (sda1_pad_o         ),
1436
      .sda_padoen_o                  (sda1_padoen_o      ),
1437
 
1438
      // Interrupt
1439
      .wb_inta_o                     (i2c1_irq)
1440
 
1441
      );
1442
 
1443
   assign wbs_d_i2c1_err_o = 0;
1444
   assign wbs_d_i2c1_rty_o = 0;
1445
 
1446
   // i2c phy lines
1447
   assign i2c1_scl_io = scl1_padoen_o ? 1'bz : scl1_pad_o;
1448
   assign i2c1_sda_io = sda1_padoen_o ? 1'bz : sda1_pad_o;
1449
 
1450
   ////////////////////////////////////////////////////////////////////////
1451
`else // !`ifdef I2C1   
1452
 
1453
   assign wbs_d_i2c1_dat_o = 0;
1454
   assign wbs_d_i2c1_ack_o = 0;
1455
   assign wbs_d_i2c1_err_o = 0;
1456
   assign wbs_d_i2c1_rty_o = 0;
1457
 
1458
   ////////////////////////////////////////////////////////////////////////
1459
`endif // !`ifdef I2C1   
1460
 
1461
`ifdef GPIO0
1462
   ////////////////////////////////////////////////////////////////////////
1463
   //
1464
   // GPIO 0
1465
   // 
1466
   ////////////////////////////////////////////////////////////////////////
1467
 
1468
   gpio gpio0
1469
     (
1470
      // GPIO bus
1471
      .gpio_io                          (gpio0_io[gpio0_io_width-1:0]),
1472
      // Wishbone slave interface
1473
      .wb_adr_i                         (wbs_d_gpio0_adr_i[gpio0_wb_adr_width-1:0]),
1474
      .wb_dat_i                         (wbs_d_gpio0_dat_i),
1475
      .wb_we_i                          (wbs_d_gpio0_we_i),
1476
      .wb_cyc_i                         (wbs_d_gpio0_cyc_i),
1477
      .wb_stb_i                         (wbs_d_gpio0_stb_i),
1478
      .wb_cti_i                         (wbs_d_gpio0_cti_i),
1479
      .wb_bte_i                         (wbs_d_gpio0_bte_i),
1480
      .wb_dat_o                         (wbs_d_gpio0_dat_o),
1481
      .wb_ack_o                         (wbs_d_gpio0_ack_o),
1482
      .wb_err_o                         (wbs_d_gpio0_err_o),
1483
      .wb_rty_o                         (wbs_d_gpio0_rty_o),
1484
 
1485
      .wb_clk                           (wb_clk),
1486
      .wb_rst                           (wb_rst)
1487
      );
1488
 
1489
   defparam gpio0.gpio_io_width = gpio0_io_width;
1490
   defparam gpio0.gpio_dir_reset_val = gpio0_dir_reset_val;
1491
   defparam gpio0.gpio_o_reset_val = gpio0_o_reset_val;
1492
 
1493
   ////////////////////////////////////////////////////////////////////////
1494
`else // !`ifdef GPIO0
1495
   assign wbs_d_gpio0_dat_o = 0;
1496
   assign wbs_d_gpio0_ack_o = 0;
1497
   assign wbs_d_gpio0_err_o = 0;
1498
   assign wbs_d_gpio0_rty_o = 0;
1499
   ////////////////////////////////////////////////////////////////////////
1500
`endif // !`ifdef GPIO0
1501
 
1502
   ////////////////////////////////////////////////////////////////////////
1503
   //
1504
   // OR1200 Interrupt assignment
1505
   // 
1506
   ////////////////////////////////////////////////////////////////////////
1507
 
1508
   assign or1200_pic_ints[0] = 0; // Non-maskable inside OR1200
1509
   assign or1200_pic_ints[1] = 0; // Non-maskable inside OR1200
1510
`ifdef UART0
1511
   assign or1200_pic_ints[2] = uart0_irq;
1512
`else
1513
   assign or1200_pic_ints[2] = 0;
1514
`endif
1515
   assign or1200_pic_ints[3] = 0;
1516
`ifdef ETH0
1517
   assign or1200_pic_ints[4] = eth0_irq;
1518
`else
1519
   assign or1200_pic_ints[4] = 0;
1520
`endif
1521
   assign or1200_pic_ints[5] = 0;
1522
`ifdef SPI0
1523
   assign or1200_pic_ints[6] = spi0_irq;
1524
`else
1525
   assign or1200_pic_ints[6] = 0;
1526
`endif
1527
   assign or1200_pic_ints[7] = 0;
1528
   assign or1200_pic_ints[8] = 0;
1529
   assign or1200_pic_ints[9] = 0;
1530
`ifdef I2C0
1531
   assign or1200_pic_ints[10] = i2c0_irq;
1532
`else
1533
   assign or1200_pic_ints[10] = 0;
1534
`endif
1535
`ifdef I2C1
1536
   assign or1200_pic_ints[11] = i2c1_irq;
1537
`else
1538
   assign or1200_pic_ints[11] = 0;
1539
`endif
1540
   assign or1200_pic_ints[12] = 0;
1541
   assign or1200_pic_ints[13] = 0;
1542
   assign or1200_pic_ints[14] = 0;
1543
   assign or1200_pic_ints[15] = 0;
1544
   assign or1200_pic_ints[16] = 0;
1545
   assign or1200_pic_ints[17] = 0;
1546
   assign or1200_pic_ints[18] = 0;
1547
   assign or1200_pic_ints[19] = 0;
1548
   assign or1200_pic_ints[20] = 0;
1549
   assign or1200_pic_ints[21] = 0;
1550
   assign or1200_pic_ints[22] = 0;
1551
   assign or1200_pic_ints[23] = 0;
1552
   assign or1200_pic_ints[24] = 0;
1553
   assign or1200_pic_ints[25] = 0;
1554
   assign or1200_pic_ints[26] = 0;
1555
   assign or1200_pic_ints[27] = 0;
1556
   assign or1200_pic_ints[28] = 0;
1557
   assign or1200_pic_ints[29] = 0;
1558
   assign or1200_pic_ints[30] = 0;
1559
 
1560
endmodule // orpsoc_top
1561
 
1562
 

powered by: WebSVN 2.1.0

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