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

Subversion Repositories openrisc

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

Details | Compare with Previous | View Log

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

powered by: WebSVN 2.1.0

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