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

Subversion Repositories 8051

[/] [8051/] [trunk/] [rtl/] [verilog/] [oc8051_top.v] - Blame information for rev 141

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

Line No. Rev Author Line
1 72 simont
//////////////////////////////////////////////////////////////////////
2
////                                                              ////
3
////  8051 cores top level module                                 ////
4
////                                                              ////
5
////  This file is part of the 8051 cores project                 ////
6
////  http://www.opencores.org/cores/8051/                        ////
7
////                                                              ////
8
////  Description                                                 ////
9
////  8051 definitions.                                           ////
10
////                                                              ////
11
////  To Do:                                                      ////
12
////    nothing                                                   ////
13
////                                                              ////
14
////  Author(s):                                                  ////
15
////      - Simon Teran, simont@opencores.org                     ////
16
////                                                              ////
17
//////////////////////////////////////////////////////////////////////
18
////                                                              ////
19
//// Copyright (C) 2000 Authors and OPENCORES.ORG                 ////
20
////                                                              ////
21
//// This source file may be used and distributed without         ////
22
//// restriction provided that this copyright statement is not    ////
23
//// removed from the file and that any derivative work contains  ////
24
//// the original copyright notice and the associated disclaimer. ////
25
////                                                              ////
26
//// This source file is free software; you can redistribute it   ////
27
//// and/or modify it under the terms of the GNU Lesser General   ////
28
//// Public License as published by the Free Software Foundation; ////
29
//// either version 2.1 of the License, or (at your option) any   ////
30
//// later version.                                               ////
31
////                                                              ////
32
//// This source is distributed in the hope that it will be       ////
33
//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////
34
//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////
35
//// PURPOSE.  See the GNU Lesser General Public License for more ////
36
//// details.                                                     ////
37
////                                                              ////
38
//// You should have received a copy of the GNU Lesser General    ////
39
//// Public License along with this source; if not, download it   ////
40
//// from http://www.opencores.org/lgpl.shtml                     ////
41
////                                                              ////
42
//////////////////////////////////////////////////////////////////////
43
//
44
// CVS Revision History
45
//
46 54 simont
// $Log: not supported by cvs2svn $
47 141 simont
// Revision 1.27  2003/05/05 15:46:37  simont
48
// add aditional alu destination to solve critical path.
49
//
50 139 simont
// Revision 1.26  2003/04/29 11:24:31  simont
51
// fix bug in case execution of two data dependent instructions.
52
//
53 134 simont
// Revision 1.25  2003/04/25 17:15:51  simont
54
// change branch instruction execution (reduse needed clock periods).
55
//
56 132 simont
// Revision 1.24  2003/04/11 10:05:59  simont
57
// deifne OC8051_ROM added
58
//
59 122 simont
// Revision 1.23  2003/04/10 12:43:19  simont
60
// defines for pherypherals added
61
//
62 120 simont
// Revision 1.22  2003/04/09 16:24:04  simont
63
// change wr_sft to 2 bit wire.
64
//
65 118 simont
// Revision 1.21  2003/04/09 15:49:42  simont
66
// Register oc8051_sfr dato output, add signal wait_data.
67
//
68 117 simont
// Revision 1.20  2003/04/03 19:13:28  simont
69
// Include instruction cache.
70
//
71 107 simont
// Revision 1.19  2003/04/02 15:08:30  simont
72
// raname signals.
73
//
74 102 simont
// Revision 1.18  2003/01/13 14:14:41  simont
75
// replace some modules
76
//
77 82 simont
// Revision 1.17  2002/11/05 17:23:54  simont
78
// add module oc8051_sfr, 256 bytes internal ram
79
//
80 76 simont
// Revision 1.16  2002/10/28 14:55:00  simont
81
// fix bug in interface to external data ram
82
//
83 72 simont
// Revision 1.15  2002/10/23 16:53:39  simont
84
// fix bugs in instruction interface
85
//
86 62 simont
// Revision 1.14  2002/10/17 18:50:00  simont
87
// cahnge interface to instruction rom
88
//
89 54 simont
// Revision 1.13  2002/09/30 17:33:59  simont
90
// prepared header
91 72 simont
//
92
//
93
 
94
// synopsys translate_off
95
`include "oc8051_timescale.v"
96
// synopsys translate_on
97
 
98
 
99 102 simont
module oc8051_top (wb_rst_i, wb_clk_i,
100
//interface to instruction rom
101 120 simont
                wbi_adr_o,
102
                wbi_dat_i,
103
                wbi_stb_o,
104
                wbi_ack_i,
105
                wbi_cyc_o,
106
                wbi_err_i,
107
 
108 102 simont
//interface to data ram
109 120 simont
                wbd_dat_i,
110
                wbd_dat_o,
111
                wbd_adr_o,
112
                wbd_we_o,
113 132 simont
                wbd_ack_i,
114 120 simont
                wbd_stb_o,
115
                wbd_cyc_o,
116
                wbd_err_i,
117
 
118 102 simont
// interrupt interface
119 120 simont
                int0_i,
120
                int1_i,
121
 
122 102 simont
// external access (active low)
123
                ea_in,
124 120 simont
 
125 102 simont
// port interface
126 120 simont
  `ifdef OC8051_PORTS
127
        `ifdef OC8051_PORT0
128
                p0_i,
129
                p0_o,
130
        `endif
131
 
132
        `ifdef OC8051_PORT1
133
                p1_i,
134
                p1_o,
135
        `endif
136
 
137
        `ifdef OC8051_PORT2
138
                p2_i,
139
                p2_o,
140
        `endif
141
 
142
        `ifdef OC8051_PORT3
143
                p3_i,
144
                p3_o,
145
        `endif
146
  `endif
147
 
148 102 simont
// serial interface
149 120 simont
        `ifdef OC8051_UART
150 102 simont
                rxd_i, txd_o,
151 120 simont
        `endif
152
 
153 102 simont
// counter interface
154 120 simont
        `ifdef OC8051_TC01
155
                t0_i, t1_i,
156
        `endif
157 72 simont
 
158 120 simont
        `ifdef OC8051_TC2
159
                t2_i, t2ex_i
160
        `endif
161
                );
162 72 simont
 
163
 
164 120 simont
 
165 102 simont
input         wb_rst_i,         // reset input
166
              wb_clk_i,         // clock input
167
              int0_i,           // interrupt 0
168
              int1_i,           // interrupt 1
169
              ea_in,            // external access
170
              wbd_ack_i,        // data acknowalge
171
              wbi_ack_i,        // instruction acknowlage
172
              wbd_err_i,        // data error
173 120 simont
              wbi_err_i;        // instruction error
174 72 simont
 
175 120 simont
input [7:0]   wbd_dat_i; // ram data input
176 102 simont
input [31:0]  wbi_dat_i; // rom data input
177 72 simont
 
178 102 simont
output        wbd_we_o,         // data write enable
179
              wbd_stb_o,        // data strobe
180
              wbd_cyc_o,        // data cycle
181
              wbi_stb_o,        // instruction strobe
182
              wbi_cyc_o;        // instruction cycle
183 82 simont
 
184 120 simont
output [7:0]  wbd_dat_o; // data output
185 102 simont
 
186
output [15:0] wbd_adr_o, // data address
187
              wbi_adr_o;        // instruction address
188
 
189 120 simont
`ifdef OC8051_PORTS
190 102 simont
 
191 120 simont
`ifdef OC8051_PORT0
192
input  [7:0]  p0_i;              // port 0 input
193
output [7:0]  p0_o;              // port 0 output
194
`endif
195 72 simont
 
196 120 simont
`ifdef OC8051_PORT1
197
input  [7:0]  p1_i;              // port 1 input
198
output [7:0]  p1_o;              // port 1 output
199
`endif
200 72 simont
 
201 120 simont
`ifdef OC8051_PORT2
202
input  [7:0]  p2_i;              // port 2 input
203
output [7:0]  p2_o;              // port 2 output
204
`endif
205 72 simont
 
206 120 simont
`ifdef OC8051_PORT3
207
input  [7:0]  p3_i;              // port 3 input
208
output [7:0]  p3_o;              // port 3 output
209
`endif
210 72 simont
 
211 120 simont
`endif
212 72 simont
 
213
 
214
 
215
 
216
 
217
 
218 120 simont
`ifdef OC8051_UART
219
input         rxd_i;            // receive
220
output        txd_o;            // transnmit
221
`endif
222 72 simont
 
223 120 simont
`ifdef OC8051_TC01
224
input         t0_i,             // counter 0 input
225
              t1_i;             // counter 1 input
226
`endif
227 72 simont
 
228 120 simont
`ifdef OC8051_TC2
229
input         t2_i,             // counter 2 input
230
              t2ex_i;           //
231
`endif
232 72 simont
 
233 120 simont
wire [7:0]  op1_i,
234
            op2_i,
235
            op3_i,
236
            dptr_hi,
237
            dptr_lo,
238
            ri,
239
            data_out,
240
            op1,
241
            op2,
242
            op3,
243
            acc,
244
            p0_out,
245
            p1_out,
246
            p2_out,
247
            p3_out,
248
            sp,
249
            sp_w;
250 72 simont
 
251 120 simont
wire [15:0] pc;
252 72 simont
 
253 120 simont
assign wbd_cyc_o = wbd_stb_o;
254 72 simont
 
255 120 simont
wire        src_sel3;
256 141 simont
wire [1:0]  wr_sfr,
257
            src_sel2;
258 120 simont
wire [2:0]  ram_rd_sel,  // ram read
259
            ram_wr_sel, // ram write
260
            src_sel1;
261
 
262
wire [7:0]  ram_data,
263
            ram_out,    //data from ram
264
            sfr_out,
265
            wr_dat,
266
            wr_addr,    //ram write addres
267
            rd_addr;    //data ram read addres
268
wire        sfr_bit;
269
 
270
wire [1:0]  cy_sel,      //carry select; from decoder to cy_selct1
271
            bank_sel;
272
wire        rom_addr_sel,       //rom addres select; alu or pc
273
            rmw,
274
            ea_int;
275
 
276
wire        reti,
277
            intr,
278
            int_ack,
279
            istb;
280
wire [7:0]  int_src;
281
 
282
wire        mem_wait;
283
wire [2:0]  mem_act;
284
wire [3:0]  alu_op;      //alu operation (from decoder)
285
wire [1:0]  psw_set;    //write to psw or not; from decoder to psw (through register)
286
 
287
wire [7:0]  src1,        //alu sources 1
288
            src2,       //alu sources 2
289
            src3,       //alu sources 3
290 139 simont
            des_acc,
291 120 simont
            des1,       //alu destination 1
292 132 simont
            des2;       //alu destinations 2
293 120 simont
wire        desCy,      //carry out
294
            desAc,
295
            desOv,      //overflow
296
            alu_cy,
297
            wr,         //write to data ram
298
            wr_o;
299
 
300
wire        rd,         //read program rom
301
            pc_wr;
302
wire [2:0]  pc_wr_sel;   //program counter write select (from decoder to pc)
303
 
304
wire [7:0]  op1_n, //from memory_interface to decoder
305
            op2_n,
306
            op3_n;
307
 
308
wire [1:0]  comp_sel;    //select source1 and source2 to compare
309
wire        eq,         //result (from comp1 to decoder)
310
            srcAc,
311
            cy,
312
            rd_ind,
313 132 simont
            wr_ind,
314
            comp_wait;
315 120 simont
wire [2:0]  op1_cur;
316
 
317
wire        bit_addr,   //bit addresable instruction
318
            bit_data,   //bit data from ram to ram_select
319
            bit_out,    //bit data from ram_select to alu and cy_select
320
            bit_addr_o,
321
            wait_data;
322
 
323 72 simont
//
324 107 simont
// cpu to cache/wb_interface
325
wire        iack_i,
326
            istb_o,
327
            icyc_o;
328
wire [31:0] idat_i;
329
wire [15:0] iadr_o;
330 72 simont
 
331
 
332
//
333
// decoder
334 120 simont
oc8051_decoder oc8051_decoder1(.clk(wb_clk_i),
335
                               .rst(wb_rst_i),
336
                               .op_in(op1_n),
337
                               .op1_c(op1_cur),
338
                               .ram_rd_sel_o(ram_rd_sel),
339
                               .ram_wr_sel_o(ram_wr_sel),
340
                               .bit_addr(bit_addr),
341 72 simont
 
342 120 simont
                               .src_sel1(src_sel1),
343
                               .src_sel2(src_sel2),
344
                               .src_sel3(src_sel3),
345 72 simont
 
346 120 simont
                               .alu_op_o(alu_op),
347
                               .psw_set(psw_set),
348
                               .cy_sel(cy_sel),
349
                               .wr_o(wr),
350
                               .pc_wr(pc_wr),
351
                               .pc_sel(pc_wr_sel),
352
                               .comp_sel(comp_sel),
353
                               .eq(eq),
354
                               .wr_sfr_o(wr_sfr),
355
                               .rd(rd),
356
                               .rmw(rmw),
357
                               .istb(istb),
358
                               .mem_act(mem_act),
359
                               .mem_wait(mem_wait),
360
                               .wait_data(wait_data));
361
 
362
 
363 72 simont
//
364
//alu
365 120 simont
oc8051_alu oc8051_alu1(.rst(wb_rst_i),
366 139 simont
                       .clk(wb_clk_i),
367 120 simont
                       .op_code(alu_op),
368 132 simont
                       .src1(src1),
369 120 simont
                       .src2(src2),
370
                       .src3(src3),
371
                       .srcCy(alu_cy),
372
                       .srcAc(srcAc),
373 139 simont
                       .des_acc(des_acc),
374 132 simont
                       .des1(des1),
375
                       .des2(des2),
376 120 simont
                       .desCy(desCy),
377
                       .desAc(desAc),
378
                       .desOv(desOv),
379
                       .bit_in(bit_out));
380 72 simont
 
381
//
382
//data ram
383 134 simont
oc8051_ram_top oc8051_ram_top1(.clk(wb_clk_i),
384 120 simont
                               .rst(wb_rst_i),
385
                               .rd_addr(rd_addr),
386
                               .rd_data(ram_data),
387
                               .wr_addr(wr_addr),
388
                               .bit_addr(bit_addr_o),
389
                               .wr_data(wr_dat),
390
                               .wr(wr_o && (!wr_addr[7] || wr_ind)),
391
                               .bit_data_in(desCy),
392
                               .bit_data_out(bit_data));
393 72 simont
 
394
//
395
 
396 120 simont
oc8051_alu_src_sel oc8051_alu_src_sel1(.clk(wb_clk_i),
397
                                       .rst(wb_rst_i),
398
                                       .rd(rd),
399 82 simont
 
400 120 simont
                                       .sel1(src_sel1),
401
                                       .sel2(src_sel2),
402
                                       .sel3(src_sel3),
403 82 simont
 
404 120 simont
                                       .acc(acc),
405
                                       .ram(ram_out),
406
                                       .pc(pc),
407
                                       .dptr({dptr_hi, dptr_lo}),
408
                                       .op1(op1_n),
409
                                       .op2(op2_n),
410
                                       .op3(op3_n),
411
 
412
                                       .src1(src1),
413
                                       .src2(src2),
414
                                       .src3(src3));
415
 
416
 
417 72 simont
//
418
//
419 120 simont
oc8051_comp oc8051_comp1(.sel(comp_sel),
420 132 simont
                         .eq(eq),
421
                         .b_in(bit_out),
422
                         .cy(cy),
423
                         .acc(acc),
424 139 simont
                         .des(des_acc)
425 132 simont
                         );
426 72 simont
 
427
 
428
//
429
//program rom
430 122 simont
`ifdef OC8051_ROM
431
  oc8051_rom oc8051_rom1(.rst(wb_rst_i),
432
                       .clk(wb_clk_i),
433
                       .ea_int(ea_int),
434 120 simont
                       .addr(iadr_o),
435 122 simont
                       .data1(op1_i),
436
                       .data2(op2_i),
437 120 simont
                       .data3(op3_i));
438 122 simont
`else
439
  assign ea_int = 1'b0;
440
  assign op1_i = 8'h00;
441
  assign op2_i = 8'h00;
442
  assign op3_i = 8'h00;
443
`endif
444 72 simont
 
445
//
446
//
447 120 simont
oc8051_cy_select oc8051_cy_select1(.cy_sel(cy_sel),
448
                                   .cy_in(cy),
449
                                   .data_in(bit_out),
450
                                   .data_out(alu_cy));
451 72 simont
//
452
//
453 120 simont
oc8051_indi_addr oc8051_indi_addr1 (.clk(wb_clk_i),
454
                                    .rst(wb_rst_i),
455
                                    .wr_addr(wr_addr),
456 139 simont
                                    .data_in(wr_dat),
457 134 simont
                                    .wr(wr_o),
458 120 simont
                                    .wr_bit(bit_addr_o),
459 139 simont
                                    .ri_out(ri),
460
                                    .sel(op1_cur[0]),
461 120 simont
                                    .bank(bank_sel));
462 72 simont
 
463
 
464 107 simont
 
465
assign icyc_o = istb_o;
466 72 simont
//
467
//
468 120 simont
oc8051_memory_interface oc8051_memory_interface1(.clk(wb_clk_i),
469
                       .rst(wb_rst_i),
470 107 simont
// internal ram
471 120 simont
                       .wr_i(wr),
472
                       .wr_o(wr_o),
473
                       .wr_bit_i(bit_addr),
474
                       .wr_bit_o(bit_addr_o),
475
                       .wr_dat(wr_dat),
476 139 simont
                       .des_acc(des_acc),
477 132 simont
                       .des1(des1),
478 120 simont
                       .des2(des2),
479 139 simont
                       .rd_addr(rd_addr),
480 120 simont
                       .wr_addr(wr_addr),
481
                       .wr_ind(wr_ind),
482 139 simont
                       .bit_in(bit_data),
483 120 simont
                       .in_ram(ram_data),
484 139 simont
                       .sfr(sfr_out),
485
                       .sfr_bit(sfr_bit),
486 134 simont
                       .bit_out(bit_out),
487 120 simont
                       .iram_out(ram_out),
488 72 simont
 
489 107 simont
// external instrauction rom
490 120 simont
                       .iack_i(iack_i),
491
                       .iadr_o(iadr_o),
492
                       .idat_i(idat_i),
493
                       .istb_o(istb_o),
494 82 simont
 
495 107 simont
// internal instruction rom
496 139 simont
                       .op1_i(op1_i),
497
                       .op2_i(op2_i),
498 120 simont
                       .op3_i(op3_i),
499 82 simont
 
500 107 simont
// data memory
501 139 simont
                       .dadr_o(wbd_adr_o),
502 120 simont
                       .ddat_o(wbd_dat_o),
503 139 simont
                       .dwe_o(wbd_we_o),
504 120 simont
                       .dstb_o(wbd_stb_o),
505 139 simont
                       .ddat_i(wbd_dat_i),
506 120 simont
                       .dack_i(wbd_ack_i),
507 107 simont
 
508
// from decoder
509 139 simont
                       .rd_sel(ram_rd_sel),
510
                       .wr_sel(ram_wr_sel),
511 134 simont
                       .rn({bank_sel, op1_cur}),
512
                       .rd_ind(rd_ind),
513 120 simont
                       .rd(rd),
514 139 simont
                       .mem_act(mem_act),
515 120 simont
                       .mem_wait(mem_wait),
516 107 simont
 
517
// external access
518 139 simont
                       .ea(ea_in),
519 120 simont
                       .ea_int(ea_int),
520 107 simont
 
521
// instructions outputs to cpu
522 139 simont
                       .op1_out(op1_n),
523
                       .op2_out(op2_n),
524 120 simont
                       .op3_out(op3_n),
525 82 simont
 
526 107 simont
// interrupt interface
527 120 simont
                       .intr(intr),
528
                       .int_v(int_src),
529
                       .int_ack(int_ack),
530
                       .istb(istb),
531
                       .reti(reti),
532 107 simont
 
533 82 simont
//pc
534 120 simont
                       .pc_wr_sel(pc_wr_sel),
535 132 simont
                       .pc_wr(pc_wr & comp_wait),
536 120 simont
                       .pc(pc),
537 82 simont
 
538 107 simont
// sfr's
539 120 simont
                       .sp_w(sp_w),
540
                       .dptr({dptr_hi, dptr_lo}),
541
                       .ri(ri),
542 139 simont
                       .acc(acc),
543 120 simont
                       .sp(sp)
544
                       );
545 82 simont
 
546 107 simont
 
547 72 simont
//
548
//
549
 
550 120 simont
oc8051_sfr oc8051_sfr1(.rst(wb_rst_i),
551
                       .clk(wb_clk_i),
552
                       .adr0(rd_addr[7:0]),
553
                       .adr1(wr_addr[7:0]),
554 139 simont
                       .dat0(sfr_out),
555
                       .dat1(wr_dat),
556
                       .dat2(des2),
557
                       .des_acc(des_acc),
558
                       .we(wr_o && !wr_ind),
559 120 simont
                       .bit_in(desCy),
560
                       .bit_out(sfr_bit),
561 134 simont
                       .wr_bit(bit_addr_o),
562
                       .ram_rd_sel(ram_rd_sel),
563 120 simont
                       .ram_wr_sel(ram_wr_sel),
564
                       .wr_sfr(wr_sfr),
565 132 simont
                       .comp_sel(comp_sel),
566
                       .comp_wait(comp_wait),
567 76 simont
// acc
568 120 simont
                       .acc(acc),
569 76 simont
// sp
570 120 simont
                       .sp(sp),
571
                       .sp_w(sp_w),
572 76 simont
// psw
573 120 simont
                       .bank_sel(bank_sel),
574
                       .desAc(desAc),
575
                       .desOv(desOv),
576
                       .psw_set(psw_set),
577
                       .srcAc(srcAc),
578
                       .cy(cy),
579 76 simont
// ports
580 120 simont
                       .rmw(rmw),
581
 
582
  `ifdef OC8051_PORTS
583
        `ifdef OC8051_PORT0
584
                       .p0_out(p0_o),
585
                       .p0_in(p0_i),
586
        `endif
587
 
588
        `ifdef OC8051_PORT1
589
                       .p1_out(p1_o),
590
                       .p1_in(p1_i),
591
        `endif
592
 
593
        `ifdef OC8051_PORT2
594
                       .p2_out(p2_o),
595
                       .p2_in(p2_i),
596
        `endif
597
 
598
        `ifdef OC8051_PORT3
599
                       .p3_out(p3_o),
600
                       .p3_in(p3_i),
601
        `endif
602
  `endif
603
 
604 76 simont
// uart
605 120 simont
        `ifdef OC8051_UART
606
                       .rxd(rxd_i), .txd(txd_o),
607
        `endif
608
 
609 76 simont
// int
610 120 simont
                       .int_ack(int_ack),
611
                       .intr(intr),
612
                       .int0(int0_i),
613
                       .int1(int1_i),
614
                       .reti(reti),
615
                       .int_src(int_src),
616
 
617
// t/c 0,1
618
        `ifdef OC8051_TC01
619
                       .t0(t0_i),
620
                       .t1(t1_i),
621
        `endif
622
 
623
// t/c 2
624
        `ifdef OC8051_TC2
625
                       .t2(t2_i),
626
                       .t2ex(t2ex_i),
627
        `endif
628
 
629 76 simont
// dptr
630 120 simont
                       .dptr_hi(dptr_hi),
631
                       .dptr_lo(dptr_lo),
632
                       .wait_data(wait_data)
633
                       );
634 72 simont
 
635 82 simont
 
636 107 simont
 
637
 
638
`ifdef OC8051_CACHE
639
 
640
 
641
oc8051_icache oc8051_icache1(.rst(wb_rst_i), .clk(wb_clk_i),
642
// cpu
643
        .adr_i(iadr_o),
644
        .dat_o(idat_i),
645
        .stb_i(istb_o),
646
        .ack_o(iack_i),
647
        .cyc_i(icyc_o),
648
// pins
649
        .dat_i(wbi_dat_i),
650
        .stb_o(wbi_stb_o),
651
        .adr_o(wbi_adr_o),
652
        .ack_i(wbi_ack_i),
653
        .cyc_o(wbi_cyc_o));
654
 
655
defparam oc8051_icache1.ADR_WIDTH = 7;  // cache address wihth
656
defparam oc8051_icache1.LINE_WIDTH = 2; // line address width (2 => 4x32)
657
defparam oc8051_icache1.BL_NUM = 31; // number of blocks (2^BL_WIDTH-1); BL_WIDTH = ADR_WIDTH - LINE_WIDTH
658
defparam oc8051_icache1.CACHE_RAM = 128; // cache ram x 32 (2^ADR_WIDTH)
659
 
660
//
661
//    no cache
662
//
663
`else
664
 
665
oc8051_wb_iinterface oc8051_wb_iinterface(.rst(wb_rst_i), .clk(wb_clk_i),
666
// cpu
667
        .adr_i(iadr_o),
668
        .dat_o(idat_i),
669
        .stb_i(istb_o),
670
        .ack_o(iack_i),
671
        .cyc_i(icyc_o),
672
// external rom
673
        .dat_i(wbi_dat_i),
674
        .stb_o(wbi_stb_o),
675
        .adr_o(wbi_adr_o),
676
        .ack_i(wbi_ack_i),
677
        .cyc_o(wbi_cyc_o));
678
 
679
 
680
`endif
681
 
682
 
683
 
684 72 simont
endmodule

powered by: WebSVN 2.1.0

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