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

Subversion Repositories fpga-cf

[/] [fpga-cf/] [trunk/] [hdl/] [topv5.v] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 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
channelif4 channelif_inst
237
(
238
        .in_sof(out_sof_usr),
239
        .in_eof(out_eof_usr),
240
        .in_src_rdy(out_src_rdy_usr),
241
        .in_dst_rdy(out_dst_rdy_usr),
242
        .in_data(out_data_usr),
243
        .inport_addr(outport_usr),
244
        .out_sof(in_sof_usr),
245
        .out_eof(in_eof_usr),
246
        .out_src_rdy(in_src_rdy_usr),
247
        .out_dst_rdy(in_dst_rdy_usr),
248
        .out_data(in_data_usr),
249
        .outport_addr(inport_usr),
250
        .wenables(),
251
        .renables(),
252
 
253
        .ch1_in_sof(ch1_in_sof),
254
        .ch1_in_eof(ch1_in_eof),
255
        .ch1_in_src_rdy(ch1_in_src_rdy),
256
        .ch1_in_dst_rdy(ch1_in_dst_rdy),
257
        .ch1_in_data(ch1_in_data),
258
        .ch1_out_sof(ch1_out_sof),
259
        .ch1_out_eof(ch1_out_eof),
260
        .ch1_out_src_rdy(ch1_out_src_rdy),
261
        .ch1_out_dst_rdy(ch1_out_dst_rdy),
262
        .ch1_out_data(ch1_out_data),
263
        .ch1_wen(ch1_wen),
264
        .ch1_ren(ch1_ren),
265
 
266
        .ch2_in_sof(ch2_in_sof),
267
        .ch2_in_eof(ch2_in_eof),
268
        .ch2_in_src_rdy(ch2_in_src_rdy),
269
        .ch2_in_dst_rdy(ch2_in_dst_rdy),
270
        .ch2_in_data(ch2_in_data),
271
        .ch2_out_sof(ch2_out_sof),
272
        .ch2_out_eof(ch2_out_eof),
273
        .ch2_out_src_rdy(ch2_out_src_rdy),
274
        .ch2_out_dst_rdy(ch2_out_dst_rdy),
275
        .ch2_out_data(ch2_out_data),
276
        .ch2_wen(ch2_wen),
277
        .ch2_ren(ch2_ren),
278
 
279
        .ch3_in_sof(ch3_in_sof),
280
        .ch3_in_eof(ch3_in_eof),
281
        .ch3_in_src_rdy(ch3_in_src_rdy),
282
        .ch3_in_dst_rdy(ch3_in_dst_rdy),
283
        .ch3_in_data(ch3_in_data),
284
        .ch3_out_sof(ch3_out_sof),
285
        .ch3_out_eof(ch3_out_eof),
286
        .ch3_out_src_rdy(ch3_out_src_rdy),
287
        .ch3_out_dst_rdy(ch3_out_dst_rdy),
288
        .ch3_out_data(ch3_out_data),
289
        .ch3_wen(ch3_wen),
290
        .ch3_ren(ch3_ren),
291
 
292
        .ch4_in_sof(ch4_in_sof),
293
        .ch4_in_eof(ch4_in_eof),
294
        .ch4_in_src_rdy(ch4_in_src_rdy),
295
        .ch4_in_dst_rdy(ch4_in_dst_rdy),
296
        .ch4_in_data(ch4_in_data),
297
        .ch4_out_sof(ch4_out_sof),
298
        .ch4_out_eof(ch4_out_eof),
299
        .ch4_out_src_rdy(ch4_out_src_rdy),
300
        .ch4_out_dst_rdy(ch4_out_dst_rdy),
301
        .ch4_out_data(ch4_out_data),
302
        .ch4_wen(ch4_wen),
303
        .ch4_ren(ch4_ren)
304
);
305
 
306
 
307
//-------------------------------------------------------------------------------------
308
//-------------------------------------------------------------------------------------
309
//                                                       User Logic
310
//-------------------------------------------------------------------------------------
311
//-------------------------------------------------------------------------------------
312
 
313
wire [7:0] LEDnext;
314
 
315
assign LEDS = LEDr;
316
 
317
always @(posedge clk_local)
318
begin
319
        DIP_r <= DIP;
320
end
321
 
322
always @(posedge clk_local)
323
begin
324
        if (rst_local)
325
                LEDr <= 0;
326
        else if (ch2_wen & ch2_out_src_rdy)
327
                LEDr <= ch2_out_data;
328
end
329
 
330
// LED Status
331
//moving_led pr_mod_inst (
332
//      .clk(clk_local),
333
//      .rst(reset_cpu_p),
334
//      .leds(LEDS)
335
//);
336
 
337
 
338
//-------------------------------------------------------------------------------------
339
//-------------------------------------------------------------------------------------
340
//                                                       Channel Assignments
341
//-------------------------------------------------------------------------------------
342
//-------------------------------------------------------------------------------------
343
 
344
assign ch3_in_sof = icap_out_sof;
345
assign ch3_in_eof = icap_out_eof;
346
assign ch3_in_src_rdy = icap_out_src_rdy;
347
assign ch3_in_data = icap_dataout;
348
assign ch3_out_dst_rdy = icap_in_dst_rdy;
349
assign icap_datain = ch3_out_data | ch4_out_data;
350
assign icap_out_dst_rdy = ch3_in_dst_rdy | ch4_in_dst_rdy;
351
assign icap_in_src_rdy = ch3_out_src_rdy | ch4_out_src_rdy;
352
assign icap_in_sof = ch3_out_sof | ch4_out_sof;
353
assign icap_in_eof = ch3_out_eof | ch4_out_eof;
354
 
355
assign ch4_in_sof = icap_out_sof;
356
assign ch4_in_eof = icap_out_eof;
357
assign ch4_in_src_rdy = icap_out_src_rdy;
358
assign ch4_in_data = icap_dataout;
359
assign ch4_out_dst_rdy = icap_in_dst_rdy;
360
 
361
assign ch1_in_sof = 1;
362
assign ch1_in_eof = 1;
363
assign ch1_in_src_rdy = 1;
364
assign ch1_out_dst_rdy = 1;
365
assign ch1_in_data = DIP_r;
366
 
367
assign ch2_in_sof = 1;
368
assign ch2_in_eof = 1;
369
assign ch2_in_src_rdy = 1;
370
assign ch2_in_dst_rdy = 1;
371
assign ch2_in_data = LEDr;
372
assign LEDnext = ch2_out_data;
373
 
374
 
375
 
376
endmodule

powered by: WebSVN 2.1.0

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