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

Subversion Repositories test_project

[/] [test_project/] [trunk/] [rtl/] [verilog/] [components/] [or1k_top/] [or1k_top.v] - Blame information for rev 42

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 18 unneback
// synopsys translate_off
2
`include "timescale.v"
3
// synopsys translate_on
4
 
5
`include "or1k_top.h"
6
`include "or1200_defines.v"
7
 
8 42 julius
module or1k_top (
9 18 unneback
  // System
10
  clk_i, rst_i, pic_ints_i,
11
 
12
  // Instruction WISHBONE INTERFACE
13
  iwb_clk_i, iwb_rst_i, iwb_ack_i, iwb_err_i, iwb_rty_i, iwb_dat_i,
14
  iwb_cyc_o, iwb_adr_o, iwb_stb_o, iwb_we_o, iwb_sel_o,
15
  iwb_cti_o, iwb_bte_o,
16
  // Data WISHBONE INTERFACE
17
  dwb_clk_i, dwb_rst_i, dwb_ack_i, dwb_err_i, dwb_rty_i, dwb_dat_i,
18
  dwb_cyc_o, dwb_adr_o, dwb_stb_o, dwb_we_o, dwb_sel_o, dwb_dat_o,
19
  dwb_cti_o, dwb_bte_o,
20
  // Data WISHBONE INTERFACE
21
  dbgwb_clk_i, dbgwb_rst_i, dbgwb_ack_i, dbgwb_err_i, dbgwb_dat_i,
22
  dbgwb_cyc_o, dbgwb_adr_o, dbgwb_stb_o, dbgwb_we_o, dbgwb_sel_o, dbgwb_dat_o,
23
  dbgwb_cti_o, dbgwb_bte_o,
24
 
25
    // JTAG I/O pads
26
    tms_pad_i               , // JTAG Test Mode Select pad                    
27
    tck_pad_i               , // JTAG Test ClocK pad                          
28
    tdi_pad_i               , // JTAG Test Data Input pad                     
29
    tdo_pad_o               , // JTAG Test Data Output pad                    
30
    tdo_padoe_o
31
);
32
 
33
// System
34
input clk_i;
35
input rst_i;
36
input [`OR1200_PIC_INTS-1:0] pic_ints_i;
37
// Instruction WB
38
input iwb_clk_i;
39
input iwb_rst_i;
40
input iwb_ack_i;
41
input iwb_err_i;
42
input iwb_rty_i;
43
input [31:0] iwb_dat_i;
44
output iwb_cyc_o;
45
output [31:0] iwb_adr_o;
46
output iwb_stb_o;
47
output iwb_we_o;
48
output [3:0] iwb_sel_o;
49
output [2:0] iwb_cti_o;
50
output [1:0] iwb_bte_o;
51
// Data WB
52
input dwb_clk_i;
53
input dwb_rst_i;
54
input dwb_ack_i;
55
input dwb_err_i;
56
input dwb_rty_i;
57
input [31:0] dwb_dat_i;
58
output dwb_cyc_o;
59
output [31:0] dwb_adr_o;
60
output dwb_stb_o;
61
output dwb_we_o;
62
output [3:0] dwb_sel_o;
63
output [31:0] dwb_dat_o;
64
output [2:0] dwb_cti_o;
65
output [1:0] dwb_bte_o;
66
// Debug WB
67
input dbgwb_clk_i;
68
input dbgwb_rst_i;
69
input dbgwb_ack_i;
70
input dbgwb_err_i;
71
input [31:0] dbgwb_dat_i;
72
output dbgwb_cyc_o;
73
output [31:0] dbgwb_adr_o;
74
output dbgwb_stb_o;
75
output dbgwb_we_o;
76
output [3:0] dbgwb_sel_o;
77
output [31:0] dbgwb_dat_o;
78
output [2:0] dbgwb_cti_o;
79
output [1:0] dbgwb_bte_o;
80
// JTAG
81
input     tck_pad_i;
82
input     tms_pad_i;
83
input     tdi_pad_i;
84
output    tdo_pad_o;
85
output    tdo_padoe_o;
86
//signals
87
wire    capture_dr_o;
88
wire    shift_dr_o;
89
wire    pause_dr_o;
90
wire    update_dr_o;
91
wire    extest_select_o;
92
wire    sample_preload_select_o;
93
wire    debug_select_o;
94
wire    mbist_select_o;
95
wire    tdo_o;
96
wire    debug_tdi_o;
97
 
98
//-------------------------------------------------------
99
//BA12 BSEMI RISC Architecture 1 32-bit processor
100
//-------------------------------------------------------
101
wire    boot_devsel_i;
102
//Debug interface
103
wire    dbg_stall_i;
104
wire    dbg_bp_o;
105
wire    dbg_stb_i;
106
wire    dbg_we_i;
107
wire[31:0]  cpu0_addr_o;
108
wire[31:0]  cpu0_data_o1, cpu0_data_o2;
109
wire[31:0]  dbg_dat_i;
110
wire    dbg_ack_o;
111
wire    cpu0_stall_o;
112
wire    cpu0_stb_o;
113
wire    cpu0_we_o;
114
wire    dwb_stb_o_tmp;
115
 
116
assign dwb_stb_o = (dwb_cyc_o == 1'b1) ? dwb_stb_o_tmp : 1'b0;
117
 
118
 
119
`ifdef USE_OR1200                       // use OR1200 processor IP
120
 
121
//=============================================================================
122
//
123
// OR1200 RISC Architecture 32-bit processor instantation
124
//
125
//=============================================================================
126
or1200_top i_or1200_top(
127
  // System
128
  .clk_i        ( clk_i       ),
129
  .rst_i        ( rst_i       ),
130
  .pic_ints_i   ( pic_ints_i  ),
131
  .clmode_i     ( 2'b0        ),
132
 
133
  // Instruction WISHBONE INTERFACE  
134
  .iwb_clk_i    ( iwb_clk_i   ),
135
  .iwb_rst_i    ( iwb_rst_i   ),
136
 
137
  .iwb_cyc_o    ( iwb_cyc_o   ),
138
  .iwb_adr_o    ( iwb_adr_o   ),
139
  .iwb_stb_o    ( iwb_stb_o   ),
140
  .iwb_we_o     ( iwb_we_o    ),
141
  .iwb_sel_o    ( iwb_sel_o   ),
142
  .iwb_dat_o    (             ),
143
  .iwb_cti_o    ( iwb_cti_o   ),
144
  .iwb_bte_o    ( iwb_bte_o   ),
145
  .iwb_ack_i    ( iwb_ack_i   ),
146
  .iwb_err_i    ( iwb_err_i   ),
147
  .iwb_rty_i    ( iwb_rty_i   ),
148
  .iwb_dat_i    ( iwb_dat_i   ),
149
 
150
  // Data WISHBONE INTERFACE
151
  .dwb_clk_i    ( dwb_clk_i   ),
152
  .dwb_rst_i    ( dwb_rst_i   ),
153
 
154
  .dwb_cyc_o    ( dwb_cyc_o   ),
155
  .dwb_adr_o    ( dwb_adr_o   ),
156
  .dwb_stb_o    ( dwb_stb_o_tmp ),
157
  .dwb_we_o     ( dwb_we_o    ),
158
  .dwb_sel_o    ( dwb_sel_o   ),
159
  .dwb_dat_o    ( dwb_dat_o   ),
160
  .dwb_cti_o    ( dwb_cti_o   ),
161
  .dwb_bte_o    ( dwb_bte_o   ),
162
  .dwb_ack_i    ( dwb_ack_i   ),
163
  .dwb_err_i    ( dwb_err_i   ),
164
  .dwb_rty_i    ( dwb_rty_i   ),
165
  .dwb_dat_i    ( dwb_dat_i   ),
166
 
167
  // External Debug Interface
168
  .dbg_stall_i  ( cpu0_stall_o  ),
169
  .dbg_ewt_i    ( 1'b0 ),
170
  .dbg_lss_o    (     ),
171
  .dbg_is_o     (     ),
172
  .dbg_wp_o     (     ),
173
  .dbg_bp_o     ( dbg_bp_o     ),
174
  .dbg_stb_i    ( cpu0_stb_o   ),
175
  .dbg_we_i     ( cpu0_we_o    ),
176
  .dbg_adr_i    ( cpu0_addr_o  ),
177
  .dbg_dat_o    ( cpu0_data_o1 ),
178
  .dbg_dat_i    ( cpu0_data_o2 ),
179
  .dbg_ack_o    ( dbg_ack_o    ),
180
 
181
  // Power Management
182
  .pm_cpustall_i  ( 1'b0  ),
183
  .pm_clksd_o     (   ),
184
  .pm_dc_gate_o   (   ),
185
  .pm_ic_gate_o   (   ),
186
  .pm_dmmu_gate_o (   ),
187
  .pm_immu_gate_o (   ),
188
  .pm_tt_gate_o   (   ),
189
  .pm_cpu_gate_o  (   ),
190
  .pm_wakeup_o    (   ),
191
  .pm_lvolt_o     (   )
192
);
193
 
194
`else           // use BA12 processor IP
195
 
196
assign boot_devsel_i = 1'b0;
197
//=============================================================================
198
//
199
// RISC Architecture 1 32-bit processor instantation
200
//
201
//=============================================================================
202
ba12_top #(32 /* dw */, 32 /* aw */, 31 /* ppic_ints */) i_ba12_top(
203
  // System
204
  .clk_i      ( clk_i     ),
205
  .rst_i      ( rst_i     ),
206
  .pic_ints_i ( pic_ints_i      ),
207
  .clmode_i   ( 2'b0      ),
208
 
209
  // Instruction WISHBONE INTERFACE
210
  .iwb_clk_i    ( iwb_clk_i   ),
211
  .iwb_rst_i    ( iwb_rst_i   ),
212
 
213
  .iwb_cyc_o    ( iwb_cyc_o   ),
214
  .iwb_adr_o    ( iwb_adr_o   ),
215
  .iwb_stb_o    ( iwb_stb_o   ),
216
  .iwb_we_o     ( iwb_we_o    ),
217
  .iwb_sel_o    ( iwb_sel_o   ),
218
  .iwb_dat_o    (             ),
219
  .iwb_cti_o    ( iwb_cti_o   ),
220
  .iwb_bte_o    ( iwb_bte_o   ),
221
  .iwb_ack_i    ( iwb_ack_i   ),
222
  .iwb_err_i    ( iwb_err_i   ),
223
  .iwb_rty_i    ( iwb_rty_i   ),
224
  .iwb_dat_i    ( iwb_dat_i   ),
225
 
226
  // Data WISHBONE INTERFACE
227
  .dwb_clk_i    ( dwb_clk_i   ),
228
  .dwb_rst_i    ( dwb_rst_i     ),
229
 
230
  .dwb_cyc_o    ( dwb_cyc_o   ),
231
  .dwb_adr_o    ( dwb_adr_o   ),
232
  .dwb_stb_o    ( dwb_stb_o_tmp   ),
233
  .dwb_we_o     ( dwb_we_o    ),
234
  .dwb_sel_o    ( dwb_sel_o   ),
235
  .dwb_dat_o    ( dwb_dat_o   ),
236
  .dwb_cti_o    ( dwb_cti_o   ),
237
  .dwb_bte_o    ( dwb_bte_o   ),
238
  .dwb_ack_i    ( dwb_ack_i   ),
239
  .dwb_err_i    ( dwb_err_i   ),
240
  .dwb_rty_i    ( dwb_rty_i   ),
241
  .dwb_dat_i    ( dwb_dat_i   ),
242
 
243
  // External Debug Interface
244
  .dbg_stall_i  ( cpu0_stall_o  ),
245
  .dbg_ewt_i    ( 1'b0 ),
246
  .dbg_lss_o    (     ),
247
  .dbg_is_o     (     ),
248
  .dbg_wp_o     (     ),
249
  .dbg_bp_o     ( dbg_bp_o    ),
250
  .dbg_stb_i    ( cpu0_stb_o    ),
251
  .dbg_we_i     ( cpu0_we_o       ),
252
  .dbg_adr_i    ( cpu0_addr_o   ),
253
  .dbg_dat_o    ( cpu0_data_o1    ),
254
  .dbg_dat_i    ( cpu0_data_o2    ),
255
  .dbg_ack_o    ( dbg_ack_o   ),
256
 
257
  // SR register input
258
  .boot_devsel_i  ( boot_devsel_i ),
259
 
260
  // Power Management
261
  .pm_cpustall_i  ( 1'b0  ),
262
  .pm_clksd_o     (   ),
263
  .pm_dc_gate_o   (   ),
264
  .pm_ic_gate_o   (   ),
265
  .pm_dmmu_gate_o (   ),
266
  .pm_immu_gate_o (   ),
267
  .pm_tt_gate_o   (   ),
268
  .pm_cpu_gate_o  (   ),
269
  .pm_wakeup_o    (   ),
270
  .pm_lvolt_o     (   )
271
);
272
`endif
273
 
274
//=============================================================================
275
//
276
// DEBUG InterFace instantiation 
277
//
278
//=============================================================================
279
dbg_top i_dbg_top(
280
                // JTAG signals
281
                .tck_i (tck_pad_i),
282
                .tdi_i (tdo_o),
283
                .tdo_o (debug_tdi_o),
284
                .rst_i (rst_i),
285
 
286
                // TAP states
287
                .shift_dr_i   (shift_dr_o ),
288
                .pause_dr_i   (pause_dr_o ),
289
                .update_dr_i  (update_dr_o),
290
 
291
                // Instructions
292
                .debug_select_i (debug_select_o),
293
 
294
                // WISHBONE common signals
295
                .wb_clk_i (clk_i),
296
                // WISHBONE master interface
297
                .wb_adr_o (dbgwb_adr_o),
298
                .wb_dat_o (dbgwb_dat_o),
299
                .wb_dat_i (dbgwb_dat_i),
300
                .wb_cyc_o (dbgwb_cyc_o),
301
                .wb_stb_o (dbgwb_stb_o),
302
                .wb_sel_o (dbgwb_sel_o),
303
                .wb_we_o  (dbgwb_we_o),
304
                .wb_ack_i (dbgwb_ack_i),
305
                .wb_cab_o ( ),
306
                .wb_err_i (dbgwb_err_i),
307
                .wb_cti_o (dbgwb_cti_o),
308
                .wb_bte_o (dbgwb_bte_o),
309
 
310
                // CPU signals
311
                .cpu0_clk_i   (clk_i),
312
                .cpu0_addr_o  (cpu0_addr_o),
313
                .cpu0_data_i  (cpu0_data_o1),
314
                .cpu0_data_o  (cpu0_data_o2),
315
                .cpu0_bp_i    (dbg_bp_o),
316
                .cpu0_stall_o (cpu0_stall_o),
317
                .cpu0_stb_o   (cpu0_stb_o),
318
                .cpu0_we_o    (cpu0_we_o),
319
                .cpu0_ack_i   (dbg_ack_o),
320
                .cpu0_rst_o   ( )
321
);
322
 
323
//=============================================================================
324
//
325
// JTAG TAP controller instantiation 
326
//
327
//=============================================================================
328
tap_top i_tap_top(
329
  // JTAG I/O pads
330
  .tms_pad_i        ( tms_pad_i   ),
331
  .tck_pad_i        ( tck_pad_i   ),
332
  .trst_pad_i       ( rst_i ),
333
  .tdi_pad_i        ( tdi_pad_i   ),
334
  .tdo_pad_o        ( tdo_pad_o   ),
335
  .tdo_padoe_o      ( tdo_padoe_o ),
336
 
337
  //TAP states
338
  .shift_dr_o     ( shift_dr_o    ),
339
  .pause_dr_o     ( pause_dr_o    ),
340
  .update_dr_o    ( update_dr_o   ),
341
  .capture_dr_o   ( capture_dr_o  ),
342
 
343
  // external TAP registers select signals 
344
  .extest_select_o          ( ),
345
  .sample_preload_select_o  ( ),
346
  .debug_select_o           ( debug_select_o    ),
347
  .mbist_select_o           ( ),
348
 
349
  // TDO signal for external TAP resgisters 
350
  .tdo_o      ( tdo_o     ),
351
 
352
   // TDI signals from external TAP resgisters 
353
  .bs_chain_tdi_i ( 1'b0      ),
354
  .debug_tdi_i    ( debug_tdi_o   ),
355
  .mbist_tdi_i    ( 1'b0      )
356
);
357
 
358 42 julius
endmodule

powered by: WebSVN 2.1.0

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