2015-08-10 13:05:40 +00:00
|
|
|
// ***************************************************************************
|
|
|
|
// ***************************************************************************
|
|
|
|
// Copyright 2011(c) Analog Devices, Inc.
|
|
|
|
//
|
|
|
|
// All rights reserved.
|
|
|
|
//
|
|
|
|
// Redistribution and use in source and binary forms, with or without modification,
|
|
|
|
// are permitted provided that the following conditions are met:
|
|
|
|
// - Redistributions of source code must retain the above copyright
|
|
|
|
// notice, this list of conditions and the following disclaimer.
|
|
|
|
// - Redistributions in binary form must reproduce the above copyright
|
|
|
|
// notice, this list of conditions and the following disclaimer in
|
|
|
|
// the documentation and/or other materials provided with the
|
|
|
|
// distribution.
|
|
|
|
// - Neither the name of Analog Devices, Inc. nor the names of its
|
|
|
|
// contributors may be used to endorse or promote products derived
|
|
|
|
// from this software without specific prior written permission.
|
|
|
|
// - The use of this software may or may not infringe the patent rights
|
|
|
|
// of one or more patent holders. This license does not release you
|
|
|
|
// from the requirement that you obtain separate licenses from these
|
|
|
|
// patent holders to use this software.
|
|
|
|
// - Use of the software either in source or binary form, must be run
|
|
|
|
// on or directly connected to an Analog Devices Inc. component.
|
|
|
|
//
|
|
|
|
// THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
|
|
|
// INCLUDING, BUT NOT LIMITED TO, NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A
|
|
|
|
// PARTICULAR PURPOSE ARE DISCLAIMED.
|
|
|
|
//
|
|
|
|
// IN NO EVENT SHALL ANALOG DEVICES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
|
|
|
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, INTELLECTUAL PROPERTY
|
|
|
|
// RIGHTS, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
|
|
|
// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
|
|
|
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
|
|
|
|
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
// ***************************************************************************
|
|
|
|
// ***************************************************************************
|
|
|
|
|
|
|
|
`timescale 1ns/100ps
|
|
|
|
|
2015-08-10 15:17:25 +00:00
|
|
|
module util_jesd_gt #(
|
2015-08-10 13:05:40 +00:00
|
|
|
|
2015-10-02 16:53:57 +00:00
|
|
|
parameter integer QPLL_TX_OR_RX_N = 1,
|
|
|
|
parameter integer CPLL_TX_OR_RX_N = 0,
|
2015-08-10 17:42:41 +00:00
|
|
|
parameter integer NUM_OF_LANES = 8,
|
|
|
|
parameter integer RX_ENABLE = 1,
|
2015-08-10 13:05:40 +00:00
|
|
|
parameter integer RX_NUM_OF_LANES = 8,
|
2015-08-10 17:42:41 +00:00
|
|
|
parameter integer TX_ENABLE = 1,
|
2015-08-10 15:17:25 +00:00
|
|
|
parameter integer TX_NUM_OF_LANES = 8)
|
2015-08-10 13:05:40 +00:00
|
|
|
|
|
|
|
(
|
|
|
|
|
2015-08-10 15:17:25 +00:00
|
|
|
// pll clocks & resets
|
|
|
|
|
|
|
|
input qpll_ref_clk,
|
|
|
|
input cpll_ref_clk,
|
|
|
|
|
|
|
|
output qpll0_rst,
|
|
|
|
output qpll0_ref_clk_in,
|
|
|
|
output qpll1_rst,
|
|
|
|
output qpll1_ref_clk_in,
|
|
|
|
|
|
|
|
output cpll_rst_m_0,
|
|
|
|
output cpll_ref_clk_in_0,
|
|
|
|
output cpll_rst_m_1,
|
|
|
|
output cpll_ref_clk_in_1,
|
|
|
|
output cpll_rst_m_2,
|
|
|
|
output cpll_ref_clk_in_2,
|
|
|
|
output cpll_rst_m_3,
|
|
|
|
output cpll_ref_clk_in_3,
|
|
|
|
output cpll_rst_m_4,
|
|
|
|
output cpll_ref_clk_in_4,
|
|
|
|
output cpll_rst_m_5,
|
|
|
|
output cpll_ref_clk_in_5,
|
|
|
|
output cpll_rst_m_6,
|
|
|
|
output cpll_ref_clk_in_6,
|
|
|
|
output cpll_rst_m_7,
|
|
|
|
output cpll_ref_clk_in_7,
|
2015-08-10 13:05:40 +00:00
|
|
|
|
|
|
|
// channel interface (rx)
|
2015-08-10 15:17:25 +00:00
|
|
|
|
|
|
|
input [((RX_NUM_OF_LANES* 1)-1):0] rx_p,
|
|
|
|
input [((RX_NUM_OF_LANES* 1)-1):0] rx_n,
|
|
|
|
input rx_sysref,
|
|
|
|
output rx_sync,
|
|
|
|
|
|
|
|
output rx_out_clk,
|
|
|
|
input rx_clk,
|
|
|
|
output rx_rst,
|
|
|
|
output rx_sof,
|
|
|
|
output [((RX_NUM_OF_LANES*32)-1):0] rx_data,
|
|
|
|
|
|
|
|
output rx_ip_rst,
|
|
|
|
output rx_ip_rst_done,
|
|
|
|
output rx_ip_sysref,
|
|
|
|
input rx_ip_sync,
|
|
|
|
input [ 3:0] rx_ip_sof,
|
|
|
|
input [((RX_NUM_OF_LANES*32)-1):0] rx_ip_data,
|
|
|
|
|
|
|
|
output rx_0_p,
|
|
|
|
output rx_0_n,
|
|
|
|
input rx_rst_0,
|
|
|
|
output rx_rst_m_0,
|
2015-10-02 16:53:57 +00:00
|
|
|
input rx_pll_rst_0,
|
2015-08-10 15:17:25 +00:00
|
|
|
input rx_gt_rst_0,
|
|
|
|
output rx_gt_rst_m_0,
|
|
|
|
input rx_pll_locked_0,
|
|
|
|
output rx_pll_locked_m_0,
|
|
|
|
input rx_user_ready_0,
|
|
|
|
output rx_user_ready_m_0,
|
|
|
|
input rx_rst_done_0,
|
|
|
|
output rx_rst_done_m_0,
|
|
|
|
input rx_out_clk_0,
|
|
|
|
output rx_clk_0,
|
|
|
|
output rx_sysref_0,
|
|
|
|
input rx_sync_0,
|
|
|
|
input rx_sof_0,
|
|
|
|
input [31:0] rx_data_0,
|
|
|
|
input rx_ip_rst_0,
|
|
|
|
output [ 3:0] rx_ip_sof_0,
|
|
|
|
output [31:0] rx_ip_data_0,
|
|
|
|
input rx_ip_sysref_0,
|
|
|
|
output rx_ip_sync_0,
|
|
|
|
input rx_ip_rst_done_0,
|
|
|
|
|
|
|
|
output rx_1_p,
|
|
|
|
output rx_1_n,
|
|
|
|
input rx_rst_1,
|
|
|
|
output rx_rst_m_1,
|
2015-10-02 16:53:57 +00:00
|
|
|
input rx_pll_rst_1,
|
2015-08-10 15:17:25 +00:00
|
|
|
input rx_gt_rst_1,
|
|
|
|
output rx_gt_rst_m_1,
|
|
|
|
input rx_pll_locked_1,
|
|
|
|
output rx_pll_locked_m_1,
|
|
|
|
input rx_user_ready_1,
|
|
|
|
output rx_user_ready_m_1,
|
|
|
|
input rx_rst_done_1,
|
|
|
|
output rx_rst_done_m_1,
|
|
|
|
input rx_out_clk_1,
|
|
|
|
output rx_clk_1,
|
|
|
|
output rx_sysref_1,
|
|
|
|
input rx_sync_1,
|
|
|
|
input rx_sof_1,
|
|
|
|
input [31:0] rx_data_1,
|
|
|
|
input rx_ip_rst_1,
|
|
|
|
output [ 3:0] rx_ip_sof_1,
|
|
|
|
output [31:0] rx_ip_data_1,
|
|
|
|
input rx_ip_sysref_1,
|
|
|
|
output rx_ip_sync_1,
|
|
|
|
input rx_ip_rst_done_1,
|
|
|
|
|
|
|
|
output rx_2_p,
|
|
|
|
output rx_2_n,
|
|
|
|
input rx_rst_2,
|
|
|
|
output rx_rst_m_2,
|
2015-10-02 16:53:57 +00:00
|
|
|
input rx_pll_rst_2,
|
2015-08-10 15:17:25 +00:00
|
|
|
input rx_gt_rst_2,
|
|
|
|
output rx_gt_rst_m_2,
|
|
|
|
input rx_pll_locked_2,
|
|
|
|
output rx_pll_locked_m_2,
|
|
|
|
input rx_user_ready_2,
|
|
|
|
output rx_user_ready_m_2,
|
|
|
|
input rx_rst_done_2,
|
|
|
|
output rx_rst_done_m_2,
|
|
|
|
input rx_out_clk_2,
|
|
|
|
output rx_clk_2,
|
|
|
|
output rx_sysref_2,
|
|
|
|
input rx_sync_2,
|
|
|
|
input rx_sof_2,
|
|
|
|
input [31:0] rx_data_2,
|
|
|
|
input rx_ip_rst_2,
|
|
|
|
output [ 3:0] rx_ip_sof_2,
|
|
|
|
output [31:0] rx_ip_data_2,
|
|
|
|
input rx_ip_sysref_2,
|
|
|
|
output rx_ip_sync_2,
|
|
|
|
input rx_ip_rst_done_2,
|
|
|
|
|
|
|
|
output rx_3_p,
|
|
|
|
output rx_3_n,
|
|
|
|
input rx_rst_3,
|
|
|
|
output rx_rst_m_3,
|
2015-10-02 16:53:57 +00:00
|
|
|
input rx_pll_rst_3,
|
2015-08-10 15:17:25 +00:00
|
|
|
input rx_gt_rst_3,
|
|
|
|
output rx_gt_rst_m_3,
|
|
|
|
input rx_pll_locked_3,
|
|
|
|
output rx_pll_locked_m_3,
|
|
|
|
input rx_user_ready_3,
|
|
|
|
output rx_user_ready_m_3,
|
|
|
|
input rx_rst_done_3,
|
|
|
|
output rx_rst_done_m_3,
|
|
|
|
input rx_out_clk_3,
|
|
|
|
output rx_clk_3,
|
|
|
|
output rx_sysref_3,
|
|
|
|
input rx_sync_3,
|
|
|
|
input rx_sof_3,
|
|
|
|
input [31:0] rx_data_3,
|
|
|
|
input rx_ip_rst_3,
|
|
|
|
output [ 3:0] rx_ip_sof_3,
|
|
|
|
output [31:0] rx_ip_data_3,
|
|
|
|
input rx_ip_sysref_3,
|
|
|
|
output rx_ip_sync_3,
|
|
|
|
input rx_ip_rst_done_3,
|
|
|
|
|
|
|
|
output rx_4_p,
|
|
|
|
output rx_4_n,
|
|
|
|
input rx_rst_4,
|
|
|
|
output rx_rst_m_4,
|
2015-10-02 16:53:57 +00:00
|
|
|
input rx_pll_rst_4,
|
2015-08-10 15:17:25 +00:00
|
|
|
input rx_gt_rst_4,
|
|
|
|
output rx_gt_rst_m_4,
|
|
|
|
input rx_pll_locked_4,
|
|
|
|
output rx_pll_locked_m_4,
|
|
|
|
input rx_user_ready_4,
|
|
|
|
output rx_user_ready_m_4,
|
|
|
|
input rx_rst_done_4,
|
|
|
|
output rx_rst_done_m_4,
|
|
|
|
input rx_out_clk_4,
|
|
|
|
output rx_clk_4,
|
|
|
|
output rx_sysref_4,
|
|
|
|
input rx_sync_4,
|
|
|
|
input rx_sof_4,
|
|
|
|
input [31:0] rx_data_4,
|
|
|
|
input rx_ip_rst_4,
|
|
|
|
output [ 3:0] rx_ip_sof_4,
|
|
|
|
output [31:0] rx_ip_data_4,
|
|
|
|
input rx_ip_sysref_4,
|
|
|
|
output rx_ip_sync_4,
|
|
|
|
input rx_ip_rst_done_4,
|
|
|
|
|
|
|
|
output rx_5_p,
|
|
|
|
output rx_5_n,
|
|
|
|
input rx_rst_5,
|
|
|
|
output rx_rst_m_5,
|
2015-10-02 16:53:57 +00:00
|
|
|
input rx_pll_rst_5,
|
2015-08-10 15:17:25 +00:00
|
|
|
input rx_gt_rst_5,
|
|
|
|
output rx_gt_rst_m_5,
|
|
|
|
input rx_pll_locked_5,
|
|
|
|
output rx_pll_locked_m_5,
|
|
|
|
input rx_user_ready_5,
|
|
|
|
output rx_user_ready_m_5,
|
|
|
|
input rx_rst_done_5,
|
|
|
|
output rx_rst_done_m_5,
|
|
|
|
input rx_out_clk_5,
|
|
|
|
output rx_clk_5,
|
|
|
|
output rx_sysref_5,
|
|
|
|
input rx_sync_5,
|
|
|
|
input rx_sof_5,
|
|
|
|
input [31:0] rx_data_5,
|
|
|
|
input rx_ip_rst_5,
|
|
|
|
output [ 3:0] rx_ip_sof_5,
|
|
|
|
output [31:0] rx_ip_data_5,
|
|
|
|
input rx_ip_sysref_5,
|
|
|
|
output rx_ip_sync_5,
|
|
|
|
input rx_ip_rst_done_5,
|
|
|
|
|
|
|
|
output rx_6_p,
|
|
|
|
output rx_6_n,
|
|
|
|
input rx_rst_6,
|
|
|
|
output rx_rst_m_6,
|
2015-10-02 16:53:57 +00:00
|
|
|
input rx_pll_rst_6,
|
2015-08-10 15:17:25 +00:00
|
|
|
input rx_gt_rst_6,
|
|
|
|
output rx_gt_rst_m_6,
|
|
|
|
input rx_pll_locked_6,
|
|
|
|
output rx_pll_locked_m_6,
|
|
|
|
input rx_user_ready_6,
|
|
|
|
output rx_user_ready_m_6,
|
|
|
|
input rx_rst_done_6,
|
|
|
|
output rx_rst_done_m_6,
|
|
|
|
input rx_out_clk_6,
|
|
|
|
output rx_clk_6,
|
|
|
|
output rx_sysref_6,
|
|
|
|
input rx_sync_6,
|
|
|
|
input rx_sof_6,
|
|
|
|
input [31:0] rx_data_6,
|
|
|
|
input rx_ip_rst_6,
|
|
|
|
output [ 3:0] rx_ip_sof_6,
|
|
|
|
output [31:0] rx_ip_data_6,
|
|
|
|
input rx_ip_sysref_6,
|
|
|
|
output rx_ip_sync_6,
|
|
|
|
input rx_ip_rst_done_6,
|
|
|
|
|
|
|
|
output rx_7_p,
|
|
|
|
output rx_7_n,
|
|
|
|
input rx_rst_7,
|
|
|
|
output rx_rst_m_7,
|
2015-10-02 16:53:57 +00:00
|
|
|
input rx_pll_rst_7,
|
2015-08-10 15:17:25 +00:00
|
|
|
input rx_gt_rst_7,
|
|
|
|
output rx_gt_rst_m_7,
|
|
|
|
input rx_pll_locked_7,
|
|
|
|
output rx_pll_locked_m_7,
|
|
|
|
input rx_user_ready_7,
|
|
|
|
output rx_user_ready_m_7,
|
|
|
|
input rx_rst_done_7,
|
|
|
|
output rx_rst_done_m_7,
|
|
|
|
input rx_out_clk_7,
|
|
|
|
output rx_clk_7,
|
|
|
|
output rx_sysref_7,
|
|
|
|
input rx_sync_7,
|
|
|
|
input rx_sof_7,
|
|
|
|
input [31:0] rx_data_7,
|
|
|
|
input rx_ip_rst_7,
|
|
|
|
output [ 3:0] rx_ip_sof_7,
|
|
|
|
output [31:0] rx_ip_data_7,
|
|
|
|
input rx_ip_sysref_7,
|
|
|
|
output rx_ip_sync_7,
|
|
|
|
input rx_ip_rst_done_7,
|
2015-08-10 13:05:40 +00:00
|
|
|
|
|
|
|
// channel interface (tx)
|
|
|
|
|
2015-08-10 18:15:52 +00:00
|
|
|
output [((TX_NUM_OF_LANES* 1)-1):0] tx_p,
|
|
|
|
output [((TX_NUM_OF_LANES* 1)-1):0] tx_n,
|
2015-08-10 15:17:25 +00:00
|
|
|
input tx_sysref,
|
|
|
|
input tx_sync,
|
|
|
|
|
|
|
|
output tx_out_clk,
|
|
|
|
input tx_clk,
|
|
|
|
output tx_rst,
|
2015-08-10 18:15:52 +00:00
|
|
|
input [((TX_NUM_OF_LANES*32)-1):0] tx_data,
|
2015-08-10 15:17:25 +00:00
|
|
|
|
|
|
|
output tx_ip_rst,
|
|
|
|
output tx_ip_rst_done,
|
|
|
|
output tx_ip_sysref,
|
|
|
|
output tx_ip_sync,
|
2015-08-10 18:15:52 +00:00
|
|
|
output [((TX_NUM_OF_LANES*32)-1):0] tx_ip_data,
|
2015-08-10 15:17:25 +00:00
|
|
|
|
|
|
|
input tx_0_p,
|
|
|
|
input tx_0_n,
|
|
|
|
input tx_rst_0,
|
|
|
|
output tx_rst_m_0,
|
2015-10-02 16:53:57 +00:00
|
|
|
input tx_pll_rst_0,
|
2015-08-10 15:17:25 +00:00
|
|
|
input tx_gt_rst_0,
|
|
|
|
output tx_gt_rst_m_0,
|
|
|
|
input tx_pll_locked_0,
|
|
|
|
output tx_pll_locked_m_0,
|
|
|
|
input tx_user_ready_0,
|
|
|
|
output tx_user_ready_m_0,
|
|
|
|
input tx_rst_done_0,
|
|
|
|
output tx_rst_done_m_0,
|
|
|
|
input tx_out_clk_0,
|
|
|
|
output tx_clk_0,
|
|
|
|
output tx_sysref_0,
|
|
|
|
output tx_sync_0,
|
|
|
|
output [31:0] tx_data_0,
|
|
|
|
input tx_ip_rst_0,
|
|
|
|
input [31:0] tx_ip_data_0,
|
|
|
|
input tx_ip_sysref_0,
|
|
|
|
input tx_ip_sync_0,
|
|
|
|
input tx_ip_rst_done_0,
|
|
|
|
|
|
|
|
input tx_1_p,
|
|
|
|
input tx_1_n,
|
|
|
|
input tx_rst_1,
|
|
|
|
output tx_rst_m_1,
|
2015-10-02 16:53:57 +00:00
|
|
|
input tx_pll_rst_1,
|
2015-08-10 15:17:25 +00:00
|
|
|
input tx_gt_rst_1,
|
|
|
|
output tx_gt_rst_m_1,
|
|
|
|
input tx_pll_locked_1,
|
|
|
|
output tx_pll_locked_m_1,
|
|
|
|
input tx_user_ready_1,
|
|
|
|
output tx_user_ready_m_1,
|
|
|
|
input tx_rst_done_1,
|
|
|
|
output tx_rst_done_m_1,
|
|
|
|
input tx_out_clk_1,
|
|
|
|
output tx_clk_1,
|
|
|
|
output tx_sysref_1,
|
|
|
|
output tx_sync_1,
|
|
|
|
output [31:0] tx_data_1,
|
|
|
|
input tx_ip_rst_1,
|
|
|
|
input [31:0] tx_ip_data_1,
|
|
|
|
input tx_ip_sysref_1,
|
|
|
|
input tx_ip_sync_1,
|
|
|
|
input tx_ip_rst_done_1,
|
|
|
|
|
|
|
|
input tx_2_p,
|
|
|
|
input tx_2_n,
|
|
|
|
input tx_rst_2,
|
|
|
|
output tx_rst_m_2,
|
2015-10-02 16:53:57 +00:00
|
|
|
input tx_pll_rst_2,
|
2015-08-10 15:17:25 +00:00
|
|
|
input tx_gt_rst_2,
|
|
|
|
output tx_gt_rst_m_2,
|
|
|
|
input tx_pll_locked_2,
|
|
|
|
output tx_pll_locked_m_2,
|
|
|
|
input tx_user_ready_2,
|
|
|
|
output tx_user_ready_m_2,
|
|
|
|
input tx_rst_done_2,
|
|
|
|
output tx_rst_done_m_2,
|
|
|
|
input tx_out_clk_2,
|
|
|
|
output tx_clk_2,
|
|
|
|
output tx_sysref_2,
|
|
|
|
output tx_sync_2,
|
|
|
|
output [31:0] tx_data_2,
|
|
|
|
input tx_ip_rst_2,
|
|
|
|
input [31:0] tx_ip_data_2,
|
|
|
|
input tx_ip_sysref_2,
|
|
|
|
input tx_ip_sync_2,
|
|
|
|
input tx_ip_rst_done_2,
|
|
|
|
|
|
|
|
input tx_3_p,
|
|
|
|
input tx_3_n,
|
|
|
|
input tx_rst_3,
|
|
|
|
output tx_rst_m_3,
|
2015-10-02 16:53:57 +00:00
|
|
|
input tx_pll_rst_3,
|
2015-08-10 15:17:25 +00:00
|
|
|
input tx_gt_rst_3,
|
|
|
|
output tx_gt_rst_m_3,
|
|
|
|
input tx_pll_locked_3,
|
|
|
|
output tx_pll_locked_m_3,
|
|
|
|
input tx_user_ready_3,
|
|
|
|
output tx_user_ready_m_3,
|
|
|
|
input tx_rst_done_3,
|
|
|
|
output tx_rst_done_m_3,
|
|
|
|
input tx_out_clk_3,
|
|
|
|
output tx_clk_3,
|
|
|
|
output tx_sysref_3,
|
|
|
|
output tx_sync_3,
|
|
|
|
output [31:0] tx_data_3,
|
|
|
|
input tx_ip_rst_3,
|
|
|
|
input [31:0] tx_ip_data_3,
|
|
|
|
input tx_ip_sysref_3,
|
|
|
|
input tx_ip_sync_3,
|
|
|
|
input tx_ip_rst_done_3,
|
|
|
|
|
|
|
|
input tx_4_p,
|
|
|
|
input tx_4_n,
|
|
|
|
input tx_rst_4,
|
|
|
|
output tx_rst_m_4,
|
2015-10-02 16:53:57 +00:00
|
|
|
input tx_pll_rst_4,
|
2015-08-10 15:17:25 +00:00
|
|
|
input tx_gt_rst_4,
|
|
|
|
output tx_gt_rst_m_4,
|
|
|
|
input tx_pll_locked_4,
|
|
|
|
output tx_pll_locked_m_4,
|
|
|
|
input tx_user_ready_4,
|
|
|
|
output tx_user_ready_m_4,
|
|
|
|
input tx_rst_done_4,
|
|
|
|
output tx_rst_done_m_4,
|
|
|
|
input tx_out_clk_4,
|
|
|
|
output tx_clk_4,
|
|
|
|
output tx_sysref_4,
|
|
|
|
output tx_sync_4,
|
|
|
|
output [31:0] tx_data_4,
|
|
|
|
input tx_ip_rst_4,
|
|
|
|
input [31:0] tx_ip_data_4,
|
|
|
|
input tx_ip_sysref_4,
|
|
|
|
input tx_ip_sync_4,
|
|
|
|
input tx_ip_rst_done_4,
|
|
|
|
|
|
|
|
input tx_5_p,
|
|
|
|
input tx_5_n,
|
|
|
|
input tx_rst_5,
|
|
|
|
output tx_rst_m_5,
|
2015-10-02 16:53:57 +00:00
|
|
|
input tx_pll_rst_5,
|
2015-08-10 15:17:25 +00:00
|
|
|
input tx_gt_rst_5,
|
|
|
|
output tx_gt_rst_m_5,
|
|
|
|
input tx_pll_locked_5,
|
|
|
|
output tx_pll_locked_m_5,
|
|
|
|
input tx_user_ready_5,
|
|
|
|
output tx_user_ready_m_5,
|
|
|
|
input tx_rst_done_5,
|
|
|
|
output tx_rst_done_m_5,
|
|
|
|
input tx_out_clk_5,
|
|
|
|
output tx_clk_5,
|
|
|
|
output tx_sysref_5,
|
|
|
|
output tx_sync_5,
|
|
|
|
output [31:0] tx_data_5,
|
|
|
|
input tx_ip_rst_5,
|
|
|
|
input [31:0] tx_ip_data_5,
|
|
|
|
input tx_ip_sysref_5,
|
|
|
|
input tx_ip_sync_5,
|
|
|
|
input tx_ip_rst_done_5,
|
|
|
|
|
|
|
|
input tx_6_p,
|
|
|
|
input tx_6_n,
|
|
|
|
input tx_rst_6,
|
|
|
|
output tx_rst_m_6,
|
2015-10-02 16:53:57 +00:00
|
|
|
input tx_pll_rst_6,
|
2015-08-10 15:17:25 +00:00
|
|
|
input tx_gt_rst_6,
|
|
|
|
output tx_gt_rst_m_6,
|
|
|
|
input tx_pll_locked_6,
|
|
|
|
output tx_pll_locked_m_6,
|
|
|
|
input tx_user_ready_6,
|
|
|
|
output tx_user_ready_m_6,
|
|
|
|
input tx_rst_done_6,
|
|
|
|
output tx_rst_done_m_6,
|
|
|
|
input tx_out_clk_6,
|
|
|
|
output tx_clk_6,
|
|
|
|
output tx_sysref_6,
|
|
|
|
output tx_sync_6,
|
|
|
|
output [31:0] tx_data_6,
|
|
|
|
input tx_ip_rst_6,
|
|
|
|
input [31:0] tx_ip_data_6,
|
|
|
|
input tx_ip_sysref_6,
|
|
|
|
input tx_ip_sync_6,
|
|
|
|
input tx_ip_rst_done_6,
|
|
|
|
|
|
|
|
input tx_7_p,
|
|
|
|
input tx_7_n,
|
|
|
|
input tx_rst_7,
|
|
|
|
output tx_rst_m_7,
|
2015-10-02 16:53:57 +00:00
|
|
|
input tx_pll_rst_7,
|
2015-08-10 15:17:25 +00:00
|
|
|
input tx_gt_rst_7,
|
|
|
|
output tx_gt_rst_m_7,
|
|
|
|
input tx_pll_locked_7,
|
|
|
|
output tx_pll_locked_m_7,
|
|
|
|
input tx_user_ready_7,
|
|
|
|
output tx_user_ready_m_7,
|
|
|
|
input tx_rst_done_7,
|
|
|
|
output tx_rst_done_m_7,
|
|
|
|
input tx_out_clk_7,
|
|
|
|
output tx_clk_7,
|
|
|
|
output tx_sysref_7,
|
|
|
|
output tx_sync_7,
|
|
|
|
output [31:0] tx_data_7,
|
|
|
|
input tx_ip_rst_7,
|
|
|
|
input [31:0] tx_ip_data_7,
|
|
|
|
input tx_ip_sysref_7,
|
|
|
|
input tx_ip_sync_7,
|
|
|
|
input tx_ip_rst_done_7);
|
2015-08-10 13:05:40 +00:00
|
|
|
|
|
|
|
// internal signals
|
|
|
|
|
2015-08-10 15:17:25 +00:00
|
|
|
wire [(( 1*8)-1):0] rx_all_p;
|
|
|
|
wire [(( 1*8)-1):0] rx_all_n;
|
|
|
|
wire [(( 1*8)-1):0] rx_pll_locked_all;
|
|
|
|
wire [(( 1*8)-1):0] rx_user_ready_all;
|
|
|
|
wire [(( 1*8)-1):0] rx_rst_done_all;
|
|
|
|
wire [(( 1*8)-1):0] rx_ip_rst_done_all;
|
|
|
|
wire [((32*8)-1):0] rx_data_all;
|
|
|
|
wire [((32*8)-1):0] rx_ip_data_all;
|
|
|
|
wire [(( 1*8)-1):0] tx_all_p;
|
|
|
|
wire [(( 1*8)-1):0] tx_all_n;
|
|
|
|
wire [(( 1*8)-1):0] tx_pll_locked_all;
|
|
|
|
wire [(( 1*8)-1):0] tx_user_ready_all;
|
|
|
|
wire [(( 1*8)-1):0] tx_rst_done_all;
|
|
|
|
wire [(( 1*8)-1):0] tx_ip_rst_done_all;
|
|
|
|
wire [((32*8)-1):0] tx_ip_data_all;
|
|
|
|
wire [((32*8)-1):0] tx_data_all;
|
|
|
|
|
|
|
|
// pll clocks & resets
|
|
|
|
|
2015-10-02 16:53:57 +00:00
|
|
|
assign qpll0_rst = (QPLL_TX_OR_RX_N == 1) ? tx_pll_rst_0 : rx_pll_rst_0;
|
2015-08-10 15:17:25 +00:00
|
|
|
assign qpll0_ref_clk_in = qpll_ref_clk;
|
2015-10-02 16:53:57 +00:00
|
|
|
assign qpll1_rst = (QPLL_TX_OR_RX_N == 1) ? tx_pll_rst_0 : rx_pll_rst_0;
|
2015-08-10 15:17:25 +00:00
|
|
|
assign qpll1_ref_clk_in = qpll_ref_clk;
|
2015-10-02 16:53:57 +00:00
|
|
|
assign cpll_rst_m_0 = (CPLL_TX_OR_RX_N == 1) ? tx_pll_rst_0 : rx_pll_rst_0;
|
2015-08-10 15:17:25 +00:00
|
|
|
assign cpll_ref_clk_in_0 = cpll_ref_clk;
|
2015-10-02 16:53:57 +00:00
|
|
|
assign cpll_rst_m_1 = (CPLL_TX_OR_RX_N == 1) ? tx_pll_rst_0 : rx_pll_rst_0;
|
2015-08-10 15:17:25 +00:00
|
|
|
assign cpll_ref_clk_in_1 = cpll_ref_clk;
|
2015-10-02 16:53:57 +00:00
|
|
|
assign cpll_rst_m_2 = (CPLL_TX_OR_RX_N == 1) ? tx_pll_rst_0 : rx_pll_rst_0;
|
2015-08-10 15:17:25 +00:00
|
|
|
assign cpll_ref_clk_in_2 = cpll_ref_clk;
|
2015-10-02 16:53:57 +00:00
|
|
|
assign cpll_rst_m_3 = (CPLL_TX_OR_RX_N == 1) ? tx_pll_rst_0 : rx_pll_rst_0;
|
2015-08-10 15:17:25 +00:00
|
|
|
assign cpll_ref_clk_in_3 = cpll_ref_clk;
|
2015-10-02 16:53:57 +00:00
|
|
|
assign cpll_rst_m_4 = (CPLL_TX_OR_RX_N == 1) ? tx_pll_rst_0 : rx_pll_rst_0;
|
2015-08-10 15:17:25 +00:00
|
|
|
assign cpll_ref_clk_in_4 = cpll_ref_clk;
|
2015-10-02 16:53:57 +00:00
|
|
|
assign cpll_rst_m_5 = (CPLL_TX_OR_RX_N == 1) ? tx_pll_rst_0 : rx_pll_rst_0;
|
2015-08-10 15:17:25 +00:00
|
|
|
assign cpll_ref_clk_in_5 = cpll_ref_clk;
|
2015-10-02 16:53:57 +00:00
|
|
|
assign cpll_rst_m_6 = (CPLL_TX_OR_RX_N == 1) ? tx_pll_rst_0 : rx_pll_rst_0;
|
2015-08-10 15:17:25 +00:00
|
|
|
assign cpll_ref_clk_in_6 = cpll_ref_clk;
|
2015-10-02 16:53:57 +00:00
|
|
|
assign cpll_rst_m_7 = (CPLL_TX_OR_RX_N == 1) ? tx_pll_rst_0 : rx_pll_rst_0;
|
2015-08-10 15:17:25 +00:00
|
|
|
assign cpll_ref_clk_in_7 = cpll_ref_clk;
|
2015-08-10 13:05:40 +00:00
|
|
|
|
2015-08-10 15:17:25 +00:00
|
|
|
// channel interface (rx)
|
2015-08-10 13:05:40 +00:00
|
|
|
|
|
|
|
generate
|
2015-08-10 15:17:25 +00:00
|
|
|
if (RX_NUM_OF_LANES < 8) begin
|
|
|
|
assign rx_all_p[((8* 1)-1):(RX_NUM_OF_LANES* 1)] = 'd0;
|
|
|
|
assign rx_all_n[((8* 1)-1):(RX_NUM_OF_LANES* 1)] = 'd0;
|
2015-08-10 13:05:40 +00:00
|
|
|
end
|
2015-08-10 15:17:25 +00:00
|
|
|
endgenerate
|
|
|
|
|
|
|
|
assign rx_all_p[((RX_NUM_OF_LANES* 1)-1):0] = rx_p;
|
|
|
|
assign rx_all_n[((RX_NUM_OF_LANES* 1)-1):0] = rx_n;
|
|
|
|
|
|
|
|
assign rx_pll_locked_all[0] = (RX_NUM_OF_LANES >= 1) ? rx_pll_locked_0 : 1'b1;
|
|
|
|
assign rx_user_ready_all[0] = (RX_NUM_OF_LANES >= 1) ? rx_user_ready_0 : 1'b1;
|
|
|
|
assign rx_rst_done_all[0] = (RX_NUM_OF_LANES >= 1) ? rx_rst_done_0 : 1'b1;
|
|
|
|
assign rx_ip_rst_done_all[0] = (RX_NUM_OF_LANES >= 1) ? rx_ip_rst_done_0 : 1'b1;
|
|
|
|
assign rx_data_all[((32*0)+31):(32*0)] = rx_data_0;
|
|
|
|
|
|
|
|
assign rx_pll_locked_all[1] = (RX_NUM_OF_LANES >= 2) ? rx_pll_locked_1 : 1'b1;
|
|
|
|
assign rx_user_ready_all[1] = (RX_NUM_OF_LANES >= 2) ? rx_user_ready_1 : 1'b1;
|
|
|
|
assign rx_rst_done_all[1] = (RX_NUM_OF_LANES >= 2) ? rx_rst_done_1 : 1'b1;
|
|
|
|
assign rx_ip_rst_done_all[1] = (RX_NUM_OF_LANES >= 2) ? rx_ip_rst_done_1 : 1'b1;
|
|
|
|
assign rx_data_all[((32*1)+31):(32*1)] = rx_data_1;
|
|
|
|
|
|
|
|
assign rx_pll_locked_all[2] = (RX_NUM_OF_LANES >= 3) ? rx_pll_locked_2 : 1'b1;
|
|
|
|
assign rx_user_ready_all[2] = (RX_NUM_OF_LANES >= 3) ? rx_user_ready_2 : 1'b1;
|
|
|
|
assign rx_rst_done_all[2] = (RX_NUM_OF_LANES >= 3) ? rx_rst_done_2 : 1'b1;
|
|
|
|
assign rx_ip_rst_done_all[2] = (RX_NUM_OF_LANES >= 3) ? rx_ip_rst_done_2 : 1'b1;
|
|
|
|
assign rx_data_all[((32*2)+31):(32*2)] = rx_data_2;
|
|
|
|
|
|
|
|
assign rx_pll_locked_all[3] = (RX_NUM_OF_LANES >= 4) ? rx_pll_locked_3 : 1'b1;
|
|
|
|
assign rx_user_ready_all[3] = (RX_NUM_OF_LANES >= 4) ? rx_user_ready_3 : 1'b1;
|
|
|
|
assign rx_rst_done_all[3] = (RX_NUM_OF_LANES >= 4) ? rx_rst_done_3 : 1'b1;
|
|
|
|
assign rx_ip_rst_done_all[3] = (RX_NUM_OF_LANES >= 4) ? rx_ip_rst_done_3 : 1'b1;
|
|
|
|
assign rx_data_all[((32*3)+31):(32*3)] = rx_data_3;
|
|
|
|
|
|
|
|
assign rx_pll_locked_all[4] = (RX_NUM_OF_LANES >= 5) ? rx_pll_locked_4 : 1'b1;
|
|
|
|
assign rx_user_ready_all[4] = (RX_NUM_OF_LANES >= 5) ? rx_user_ready_4 : 1'b1;
|
|
|
|
assign rx_rst_done_all[4] = (RX_NUM_OF_LANES >= 5) ? rx_rst_done_4 : 1'b1;
|
|
|
|
assign rx_ip_rst_done_all[4] = (RX_NUM_OF_LANES >= 5) ? rx_ip_rst_done_4 : 1'b1;
|
|
|
|
assign rx_data_all[((32*4)+31):(32*4)] = rx_data_4;
|
|
|
|
|
|
|
|
assign rx_pll_locked_all[5] = (RX_NUM_OF_LANES >= 6) ? rx_pll_locked_5 : 1'b1;
|
|
|
|
assign rx_user_ready_all[5] = (RX_NUM_OF_LANES >= 6) ? rx_user_ready_5 : 1'b1;
|
|
|
|
assign rx_rst_done_all[5] = (RX_NUM_OF_LANES >= 6) ? rx_rst_done_5 : 1'b1;
|
|
|
|
assign rx_ip_rst_done_all[5] = (RX_NUM_OF_LANES >= 6) ? rx_ip_rst_done_5 : 1'b1;
|
|
|
|
assign rx_data_all[((32*5)+31):(32*5)] = rx_data_5;
|
|
|
|
|
|
|
|
assign rx_pll_locked_all[6] = (RX_NUM_OF_LANES >= 7) ? rx_pll_locked_6 : 1'b1;
|
|
|
|
assign rx_user_ready_all[6] = (RX_NUM_OF_LANES >= 7) ? rx_user_ready_6 : 1'b1;
|
|
|
|
assign rx_rst_done_all[6] = (RX_NUM_OF_LANES >= 7) ? rx_rst_done_6 : 1'b1;
|
|
|
|
assign rx_ip_rst_done_all[6] = (RX_NUM_OF_LANES >= 7) ? rx_ip_rst_done_6 : 1'b1;
|
|
|
|
assign rx_data_all[((32*6)+31):(32*6)] = rx_data_6;
|
|
|
|
|
|
|
|
assign rx_pll_locked_all[7] = (RX_NUM_OF_LANES >= 8) ? rx_pll_locked_7 : 1'b1;
|
|
|
|
assign rx_user_ready_all[7] = (RX_NUM_OF_LANES >= 8) ? rx_user_ready_7 : 1'b1;
|
|
|
|
assign rx_rst_done_all[7] = (RX_NUM_OF_LANES >= 8) ? rx_rst_done_7 : 1'b1;
|
|
|
|
assign rx_ip_rst_done_all[7] = (RX_NUM_OF_LANES >= 8) ? rx_ip_rst_done_7 : 1'b1;
|
|
|
|
assign rx_data_all[((32*7)+31):(32*7)] = rx_data_7;
|
|
|
|
|
|
|
|
generate
|
|
|
|
if (RX_NUM_OF_LANES < 8) begin
|
|
|
|
assign rx_ip_data_all[((8*32)-1):(RX_NUM_OF_LANES*32)] = 'd0;
|
2015-08-10 13:05:40 +00:00
|
|
|
end
|
2015-08-10 15:17:25 +00:00
|
|
|
endgenerate
|
|
|
|
|
|
|
|
assign rx_ip_data_all[((RX_NUM_OF_LANES*32)-1):0] = rx_ip_data;
|
|
|
|
|
|
|
|
assign rx_sync = rx_sync_0;
|
|
|
|
|
|
|
|
assign rx_out_clk = rx_out_clk_0;
|
|
|
|
assign rx_rst = rx_rst_0;
|
|
|
|
assign rx_sof = rx_sof_0;
|
|
|
|
assign rx_data = rx_data_all[((RX_NUM_OF_LANES*32)-1):0];
|
|
|
|
|
|
|
|
assign rx_ip_rst = rx_ip_rst_0;
|
|
|
|
assign rx_ip_rst_done = & rx_ip_rst_done_all;
|
|
|
|
assign rx_ip_sysref = rx_ip_sysref_0;
|
|
|
|
|
|
|
|
assign rx_0_p = rx_all_p[0];
|
|
|
|
assign rx_0_n = rx_all_n[0];
|
|
|
|
assign rx_rst_m_0 = rx_rst_0;
|
|
|
|
assign rx_gt_rst_m_0 = rx_gt_rst_0;
|
|
|
|
assign rx_pll_locked_m_0 = & rx_pll_locked_all;
|
|
|
|
assign rx_user_ready_m_0 = & rx_user_ready_all;
|
|
|
|
assign rx_rst_done_m_0 = & rx_rst_done_all;
|
|
|
|
assign rx_clk_0 = rx_clk;
|
|
|
|
assign rx_sysref_0 = rx_sysref;
|
|
|
|
assign rx_ip_sof_0 = rx_ip_sof;
|
|
|
|
assign rx_ip_data_0 = rx_ip_data_all[((32*0)+31):(32*0)];
|
|
|
|
assign rx_ip_sync_0 = rx_ip_sync;
|
|
|
|
|
|
|
|
assign rx_1_p = rx_all_p[1];
|
|
|
|
assign rx_1_n = rx_all_n[1];
|
|
|
|
assign rx_rst_m_1 = rx_rst_0;
|
|
|
|
assign rx_gt_rst_m_1 = rx_gt_rst_0;
|
|
|
|
assign rx_pll_locked_m_1 = & rx_pll_locked_all;
|
|
|
|
assign rx_user_ready_m_1 = & rx_user_ready_all;
|
|
|
|
assign rx_rst_done_m_1 = & rx_rst_done_all;
|
|
|
|
assign rx_clk_1 = rx_clk;
|
|
|
|
assign rx_sysref_1 = rx_sysref;
|
|
|
|
assign rx_ip_sof_1 = rx_ip_sof;
|
|
|
|
assign rx_ip_data_1 = rx_ip_data_all[((32*1)+31):(32*1)];
|
|
|
|
assign rx_ip_sync_1 = rx_ip_sync;
|
|
|
|
|
|
|
|
assign rx_2_p = rx_all_p[2];
|
|
|
|
assign rx_2_n = rx_all_n[2];
|
|
|
|
assign rx_rst_m_2 = rx_rst_0;
|
|
|
|
assign rx_gt_rst_m_2 = rx_gt_rst_0;
|
|
|
|
assign rx_pll_locked_m_2 = & rx_pll_locked_all;
|
|
|
|
assign rx_user_ready_m_2 = & rx_user_ready_all;
|
|
|
|
assign rx_rst_done_m_2 = & rx_rst_done_all;
|
|
|
|
assign rx_clk_2 = rx_clk;
|
|
|
|
assign rx_sysref_2 = rx_sysref;
|
|
|
|
assign rx_ip_sof_2 = rx_ip_sof;
|
|
|
|
assign rx_ip_data_2 = rx_ip_data_all[((32*2)+31):(32*2)];
|
|
|
|
assign rx_ip_sync_2 = rx_ip_sync;
|
|
|
|
|
|
|
|
assign rx_3_p = rx_all_p[3];
|
|
|
|
assign rx_3_n = rx_all_n[3];
|
|
|
|
assign rx_rst_m_3 = rx_rst_0;
|
|
|
|
assign rx_gt_rst_m_3 = rx_gt_rst_0;
|
|
|
|
assign rx_pll_locked_m_3 = & rx_pll_locked_all;
|
|
|
|
assign rx_user_ready_m_3 = & rx_user_ready_all;
|
|
|
|
assign rx_rst_done_m_3 = & rx_rst_done_all;
|
|
|
|
assign rx_clk_3 = rx_clk;
|
|
|
|
assign rx_sysref_3 = rx_sysref;
|
|
|
|
assign rx_ip_sof_3 = rx_ip_sof;
|
|
|
|
assign rx_ip_data_3 = rx_ip_data_all[((32*3)+31):(32*3)];
|
|
|
|
assign rx_ip_sync_3 = rx_ip_sync;
|
|
|
|
|
|
|
|
assign rx_4_p = rx_all_p[4];
|
|
|
|
assign rx_4_n = rx_all_n[4];
|
|
|
|
assign rx_rst_m_4 = rx_rst_0;
|
|
|
|
assign rx_gt_rst_m_4 = rx_gt_rst_0;
|
|
|
|
assign rx_pll_locked_m_4 = & rx_pll_locked_all;
|
|
|
|
assign rx_user_ready_m_4 = & rx_user_ready_all;
|
|
|
|
assign rx_rst_done_m_4 = & rx_rst_done_all;
|
|
|
|
assign rx_clk_4 = rx_clk;
|
|
|
|
assign rx_sysref_4 = rx_sysref;
|
|
|
|
assign rx_ip_sof_4 = rx_ip_sof;
|
|
|
|
assign rx_ip_data_4 = rx_ip_data_all[((32*4)+31):(32*4)];
|
|
|
|
assign rx_ip_sync_4 = rx_ip_sync;
|
|
|
|
|
|
|
|
assign rx_5_p = rx_all_p[5];
|
|
|
|
assign rx_5_n = rx_all_n[5];
|
|
|
|
assign rx_rst_m_5 = rx_rst_0;
|
|
|
|
assign rx_gt_rst_m_5 = rx_gt_rst_0;
|
|
|
|
assign rx_pll_locked_m_5 = & rx_pll_locked_all;
|
|
|
|
assign rx_user_ready_m_5 = & rx_user_ready_all;
|
|
|
|
assign rx_rst_done_m_5 = & rx_rst_done_all;
|
|
|
|
assign rx_clk_5 = rx_clk;
|
|
|
|
assign rx_sysref_5 = rx_sysref;
|
|
|
|
assign rx_ip_sof_5 = rx_ip_sof;
|
|
|
|
assign rx_ip_data_5 = rx_ip_data_all[((32*5)+31):(32*5)];
|
|
|
|
assign rx_ip_sync_5 = rx_ip_sync;
|
|
|
|
|
|
|
|
assign rx_6_p = rx_all_p[6];
|
|
|
|
assign rx_6_n = rx_all_n[6];
|
|
|
|
assign rx_rst_m_6 = rx_rst_0;
|
|
|
|
assign rx_gt_rst_m_6 = rx_gt_rst_0;
|
|
|
|
assign rx_pll_locked_m_6 = & rx_pll_locked_all;
|
|
|
|
assign rx_user_ready_m_6 = & rx_user_ready_all;
|
|
|
|
assign rx_rst_done_m_6 = & rx_rst_done_all;
|
|
|
|
assign rx_clk_6 = rx_clk;
|
|
|
|
assign rx_sysref_6 = rx_sysref;
|
|
|
|
assign rx_ip_sof_6 = rx_ip_sof;
|
|
|
|
assign rx_ip_data_6 = rx_ip_data_all[((32*6)+31):(32*6)];
|
|
|
|
assign rx_ip_sync_6 = rx_ip_sync;
|
|
|
|
|
|
|
|
assign rx_7_p = rx_all_p[7];
|
|
|
|
assign rx_7_n = rx_all_n[7];
|
|
|
|
assign rx_rst_m_7 = rx_rst_0;
|
|
|
|
assign rx_gt_rst_m_7 = rx_gt_rst_0;
|
|
|
|
assign rx_pll_locked_m_7 = & rx_pll_locked_all;
|
|
|
|
assign rx_user_ready_m_7 = & rx_user_ready_all;
|
|
|
|
assign rx_rst_done_m_7 = & rx_rst_done_all;
|
|
|
|
assign rx_clk_7 = rx_clk;
|
|
|
|
assign rx_sysref_7 = rx_sysref;
|
|
|
|
assign rx_ip_sof_7 = rx_ip_sof;
|
|
|
|
assign rx_ip_data_7 = rx_ip_data_all[((32*7)+31):(32*7)];
|
|
|
|
assign rx_ip_sync_7 = rx_ip_sync;
|
|
|
|
|
2015-08-10 13:05:40 +00:00
|
|
|
|
2015-08-10 15:17:25 +00:00
|
|
|
// channel interface (tx)
|
|
|
|
|
|
|
|
assign tx_all_p[0] = tx_0_p;
|
|
|
|
assign tx_all_n[0] = tx_0_n;
|
|
|
|
assign tx_pll_locked_all[0] = (TX_NUM_OF_LANES >= 1) ? tx_pll_locked_0 : 1'b1;
|
|
|
|
assign tx_user_ready_all[0] = (TX_NUM_OF_LANES >= 1) ? tx_user_ready_0 : 1'b1;
|
|
|
|
assign tx_rst_done_all[0] = (TX_NUM_OF_LANES >= 1) ? tx_rst_done_0 : 1'b1;
|
|
|
|
assign tx_ip_rst_done_all[0] = (TX_NUM_OF_LANES >= 1) ? tx_ip_rst_done_0 : 1'b1;
|
|
|
|
assign tx_ip_data_all[((32*0)+31):(32*0)] = tx_ip_data_0;
|
|
|
|
|
|
|
|
assign tx_all_p[1] = tx_1_p;
|
|
|
|
assign tx_all_n[1] = tx_1_n;
|
|
|
|
assign tx_pll_locked_all[1] = (TX_NUM_OF_LANES >= 2) ? tx_pll_locked_1 : 1'b1;
|
|
|
|
assign tx_user_ready_all[1] = (TX_NUM_OF_LANES >= 2) ? tx_user_ready_1 : 1'b1;
|
|
|
|
assign tx_rst_done_all[1] = (TX_NUM_OF_LANES >= 2) ? tx_rst_done_1 : 1'b1;
|
|
|
|
assign tx_ip_rst_done_all[1] = (TX_NUM_OF_LANES >= 2) ? tx_ip_rst_done_1 : 1'b1;
|
|
|
|
assign tx_ip_data_all[((32*1)+31):(32*1)] = tx_ip_data_1;
|
|
|
|
|
|
|
|
assign tx_all_p[2] = tx_2_p;
|
|
|
|
assign tx_all_n[2] = tx_2_n;
|
|
|
|
assign tx_pll_locked_all[2] = (TX_NUM_OF_LANES >= 3) ? tx_pll_locked_2 : 1'b1;
|
|
|
|
assign tx_user_ready_all[2] = (TX_NUM_OF_LANES >= 3) ? tx_user_ready_2 : 1'b1;
|
|
|
|
assign tx_rst_done_all[2] = (TX_NUM_OF_LANES >= 3) ? tx_rst_done_2 : 1'b1;
|
|
|
|
assign tx_ip_rst_done_all[2] = (TX_NUM_OF_LANES >= 3) ? tx_ip_rst_done_2 : 1'b1;
|
|
|
|
assign tx_ip_data_all[((32*2)+31):(32*2)] = tx_ip_data_2;
|
|
|
|
|
|
|
|
assign tx_all_p[3] = tx_3_p;
|
|
|
|
assign tx_all_n[3] = tx_3_n;
|
|
|
|
assign tx_pll_locked_all[3] = (TX_NUM_OF_LANES >= 4) ? tx_pll_locked_3 : 1'b1;
|
|
|
|
assign tx_user_ready_all[3] = (TX_NUM_OF_LANES >= 4) ? tx_user_ready_3 : 1'b1;
|
|
|
|
assign tx_rst_done_all[3] = (TX_NUM_OF_LANES >= 4) ? tx_rst_done_3 : 1'b1;
|
|
|
|
assign tx_ip_rst_done_all[3] = (TX_NUM_OF_LANES >= 4) ? tx_ip_rst_done_3 : 1'b1;
|
|
|
|
assign tx_ip_data_all[((32*3)+31):(32*3)] = tx_ip_data_3;
|
|
|
|
|
|
|
|
assign tx_all_p[4] = tx_4_p;
|
|
|
|
assign tx_all_n[4] = tx_4_n;
|
|
|
|
assign tx_pll_locked_all[4] = (TX_NUM_OF_LANES >= 5) ? tx_pll_locked_4 : 1'b1;
|
|
|
|
assign tx_user_ready_all[4] = (TX_NUM_OF_LANES >= 5) ? tx_user_ready_4 : 1'b1;
|
|
|
|
assign tx_rst_done_all[4] = (TX_NUM_OF_LANES >= 5) ? tx_rst_done_4 : 1'b1;
|
|
|
|
assign tx_ip_rst_done_all[4] = (TX_NUM_OF_LANES >= 5) ? tx_ip_rst_done_4 : 1'b1;
|
|
|
|
assign tx_ip_data_all[((32*4)+31):(32*4)] = tx_ip_data_4;
|
|
|
|
|
|
|
|
assign tx_all_p[5] = tx_5_p;
|
|
|
|
assign tx_all_n[5] = tx_5_n;
|
|
|
|
assign tx_pll_locked_all[5] = (TX_NUM_OF_LANES >= 6) ? tx_pll_locked_5 : 1'b1;
|
|
|
|
assign tx_user_ready_all[5] = (TX_NUM_OF_LANES >= 6) ? tx_user_ready_5 : 1'b1;
|
|
|
|
assign tx_rst_done_all[5] = (TX_NUM_OF_LANES >= 6) ? tx_rst_done_5 : 1'b1;
|
|
|
|
assign tx_ip_rst_done_all[5] = (TX_NUM_OF_LANES >= 6) ? tx_ip_rst_done_5 : 1'b1;
|
|
|
|
assign tx_ip_data_all[((32*5)+31):(32*5)] = tx_ip_data_5;
|
|
|
|
|
|
|
|
assign tx_all_p[6] = tx_6_p;
|
|
|
|
assign tx_all_n[6] = tx_6_n;
|
|
|
|
assign tx_pll_locked_all[6] = (TX_NUM_OF_LANES >= 7) ? tx_pll_locked_6 : 1'b1;
|
|
|
|
assign tx_user_ready_all[6] = (TX_NUM_OF_LANES >= 7) ? tx_user_ready_6 : 1'b1;
|
|
|
|
assign tx_rst_done_all[6] = (TX_NUM_OF_LANES >= 7) ? tx_rst_done_6 : 1'b1;
|
|
|
|
assign tx_ip_rst_done_all[6] = (TX_NUM_OF_LANES >= 7) ? tx_ip_rst_done_6 : 1'b1;
|
|
|
|
assign tx_ip_data_all[((32*6)+31):(32*6)] = tx_ip_data_6;
|
|
|
|
|
|
|
|
assign tx_all_p[7] = tx_7_p;
|
|
|
|
assign tx_all_n[7] = tx_7_n;
|
|
|
|
assign tx_pll_locked_all[7] = (TX_NUM_OF_LANES >= 8) ? tx_pll_locked_7 : 1'b1;
|
|
|
|
assign tx_user_ready_all[7] = (TX_NUM_OF_LANES >= 8) ? tx_user_ready_7 : 1'b1;
|
|
|
|
assign tx_rst_done_all[7] = (TX_NUM_OF_LANES >= 8) ? tx_rst_done_7 : 1'b1;
|
|
|
|
assign tx_ip_rst_done_all[7] = (TX_NUM_OF_LANES >= 8) ? tx_ip_rst_done_7 : 1'b1;
|
|
|
|
assign tx_ip_data_all[((32*7)+31):(32*7)] = tx_ip_data_7;
|
|
|
|
|
|
|
|
generate
|
|
|
|
if (TX_NUM_OF_LANES < 8) begin
|
|
|
|
assign tx_data_all[((8*32)-1):(TX_NUM_OF_LANES*32)] = 'd0;
|
2015-08-10 13:05:40 +00:00
|
|
|
end
|
|
|
|
endgenerate
|
|
|
|
|
2015-08-10 15:17:25 +00:00
|
|
|
assign tx_data_all[((TX_NUM_OF_LANES*32)-1):0] = tx_data;
|
|
|
|
|
|
|
|
assign tx_p = tx_all_p[((TX_NUM_OF_LANES* 1)-1):0];
|
|
|
|
assign tx_n = tx_all_n[((TX_NUM_OF_LANES* 1)-1):0];
|
|
|
|
|
|
|
|
assign tx_out_clk = tx_out_clk_0;
|
|
|
|
assign tx_rst = tx_rst_0;
|
|
|
|
|
|
|
|
assign tx_ip_rst = tx_ip_rst_0;
|
|
|
|
assign tx_ip_rst_done = & tx_ip_rst_done_all;
|
|
|
|
assign tx_ip_sysref = tx_ip_sysref_0;
|
|
|
|
assign tx_ip_sync = tx_ip_sync_0;
|
|
|
|
assign tx_ip_data = tx_ip_data_all[((TX_NUM_OF_LANES*32)-1):0];
|
|
|
|
|
|
|
|
assign tx_rst_m_0 = tx_rst_0;
|
|
|
|
assign tx_gt_rst_m_0 = tx_gt_rst_0;
|
|
|
|
assign tx_pll_locked_m_0 = & tx_pll_locked_all;
|
|
|
|
assign tx_user_ready_m_0 = & tx_user_ready_all;
|
|
|
|
assign tx_rst_done_m_0 = & tx_rst_done_all;
|
|
|
|
assign tx_clk_0 = tx_clk;
|
|
|
|
assign tx_sysref_0 = tx_sysref;
|
|
|
|
assign tx_sync_0 = tx_sync;
|
|
|
|
assign tx_data_0 = tx_data_all[((32*0)+31):(32*0)];
|
|
|
|
|
|
|
|
assign tx_rst_m_1 = tx_rst_0;
|
|
|
|
assign tx_gt_rst_m_1 = tx_gt_rst_0;
|
|
|
|
assign tx_pll_locked_m_1 = & tx_pll_locked_all;
|
|
|
|
assign tx_user_ready_m_1 = & tx_user_ready_all;
|
|
|
|
assign tx_rst_done_m_1 = & tx_rst_done_all;
|
|
|
|
assign tx_clk_1 = tx_clk;
|
|
|
|
assign tx_sysref_1 = tx_sysref;
|
|
|
|
assign tx_sync_1 = tx_sync;
|
|
|
|
assign tx_data_1 = tx_data_all[((32*1)+31):(32*1)];
|
|
|
|
|
|
|
|
assign tx_rst_m_2 = tx_rst_0;
|
|
|
|
assign tx_gt_rst_m_2 = tx_gt_rst_0;
|
|
|
|
assign tx_pll_locked_m_2 = & tx_pll_locked_all;
|
|
|
|
assign tx_user_ready_m_2 = & tx_user_ready_all;
|
|
|
|
assign tx_rst_done_m_2 = & tx_rst_done_all;
|
|
|
|
assign tx_clk_2 = tx_clk;
|
|
|
|
assign tx_sysref_2 = tx_sysref;
|
|
|
|
assign tx_sync_2 = tx_sync;
|
|
|
|
assign tx_data_2 = tx_data_all[((32*2)+31):(32*2)];
|
|
|
|
|
|
|
|
assign tx_rst_m_3 = tx_rst_0;
|
|
|
|
assign tx_gt_rst_m_3 = tx_gt_rst_0;
|
|
|
|
assign tx_pll_locked_m_3 = & tx_pll_locked_all;
|
|
|
|
assign tx_user_ready_m_3 = & tx_user_ready_all;
|
|
|
|
assign tx_rst_done_m_3 = & tx_rst_done_all;
|
|
|
|
assign tx_clk_3 = tx_clk;
|
|
|
|
assign tx_sysref_3 = tx_sysref;
|
|
|
|
assign tx_sync_3 = tx_sync;
|
|
|
|
assign tx_data_3 = tx_data_all[((32*3)+31):(32*3)];
|
|
|
|
|
|
|
|
assign tx_rst_m_4 = tx_rst_0;
|
|
|
|
assign tx_gt_rst_m_4 = tx_gt_rst_0;
|
|
|
|
assign tx_pll_locked_m_4 = & tx_pll_locked_all;
|
|
|
|
assign tx_user_ready_m_4 = & tx_user_ready_all;
|
|
|
|
assign tx_rst_done_m_4 = & tx_rst_done_all;
|
|
|
|
assign tx_clk_4 = tx_clk;
|
|
|
|
assign tx_sysref_4 = tx_sysref;
|
|
|
|
assign tx_sync_4 = tx_sync;
|
|
|
|
assign tx_data_4 = tx_data_all[((32*4)+31):(32*4)];
|
|
|
|
|
|
|
|
assign tx_rst_m_5 = tx_rst_0;
|
|
|
|
assign tx_gt_rst_m_5 = tx_gt_rst_0;
|
|
|
|
assign tx_pll_locked_m_5 = & tx_pll_locked_all;
|
|
|
|
assign tx_user_ready_m_5 = & tx_user_ready_all;
|
|
|
|
assign tx_rst_done_m_5 = & tx_rst_done_all;
|
|
|
|
assign tx_clk_5 = tx_clk;
|
|
|
|
assign tx_sysref_5 = tx_sysref;
|
|
|
|
assign tx_sync_5 = tx_sync;
|
|
|
|
assign tx_data_5 = tx_data_all[((32*5)+31):(32*5)];
|
|
|
|
|
|
|
|
assign tx_rst_m_6 = tx_rst_0;
|
|
|
|
assign tx_gt_rst_m_6 = tx_gt_rst_0;
|
|
|
|
assign tx_pll_locked_m_6 = & tx_pll_locked_all;
|
|
|
|
assign tx_user_ready_m_6 = & tx_user_ready_all;
|
|
|
|
assign tx_rst_done_m_6 = & tx_rst_done_all;
|
|
|
|
assign tx_clk_6 = tx_clk;
|
|
|
|
assign tx_sysref_6 = tx_sysref;
|
|
|
|
assign tx_sync_6 = tx_sync;
|
|
|
|
assign tx_data_6 = tx_data_all[((32*6)+31):(32*6)];
|
|
|
|
|
|
|
|
assign tx_rst_m_7 = tx_rst_0;
|
|
|
|
assign tx_gt_rst_m_7 = tx_gt_rst_0;
|
|
|
|
assign tx_pll_locked_m_7 = & tx_pll_locked_all;
|
|
|
|
assign tx_user_ready_m_7 = & tx_user_ready_all;
|
|
|
|
assign tx_rst_done_m_7 = & tx_rst_done_all;
|
|
|
|
assign tx_clk_7 = tx_clk;
|
|
|
|
assign tx_sysref_7 = tx_sysref;
|
|
|
|
assign tx_sync_7 = tx_sync;
|
|
|
|
assign tx_data_7 = tx_data_all[((32*7)+31):(32*7)];
|
2015-08-10 13:05:40 +00:00
|
|
|
|
|
|
|
endmodule
|
|
|
|
|
|
|
|
// ***************************************************************************
|
|
|
|
// ***************************************************************************
|