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

Subversion Repositories wf3d

[/] [wf3d/] [trunk/] [implement/] [rtl/] [zedboard/] [zed_base_wrapper.v] - Blame information for rev 9

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 5 specular
//=======================================================================
2
// Project Monophony
3
//   Wire-Frame 3D Graphics Accelerator IP Core
4
//
5
// File:
6
//   zed_base_wrapper.v
7
//
8
// Abstract:
9
//   Top module for ZedBoard
10
//
11
// Author:
12 9 specular
//   Kenji Ishimaru (info.info.wf3d@gmail.com)
13 5 specular
//
14
//======================================================================
15
//
16
// Copyright (c) 2016, Kenji Ishimaru
17
// All rights reserved.
18
//
19
// Redistribution and use in source and binary forms, with or without
20
// modification, are permitted provided that the following conditions are met:
21
//
22
//  -Redistributions of source code must retain the above copyright notice,
23
//   this list of conditions and the following disclaimer.
24
//  -Redistributions in binary form must reproduce the above copyright notice,
25
//   this list of conditions and the following disclaimer in the documentation
26
//   and/or other materials provided with the distribution.
27
//
28
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
29
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
30
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
31
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
32
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
33
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
34
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
35
// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
36
// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
37
// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
38
// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
39
//
40
// Revision History
41
 
42
module zed_base_wrapper
43
   (CLK_100,
44
    DDR_addr,
45
    DDR_ba,
46
    DDR_cas_n,
47
    DDR_ck_n,
48
    DDR_ck_p,
49
    DDR_cke,
50
    DDR_cs_n,
51
    DDR_dm,
52
    DDR_dq,
53
    DDR_dqs_n,
54
    DDR_dqs_p,
55
    DDR_odt,
56
    DDR_ras_n,
57
    DDR_reset_n,
58
    DDR_we_n,
59
    FIXED_IO_ddr_vrn,
60
    FIXED_IO_ddr_vrp,
61
    FIXED_IO_mio,
62
    FIXED_IO_ps_clk,
63
    FIXED_IO_ps_porb,
64
    FIXED_IO_ps_srstb,
65
    btns_5bits_tri_i,
66
    leds_8bits_tri_o,
67
    sws_8bits_tri_i,
68
    o_hsync_x,
69
    o_vsync_x,
70
    o_vr,
71
    o_vg,
72
    o_vb
73
    );
74
  input CLK_100;
75
  inout [14:0]DDR_addr;
76
  inout [2:0]DDR_ba;
77
  inout DDR_cas_n;
78
  inout DDR_ck_n;
79
  inout DDR_ck_p;
80
  inout DDR_cke;
81
  inout DDR_cs_n;
82
  inout [3:0]DDR_dm;
83
  inout [31:0]DDR_dq;
84
  inout [3:0]DDR_dqs_n;
85
  inout [3:0]DDR_dqs_p;
86
  inout DDR_odt;
87
  inout DDR_ras_n;
88
  inout DDR_reset_n;
89
  inout DDR_we_n;
90
  inout FIXED_IO_ddr_vrn;
91
  inout FIXED_IO_ddr_vrp;
92
  inout [53:0]FIXED_IO_mio;
93
  inout FIXED_IO_ps_clk;
94
  inout FIXED_IO_ps_porb;
95
  inout FIXED_IO_ps_srstb;
96
  input [4:0]btns_5bits_tri_i;
97
  output [7:0]leds_8bits_tri_o;
98
  input [7:0]sws_8bits_tri_i;
99
 
100
  output o_hsync_x;
101
  output o_vsync_x;
102
  output [3:0] o_vr;
103
  output [3:0] o_vg;
104
  output [3:0] o_vb;
105
 
106
  wire [14:0]DDR_addr;
107
  wire [2:0]DDR_ba;
108
  wire DDR_cas_n;
109
  wire DDR_ck_n;
110
  wire DDR_ck_p;
111
  wire DDR_cke;
112
  wire DDR_cs_n;
113
  wire [3:0]DDR_dm;
114
  wire [31:0]DDR_dq;
115
  wire [3:0]DDR_dqs_n;
116
  wire [3:0]DDR_dqs_p;
117
  wire DDR_odt;
118
  wire DDR_ras_n;
119
  wire DDR_reset_n;
120
  wire DDR_we_n;
121
 
122
  wire FIXED_IO_ddr_vrn;
123
  wire FIXED_IO_ddr_vrp;
124
  wire [53:0]FIXED_IO_mio;
125
  wire FIXED_IO_ps_clk;
126
  wire FIXED_IO_ps_porb;
127
  wire FIXED_IO_ps_srstb;
128
  wire [31:0]M_AXI_araddr;
129
  wire [1:0]M_AXI_arburst;
130
  wire [3:0]M_AXI_arcache;
131
  wire [11:0]M_AXI_arid;
132
  wire [3:0]M_AXI_arlen;
133
  wire [1:0]M_AXI_arlock;
134
  wire [2:0]M_AXI_arprot;
135
  wire [3:0]M_AXI_arqos;
136
  wire M_AXI_arready;
137
  wire [2:0]M_AXI_arsize;
138
  wire M_AXI_arvalid;
139
  wire [31:0]M_AXI_awaddr;
140
  wire [1:0]M_AXI_awburst;
141
  wire [3:0]M_AXI_awcache;
142
  wire [11:0]M_AXI_awid;
143
  wire [3:0]M_AXI_awlen;
144
  wire [1:0]M_AXI_awlock;
145
  wire [2:0]M_AXI_awprot;
146
  wire [3:0]M_AXI_awqos;
147
  wire M_AXI_awready;
148
  wire [2:0]M_AXI_awsize;
149
  wire M_AXI_awvalid;
150
  wire [11:0]M_AXI_bid;
151
  wire M_AXI_bready;
152
  wire [1:0]M_AXI_bresp;
153
  wire M_AXI_bvalid;
154
  wire [31:0]M_AXI_rdata;
155
  wire [11:0]M_AXI_rid;
156
  wire M_AXI_rlast;
157
  wire M_AXI_rready;
158
  wire [1:0]M_AXI_rresp;
159
  wire M_AXI_rvalid;
160
  wire [31:0]M_AXI_wdata;
161
  wire [11:0]M_AXI_wid;
162
  wire M_AXI_wlast;
163
  wire M_AXI_wready;
164
  wire [3:0]M_AXI_wstrb;
165
  wire M_AXI_wvalid;
166
 
167
  wire [31:0]S_AXI_araddr;
168
  wire [1:0]S_AXI_arburst;
169
  wire [3:0]S_AXI_arcache;
170
  wire [2:0]S_AXI_arid;
171
  wire [7:0]S_AXI_arlen;
172
  wire [0:0]S_AXI_arlock;
173
  wire [2:0]S_AXI_arprot;
174
  wire [3:0]S_AXI_arqos;
175
  wire S_AXI_arready;
176
  wire [3:0]S_AXI_arregion;
177
  wire [2:0]S_AXI_arsize;
178
  wire [4:0]S_AXI_aruser;
179
  wire S_AXI_arvalid;
180
  wire [31:0]S_AXI_awaddr;
181
  wire [1:0]S_AXI_awburst;
182
  wire [3:0]S_AXI_awcache;
183
  wire [2:0]S_AXI_awid;
184
  wire [7:0]S_AXI_awlen;
185
  wire [0:0]S_AXI_awlock;
186
  wire [2:0]S_AXI_awprot;
187
  wire [3:0]S_AXI_awqos;
188
  wire S_AXI_awready;
189
  wire [3:0]S_AXI_awregion;
190
  wire [2:0]S_AXI_awsize;
191
  wire [4:0]S_AXI_awuser;
192
  wire S_AXI_awvalid;
193
  wire [2:0]S_AXI_bid;
194
  wire S_AXI_bready;
195
  wire [1:0]S_AXI_bresp;
196
  wire S_AXI_bvalid;
197
  wire [63:0]S_AXI_rdata;
198
  wire [2:0]S_AXI_rid;
199
  wire S_AXI_rlast;
200
  wire S_AXI_rready;
201
  wire [1:0]S_AXI_rresp;
202
  wire [4:0]S_AXI_ruser;
203
  wire S_AXI_rvalid;
204
  wire [63:0]S_AXI_wdata;
205
  wire S_AXI_wlast;
206
  wire S_AXI_wready;
207
  wire [7:0]S_AXI_wstrb;
208
  wire [4:0]S_AXI_wuser;
209
  wire S_AXI_wvalid;
210
 
211
  wire [4:0]btns_5bits_tri_i;
212
  wire [7:0]leds_8bits_tri_o;
213
  wire [7:0]sws_8bits_tri_i;
214
 
215
  wire [7:0] w_vr;
216
  wire [7:0] w_vg;
217
  wire [7:0] w_vb;
218
  wire       w_int;
219
  assign o_vr = w_vr[7:4];
220
  assign o_vg = w_vg[7:4];
221
  assign o_vb = w_vb[7:4];
222
  wire [1:0] w_debug;
223
  wire       w_de;
224
   wire      clk_v_pll;
225
   wire      clk_v_pll_90;
226
   wire      clkfb;
227
   wire      clk_125;
228
 
229
 
230
   PLLE2_BASE  #(
231
      .BANDWIDTH("OPTIMIZED"),
232
      .CLKFBOUT_MULT(10),
233
      .CLKFBOUT_PHASE(0.0),
234
      .CLKIN1_PERIOD(10.0),
235
      .CLKOUT0_DIVIDE(40),
236
      .CLKOUT1_DIVIDE(40),
237
      .CLKOUT2_DIVIDE(40),
238
      .CLKOUT3_DIVIDE(8),
239
      .CLKOUT4_DIVIDE(1),
240
      .CLKOUT5_DIVIDE(1),
241
      .CLKOUT0_DUTY_CYCLE(0.5),
242
      .CLKOUT1_DUTY_CYCLE(0.5),
243
      .CLKOUT2_DUTY_CYCLE(0.5),
244
      .CLKOUT3_DUTY_CYCLE(0.5),
245
      .CLKOUT4_DUTY_CYCLE(0.5),
246
      .CLKOUT5_DUTY_CYCLE(0.5),
247
      .CLKOUT0_PHASE(0.0),
248
      .CLKOUT1_PHASE(0.0),
249
      .CLKOUT2_PHASE(135.0),
250
      .CLKOUT3_PHASE(0.0),
251
      .CLKOUT4_PHASE(0.0),
252
      .CLKOUT5_PHASE(0.0),
253
      .DIVCLK_DIVIDE(1),
254
      .REF_JITTER1(0.0),
255
      .STARTUP_WAIT("FALSE")
256
   ) u_PLLE2_BASE
257
   (
258
      .CLKOUT0(),
259
      .CLKOUT1(clk_v_pll),
260
      .CLKOUT2(clk_v_pll_90),
261
      .CLKOUT3(clk_125),
262
      .CLKOUT4(),
263
      .CLKOUT5(),
264
      .CLKFBOUT(clkfb),
265
      .LOCKED(),
266
      .CLKIN1(CLK_100),
267
      .PWRDWN(),
268
      .RST(0),
269
      .CLKFBIN(clkfb)
270
   );
271
 
272
   zq_top u_zq_top (
273
    // system
274
    .clk_core(FCLK_CLK0),
275
    .rst_x(FCLK_RESET0_N),
276
    .o_int(w_int),
277
    // AXI Slave
278
    //   write port
279
    .i_awid_s(M_AXI_awid[7:0]),
280
    .i_awaddr_s(M_AXI_awaddr),
281
    .i_awlen_s({1'b0,M_AXI_awlen[3:0]}),
282
    .i_awsize_s(M_AXI_awsize),
283
    .i_awburst_s(M_AXI_awburst),
284
    .i_awlock_s('d0),
285
    .i_awcache_s('d0),
286
    .i_awprot_s('d0),
287
    .i_awvalid_s(M_AXI_awvalid),
288
    .o_awready_s(M_AXI_awready),
289
    .i_wid_s(M_AXI_awid[7:0]),
290
    .i_wdata_s(M_AXI_wdata),
291
    .i_wstrb_s(M_AXI_wstrb),
292
    .i_wlast_s(M_AXI_wlast),
293
    .i_wvalid_s(M_AXI_wvalid),
294
    .o_wready_s(M_AXI_wready),
295
    .o_bid_s(M_AXI_bid[7:0]),
296
    .o_bresp_s(M_AXI_bresp),
297
    .o_bvalid_s(M_AXI_bvalid),
298
    .i_bready_s(M_AXI_bready),
299
    //   read port
300
    .i_arid_s(M_AXI_arid[7:0]),
301
    .i_araddr_s(M_AXI_araddr),
302
    .i_arlen_s({1'b0,M_AXI_arlen[3:0]}),
303
    .i_arsize_s(M_AXI_arsize),
304
    .i_arburst_s(M_AXI_arburst),
305
    .i_arlock_s('d0),
306
    .i_arcache_s('d0),
307
    .i_arprot_s('d0),
308
    .i_arvalid_s(M_AXI_arvalid),
309
    .o_arready_s(M_AXI_arready),
310
    .o_rid_s(M_AXI_rid[7:0]),
311
    .o_rdata_s(M_AXI_rdata),
312
    .o_rresp_s(M_AXI_rresp),
313
    .o_rlast_s(M_AXI_rlast),
314
    .o_rvalid_s(M_AXI_rvalid),
315
    .i_rready_s(M_AXI_rready),
316
    // AXI Master
317
    .o_awid_m(S_AXI_awid),
318
    .o_awaddr_m(S_AXI_awaddr),
319
    .o_awlen_m(S_AXI_awlen[4:0]),
320
    .o_awsize_m(S_AXI_awsize),
321
    .o_awburst_m(S_AXI_awburst),
322
    .o_awlock_m(S_AXI_awlock),
323
    .o_awcache_m(S_AXI_awcache),
324
    .o_awuser_m(S_AXI_awuser),
325
    .o_awprot_m(S_AXI_awprot),
326
    .o_awvalid_m(S_AXI_awvalid),
327
    .i_awready_m(S_AXI_awready),
328
    .o_wid_m(),
329
    .o_wdata_m(S_AXI_wdata),
330
    .o_wstrb_m(S_AXI_wstrb),
331
    .o_wlast_m(S_AXI_wlast),
332
    .o_wvalid_m(S_AXI_wvalid),
333
    .i_wready_m(S_AXI_wready),
334
    .i_bid_m(S_AXI_bid),
335
    .i_bresp_m(S_AXI_bresp),
336
    .i_bvalid_m(S_AXI_bvalid),
337
    .o_bready_m(S_AXI_bready),
338
    .o_arid_m(S_AXI_arid),
339
    .o_araddr_m(S_AXI_araddr),
340
    .o_arlen_m(S_AXI_arlen[4:0]),
341
    .o_arsize_m(S_AXI_arsize),
342
    .o_arburst_m(S_AXI_arburst),
343
    .o_arlock_m(S_AXI_arlock),
344
    .o_arcache_m(S_AXI_arcache),
345
    .o_aruser_m(S_AXI_aruser),
346
    .o_arprot_m(S_AXI_arprot),
347
    .o_arvalid_m(S_AXI_arvalid),
348
    .i_arready_m(S_AXI_arready),
349
    .i_rid_m(S_AXI_rid),
350
    .i_rdata_m(S_AXI_rdata),
351
    .i_rresp_m(S_AXI_rresp),
352
    .i_rlast_m(S_AXI_rlast),
353
    .i_rvalid_m(S_AXI_rvalid),
354
    .o_rready_m(S_AXI_rready),
355
    // Video out
356
    .clk_v(clk_v_pll),
357
    .o_blank_x(w_de),
358
    .o_hsync_x(o_hsync_x),
359
    .o_vsync_x(o_vsync_x),
360
    .o_vr(w_vr),
361
    .o_vg(w_vg),
362
    .o_vb(w_vb)
363
  );
364
 
365
zed_base zed_base_i
366
       (.IRQ_F2P(w_int),
367
        .DDR_addr(DDR_addr),
368
        .DDR_ba(DDR_ba),
369
        .DDR_cas_n(DDR_cas_n),
370
        .DDR_ck_n(DDR_ck_n),
371
        .DDR_ck_p(DDR_ck_p),
372
        .DDR_cke(DDR_cke),
373
        .DDR_cs_n(DDR_cs_n),
374
        .DDR_dm(DDR_dm),
375
        .DDR_dq(DDR_dq),
376
        .DDR_dqs_n(DDR_dqs_n),
377
        .DDR_dqs_p(DDR_dqs_p),
378
        .DDR_odt(DDR_odt),
379
        .DDR_ras_n(DDR_ras_n),
380
        .DDR_reset_n(DDR_reset_n),
381
        .DDR_we_n(DDR_we_n),
382
        .FCLK_CLK0(FCLK_CLK0),
383
        .FCLK_RESET0_N(FCLK_RESET0_N),
384
        .FIXED_IO_ddr_vrn(FIXED_IO_ddr_vrn),
385
        .FIXED_IO_ddr_vrp(FIXED_IO_ddr_vrp),
386
        .FIXED_IO_mio(FIXED_IO_mio),
387
        .FIXED_IO_ps_clk(FIXED_IO_ps_clk),
388
        .FIXED_IO_ps_porb(FIXED_IO_ps_porb),
389
        .FIXED_IO_ps_srstb(FIXED_IO_ps_srstb),
390
        .M_AXI_araddr(M_AXI_araddr),
391
        .M_AXI_arburst(M_AXI_arburst),
392
        .M_AXI_arcache(M_AXI_arcache),
393
        .M_AXI_arid(M_AXI_arid),
394
        .M_AXI_arlen(M_AXI_arlen),
395
        .M_AXI_arlock(M_AXI_arlock),
396
        .M_AXI_arprot(M_AXI_arprot),
397
        .M_AXI_arqos(M_AXI_arqos),
398
        .M_AXI_arready(M_AXI_arready),
399
        .M_AXI_arsize(M_AXI_arsize),
400
        .M_AXI_arvalid(M_AXI_arvalid),
401
        .M_AXI_awaddr(M_AXI_awaddr),
402
        .M_AXI_awburst(M_AXI_awburst),
403
        .M_AXI_awcache(M_AXI_awcache),
404
        .M_AXI_awid(M_AXI_awid),
405
        .M_AXI_awlen(M_AXI_awlen),
406
        .M_AXI_awlock(M_AXI_awlock),
407
        .M_AXI_awprot(M_AXI_awprot),
408
        .M_AXI_awqos(M_AXI_awqos),
409
        .M_AXI_awready(M_AXI_awready),
410
        .M_AXI_awsize(M_AXI_awsize),
411
        .M_AXI_awvalid(M_AXI_awvalid),
412
        .M_AXI_bid(M_AXI_bid),
413
        .M_AXI_bready(M_AXI_bready),
414
        .M_AXI_bresp(M_AXI_bresp),
415
        .M_AXI_bvalid(M_AXI_bvalid),
416
        .M_AXI_rdata(M_AXI_rdata),
417
        .M_AXI_rid(M_AXI_rid),
418
        .M_AXI_rlast(M_AXI_rlast),
419
        .M_AXI_rready(M_AXI_rready),
420
        .M_AXI_rresp(M_AXI_rresp),
421
        .M_AXI_rvalid(M_AXI_rvalid),
422
        .M_AXI_wdata(M_AXI_wdata),
423
        .M_AXI_wid(M_AXI_wid),
424
        .M_AXI_wlast(M_AXI_wlast),
425
        .M_AXI_wready(M_AXI_wready),
426
        .M_AXI_wstrb(M_AXI_wstrb),
427
        .M_AXI_wvalid(M_AXI_wvalid),
428
        .S_AXI_araddr(S_AXI_araddr),
429
        .S_AXI_arburst(S_AXI_arburst),
430
        .S_AXI_arcache(S_AXI_arcache),
431
        .S_AXI_arlen(S_AXI_arlen),
432
        .S_AXI_arlock(S_AXI_arlock),
433
        .S_AXI_arprot(S_AXI_arprot),
434
        .S_AXI_arqos(S_AXI_arqos),
435
        .S_AXI_arready(S_AXI_arready),
436
        .S_AXI_arsize(S_AXI_arsize),
437
        .S_AXI_aruser(S_AXI_aruser),
438
        .S_AXI_arvalid(S_AXI_arvalid),
439
        .S_AXI_awaddr(S_AXI_awaddr),
440
        .S_AXI_awburst(S_AXI_awburst),
441
        .S_AXI_awcache(S_AXI_awcache),
442
        .S_AXI_awlen(S_AXI_awlen),
443
        .S_AXI_awlock(S_AXI_awlock),
444
        .S_AXI_awprot(S_AXI_awprot),
445
        .S_AXI_awqos(S_AXI_awqos),
446
        .S_AXI_awready(S_AXI_awready),
447
        .S_AXI_awsize(S_AXI_awsize),
448
        .S_AXI_awuser(S_AXI_awuser),
449
        .S_AXI_awvalid(S_AXI_awvalid),
450
        .S_AXI_bready(S_AXI_bready),
451
        .S_AXI_bresp(S_AXI_bresp),
452
        .S_AXI_bvalid(S_AXI_bvalid),
453
        .S_AXI_rdata(S_AXI_rdata),
454
        .S_AXI_rlast(S_AXI_rlast),
455
        .S_AXI_rready(S_AXI_rready),
456
        .S_AXI_rresp(S_AXI_rresp),
457
        .S_AXI_rvalid(S_AXI_rvalid),
458
        .S_AXI_wdata(S_AXI_wdata),
459
        .S_AXI_wlast(S_AXI_wlast),
460
        .S_AXI_wready(S_AXI_wready),
461
        .S_AXI_wstrb(S_AXI_wstrb),
462
        .S_AXI_wvalid(S_AXI_wvalid),
463
        .btns_5bits_tri_i(btns_5bits_tri_i),
464
        .leds_8bits_tri_o(leds_8bits_tri_o),
465
        .sws_8bits_tri_i(sws_8bits_tri_i));
466
endmodule

powered by: WebSVN 2.1.0

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