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

Subversion Repositories pci

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

powered by: WebSVN 2.1.0

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