~ubuntu-branches/ubuntu/utopic/uhd/utopic

« back to all changes in this revision

Viewing changes to fpga/usrp3/top/x300/x300_pcie_int.v

  • Committer: Package Import Robot
  • Author(s): A. Maitland Bottoms
  • Date: 2014-07-01 22:34:32 UTC
  • mfrom: (9.1.11 sid)
  • Revision ID: package-import@ubuntu.com-20140701223432-beg73ip3q8b3lgeg
Tags: 3.7.1-2
* Apply maint branch fixes through release_003_007_001-49-gdf4cf6d
* Fix B2xx udev rules

Show diffs side-by-side

added added

removed removed

Lines of Context:
86
86
    //---------------------------------------------------------
87
87
    // Misc
88
88
    //---------------------------------------------------------
89
 
    input [31:0]    misc_status,
 
89
    input [15:0]    misc_status,
90
90
    output [127:0]  debug
91
91
);
92
92
 
143
143
    //
144
144
    //*******************************************************************************
145
145
 
146
 
    wire [NUM_TX_STREAMS-1:0]                           dmatx_clear, dmatx_samp_stb, dmatx_pkt_stb, dmatx_error;
 
146
    wire [NUM_TX_STREAMS-1:0]                           dmatx_clear, dmatx_enabled;
 
147
    wire [NUM_TX_STREAMS-1:0]                           dmatx_samp_stb, dmatx_pkt_stb, dmatx_busy, dmatx_error;
147
148
    wire [(NUM_TX_STREAMS*DMA_FRAME_SIZE_WIDTH)-1:0]    dmatx_frame_size;
148
149
    wire [(NUM_TX_STREAMS*3)-1:0]                       dmatx_swap;
149
150
 
150
 
    wire [NUM_RX_STREAMS-1:0]                           dmarx_clear, dmarx_samp_stb, dmarx_pkt_stb, dmarx_error;
 
151
    wire [NUM_RX_STREAMS-1:0]                           dmarx_clear, dmarx_enabled;
 
152
    wire [NUM_RX_STREAMS-1:0]                           dmarx_samp_stb, dmarx_pkt_stb, dmarx_busy, dmarx_error;
151
153
    wire [(NUM_RX_STREAMS*DMA_FRAME_SIZE_WIDTH)-1:0]    dmarx_frame_size;
152
154
    wire [(NUM_TX_STREAMS*3)-1:0]                       dmarx_swap;
153
155
    wire [DMA_STREAM_WIDTH-1:0]                         dmarx_header;
188
190
        .e3_rego_tdata(rego_tdata), .e3_rego_tvalid(rego_tvalid), .e3_rego_tready(rego_tready)
189
191
    );
190
192
    assign regi_tlast = regi_tvalid;
 
193
    
 
194
    wire [15:0] fpga_status;
 
195
    assign fpga_status[7:0]    = {|(dmatx_error), 1'b0, dmatx_enabled};
 
196
    assign fpga_status[15:8]   = {|(dmarx_error), 1'b0, dmarx_enabled};
191
197
 
192
 
    pcie_basic_regs basic_regs (
 
198
    pcie_basic_regs #(
 
199
        .SIGNATURE(32'h58333030 /*ASCII:"X300"*/), .CLK_FREQ(32'd166666667 /*bus_clk = 166.666667MHz*/)
 
200
    ) basic_regs (
193
201
        .clk(bus_clk), .reset(bus_rst),
194
202
        .regi_tdata(basic_regi_tdata), .regi_tvalid(basic_regi_tvalid), .regi_tready(basic_regi_tready),
195
203
        .rego_tdata(basic_rego_tdata), .rego_tvalid(basic_rego_tvalid), .rego_tready(basic_rego_tready),
196
 
        .misc_status(misc_status)
 
204
        .misc_status({fpga_status, misc_status})
197
205
    );
198
206
    
199
207
    pcie_dma_ctrl #(
203
211
        .clk(bus_clk), .reset(bus_rst),
204
212
        .regi_tdata(dmatx_regi_tdata), .regi_tvalid(dmatx_regi_tvalid), .regi_tready(dmatx_regi_tready),
205
213
        .rego_tdata(dmatx_rego_tdata), .rego_tvalid(dmatx_rego_tvalid), .rego_tready(dmatx_rego_tready),
206
 
        .set_clear(dmatx_clear), .set_frame_size(dmatx_frame_size), .sample_stb(dmatx_samp_stb), .packet_stb(dmatx_pkt_stb), 
207
 
        .swap_lanes(dmatx_swap), .stream_err(dmatx_error), .rtr_sid(8'h00), .rtr_dst()
 
214
        .set_enabled(dmatx_enabled), .set_clear(dmatx_clear), .set_frame_size(dmatx_frame_size),
 
215
        .sample_stb(dmatx_samp_stb), .packet_stb(dmatx_pkt_stb), 
 
216
        .swap_lanes(dmatx_swap), .stream_busy(dmatx_busy), .stream_err(dmatx_error), .rtr_sid(8'h00), .rtr_dst()
208
217
    );
209
218
    
210
219
    pcie_dma_ctrl #(
214
223
        .clk(bus_clk), .reset(bus_rst),
215
224
        .regi_tdata(dmarx_regi_tdata), .regi_tvalid(dmarx_regi_tvalid), .regi_tready(dmarx_regi_tready),
216
225
        .rego_tdata(dmarx_rego_tdata), .rego_tvalid(dmarx_rego_tvalid), .rego_tready(dmarx_rego_tready),
217
 
        .set_clear(dmarx_clear), .set_frame_size(dmarx_frame_size), .sample_stb(dmarx_samp_stb), .packet_stb(dmarx_pkt_stb), 
218
 
        .swap_lanes(dmarx_swap), .stream_err(dmarx_error), .rtr_sid(dmarx_header[7:0]), .rtr_dst(dmarx_pkt_dest)
 
226
        .set_enabled(dmarx_enabled), .set_clear(dmarx_clear), .set_frame_size(dmarx_frame_size),
 
227
        .sample_stb(dmarx_samp_stb), .packet_stb(dmarx_pkt_stb), 
 
228
        .swap_lanes(dmarx_swap), .stream_busy(dmarx_busy), .stream_err(dmarx_error), .rtr_sid(dmarx_header[7:0]), .rtr_dst(dmarx_pkt_dest)
219
229
    );
220
230
    //
221
231
    //*******************************************************************************
223
233
    //*******************************************************************************
224
234
    // TX DMA Datapath
225
235
    //
226
 
    wire [(NUM_TX_STREAMS*DMA_STREAM_WIDTH)-1:0]    dmatx_tdata_bclk,  dmatx_tdata_trun,  dmatx_tdata_gt, dmatx_tdata_swap;
227
 
    wire [NUM_TX_STREAMS-1:0]                       dmatx_tvalid_bclk, dmatx_tvalid_trun, dmatx_tvalid_gt;
228
 
    wire [NUM_TX_STREAMS-1:0]                       dmatx_tready_bclk, dmatx_tready_trun, dmatx_tready_gt;
229
 
    wire [NUM_TX_STREAMS-1:0]                                          dmatx_tlast_trun,  dmatx_tlast_gt;
 
236
    wire [(NUM_TX_STREAMS*DMA_STREAM_WIDTH)-1:0]    dmatx_tdata_bclk,  dmatx_tdata_in, dmatx_tdata_trun,  dmatx_tdata_gt, dmatx_tdata_swap;
 
237
    wire [NUM_TX_STREAMS-1:0]                       dmatx_tvalid_bclk, dmatx_tvalid_in, dmatx_tvalid_trun, dmatx_tvalid_gt;
 
238
    wire [NUM_TX_STREAMS-1:0]                       dmatx_tready_bclk, dmatx_tready_in, dmatx_tready_trun, dmatx_tready_gt;
 
239
    wire [NUM_TX_STREAMS-1:0]                       dmatx_tlast_trun,  dmatx_tlast_gt;
230
240
 
231
241
    wire [DMA_STREAM_WIDTH-1:0]                     dmatx_tdata_mux;
232
242
    wire                                            dmatx_tvalid_mux, dmatx_tlast_mux, dmatx_tready_mux;
240
250
                .o_aclk(bus_clk), .o_tdata(`GET_DMA_BUS(dmatx_tdata_bclk,i)), .o_tvalid(dmatx_tvalid_bclk[i]), .o_tready(dmatx_tready_bclk[i])
241
251
            );
242
252
 
 
253
            pcie_lossy_samp_gate tx_samp_gate (
 
254
                .i_tdata(`GET_DMA_BUS(dmatx_tdata_bclk,i)), .i_tvalid(dmatx_tvalid_bclk[i]), .i_tready(dmatx_tready_bclk[i]),
 
255
                .o_tdata(`GET_DMA_BUS(dmatx_tdata_in,i)), .o_tvalid(dmatx_tvalid_in[i]), .o_tready(dmatx_tready_in[i]),
 
256
                .drop(~dmatx_enabled[i]), .dropping(dmatx_busy[i])
 
257
            );
 
258
 
243
259
            data_swapper_64 tx_data_swapper (
244
 
                .swap_lanes(`GET_SWAP_BUS(dmatx_swap,i)), .i_tdata(`GET_DMA_BUS(dmatx_tdata_bclk,i)), .o_tdata(`GET_DMA_BUS(dmatx_tdata_swap,i))
 
260
                .swap_lanes(`GET_SWAP_BUS(dmatx_swap,i)), .i_tdata(`GET_DMA_BUS(dmatx_tdata_in,i)), .o_tdata(`GET_DMA_BUS(dmatx_tdata_swap,i))
245
261
            );
246
262
 
247
263
            cvita_dechunker tx_dma_dechunker (
248
264
                .clk(bus_clk), .reset(bus_rst), .clear(dmatx_clear[i]), .frame_size(`GET_FSIZE_BUS(dmatx_frame_size, i)),
249
 
                .i_tdata(`GET_DMA_BUS(dmatx_tdata_swap,i)), .i_tvalid(dmatx_tvalid_bclk[i]), .i_tready(dmatx_tready_bclk[i]),
 
265
                .i_tdata(`GET_DMA_BUS(dmatx_tdata_swap,i)), .i_tvalid(dmatx_tvalid_in[i]), .i_tready(dmatx_tready_in[i]),
250
266
                .o_tdata(`GET_DMA_BUS(dmatx_tdata_trun,i)), .o_tlast(dmatx_tlast_trun[i]), .o_tvalid(dmatx_tvalid_trun[i]), .o_tready(dmatx_tready_trun[i]),
251
267
                .error(dmatx_error[i])
252
268
            );
286
302
    //*******************************************************************************
287
303
    // RX DMA Datapath
288
304
    //
289
 
    wire [(NUM_RX_STREAMS*DMA_STREAM_WIDTH)-1:0]    dmarx_tdata_bclk,  dmarx_tdata_pad, dmarx_tdata_swap;
290
 
    wire [NUM_RX_STREAMS-1:0]                       dmarx_tvalid_bclk, dmarx_tvalid_pad;
291
 
    wire [NUM_RX_STREAMS-1:0]                       dmarx_tready_bclk, dmarx_tready_pad;
292
 
    wire [NUM_RX_STREAMS-1:0]                       dmarx_tlast_bclk,  dmarx_tlast_pad;
 
305
    wire [(NUM_RX_STREAMS*DMA_STREAM_WIDTH)-1:0]    dmarx_tdata_bclk,  dmarx_tdata_pad, dmarx_tdata_swap, dmarx_tdata_out;
 
306
    wire [NUM_RX_STREAMS-1:0]                       dmarx_tvalid_bclk, dmarx_tvalid_pad, dmarx_tvalid_out;
 
307
    wire [NUM_RX_STREAMS-1:0]                       dmarx_tready_bclk, dmarx_tready_pad, dmarx_tready_out;
 
308
    wire [NUM_RX_STREAMS-1:0]                       dmarx_tlast_bclk,  dmarx_tlast_pad, dmarx_tlast_out;
293
309
 
294
310
    wire [DMA_STREAM_WIDTH-1:0]                     dmarx_tdata_mux;
295
311
    wire                                            dmarx_tvalid_mux, dmarx_tlast_mux, dmarx_tready_mux;
331
347
                .swap_lanes(`GET_SWAP_BUS(dmarx_swap,j)), .i_tdata(`GET_DMA_BUS(dmarx_tdata_pad,j)), .o_tdata(`GET_DMA_BUS(dmarx_tdata_swap,j))
332
348
            );
333
349
 
 
350
            pcie_lossy_samp_gate rx_samp_gate (
 
351
                .i_tdata(`GET_DMA_BUS(dmarx_tdata_swap,j)), .i_tvalid(dmarx_tvalid_pad[j]), .i_tready(dmarx_tready_pad[j]),
 
352
                .o_tdata(`GET_DMA_BUS(dmarx_tdata_out,j)), .o_tvalid(dmarx_tvalid_out[j]), .o_tready(dmarx_tready_out[j]),
 
353
                .drop(~dmarx_enabled[j]), .dropping(dmarx_busy[j])
 
354
            );
 
355
            
334
356
            axi_fifo_2clk #(.WIDTH(DMA_STREAM_WIDTH), .SIZE(DMA_CLK_XING_FIFO_SIZE)) rx_dma_clock_crossing_fifo (
335
357
                .reset(bus_rst),
336
 
                .i_aclk(bus_clk), .i_tdata(`GET_DMA_BUS(dmarx_tdata_swap,j)), .i_tvalid(dmarx_tvalid_pad[j]), .i_tready(dmarx_tready_pad[j]),
 
358
                .i_aclk(bus_clk), .i_tdata(`GET_DMA_BUS(dmarx_tdata_out,j)), .i_tvalid(dmarx_tvalid_out[j]), .i_tready(dmarx_tready_out[j]),
337
359
                .o_aclk(ioport2_clk), .o_tdata(`GET_DMA_BUS(dmarx_tdata_iop2,j)), .o_tvalid(dmarx_tvalid_iop2[j]), .o_tready(dmarx_tready_iop2[j])
338
360
            );
339
361
        end
340
362
    endgenerate
341
363
    //
342
364
    //*******************************************************************************
343
 
 
 
365
    
344
366
endmodule
345
367
 
346
368
`undef GET_DMA_BUS