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

Subversion Repositories 8051

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

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

powered by: WebSVN 2.1.0

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