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

Subversion Repositories qaz_libs

[/] [qaz_libs/] [trunk/] [PCIe/] [syn/] [a10gx_riffa/] [a10gx_riffa.sv] - Blame information for rev 49

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 49 qaztronic
//////////////////////////////////////////////////////////////////////
2
////                                                              ////
3
//// Copyright (C) 2018 Authors and OPENCORES.ORG                 ////
4
////                                                              ////
5
//// This source file may be used and distributed without         ////
6
//// restriction provided that this copyright statement is not    ////
7
//// removed from the file and that any derivative work contains  ////
8
//// the original copyright notice and the associated disclaimer. ////
9
////                                                              ////
10
//// This source file is free software; you can redistribute it   ////
11
//// and/or modify it under the terms of the GNU Lesser General   ////
12
//// Public License as published by the Free Software Foundation; ////
13
//// either version 2.1 of the License, or (at your option) any   ////
14
//// later version.                                               ////
15
////                                                              ////
16
//// This source is distributed in the hope that it will be       ////
17
//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////
18
//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////
19
//// PURPOSE.  See the GNU Lesser General Public License for more ////
20
//// details.                                                     ////
21
////                                                              ////
22
//// You should have received a copy of the GNU Lesser General    ////
23
//// Public License along with this source; if not, download it   ////
24
//// from http://www.opencores.org/lgpl.shtml                     ////
25
////                                                              ////
26
//////////////////////////////////////////////////////////////////////
27
 
28
module
29
  a10gx_riffa
30
  #(// Number of RIFFA Channels
31
    C_NUM_CHNL,
32
    // Number of PCIe Lanes
33
    C_NUM_LANES,
34
    // Settings from Quartus IP Library
35
    C_PCI_DATA_WIDTH,
36
    C_MAX_PAYLOAD_BYTES,
37
    C_LOG_NUM_TAGS,
38
    C_FPGA_ID
39
  )
40
  (
41
    input  [ 7:0]  pcie_rx_p,          //PCML14  //PCIe Receive Data-req's OCT
42
    output [ 7:0]  pcie_tx_p,          //PCML14  //PCIe Transmit Data
43
    input          pcie_edge_refclk_p, //HCSL    //PCIe Clock- Terminate on MB
44
    input          pcie_perstn,        //1.8V    //PCIe Reset
45
    input          npor,
46
 
47
    riffa_chnl_if chnl_bus[C_NUM_CHNL],
48
 
49
    output chnl_reset,
50
    output chnl_clk
51
  );
52
 
53
  // --------------------------------------------------------------------
54
  import riffa_pkg::*;
55
 
56
  // --------------------------------------------------------------------
57
  wire [3:0]                  tl_cfg_add;
58
  wire [31:0]                 tl_cfg_ctl;
59
  wire [52:0]                 tl_cfg_sts;
60
  wire [0:0]                  rx_st_sop;
61
  wire [0:0]                  rx_st_eop;
62
  wire [0:0]                  rx_st_err;
63
  wire [0:0]                  rx_st_valid;
64
  wire [0:0]                  rx_st_empty;
65
  wire                        rx_st_ready;
66
  wire [C_PCI_DATA_WIDTH-1:0] rx_st_data;
67
  wire [0:0]                  tx_st_sop;
68
  wire [0:0]                  tx_st_eop;
69
  wire [0:0]                  tx_st_err;
70
  wire [0:0]                  tx_st_valid;
71
  wire                        tx_st_ready;
72
  wire [C_PCI_DATA_WIDTH-1:0] tx_st_data;
73
  wire [0:0]                  tx_st_empty;
74
  wire                        pld_clk;
75
  wire                        reset_status;
76
  wire                        app_msi_req;
77
  wire                        app_msi_ack;
78
  wire [7:0]                  ko_cpl_spc_header;
79
  wire [11:0]                 ko_cpl_spc_data;
80
 
81
  a10gx_riffa_pcie #(.C_PCI_DATA_WIDTH(C_PCI_DATA_WIDTH))
82
    a10gx_riffa_pcie_i(.*);
83
 
84
  // --------------------------------------------------------------------
85
  wire [C_NUM_CHNL-1:0]                     CHNL_RX_CLK;
86
  wire [C_NUM_CHNL-1:0]                     CHNL_RX;
87
  wire [C_NUM_CHNL-1:0]                     CHNL_RX_ACK;
88
  wire [C_NUM_CHNL-1:0]                     CHNL_RX_LAST;
89
  wire [(C_NUM_CHNL*32)-1:0]                CHNL_RX_LEN;
90
  wire [(C_NUM_CHNL*31)-1:0]                CHNL_RX_OFF;
91
  wire [(C_NUM_CHNL*C_PCI_DATA_WIDTH)-1:0]  CHNL_RX_DATA;
92
  wire [C_NUM_CHNL-1:0]                     CHNL_RX_DATA_VALID;
93
  wire [C_NUM_CHNL-1:0]                     CHNL_RX_DATA_REN;
94
  wire [C_NUM_CHNL-1:0]                     CHNL_TX_CLK;
95
  wire [C_NUM_CHNL-1:0]                     CHNL_TX;
96
  wire [C_NUM_CHNL-1:0]                     CHNL_TX_ACK;
97
  wire [C_NUM_CHNL-1:0]                     CHNL_TX_LAST;
98
  wire [(C_NUM_CHNL*32)-1:0]                CHNL_TX_LEN;
99
  wire [(C_NUM_CHNL*31)-1:0]                CHNL_TX_OFF;
100
  wire [(C_NUM_CHNL*C_PCI_DATA_WIDTH)-1:0]  CHNL_TX_DATA;
101
  wire [C_NUM_CHNL-1:0]                     CHNL_TX_DATA_VALID;
102
  wire [C_NUM_CHNL-1:0]                     CHNL_TX_DATA_REN;
103
 
104
  riffa_chnl_w
105
    #(
106
      .C_NUM_CHNL(C_NUM_CHNL),
107
      .C_PCI_DATA_WIDTH(C_PCI_DATA_WIDTH),
108
      .SIG_CHNL_LENGTH_W(SIG_CHNL_LENGTH_W),
109
      .SIG_CHNL_OFFSET_W(SIG_CHNL_OFFSET_W)
110
    )
111
    riffa_chnl_w_i(.*);
112
 
113
  // --------------------------------------------------------------------
114
  wire rst_out;
115
  wire riffa_reset;
116
  wire riffa_clk;
117
  assign riffa_reset = reset_status;
118
  assign riffa_clk = pld_clk;
119
  assign chnl_clk = pld_clk;
120
  assign chnl_reset = rst_out;
121
 
122
  riffa_wrapper_a10gx
123
    #(
124
      .C_LOG_NUM_TAGS               (C_LOG_NUM_TAGS),
125
      .C_NUM_CHNL                   (C_NUM_CHNL),
126
      .C_PCI_DATA_WIDTH             (C_PCI_DATA_WIDTH),
127
      .C_MAX_PAYLOAD_BYTES          (C_MAX_PAYLOAD_BYTES),
128
      .C_FPGA_ID                    (C_FPGA_ID)
129
    )
130
    riffa
131
    (
132
      .RX_ST_READY                   (rx_st_ready),
133
      .TX_ST_DATA                    (tx_st_data[C_PCI_DATA_WIDTH-1:0]),
134
      .TX_ST_VALID                   (tx_st_valid[0:0]),
135
      .TX_ST_EOP                     (tx_st_eop[0:0]),
136
      .TX_ST_SOP                     (tx_st_sop[0:0]),
137
      .TX_ST_EMPTY                   (tx_st_empty[0:0]),
138
      .APP_MSI_REQ                   (app_msi_req),
139
      .RST_OUT                       (rst_out),
140
      // Inputs
141
      .RX_ST_DATA                    (rx_st_data[C_PCI_DATA_WIDTH-1:0]),
142
      .RX_ST_EOP                     (rx_st_eop[0:0]),
143
      .RX_ST_SOP                     (rx_st_sop[0:0]),
144
      .RX_ST_VALID                   (rx_st_valid[0:0]),
145
      .RX_ST_EMPTY                   (rx_st_empty[0:0]),
146
      .TX_ST_READY                   (tx_st_ready),
147
      .TL_CFG_CTL                    (tl_cfg_ctl[SIG_CFG_CTL_W-1:0]),
148
      .TL_CFG_ADD                    (tl_cfg_add[SIG_CFG_ADD_W-1:0]),
149
      .TL_CFG_STS                    (tl_cfg_sts[SIG_CFG_STS_W-1:0]),
150
      .KO_CPL_SPC_HEADER             (ko_cpl_spc_header[SIG_KO_CPLH_W-1:0]),
151
      .KO_CPL_SPC_DATA               (ko_cpl_spc_data[SIG_KO_CPLD_W-1:0]),
152
      .APP_MSI_ACK                   (app_msi_ack),
153
      .PLD_CLK                       (pld_clk),
154
      .RESET_STATUS                  (reset_status),
155
      .*
156
    );
157
 
158
// --------------------------------------------------------------------
159
endmodule

powered by: WebSVN 2.1.0

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