OpenCores
URL https://opencores.org/ocsvn/fpga-cf/fpga-cf/trunk

Subversion Repositories fpga-cf

[/] [fpga-cf/] [trunk/] [hdl/] [topv5_proto.v] - Blame information for rev 3

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

Line No. Rev Author Line
1 3 peteralieb
// Top Module
2
 
3
module top
4
(
5
   // SGMII Interface - EMAC0
6
   TXP_0,
7
   TXN_0,
8
   RXP_0,
9
   RXN_0,
10
 
11
   // SGMII MGT Clock buffer inputs 
12
   MGTCLK_N,
13
   MGTCLK_P,
14
 
15
   // reset for ethernet phy
16
   PHY_RESET_0,
17
 
18
   // GTP link status
19
   GTP_READY,
20
 
21
   // Asynchronous Reset
22
   RESET,
23
 
24
        // LED Status
25
        LEDS,
26
 
27
        // DIP Switch
28
        DIP,
29
 
30
        // CPU RESET
31
        RESET_CPU
32
);
33
 
34
//-----------------------------------------------------------------------------
35
// Port Declarations 
36
//-----------------------------------------------------------------------------
37
 
38
   // SGMII Interface - EMAC0
39
   output          TXP_0;
40
   output          TXN_0;
41
   input           RXP_0;
42
   input           RXN_0;
43
 
44
   // SGMII MGT Clock buffer inputs 
45
   input           MGTCLK_N;
46
   input           MGTCLK_P;
47
 
48
   // reset for ethernet phy
49
   output          PHY_RESET_0;
50
 
51
   // GTP link status
52
   output          GTP_READY;
53
 
54
   // Asynchronous Reset
55
   input           RESET;
56
 
57
        // LED Status
58
        output  [7:0]            LEDS;
59
 
60
        // DIP Switches
61
        input   [7:0]            DIP;
62
 
63
        // CPU RESET
64
        input                           RESET_CPU;
65
 
66
//-----------------------------------------------------------------------------
67
 
68
 
69
//-------------------------------------------------------------------------------------
70
//-------------------------------------------------------------------------------------
71
//                                                       User Signals
72
//-------------------------------------------------------------------------------------
73
//-------------------------------------------------------------------------------------
74
 
75
reg [7:0] DIP_r;
76
wire reset_cpu_p;
77
wire reset_cpu_i;
78
reg [7:0] LEDr;
79
 
80
IBUF cpu_reset_ibuf (.I(RESET_CPU), .O(reset_cpu_i));
81
 
82
assign reset_cpu_p = ~reset_cpu_i;
83
 
84
 
85
//-----------------------------------------------------------------------------
86
// Ethernet Platform Instance
87
//-----------------------------------------------------------------------------
88
 
89
wire in_src_rdy_usr;
90
wire out_dst_rdy_usr;
91
wire [7:0] in_data_usr;
92
wire in_sof_usr;
93
wire in_eof_usr;
94
wire in_dst_rdy_usr;
95
wire out_src_rdy_usr;
96
wire [7:0] out_data_usr;
97
wire out_sof_usr;
98
wire out_eof_usr;
99
wire [3:0] outport_usr;
100
wire [3:0] inport_usr;
101
wire clk_local;
102
wire rst_local;
103
 
104
 
105
enetplatform enet_inst
106
(
107
   .TXP_0(TXP_0),
108
   .TXN_0(TXN_0),
109
   .RXP_0(RXP_0),
110
   .RXN_0(RXN_0),
111
   .MGTCLK_N(MGTCLK_N),
112
   .MGTCLK_P(MGTCLK_P),
113
   .PHY_RESET_0(PHY_RESET_0),
114
   .GTP_READY(GTP_READY),
115
   .RESET(RESET),
116
        .RESET_CPU(reset_cpu_p),
117
        .in_src_rdy_usr(in_src_rdy_usr),
118
        .out_dst_rdy_usr(out_dst_rdy_usr),
119
        .in_data_usr(in_data_usr),
120
        .in_sof_usr(in_sof_usr),
121
        .in_eof_usr(in_eof_usr),
122
        .in_dst_rdy_usr(in_dst_rdy_usr),
123
        .out_src_rdy_usr(out_src_rdy_usr),
124
        .out_data_usr(out_data_usr),
125
        .out_sof_usr(out_sof_usr),
126
        .out_eof_usr(out_eof_usr),
127
        .outport_usr(outport_usr),
128
        .inport_usr(inport_usr),
129
        .clk_local(clk_local),
130
        .rst_local(rst_local)
131
);
132
 
133
//-------------------------------------------------------------------------------------
134
//-------------------------------------------------------------------------------------
135
 
136
 
137
//-------------------------------------------------------------------------------------
138
//-------------------------------------------------------------------------------------
139
//                                                       ICAP Logic
140
//-------------------------------------------------------------------------------------
141
//-------------------------------------------------------------------------------------
142
 
143
wire icap_en_wr;
144
wire icap_en_rd;
145
wire icap_out_src_rdy;
146
wire icap_out_dst_rdy;
147
wire icap_in_src_rdy;
148
wire icap_in_dst_rdy;
149
wire icap_out_sof;
150
wire icap_out_eof;
151
wire icap_in_sof;
152
wire icap_in_eof;
153
wire [7:0] icap_dataout;
154
wire [7:0] icap_datain;
155
 
156
port_icap_buf the_picap
157
(
158
        .clk(clk_local),
159
        .rst(rst_local),
160
        .en_wr(icap_en_wr),
161
        .en_rd(icap_en_rd),
162
        .in_data(icap_datain),
163
        .in_sof(icap_in_sof),
164
        .in_eof(icap_in_eof),
165
        .in_src_rdy(icap_in_src_rdy),
166
        .out_dst_rdy(icap_out_dst_rdy),
167
        .out_data(icap_dataout),
168
        .out_sof(icap_out_sof),
169
        .out_eof(icap_out_eof),
170
        .out_src_rdy(icap_out_src_rdy),
171
        .in_dst_rdy(icap_in_dst_rdy)
172
);
173
 
174
assign icap_en_wr = ((outport_usr == 3 && out_src_rdy_usr == 1) || (inport_usr == 3 && in_dst_rdy_usr == 1)) ? 1 : 0;
175
assign icap_en_rd = ((outport_usr == 4 && out_src_rdy_usr == 1) || (inport_usr == 4 && in_dst_rdy_usr == 1)) ? 1 : 0;
176
 
177
 
178
//-------------------------------------------------------------------------------------
179
//-------------------------------------------------------------------------------------
180
//                                                       Channel Routing
181
//-------------------------------------------------------------------------------------
182
//-------------------------------------------------------------------------------------
183
 
184
wire ch1_in_sof;
185
wire ch1_in_eof;
186
wire ch1_in_src_rdy;
187
wire ch1_in_dst_rdy;
188
wire [7:0] ch1_in_data;
189
wire ch1_out_sof;
190
wire ch1_out_eof;
191
wire ch1_out_src_rdy;
192
wire ch1_out_dst_rdy;
193
wire [7:0] ch1_out_data;
194
wire ch1_wen;
195
wire ch1_ren;
196
 
197
wire ch2_in_sof;
198
wire ch2_in_eof;
199
wire ch2_in_src_rdy;
200
wire ch2_in_dst_rdy;
201
wire [7:0] ch2_in_data;
202
wire ch2_out_sof;
203
wire ch2_out_eof;
204
wire ch2_out_src_rdy;
205
wire ch2_out_dst_rdy;
206
wire [7:0] ch2_out_data;
207
wire ch2_wen;
208
wire ch2_ren;
209
 
210
wire ch3_in_sof;
211
wire ch3_in_eof;
212
wire ch3_in_src_rdy;
213
wire ch3_in_dst_rdy;
214
wire [7:0] ch3_in_data;
215
wire ch3_out_sof;
216
wire ch3_out_eof;
217
wire ch3_out_src_rdy;
218
wire ch3_out_dst_rdy;
219
wire [7:0] ch3_out_data;
220
wire ch3_wen;
221
wire ch3_ren;
222
 
223
wire ch4_in_sof;
224
wire ch4_in_eof;
225
wire ch4_in_src_rdy;
226
wire ch4_in_dst_rdy;
227
wire [7:0] ch4_in_data;
228
wire ch4_out_sof;
229
wire ch4_out_eof;
230
wire ch4_out_src_rdy;
231
wire ch4_out_dst_rdy;
232
wire [7:0] ch4_out_data;
233
wire ch4_wen;
234
wire ch4_ren;
235
 
236
wire ch5_in_sof;
237
wire ch5_in_eof;
238
wire ch5_in_src_rdy;
239
wire ch5_in_dst_rdy;
240
wire [7:0] ch5_in_data;
241
wire ch5_out_sof;
242
wire ch5_out_eof;
243
wire ch5_out_src_rdy;
244
wire ch5_out_dst_rdy;
245
wire [7:0] ch5_out_data;
246
wire ch5_wen;
247
wire ch5_ren;
248
 
249
wire ch6_in_sof;
250
wire ch6_in_eof;
251
wire ch6_in_src_rdy;
252
wire ch6_in_dst_rdy;
253
wire [7:0] ch6_in_data;
254
wire ch6_out_sof;
255
wire ch6_out_eof;
256
wire ch6_out_src_rdy;
257
wire ch6_out_dst_rdy;
258
wire [7:0] ch6_out_data;
259
wire ch6_wen;
260
wire ch6_ren;
261
 
262
channelif6 channelif_inst
263
(
264
        .in_sof(out_sof_usr),
265
        .in_eof(out_eof_usr),
266
        .in_src_rdy(out_src_rdy_usr),
267
        .in_dst_rdy(out_dst_rdy_usr),
268
        .in_data(out_data_usr),
269
        .inport_addr(outport_usr),
270
        .out_sof(in_sof_usr),
271
        .out_eof(in_eof_usr),
272
        .out_src_rdy(in_src_rdy_usr),
273
        .out_dst_rdy(in_dst_rdy_usr),
274
        .out_data(in_data_usr),
275
        .outport_addr(inport_usr),
276
        .wenables(),
277
        .renables(),
278
 
279
        .ch1_in_sof(ch1_in_sof),
280
        .ch1_in_eof(ch1_in_eof),
281
        .ch1_in_src_rdy(ch1_in_src_rdy),
282
        .ch1_in_dst_rdy(ch1_in_dst_rdy),
283
        .ch1_in_data(ch1_in_data),
284
        .ch1_out_sof(ch1_out_sof),
285
        .ch1_out_eof(ch1_out_eof),
286
        .ch1_out_src_rdy(ch1_out_src_rdy),
287
        .ch1_out_dst_rdy(ch1_out_dst_rdy),
288
        .ch1_out_data(ch1_out_data),
289
        .ch1_wen(ch1_wen),
290
        .ch1_ren(ch1_ren),
291
 
292
        .ch2_in_sof(ch2_in_sof),
293
        .ch2_in_eof(ch2_in_eof),
294
        .ch2_in_src_rdy(ch2_in_src_rdy),
295
        .ch2_in_dst_rdy(ch2_in_dst_rdy),
296
        .ch2_in_data(ch2_in_data),
297
        .ch2_out_sof(ch2_out_sof),
298
        .ch2_out_eof(ch2_out_eof),
299
        .ch2_out_src_rdy(ch2_out_src_rdy),
300
        .ch2_out_dst_rdy(ch2_out_dst_rdy),
301
        .ch2_out_data(ch2_out_data),
302
        .ch2_wen(ch2_wen),
303
        .ch2_ren(ch2_ren),
304
 
305
        .ch3_in_sof(ch3_in_sof),
306
        .ch3_in_eof(ch3_in_eof),
307
        .ch3_in_src_rdy(ch3_in_src_rdy),
308
        .ch3_in_dst_rdy(ch3_in_dst_rdy),
309
        .ch3_in_data(ch3_in_data),
310
        .ch3_out_sof(ch3_out_sof),
311
        .ch3_out_eof(ch3_out_eof),
312
        .ch3_out_src_rdy(ch3_out_src_rdy),
313
        .ch3_out_dst_rdy(ch3_out_dst_rdy),
314
        .ch3_out_data(ch3_out_data),
315
        .ch3_wen(ch3_wen),
316
        .ch3_ren(ch3_ren),
317
 
318
        .ch4_in_sof(ch4_in_sof),
319
        .ch4_in_eof(ch4_in_eof),
320
        .ch4_in_src_rdy(ch4_in_src_rdy),
321
        .ch4_in_dst_rdy(ch4_in_dst_rdy),
322
        .ch4_in_data(ch4_in_data),
323
        .ch4_out_sof(ch4_out_sof),
324
        .ch4_out_eof(ch4_out_eof),
325
        .ch4_out_src_rdy(ch4_out_src_rdy),
326
        .ch4_out_dst_rdy(ch4_out_dst_rdy),
327
        .ch4_out_data(ch4_out_data),
328
        .ch4_wen(ch4_wen),
329
        .ch4_ren(ch4_ren),
330
 
331
        .ch5_in_sof(ch5_in_sof),
332
        .ch5_in_eof(ch5_in_eof),
333
        .ch5_in_src_rdy(ch5_in_src_rdy),
334
        .ch5_in_dst_rdy(ch5_in_dst_rdy),
335
        .ch5_in_data(ch5_in_data),
336
        .ch5_out_sof(ch5_out_sof),
337
        .ch5_out_eof(ch5_out_eof),
338
        .ch5_out_src_rdy(ch5_out_src_rdy),
339
        .ch5_out_dst_rdy(ch5_out_dst_rdy),
340
        .ch5_out_data(ch5_out_data),
341
        .ch5_wen(ch5_wen),
342
        .ch5_ren(ch5_ren),
343
 
344
        .ch6_in_sof(ch6_in_sof),
345
        .ch6_in_eof(ch6_in_eof),
346
        .ch6_in_src_rdy(ch6_in_src_rdy),
347
        .ch6_in_dst_rdy(ch6_in_dst_rdy),
348
        .ch6_in_data(ch6_in_data),
349
        .ch6_out_sof(ch6_out_sof),
350
        .ch6_out_eof(ch6_out_eof),
351
        .ch6_out_src_rdy(ch6_out_src_rdy),
352
        .ch6_out_dst_rdy(ch6_out_dst_rdy),
353
        .ch6_out_data(ch6_out_data),
354
        .ch6_wen(ch6_wen),
355
        .ch6_ren(ch6_ren)
356
);
357
 
358
 
359
//-------------------------------------------------------------------------------------
360
//-------------------------------------------------------------------------------------
361
//                                                       User Logic
362
//-------------------------------------------------------------------------------------
363
//-------------------------------------------------------------------------------------
364
 
365
wire [7:0] LEDnext;
366
 
367
assign LEDS = LEDr;
368
 
369
wire clk_controlled;
370
 
371
always @(posedge clk_local)
372
begin
373
        DIP_r <= DIP;
374
end
375
 
376
always @(posedge clk_local)
377
begin
378
        if (rst_local)
379
                LEDr <= 0;
380
        else if (ch1_wen & ch1_out_src_rdy)
381
                LEDr <= LEDnext;
382
end
383
 
384
port_clkcntl clkcontrol (
385
        .clk(clk_local),
386
        .rst(rst),
387
        .en(ch2_wen),
388
        .in_data(ch2_out_data),
389
        .in_sof(ch2_out_sof),
390
        .in_eof(ch2_out_eof),
391
        .in_src_rdy(ch2_out_src_rdy),
392
        .out_dst_rdy(ch2_in_dst_rdy),
393
        .usr_clk_in(clk_local),
394
        .out_data(),
395
        .out_sof(),
396
        .out_eof(),
397
        .out_src_rdy(),
398
        .in_dst_rdy(ch2_out_dst_rdy),
399
        .usr_clk_out(clk_controlled)
400
);
401
 
402
 
403
//-------------------------------------------------------------------------------------
404
//-------------------------------------------------------------------------------------
405
//                                                       Sand Box Areas
406
//-------------------------------------------------------------------------------------
407
//-------------------------------------------------------------------------------------
408
 
409
port_blank pr_channel_5 (
410
        .clk(clk_local),
411
        .rst(rst_local),
412
        .wen ( ch5_wen ),
413
        .ren ( ch5_ren ),
414
        .in_data ( ch5_out_data ),      // Inport
415
        .in_sof ( ch5_out_sof ),        // Inport
416
        .in_eof ( ch5_out_eof ),        // Inport
417
        .in_src_rdy ( ch5_out_src_rdy ),        // Inport
418
        .out_dst_rdy ( ch5_in_dst_rdy ),        // Outport
419
 
420
        // Outputs:
421
        .out_data ( ch5_in_data ),      // Outport
422
        .out_sof ( ch5_in_sof ),        // Outport
423
        .out_eof ( ch5_in_eof ),        // Outport
424
        .out_src_rdy ( ch5_in_src_rdy ),        // Outport
425
        .in_dst_rdy ( ch5_out_dst_rdy ) // Inport
426
);
427
 
428
port_blank pr_channel_6 (
429
        .clk(clk_local),
430
        .rst(rst_local),
431
        .wen ( ch6_wen ),
432
        .ren ( ch6_ren ),
433
        .in_data ( ch6_out_data ),      // Inport
434
        .in_sof ( ch6_out_sof ),        // Inport
435
        .in_eof ( ch6_out_eof ),        // Inport
436
        .in_src_rdy ( ch6_out_src_rdy ),        // Inport
437
        .out_dst_rdy ( ch6_in_dst_rdy ),        // Outport
438
 
439
        // Outputs:
440
        .out_data ( ch6_in_data ),      // Outport
441
        .out_sof ( ch6_in_sof ),        // Outport
442
        .out_eof ( ch6_in_eof ),        // Outport
443
        .out_src_rdy ( ch6_in_src_rdy ),        // Outport
444
        .in_dst_rdy ( ch6_out_dst_rdy ) // Inport
445
);
446
 
447
//-------------------------------------------------------------------------------------
448
//-------------------------------------------------------------------------------------
449
//                                                       Channel Assignments
450
//-------------------------------------------------------------------------------------
451
//-------------------------------------------------------------------------------------
452
 
453
assign ch3_in_sof = icap_out_sof;
454
assign ch3_in_eof = icap_out_eof;
455
assign ch3_in_src_rdy = icap_out_src_rdy;
456
assign ch3_in_data = icap_dataout;
457
assign ch3_out_dst_rdy = icap_in_dst_rdy;
458
assign icap_datain = ch3_out_data | ch4_out_data;
459
assign icap_out_dst_rdy = ch3_in_dst_rdy | ch4_in_dst_rdy;
460
assign icap_in_src_rdy = ch3_out_src_rdy | ch4_out_src_rdy;
461
assign icap_in_sof = ch3_out_sof | ch4_out_sof;
462
assign icap_in_eof = ch3_out_eof | ch4_out_eof;
463
 
464
assign ch4_in_sof = icap_out_sof;
465
assign ch4_in_eof = icap_out_eof;
466
assign ch4_in_src_rdy = icap_out_src_rdy;
467
assign ch4_in_data = icap_dataout;
468
assign ch4_out_dst_rdy = icap_in_dst_rdy;
469
 
470
assign ch1_in_sof = 1;
471
assign ch1_in_eof = 1;
472
assign ch1_in_src_rdy = 1;
473
assign ch1_out_dst_rdy = 1;
474
assign ch1_in_data = DIP_r;
475
assign LEDnext = ch1_out_data;
476
 
477
 
478
endmodule

powered by: WebSVN 2.1.0

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