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

Subversion Repositories pci

[/] [pci/] [tags/] [rel_13/] [apps/] [test/] [rtl/] [verilog/] [pci_test_top_1clk.v] - Blame information for rev 154

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 93 mihad
module pci_test_top
2
(
3
    pci_clk_pad_i,
4
    pci_rst_pad_i,
5
 
6
    pci_req_pad_o,
7
    pci_gnt_pad_i,
8
    pci_idsel_pad_i,
9
 
10
    pci_ad0_pad_io,
11
    pci_ad1_pad_io,
12
    pci_ad2_pad_io,
13
    pci_ad3_pad_io,
14
    pci_ad4_pad_io,
15
    pci_ad5_pad_io,
16
    pci_ad6_pad_io,
17
    pci_ad7_pad_io,
18
    pci_ad8_pad_io,
19
    pci_ad9_pad_io,
20
    pci_ad10_pad_io,
21
    pci_ad11_pad_io,
22
    pci_ad12_pad_io,
23
    pci_ad13_pad_io,
24
    pci_ad14_pad_io,
25
    pci_ad15_pad_io,
26
    pci_ad16_pad_io,
27
    pci_ad17_pad_io,
28
    pci_ad18_pad_io,
29
    pci_ad19_pad_io,
30
    pci_ad20_pad_io,
31
    pci_ad21_pad_io,
32
    pci_ad22_pad_io,
33
    pci_ad23_pad_io,
34
    pci_ad24_pad_io,
35
    pci_ad25_pad_io,
36
    pci_ad26_pad_io,
37
    pci_ad27_pad_io,
38
    pci_ad28_pad_io,
39
    pci_ad29_pad_io,
40
    pci_ad30_pad_io,
41
    pci_ad31_pad_io,
42
 
43
    pci_cbe0_pad_io,
44
    pci_cbe1_pad_io,
45
    pci_cbe2_pad_io,
46
    pci_cbe3_pad_io,
47
 
48
    pci_frame_pad_io,
49
    pci_irdy_pad_io,
50
    pci_devsel_pad_io,
51
    pci_trdy_pad_io,
52
    pci_stop_pad_io,
53
    pci_par_pad_io,
54
    pci_perr_pad_io,
55
    pci_serr_pad_o
56
);
57
 
58
// input/output inout declarations
59
input pci_clk_pad_i,
60
      pci_rst_pad_i ;
61
 
62
output pci_req_pad_o, pci_serr_pad_o ;
63
input  pci_gnt_pad_i,
64
       pci_idsel_pad_i ;
65
 
66
inout        pci_frame_pad_io,
67
             pci_irdy_pad_io,
68
             pci_devsel_pad_io,
69
             pci_trdy_pad_io,
70
             pci_stop_pad_io,
71
             pci_par_pad_io,
72
             pci_perr_pad_io,
73
             pci_ad0_pad_io,
74
             pci_ad1_pad_io,
75
             pci_ad2_pad_io,
76
             pci_ad3_pad_io,
77
             pci_ad4_pad_io,
78
             pci_ad5_pad_io,
79
             pci_ad6_pad_io,
80
             pci_ad7_pad_io,
81
             pci_ad8_pad_io,
82
             pci_ad9_pad_io,
83
             pci_ad10_pad_io,
84
             pci_ad11_pad_io,
85
             pci_ad12_pad_io,
86
             pci_ad13_pad_io,
87
             pci_ad14_pad_io,
88
             pci_ad15_pad_io,
89
             pci_ad16_pad_io,
90
             pci_ad17_pad_io,
91
             pci_ad18_pad_io,
92
             pci_ad19_pad_io,
93
             pci_ad20_pad_io,
94
             pci_ad21_pad_io,
95
             pci_ad22_pad_io,
96
             pci_ad23_pad_io,
97
             pci_ad24_pad_io,
98
             pci_ad25_pad_io,
99
             pci_ad26_pad_io,
100
             pci_ad27_pad_io,
101
             pci_ad28_pad_io,
102
             pci_ad29_pad_io,
103
             pci_ad30_pad_io,
104
             pci_ad31_pad_io,
105
             pci_cbe0_pad_io,
106
             pci_cbe1_pad_io,
107
             pci_cbe2_pad_io,
108
             pci_cbe3_pad_io ;
109
 
110
// wires for test master to pci slave connections
111
wire wbm_test_wbs_pci_cyc,
112
     wbm_test_wbs_pci_stb,
113
     wbm_test_wbs_pci_cab,
114
     wbm_test_wbs_pci_we,
115
     wbs_pci_wbm_test_ack ;
116
 
117
wire [31:0] wbm_test_wbs_pci_adr,
118
            wbm_test_wbs_pci_dat,
119
            wbs_pci_wbm_test_dat ;
120
 
121
wire [3:0]  wbm_test_wbs_pci_sel ;
122
 
123
// wires for test slave to pci master connections
124
wire wbm_pci_wbs_test_cyc,
125
     wbm_pci_wbs_test_stb,
126
     wbm_pci_wbs_test_cab,
127
     wbm_pci_wbs_test_we,
128
     wbs_test_wbm_pci_ack ;
129
 
130
wire [31:0] wbm_pci_wbs_test_adr,
131
            wbm_pci_wbs_test_dat,
132
            wbs_test_wbm_pci_dat ;
133
 
134
wire [3:0]  wbm_pci_wbs_test_sel ;
135
 
136
wire wb_rst ;
137
 
138
wire wb_clk = pci_clk_pad_i;
139
 
140
// prevent concurent accesses through pci bridge master and slave interfaces
141
reg test_wbs_cyc ;
142
reg pci_wbs_cyc ;
143
 
144
always@(posedge wb_clk or posedge wb_rst)
145
begin
146
    if (wb_rst)
147
    begin
148
        test_wbs_cyc <= 1'b0 ;
149
        pci_wbs_cyc  <= 1'b0 ;
150
    end
151
    else
152
    begin
153
        if (~pci_wbs_cyc & ~test_wbs_cyc)
154
        begin
155
            // currently no cyc signal is asserted - the pci bridge wb master will have the priority here, so check if it has cycle asserted!
156
            if (wbm_pci_wbs_test_cyc)
157
                test_wbs_cyc <= 1'b1 ;
158
            else // no cycle is asserted and pci wb master is not starting the transaction - test wb master can start
159
                pci_wbs_cyc <= wbm_test_wbs_pci_cyc ;
160
        end
161
        else
162
        begin
163
            // at least one of the cycles is asserted - wait for transaction to finish
164
            if (test_wbs_cyc)
165
                test_wbs_cyc <= wbm_pci_wbs_test_cyc ;
166
 
167
            if (pci_wbs_cyc)
168
                pci_wbs_cyc <= wbm_test_wbs_pci_cyc ;
169
        end
170
    end
171
end
172
 
173
reg pci_irdy_reg,
174
    pci_irdy_en_reg ;
175
 
176
wire pci_trdy_reg = i_pci_bridge32.input_register.pci_trdy_reg_out ;
177
 
178
always@(posedge pci_clk_pad_i or negedge pci_rst_pad_i)
179
begin
180
    if (~pci_rst_pad_i)
181
    begin
182
        pci_irdy_reg    <= 1'b1 ;
183
        pci_irdy_en_reg <= 1'b0 ;
184
    end
185
    else
186
        pci_irdy_reg    <= i_pci_bridge32.output_backup.irdy_out    ;
187
        pci_irdy_en_reg <= i_pci_bridge32.output_backup.irdy_en_out ;
188
    end
189
end
190
 
191
test i_test
192
(
193
    .clk_i     (wb_clk),
194
    .rst_i     (wb_rst),
195
 
196
    .wbm_cyc_o (wbm_test_wbs_pci_cyc),
197
    .wbm_stb_o (wbm_test_wbs_pci_stb),
198
    .wbm_cab_o (wbm_test_wbs_pci_cab),
199
    .wbm_we_o  (wbm_test_wbs_pci_we),
200
    .wbm_adr_o (wbm_test_wbs_pci_adr),
201
    .wbm_sel_o (wbm_test_wbs_pci_sel),
202
    .wbm_dat_o (wbm_test_wbs_pci_dat),
203
    .wbm_dat_i (wbs_pci_wbm_test_dat),
204
    .wbm_ack_i (wbs_pci_wbm_test_ack),
205
    .wbm_rty_i (1'b0),
206
    .wbm_err_i (1'b0),
207
 
208
    .wbs_cyc_i (test_wbs_cyc),
209
    .wbs_stb_i (wbm_pci_wbs_test_stb),
210
    .wbs_cab_i (wbm_pci_wbs_test_cab),
211
    .wbs_we_i  (wbm_pci_wbs_test_we),
212
    .wbs_adr_i (wbm_pci_wbs_test_adr),
213
    .wbs_sel_i (wbm_pci_wbs_test_sel),
214
    .wbs_dat_i (wbm_pci_wbs_test_dat),
215
    .wbs_dat_o (wbs_test_wbm_pci_dat),
216
    .wbs_ack_o (wbs_test_wbm_pci_ack),
217
    .wbs_rty_o (),
218
    .wbs_err_o (),
219
 
220
    .pci_irdy_reg_i    (pci_irdy_reg),
221
    .pci_irdy_en_reg_i (pci_irdy_en_reg),
222
    .pci_trdy_reg_i    (pci_trdy_reg)
223
);
224
 
225
wire pci_req_o,
226
     pci_req_oe,
227
     pci_frame_i,
228
     pci_frame_o,
229
     pci_frame_oe,
230
     pci_irdy_oe,
231
     pci_devsel_oe,
232
     pci_trdy_oe,
233
     pci_stop_oe,
234
     pci_irdy_i,
235
     pci_irdy_o,
236
     pci_devsel_i,
237
     pci_devsel_o,
238
     pci_trdy_i,
239
     pci_trdy_o,
240
     pci_stop_i,
241
     pci_stop_o,
242
     pci_par_i,
243
     pci_par_o,
244
     pci_par_oe,
245
     pci_perr_i,
246
     pci_perr_o,
247
     pci_perr_oe,
248
     pci_serr_o,
249
     pci_serr_oe
250
;
251
 
252
wire [31:0] pci_ad_oe,
253
            pci_ad_i,
254
            pci_ad_o ;
255
 
256
wire [3:0]  pci_cbe_oe,
257
            pci_cbe_i,
258
            pci_cbe_o ;
259
 
260
bufif0 ad_buffer00  (pci_ad0_pad_io ,  pci_ad_o[0] ,  pci_ad_oe[0] ) ;
261
bufif0 ad_buffer01  (pci_ad1_pad_io ,  pci_ad_o[1] ,  pci_ad_oe[1] ) ;
262
bufif0 ad_buffer02  (pci_ad2_pad_io ,  pci_ad_o[2] ,  pci_ad_oe[2] ) ;
263
bufif0 ad_buffer03  (pci_ad3_pad_io ,  pci_ad_o[3] ,  pci_ad_oe[3] ) ;
264
bufif0 ad_buffer04  (pci_ad4_pad_io ,  pci_ad_o[4] ,  pci_ad_oe[4] ) ;
265
bufif0 ad_buffer05  (pci_ad5_pad_io ,  pci_ad_o[5] ,  pci_ad_oe[5] ) ;
266
bufif0 ad_buffer06  (pci_ad6_pad_io ,  pci_ad_o[6] ,  pci_ad_oe[6] ) ;
267
bufif0 ad_buffer07  (pci_ad7_pad_io ,  pci_ad_o[7] ,  pci_ad_oe[7] ) ;
268
bufif0 ad_buffer08  (pci_ad8_pad_io ,  pci_ad_o[8] ,  pci_ad_oe[8] ) ;
269
bufif0 ad_buffer09  (pci_ad9_pad_io ,  pci_ad_o[9] ,  pci_ad_oe[9] ) ;
270
bufif0 ad_buffer10  (pci_ad10_pad_io,  pci_ad_o[10],  pci_ad_oe[10]) ;
271
bufif0 ad_buffer11  (pci_ad11_pad_io,  pci_ad_o[11],  pci_ad_oe[11]) ;
272
bufif0 ad_buffer12  (pci_ad12_pad_io,  pci_ad_o[12],  pci_ad_oe[12]) ;
273
bufif0 ad_buffer13  (pci_ad13_pad_io,  pci_ad_o[13],  pci_ad_oe[13]) ;
274
bufif0 ad_buffer14  (pci_ad14_pad_io,  pci_ad_o[14],  pci_ad_oe[14]) ;
275
bufif0 ad_buffer15  (pci_ad15_pad_io,  pci_ad_o[15],  pci_ad_oe[15]) ;
276
bufif0 ad_buffer16  (pci_ad16_pad_io,  pci_ad_o[16],  pci_ad_oe[16]) ;
277
bufif0 ad_buffer17  (pci_ad17_pad_io,  pci_ad_o[17],  pci_ad_oe[17]) ;
278
bufif0 ad_buffer18  (pci_ad18_pad_io,  pci_ad_o[18],  pci_ad_oe[18]) ;
279
bufif0 ad_buffer19  (pci_ad19_pad_io,  pci_ad_o[19],  pci_ad_oe[19]) ;
280
bufif0 ad_buffer20  (pci_ad20_pad_io,  pci_ad_o[20],  pci_ad_oe[20]) ;
281
bufif0 ad_buffer21  (pci_ad21_pad_io,  pci_ad_o[21],  pci_ad_oe[21]) ;
282
bufif0 ad_buffer22  (pci_ad22_pad_io,  pci_ad_o[22],  pci_ad_oe[22]) ;
283
bufif0 ad_buffer23  (pci_ad23_pad_io,  pci_ad_o[23],  pci_ad_oe[23]) ;
284
bufif0 ad_buffer24  (pci_ad24_pad_io,  pci_ad_o[24],  pci_ad_oe[24]) ;
285
bufif0 ad_buffer25  (pci_ad25_pad_io,  pci_ad_o[25],  pci_ad_oe[25]) ;
286
bufif0 ad_buffer26  (pci_ad26_pad_io,  pci_ad_o[26],  pci_ad_oe[26]) ;
287
bufif0 ad_buffer27  (pci_ad27_pad_io,  pci_ad_o[27],  pci_ad_oe[27]) ;
288
bufif0 ad_buffer28  (pci_ad28_pad_io,  pci_ad_o[28],  pci_ad_oe[28]) ;
289
bufif0 ad_buffer29  (pci_ad29_pad_io,  pci_ad_o[29],  pci_ad_oe[29]) ;
290
bufif0 ad_buffer30  (pci_ad30_pad_io,  pci_ad_o[30],  pci_ad_oe[30]) ;
291
bufif0 ad_buffer31  (pci_ad31_pad_io,  pci_ad_o[31],  pci_ad_oe[31]) ;
292
 
293
bufif0 cbe_buffer0 (pci_cbe0_pad_io, pci_cbe_o[0], pci_cbe_oe[0]) ;
294
bufif0 cbe_buffer1 (pci_cbe1_pad_io, pci_cbe_o[1], pci_cbe_oe[1]) ;
295
bufif0 cbe_buffer2 (pci_cbe2_pad_io, pci_cbe_o[2], pci_cbe_oe[2]) ;
296
bufif0 cbe_buffer3 (pci_cbe3_pad_io, pci_cbe_o[3], pci_cbe_oe[3]) ;
297
 
298
assign pci_ad_i  = {
299
    pci_ad31_pad_io,
300
    pci_ad30_pad_io,
301
    pci_ad29_pad_io,
302
    pci_ad28_pad_io,
303
    pci_ad27_pad_io,
304
    pci_ad26_pad_io,
305
    pci_ad25_pad_io,
306
    pci_ad24_pad_io,
307
    pci_ad23_pad_io,
308
    pci_ad22_pad_io,
309
    pci_ad21_pad_io,
310
    pci_ad20_pad_io,
311
    pci_ad19_pad_io,
312
    pci_ad18_pad_io,
313
    pci_ad17_pad_io,
314
    pci_ad16_pad_io,
315
    pci_ad15_pad_io,
316
    pci_ad14_pad_io,
317
    pci_ad13_pad_io,
318
    pci_ad12_pad_io,
319
    pci_ad11_pad_io,
320
    pci_ad10_pad_io,
321
    pci_ad9_pad_io,
322
    pci_ad8_pad_io,
323
    pci_ad7_pad_io,
324
    pci_ad6_pad_io,
325
    pci_ad5_pad_io,
326
    pci_ad4_pad_io,
327
    pci_ad3_pad_io,
328
    pci_ad2_pad_io,
329
    pci_ad1_pad_io,
330
    pci_ad0_pad_io
331
} ;
332
 
333
assign pci_cbe_i = {
334
    pci_cbe3_pad_io,
335
    pci_cbe2_pad_io,
336
    pci_cbe1_pad_io,
337
    pci_cbe0_pad_io
338
} ;
339
 
340
bufif0 req_buf (pci_req_pad_o, pci_req_o, pci_req_oe) ;
341
 
342
bufif0 frame_buf (pci_frame_pad_io, pci_frame_o, pci_frame_oe) ;
343
assign pci_frame_i = pci_frame_pad_io ;
344
 
345
bufif0 irdy_buf (pci_irdy_pad_io, pci_irdy_o, pci_irdy_oe) ;
346
assign pci_irdy_i = pci_irdy_pad_io ;
347
 
348
bufif0 devsel_buf (pci_devsel_pad_io, pci_devsel_o, pci_devsel_oe) ;
349
assign pci_devsel_i = pci_devsel_pad_io ;
350
 
351
bufif0 trdy_buf (pci_trdy_pad_io, pci_trdy_o, pci_trdy_oe) ;
352
assign pci_trdy_i = pci_trdy_pad_io ;
353
 
354
bufif0 stop_buf (pci_stop_pad_io, pci_stop_o, pci_stop_oe) ;
355
assign pci_stop_i = pci_stop_pad_io ;
356
 
357
bufif0 par_buf (pci_par_pad_io, pci_par_o, pci_par_oe) ;
358
assign pci_par_i = pci_par_pad_io ;
359
 
360
bufif0 perr_buf (pci_perr_pad_io, pci_perr_o, pci_perr_oe) ;
361
assign pci_perr_i = pci_perr_pad_io ;
362
 
363
bufif0 serr_buf (pci_serr_pad_o, pci_serr_o, pci_serr_oe) ;
364
 
365
pci_bridge32 i_pci_bridge32
366
(
367
    // WISHBONE system signals
368
    .wb_clk_i(wb_clk),
369
    .wb_rst_i(1'b0),
370
    .wb_rst_o(wb_rst),
371
    .wb_int_i(1'b0),
372
    .wb_int_o(),
373
 
374
    // WISHBONE slave interface
375
    .wbs_adr_i(wbm_test_wbs_pci_adr),
376
    .wbs_dat_i(wbm_test_wbs_pci_dat),
377
    .wbs_dat_o(wbs_pci_wbm_test_dat),
378
    .wbs_sel_i(wbm_test_wbs_pci_sel),
379
    .wbs_cyc_i(pci_wbs_cyc),
380
    .wbs_stb_i(wbm_test_wbs_pci_stb),
381
    .wbs_we_i (wbm_test_wbs_pci_we),
382
    .wbs_cab_i(wbm_test_wbs_pci_cab),
383
    .wbs_ack_o(wbs_pci_wbm_test_ack),
384
    .wbs_rty_o(),
385
    .wbs_err_o(),
386
 
387
    // WISHBONE master interface
388
    .wbm_adr_o(wbm_pci_wbs_test_adr),
389
    .wbm_dat_i(wbs_test_wbm_pci_dat),
390
    .wbm_dat_o(wbm_pci_wbs_test_dat),
391
    .wbm_sel_o(wbm_pci_wbs_test_sel),
392
    .wbm_cyc_o(wbm_pci_wbs_test_cyc),
393
    .wbm_stb_o(wbm_pci_wbs_test_stb),
394
    .wbm_we_o (wbm_pci_wbs_test_we),
395
    .wbm_cab_o(wbm_pci_wbs_test_cab),
396
    .wbm_ack_i(wbs_test_wbm_pci_ack),
397
    .wbm_rty_i(1'b0),
398
    .wbm_err_i(1'b0),
399
 
400
    // pci interface - system pins
401
    .pci_clk_i      (pci_clk_pad_i),
402
    .pci_rst_i      (pci_rst_pad_i),
403
    .pci_rst_o      (),
404
    .pci_inta_i     (1'b1),
405
    .pci_inta_o     (),
406
    .pci_rst_oe_o   (),
407
    .pci_inta_oe_o  (),
408
 
409
    // arbitration pins
410
    .pci_req_o      (pci_req_o),
411
    .pci_req_oe_o   (pci_req_oe),
412
 
413
    .pci_gnt_i      (pci_gnt_pad_i),
414
 
415
    // protocol pins
416
    .pci_frame_i    (pci_frame_i),
417
    .pci_frame_o    (pci_frame_o),
418
 
419
    .pci_frame_oe_o (pci_frame_oe),
420
    .pci_irdy_oe_o  (pci_irdy_oe),
421
    .pci_devsel_oe_o(pci_devsel_oe),
422
    .pci_trdy_oe_o  (pci_trdy_oe),
423
    .pci_stop_oe_o  (pci_stop_oe),
424
    .pci_ad_oe_o    (pci_ad_oe),
425
    .pci_cbe_oe_o   (pci_cbe_oe),
426
 
427
    .pci_irdy_i     (pci_irdy_i),
428
    .pci_irdy_o     (pci_irdy_o),
429
 
430
    .pci_idsel_i    (pci_idsel_pad_i),
431
 
432
    .pci_devsel_i   (pci_devsel_i),
433
    .pci_devsel_o   (pci_devsel_o),
434
 
435
    .pci_trdy_i     (pci_trdy_i),
436
    .pci_trdy_o     (pci_trdy_o),
437
 
438
    .pci_stop_i     (pci_stop_i),
439
    .pci_stop_o     (pci_stop_o),
440
 
441
    // data transfer pins
442
    .pci_ad_i       (pci_ad_i),
443
    .pci_ad_o       (pci_ad_o),
444
 
445
    .pci_cbe_i      (pci_cbe_i),
446
    .pci_cbe_o      (pci_cbe_o),
447
 
448
    // parity generation and checking pins
449
    .pci_par_i      (pci_par_i),
450
    .pci_par_o      (pci_par_o),
451
    .pci_par_oe_o   (pci_par_oe),
452
 
453
    .pci_perr_i     (pci_perr_i),
454
    .pci_perr_o     (pci_perr_o),
455
    .pci_perr_oe_o  (pci_perr_oe),
456
 
457
    // system error pin
458
    .pci_serr_o     (pci_serr_o),
459
    .pci_serr_oe_o  (pci_serr_oe)
460
);
461
endmodule // pci_test_top

powered by: WebSVN 2.1.0

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