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

Subversion Repositories pcie_sg_dma

[/] [pcie_sg_dma/] [branches/] [Virtex6/] [ML605_ISE12.3/] [ml605_link_wrapper.v] - Rev 11

Compare with Previous | Blame | View Log

`include "mgt_parameters.h"
 
module ml605_link_wrapper #
(
 parameter SIMULATION  = 0,
 parameter DATAWIDTH   = 16,
 parameter WORDS       = DATAWIDTH/8,
 parameter ALIGN_CHAR  = `K285,
 parameter READY_CHAR0 = `K284,
 parameter READY_CHAR1 = `K287
)
(
 input         TILE0_REFCLK_PAD_N_IN,
 input         TILE0_REFCLK_PAD_P_IN,
 input         RXN_IN,
 input         RXP_IN,
 output wire   TXN_OUT,
 output wire   TXP_OUT,
 input  wire   SFP_LOS,
 
 output wire tx_clk,
 output wire rx_clk,
 output wire link_active,
 
 output wire ctrl2send_stop,
 input wire ctrl2send_start,
 input wire ctrl2send_end,
 input wire [15:0] ctrl2send,
 
 output wire data2send_stop,
 input wire data2send_start,
 input wire data2send_end,
 input wire [15:0] data2send,
 
 input wire dlm2send_valid,
 input wire [3:0] dlm2send,
 
 output wire [3:0] dlm_rec,
 output wire dlm_rec_valid,
 
 output wire data_rec_start,
 output wire data_rec_end,
 output wire [15:0] data_rec,
 output wire crc_error_rec,
 input wire data_rec_stop,
 
 output wire ctrl_rec_start,
 output wire ctrl_rec_end,
 output wire [15:0] ctrl_rec,
 input wire ctrl_rec_stop
 
);
 
`include "cbm_lp_defines.h"
 
wire [1:0]  TXN_OUT_i;
wire [1:0]  TXP_OUT_i;
wire tx_ready0;
wire rx_ready0;
wire [DATAWIDTH-1:0] rx_data0;
wire [WORDS-1:0] rx_charisk0;
wire [DATAWIDTH-1:0] tx_data0;
wire [WORDS-1:0] tx_charisk0;
 
wire [(DATAWIDTH-1):0] rx_data2fifo0;
wire [(WORDS-1):0] rx_charisk2fifo0;
 
wire [(DATAWIDTH-1):0] rx_data2idlefilter0;
wire [(WORDS-1):0] rx_charisk2idlefilter0;
 
wire [(DATAWIDTH-1):0] rx_data2idlemux0;
wire [(WORDS-1):0] rx_charisk2idlemux0;
 
reg [(DATAWIDTH-1):0] rx_data2serdes_temp0;
reg [(WORDS-1):0] rx_charisk2serdes_temp0;
 
reg [(DATAWIDTH-1):0] rx_data2serdes0;
reg [(WORDS-1):0] rx_charisk2serdes0;
 
reg no_idle0;
wire rxfifo_shift_out0;
reg rxfifo_shift_out_del0;
 
 
 
  assign TXN_OUT = TXN_OUT_i[0];
  assign TXP_OUT = TXP_OUT_i[0];
 
  gtp_det_lat_wrapper_16bit #
  (
   .ALIGN_CHAR(`K285),
   .READY_CHAR0(`K284),
   .READY_CHAR1(`K287),
   .SIMULATION(SIMULATION)     //some things get adjusted for simulation
  )
  gtp_wrapper_i
  (
   .TILE0_REFCLK_PAD_N_IN (TILE0_REFCLK_PAD_N_IN),
   .TILE0_REFCLK_PAD_P_IN (TILE0_REFCLK_PAD_P_IN),
   .GTPRESET_IN           (1'b0),
   .TILE0_PLLLKDET_OUT    ( ),                      //
   .RXN_IN                ({1'b0, RXN_IN}),
   .RXP_IN                ({1'b0, RXP_IN}),
   .TXN_OUT               (TXN_OUT_i),
   .TXP_OUT               (TXP_OUT_i),
   .SFP_LOS               ({1'b0, SFP_LOS}),
 
   .TX_USRCLK             (tx_clk),
   .RX_USRCLK0            (rx_clk),
   .RX_USRCLK1            ( ),                      //
   .TX_READY0             (tx_ready0),
   .TX_READY1             ( ),                      //
   .RX_READY0             (rx_ready0),
   .RX_READY1             ( ),                      //
   .RX_DATA0              (rx_data2fifo0),
   .RX_DATA1              ( ),                      //
   .RX_CHARISK0           (rx_charisk2fifo0),
   .RX_CHARISK1           ( ),                      //
   .TX_DATA0              (tx_data0),
   .TX_DATA1              ('b0),
   .TX_CHARISK0           (tx_charisk0),
   .TX_CHARISK1           ('b0)
  );            
 
 
syncfifo4cbm rx0_fifo
(
  .res_n(rx_ready0),
  .w_clk(rx_clk),
  .r_clk(tx_clk),
  .data_in(rx_data2fifo0),
  .charisk_in(rx_charisk2fifo0),
  .data_out(rx_data0),
  .charisk_out(rx_charisk0)
);
 
 
lp_cbm_top lp_cbm_top_I0(
    .clk(tx_clk),
    .res_n(tx_ready0),
    .link_active(link_active),
    .link_clk(),
 
    .ctrl2send_stop(ctrl2send_stop),
    .ctrl2send_start(ctrl2send_start),
    .ctrl2send_end(ctrl2send_end),
    .ctrl2send(ctrl2send),
    .crc_error_send(1'b0),
 
    .data2send_stop(data2send_stop),
    .data2send_start(data2send_start),
    .data2send_end(data2send_end),
    .data2send(data2send),
 
    .dlm2send_va(dlm2send_valid),
    .dlm2send(dlm2send),
 
    .dlm_rec_type(dlm_rec),
    .dlm_rec_va(dlm_rec_valid),
 
    .data_rec(data_rec),
    .data_rec_start(data_rec_start),
    .data_rec_end(data_rec_end),
    .data_rec_stop(data_rec_stop),
    .crc_error_rec(crc_error_rec),
 
    .ctrl_rec(ctrl_rec),
    .ctrl_rec_start(ctrl_rec_start),
    .ctrl_rec_end(ctrl_rec_end),               
    .ctrl_rec_stop(ctrl_rec_stop),
 
    .clk_link(tx_clk),
    .data_from_link({rx_charisk0, rx_data0}),
    .data2link({tx_charisk0, tx_data0}),
 
    .cable_detected(rx_ready0),
    .dll_locked(rx_ready0)
);
 
 
endmodule

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

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