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

Subversion Repositories pci

[/] [pci/] [tags/] [rel_3/] [rtl/] [verilog/] [top.v] - Blame information for rev 154

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 mihad
//////////////////////////////////////////////////////////////////////
2
////                                                              ////
3
////  File name "top.v"                                           ////
4
////                                                              ////
5
////  This file is part of the "PCI bridge" project               ////
6
////  http://www.opencores.org/cores/pci/                         ////
7
////                                                              ////
8
////  Author(s):                                                  ////
9
////      - Miha Dolenc (mihad@opencores.org)                     ////
10
////                                                              ////
11
////  All additional information is avaliable in the README       ////
12
////  file.                                                       ////
13
////                                                              ////
14
////                                                              ////
15
//////////////////////////////////////////////////////////////////////
16
////                                                              ////
17
//// Copyright (C) 2001 Miha Dolenc, mihad@opencores.org          ////
18
////                                                              ////
19
//// This source file may be used and distributed without         ////
20
//// restriction provided that this copyright statement is not    ////
21
//// removed from the file and that any derivative work contains  ////
22
//// the original copyright notice and the associated disclaimer. ////
23
////                                                              ////
24
//// This source file is free software; you can redistribute it   ////
25
//// and/or modify it under the terms of the GNU Lesser General   ////
26
//// Public License as published by the Free Software Foundation; ////
27
//// either version 2.1 of the License, or (at your option) any   ////
28
//// later version.                                               ////
29
////                                                              ////
30
//// This source is distributed in the hope that it will be       ////
31
//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////
32
//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////
33
//// PURPOSE.  See the GNU Lesser General Public License for more ////
34
//// details.                                                     ////
35
////                                                              ////
36
//// You should have received a copy of the GNU Lesser General    ////
37
//// Public License along with this source; if not, download it   ////
38
//// from http://www.opencores.org/lgpl.shtml                     ////
39
////                                                              ////
40
//////////////////////////////////////////////////////////////////////
41
//
42
// CVS Revision History
43
//
44
// $Log: not supported by cvs2svn $
45 68 tadejm
// Revision 1.7  2002/10/17 22:49:22  tadejm
46
// Changed BIST signals for RAMs.
47
//
48 67 tadejm
// Revision 1.6  2002/10/11 10:09:01  mihad
49
// Added additional testcase and changed rst name in BIST to trst
50
//
51 63 mihad
// Revision 1.5  2002/10/08 17:17:06  mihad
52
// Added BIST signals for RAMs.
53
//
54 62 mihad
// Revision 1.4  2002/03/21 07:36:04  mihad
55
// Files updated with missing includes, resolved some race conditions in test bench
56
//
57 35 mihad
// Revision 1.3  2002/02/01 15:25:13  mihad
58
// Repaired a few bugs, updated specification, added test bench files and design document
59
//
60 21 mihad
// Revision 1.2  2001/10/05 08:14:30  mihad
61
// Updated all files with inclusion of timescale file for simulation purposes.
62
//
63 6 mihad
// Revision 1.1.1.1  2001/10/02 15:33:47  mihad
64
// New project directory structure
65 2 mihad
//
66 6 mihad
//
67 2 mihad
 
68
// This top module is primarly used for testing plain PCI bridge core without any other cores attached.
69
// Other cores can be included in this top module and appropriate changes incorporated for overall design
70 21 mihad
 
71
// synopsys translate_off
72 6 mihad
`include "timescale.v"
73 21 mihad
// synopsys translate_on
74 35 mihad
`include "pci_constants.v"
75 2 mihad
 
76
module TOP
77
(
78
    CLK,
79 21 mihad
    AD,
80
    CBE,
81
    RST,
82 2 mihad
    INTA,
83
    REQ,
84
    GNT,
85
    FRAME,
86
    IRDY,
87
    IDSEL,
88
    DEVSEL,
89
    TRDY,
90
    STOP,
91
    PAR,
92
    PERR,
93
    SERR,
94 21 mihad
 
95 2 mihad
    CLK_I,
96
    RST_I,
97
    RST_O,
98
    INT_I,
99
    INT_O,
100
 
101
    // WISHBONE slave interface
102
    ADR_I,
103
    SDAT_I,
104
    SDAT_O,
105
    SEL_I,
106
    CYC_I,
107
    STB_I,
108
    WE_I,
109
    CAB_I,
110
    ACK_O,
111
    RTY_O,
112
    ERR_O,
113
 
114
    // WISHBONE master interface
115
    ADR_O,
116
    MDAT_I,
117
    MDAT_O,
118
    SEL_O,
119
    CYC_O,
120
    STB_O,
121
    WE_O,
122
    CAB_O,
123
    ACK_I,
124
    RTY_I,
125 21 mihad
    ERR_I
126 62 mihad
 
127
`ifdef PCI_BIST
128
    ,
129
    // debug chain signals
130 67 tadejm
    scanb_rst,      // bist scan reset
131
    scanb_clk,      // bist scan clock
132
    scanb_si,       // bist scan serial in
133
    scanb_so,       // bist scan serial out
134 68 tadejm
    scanb_en        // bist scan shift enable
135 62 mihad
`endif
136 2 mihad
);
137
 
138
input           CLK ;
139
inout   [31:0]  AD ;
140
inout   [3:0]   CBE ;
141
inout           RST ;
142
inout           INTA ;
143
output          REQ ;
144
input           GNT ;
145
inout           FRAME ;
146
inout           IRDY ;
147
input           IDSEL ;
148
inout           DEVSEL ;
149
inout           TRDY ;
150
inout           STOP ;
151
inout           PAR ;
152
inout           PERR ;
153
output          SERR ;
154
 
155
// WISHBONE system signals
156
input   CLK_I ;
157
input   RST_I ;
158
output  RST_O ;
159
input   INT_I ;
160
output  INT_O ;
161
 
162
// WISHBONE slave interface
163
input   [31:0]  ADR_I ;
164
input   [31:0]  SDAT_I ;
165
output  [31:0]  SDAT_O ;
166
input   [3:0]   SEL_I ;
167
input           CYC_I ;
168
input           STB_I ;
169
input           WE_I  ;
170
input           CAB_I ;
171
output          ACK_O ;
172
output          RTY_O ;
173
output          ERR_O ;
174
 
175
// WISHBONE master interface
176
output  [31:0]  ADR_O ;
177
input   [31:0]  MDAT_I ;
178
output  [31:0]  MDAT_O ;
179
output  [3:0]   SEL_O ;
180
output          CYC_O ;
181
output          STB_O ;
182
output          WE_O  ;
183
output          CAB_O ;
184
input           ACK_I ;
185
input           RTY_I ;
186
input           ERR_I ;
187
 
188 62 mihad
`ifdef PCI_BIST
189
/*-----------------------------------------------------
190
BIST debug chain port signals
191
-----------------------------------------------------*/
192 67 tadejm
input   scanb_rst;      // bist scan reset
193
input   scanb_clk;      // bist scan clock
194
input   scanb_si;       // bist scan serial in
195
output  scanb_so;       // bist scan serial out
196 68 tadejm
input   scanb_en;       // bist scan shift enable
197 62 mihad
`endif
198
 
199 2 mihad
wire    [31:0]  AD_out ;
200
wire    [31:0]  AD_en ;
201
 
202
 
203
wire    [31:0]  AD_in = AD ;
204
 
205
wire    [3:0]   CBE_in = CBE ;
206
wire    [3:0]   CBE_out ;
207
wire    [3:0]   CBE_en ;
208
 
209
 
210
 
211
wire            RST_in = RST ;
212
wire            RST_out ;
213
wire            RST_en ;
214
 
215
wire            INTA_in = INTA ;
216
wire            INTA_en ;
217
wire            INTA_out ;
218
 
219
wire            REQ_en ;
220
wire            REQ_out ;
221
 
222
wire            FRAME_in = FRAME ;
223
wire            FRAME_out ;
224
wire            FRAME_en ;
225
 
226
wire            IRDY_in = IRDY ;
227
wire            IRDY_out ;
228
wire            IRDY_en ;
229
 
230
wire            DEVSEL_in = DEVSEL ;
231
wire            DEVSEL_out ;
232
wire            DEVSEL_en ;
233
 
234
wire            TRDY_in = TRDY ;
235
wire            TRDY_out ;
236
wire            TRDY_en ;
237
 
238
wire            STOP_in = STOP ;
239
wire            STOP_out ;
240
wire            STOP_en ;
241
 
242
wire            PAR_in = PAR ;
243
wire            PAR_out ;
244
wire            PAR_en ;
245
 
246
wire            PERR_in = PERR ;
247
wire            PERR_out ;
248
wire            PERR_en ;
249
 
250
wire            SERR_out ;
251
wire            SERR_en ;
252
 
253
PCI_BRIDGE32 bridge
254
(
255
    // WISHBONE system signals
256
    .CLK_I(CLK_I),
257
    .RST_I(RST_I),
258
    .RST_O(RST_O),
259
    .INT_I(INT_I),
260
    .INT_O(INT_O),
261 21 mihad
 
262 2 mihad
    // WISHBONE slave interface
263
    .ADR_I(ADR_I),
264
    .SDAT_I(SDAT_I),
265
    .SDAT_O(SDAT_O),
266
    .SEL_I(SEL_I),
267
    .CYC_I(CYC_I),
268
    .STB_I(STB_I),
269
    .WE_I(WE_I),
270
    .CAB_I(CAB_I),
271
    .ACK_O(ACK_O),
272
    .RTY_O(RTY_O),
273
    .ERR_O(ERR_O),
274 21 mihad
 
275 2 mihad
    // WISHBONE master interface
276
    .ADR_O(ADR_O),
277
    .MDAT_I(MDAT_I),
278
    .MDAT_O(MDAT_O),
279
    .SEL_O(SEL_O),
280
    .CYC_O(CYC_O),
281
    .STB_O(STB_O),
282
    .WE_O(WE_O),
283
    .CAB_O(CAB_O),
284
    .ACK_I(ACK_I),
285
    .RTY_I(RTY_I),
286
    .ERR_I(ERR_I),
287 21 mihad
 
288 2 mihad
    // pci interface - system pins
289
    .PCI_CLK_IN (CLK),
290
    .PCI_RSTn_IN ( RST_in ),
291
    .PCI_RSTn_OUT ( RST_out ),
292
    .PCI_INTAn_IN ( INTA_in ),
293
    .PCI_INTAn_OUT( INTA_out),
294
    .PCI_RSTn_EN_OUT( RST_en),
295
    .PCI_INTAn_EN_OUT(INTA_en),
296 21 mihad
 
297 2 mihad
    // arbitration pins
298
    .PCI_REQn_OUT( REQ_out ),
299
    .PCI_REQn_EN_OUT ( REQ_en ),
300 21 mihad
 
301 2 mihad
    .PCI_GNTn_IN( GNT ),
302 21 mihad
 
303 2 mihad
    // protocol pins
304
    .PCI_FRAMEn_IN( FRAME_in),
305
    .PCI_FRAMEn_OUT( FRAME_out ),
306
 
307
    .PCI_FRAMEn_EN_OUT( FRAME_en ),
308
    .PCI_IRDYn_EN_OUT ( IRDY_en ),
309
    .PCI_DEVSELn_EN_OUT ( DEVSEL_en ),
310
    .PCI_TRDYn_EN_OUT ( TRDY_en ),
311
    .PCI_STOPn_EN_OUT ( STOP_en ),
312
    .PCI_AD_EN_OUT(AD_en),
313
    .PCI_CBEn_EN_OUT ( CBE_en) ,
314 21 mihad
 
315 2 mihad
    .PCI_IRDYn_IN ( IRDY_in ),
316
    .PCI_IRDYn_OUT ( IRDY_out ),
317 21 mihad
 
318 2 mihad
    .PCI_IDSEL_IN ( IDSEL ),
319 21 mihad
 
320 2 mihad
    .PCI_DEVSELn_IN( DEVSEL_in ),
321
    .PCI_DEVSELn_OUT ( DEVSEL_out ),
322 21 mihad
 
323 2 mihad
    .PCI_TRDYn_IN ( TRDY_in ),
324
    .PCI_TRDYn_OUT ( TRDY_out ),
325 21 mihad
 
326 2 mihad
    .PCI_STOPn_IN( STOP_in ),
327
    .PCI_STOPn_OUT ( STOP_out ),
328 21 mihad
 
329
    // data transfer pins
330 2 mihad
    .PCI_AD_IN(AD_in),
331
    .PCI_AD_OUT (AD_out),
332 21 mihad
 
333 2 mihad
    .PCI_CBEn_IN( CBE_in ),
334
    .PCI_CBEn_OUT ( CBE_out ),
335 21 mihad
 
336 2 mihad
    // parity generation and checking pins
337
    .PCI_PAR_IN ( PAR_in ),
338
    .PCI_PAR_OUT ( PAR_out ),
339
    .PCI_PAR_EN_OUT ( PAR_en ),
340 21 mihad
 
341 2 mihad
    .PCI_PERRn_IN ( PERR_in ),
342
    .PCI_PERRn_OUT ( PERR_out ),
343
    .PCI_PERRn_EN_OUT ( PERR_en ),
344 21 mihad
 
345 2 mihad
    // system error pin
346
    .PCI_SERRn_OUT ( SERR_out ),
347 21 mihad
    .PCI_SERRn_EN_OUT ( SERR_en )
348 62 mihad
 
349
`ifdef PCI_BIST
350
    ,
351 67 tadejm
    .scanb_rst      (scanb_rst),
352
    .scanb_clk      (scanb_clk),
353
    .scanb_si       (scanb_si),
354
    .scanb_so       (scanb_so),
355 68 tadejm
    .scanb_en       (scanb_en)
356 62 mihad
`endif
357 2 mihad
);
358 35 mihad
 
359
 
360 21 mihad
// PCI IO buffers instantiation
361
`ifdef ACTIVE_LOW_OE
362 35 mihad
 
363 2 mihad
bufif0 AD_buf0   ( AD[0],  AD_out[0], AD_en[0]) ;
364
bufif0 AD_buf1   ( AD[1],  AD_out[1], AD_en[1]) ;
365
bufif0 AD_buf2   ( AD[2],  AD_out[2], AD_en[2]) ;
366
bufif0 AD_buf3   ( AD[3],  AD_out[3], AD_en[3]) ;
367
bufif0 AD_buf4   ( AD[4],  AD_out[4], AD_en[4]) ;
368
bufif0 AD_buf5   ( AD[5],  AD_out[5], AD_en[5]) ;
369
bufif0 AD_buf6   ( AD[6],  AD_out[6], AD_en[6]) ;
370
bufif0 AD_buf7   ( AD[7],  AD_out[7], AD_en[7]) ;
371
bufif0 AD_buf8   ( AD[8],  AD_out[8], AD_en[8]) ;
372
bufif0 AD_buf9   ( AD[9],  AD_out[9], AD_en[9]) ;
373
bufif0 AD_buf10  ( AD[10], AD_out[10],AD_en[10] ) ;
374
bufif0 AD_buf11  ( AD[11], AD_out[11],AD_en[11] ) ;
375
bufif0 AD_buf12  ( AD[12], AD_out[12],AD_en[12] ) ;
376
bufif0 AD_buf13  ( AD[13], AD_out[13],AD_en[13] ) ;
377
bufif0 AD_buf14  ( AD[14], AD_out[14],AD_en[14] ) ;
378
bufif0 AD_buf15  ( AD[15], AD_out[15],AD_en[15] ) ;
379
bufif0 AD_buf16  ( AD[16], AD_out[16],AD_en[16] ) ;
380
bufif0 AD_buf17  ( AD[17], AD_out[17],AD_en[17] ) ;
381
bufif0 AD_buf18  ( AD[18], AD_out[18],AD_en[18] ) ;
382
bufif0 AD_buf19  ( AD[19], AD_out[19],AD_en[19] ) ;
383
bufif0 AD_buf20  ( AD[20], AD_out[20],AD_en[20] ) ;
384
bufif0 AD_buf21  ( AD[21], AD_out[21],AD_en[21] ) ;
385
bufif0 AD_buf22  ( AD[22], AD_out[22],AD_en[22] ) ;
386
bufif0 AD_buf23  ( AD[23], AD_out[23],AD_en[23] ) ;
387
bufif0 AD_buf24  ( AD[24], AD_out[24],AD_en[24] ) ;
388
bufif0 AD_buf25  ( AD[25], AD_out[25],AD_en[25] ) ;
389
bufif0 AD_buf26  ( AD[26], AD_out[26],AD_en[26] ) ;
390
bufif0 AD_buf27  ( AD[27], AD_out[27],AD_en[27] ) ;
391
bufif0 AD_buf28  ( AD[28], AD_out[28],AD_en[28] ) ;
392
bufif0 AD_buf29  ( AD[29], AD_out[29],AD_en[29] ) ;
393
bufif0 AD_buf30  ( AD[30], AD_out[30],AD_en[30] ) ;
394
bufif0 AD_buf31  ( AD[31], AD_out[31],AD_en[31] ) ;
395
 
396
bufif0 CBE_buf0 ( CBE[0], CBE_out[0], CBE_en[0] ) ;
397
bufif0 CBE_buf1 ( CBE[1], CBE_out[1], CBE_en[1] ) ;
398
bufif0 CBE_buf2 ( CBE[2], CBE_out[2], CBE_en[2] ) ;
399
bufif0 CBE_buf3 ( CBE[3], CBE_out[3], CBE_en[3] ) ;
400 21 mihad
 
401 2 mihad
bufif0 FRAME_buf    ( FRAME, FRAME_out, FRAME_en ) ;
402
bufif0 IRDY_buf     ( IRDY, IRDY_out, IRDY_en ) ;
403
bufif0 DEVSEL_buf   ( DEVSEL, DEVSEL_out, DEVSEL_en ) ;
404
bufif0 TRDY_buf     ( TRDY, TRDY_out, TRDY_en ) ;
405
bufif0 STOP_buf     ( STOP, STOP_out, STOP_en ) ;
406 21 mihad
 
407 2 mihad
bufif0 RST_buf      ( RST, RST_out, RST_en ) ;
408
bufif0 INTA_buf     ( INTA, INTA_out, INTA_en) ;
409
bufif0 REQ_buf      ( REQ, REQ_out, REQ_en ) ;
410
bufif0 PAR_buf      ( PAR, PAR_out, PAR_en ) ;
411
bufif0 PERR_buf     ( PERR, PERR_out, PERR_en ) ;
412
bufif0 SERR_buf     ( SERR, SERR_out, SERR_en ) ;
413
 
414 21 mihad
`else
415 35 mihad
 `ifdef ACTIVE_HIGH_OE
416
 
417 21 mihad
bufif1 AD_buf0   ( AD[0],  AD_out[0], AD_en[0]) ;
418
bufif1 AD_buf1   ( AD[1],  AD_out[1], AD_en[1]) ;
419
bufif1 AD_buf2   ( AD[2],  AD_out[2], AD_en[2]) ;
420
bufif1 AD_buf3   ( AD[3],  AD_out[3], AD_en[3]) ;
421
bufif1 AD_buf4   ( AD[4],  AD_out[4], AD_en[4]) ;
422
bufif1 AD_buf5   ( AD[5],  AD_out[5], AD_en[5]) ;
423
bufif1 AD_buf6   ( AD[6],  AD_out[6], AD_en[6]) ;
424
bufif1 AD_buf7   ( AD[7],  AD_out[7], AD_en[7]) ;
425
bufif1 AD_buf8   ( AD[8],  AD_out[8], AD_en[8]) ;
426
bufif1 AD_buf9   ( AD[9],  AD_out[9], AD_en[9]) ;
427
bufif1 AD_buf10  ( AD[10], AD_out[10],AD_en[10] ) ;
428
bufif1 AD_buf11  ( AD[11], AD_out[11],AD_en[11] ) ;
429
bufif1 AD_buf12  ( AD[12], AD_out[12],AD_en[12] ) ;
430
bufif1 AD_buf13  ( AD[13], AD_out[13],AD_en[13] ) ;
431
bufif1 AD_buf14  ( AD[14], AD_out[14],AD_en[14] ) ;
432
bufif1 AD_buf15  ( AD[15], AD_out[15],AD_en[15] ) ;
433
bufif1 AD_buf16  ( AD[16], AD_out[16],AD_en[16] ) ;
434
bufif1 AD_buf17  ( AD[17], AD_out[17],AD_en[17] ) ;
435
bufif1 AD_buf18  ( AD[18], AD_out[18],AD_en[18] ) ;
436
bufif1 AD_buf19  ( AD[19], AD_out[19],AD_en[19] ) ;
437
bufif1 AD_buf20  ( AD[20], AD_out[20],AD_en[20] ) ;
438
bufif1 AD_buf21  ( AD[21], AD_out[21],AD_en[21] ) ;
439
bufif1 AD_buf22  ( AD[22], AD_out[22],AD_en[22] ) ;
440
bufif1 AD_buf23  ( AD[23], AD_out[23],AD_en[23] ) ;
441
bufif1 AD_buf24  ( AD[24], AD_out[24],AD_en[24] ) ;
442
bufif1 AD_buf25  ( AD[25], AD_out[25],AD_en[25] ) ;
443
bufif1 AD_buf26  ( AD[26], AD_out[26],AD_en[26] ) ;
444
bufif1 AD_buf27  ( AD[27], AD_out[27],AD_en[27] ) ;
445
bufif1 AD_buf28  ( AD[28], AD_out[28],AD_en[28] ) ;
446
bufif1 AD_buf29  ( AD[29], AD_out[29],AD_en[29] ) ;
447
bufif1 AD_buf30  ( AD[30], AD_out[30],AD_en[30] ) ;
448
bufif1 AD_buf31  ( AD[31], AD_out[31],AD_en[31] ) ;
449
 
450
bufif1 CBE_buf0 ( CBE[0], CBE_out[0], CBE_en[0] ) ;
451
bufif1 CBE_buf1 ( CBE[1], CBE_out[1], CBE_en[1] ) ;
452
bufif1 CBE_buf2 ( CBE[2], CBE_out[2], CBE_en[2] ) ;
453
bufif1 CBE_buf3 ( CBE[3], CBE_out[3], CBE_en[3] ) ;
454
 
455
bufif1 FRAME_buf    ( FRAME, FRAME_out, FRAME_en ) ;
456
bufif1 IRDY_buf     ( IRDY, IRDY_out, IRDY_en ) ;
457
bufif1 DEVSEL_buf   ( DEVSEL, DEVSEL_out, DEVSEL_en ) ;
458
bufif1 TRDY_buf     ( TRDY, TRDY_out, TRDY_en ) ;
459
bufif1 STOP_buf     ( STOP, STOP_out, STOP_en ) ;
460
 
461
bufif1 RST_buf      ( RST, RST_out, RST_en ) ;
462
bufif1 INTA_buf     ( INTA, INTA_out, INTA_en) ;
463
bufif1 REQ_buf      ( REQ, REQ_out, REQ_en ) ;
464
bufif1 PAR_buf      ( PAR, PAR_out, PAR_en ) ;
465
bufif1 PERR_buf     ( PERR, PERR_out, PERR_en ) ;
466
bufif1 SERR_buf     ( SERR, SERR_out, SERR_en ) ;
467
`endif
468
`endif
469
 
470
 
471
endmodule

powered by: WebSVN 2.1.0

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