xilinx: util_adxcvr: Add support for lane polarity inversion
Some designs choose to swap the positive and negative side of the of the JESD204 lanes. One reason for this would be because it can simplify the PCB layout. The polarity is in most cases also only applied to a subset of the used lanes. Add support for this to the util_adxcvr module. This done by adding new parameter to the modules that allows to specify a per lane polarity inversion. Each bit in the parameter corresponds to one lane. If the bit is set the polarity is inverted for his lane. E.g. setting the parameter to 0xc will invert the 3rd and 4th lane. The setting is forwarded to the Xilinx transceiver for the corresponding lane. Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>main
parent
cdf2150128
commit
f647dd4c0a
|
@ -59,6 +59,7 @@ module util_adxcvr #(
|
||||||
parameter integer TX_NUM_OF_LANES = 8,
|
parameter integer TX_NUM_OF_LANES = 8,
|
||||||
parameter integer TX_OUT_DIV = 1,
|
parameter integer TX_OUT_DIV = 1,
|
||||||
parameter integer TX_CLK25_DIV = 20,
|
parameter integer TX_CLK25_DIV = 20,
|
||||||
|
parameter integer TX_LANE_INVERT = 0,
|
||||||
|
|
||||||
// rx-configuration
|
// rx-configuration
|
||||||
|
|
||||||
|
@ -67,7 +68,8 @@ module util_adxcvr #(
|
||||||
parameter integer RX_CLK25_DIV = 20,
|
parameter integer RX_CLK25_DIV = 20,
|
||||||
parameter [15:0] RX_DFE_LPM_CFG = 16'h0104,
|
parameter [15:0] RX_DFE_LPM_CFG = 16'h0104,
|
||||||
parameter [31:0] RX_PMA_CFG = 32'h001e7080,
|
parameter [31:0] RX_PMA_CFG = 32'h001e7080,
|
||||||
parameter [72:0] RX_CDR_CFG = 72'h0b000023ff10400020) (
|
parameter [72:0] RX_CDR_CFG = 72'h0b000023ff10400020,
|
||||||
|
parameter integer RX_LANE_INVERT = 0) (
|
||||||
|
|
||||||
input up_rstn,
|
input up_rstn,
|
||||||
input up_clk,
|
input up_clk,
|
||||||
|
@ -1045,11 +1047,13 @@ module util_adxcvr #(
|
||||||
.CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
|
.CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
|
||||||
.TX_OUT_DIV (TX_OUT_DIV),
|
.TX_OUT_DIV (TX_OUT_DIV),
|
||||||
.TX_CLK25_DIV (TX_CLK25_DIV),
|
.TX_CLK25_DIV (TX_CLK25_DIV),
|
||||||
|
.TX_POLARITY ((TX_LANE_INVERT >> 0) & 1),
|
||||||
.RX_OUT_DIV (RX_OUT_DIV),
|
.RX_OUT_DIV (RX_OUT_DIV),
|
||||||
.RX_CLK25_DIV (RX_CLK25_DIV),
|
.RX_CLK25_DIV (RX_CLK25_DIV),
|
||||||
.RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
|
.RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
|
||||||
.RX_PMA_CFG (RX_PMA_CFG),
|
.RX_PMA_CFG (RX_PMA_CFG),
|
||||||
.RX_CDR_CFG (RX_CDR_CFG))
|
.RX_CDR_CFG (RX_CDR_CFG),
|
||||||
|
.RX_POLARITY ((RX_LANE_INVERT >> 0) & 1))
|
||||||
i_xch_0 (
|
i_xch_0 (
|
||||||
.qpll2ch_clk (qpll2ch_clk_0),
|
.qpll2ch_clk (qpll2ch_clk_0),
|
||||||
.qpll2ch_ref_clk (qpll2ch_ref_clk_0),
|
.qpll2ch_ref_clk (qpll2ch_ref_clk_0),
|
||||||
|
@ -1138,11 +1142,13 @@ module util_adxcvr #(
|
||||||
.CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
|
.CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
|
||||||
.TX_OUT_DIV (TX_OUT_DIV),
|
.TX_OUT_DIV (TX_OUT_DIV),
|
||||||
.TX_CLK25_DIV (TX_CLK25_DIV),
|
.TX_CLK25_DIV (TX_CLK25_DIV),
|
||||||
|
.TX_POLARITY ((TX_LANE_INVERT >> 1) & 1),
|
||||||
.RX_OUT_DIV (RX_OUT_DIV),
|
.RX_OUT_DIV (RX_OUT_DIV),
|
||||||
.RX_CLK25_DIV (RX_CLK25_DIV),
|
.RX_CLK25_DIV (RX_CLK25_DIV),
|
||||||
.RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
|
.RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
|
||||||
.RX_PMA_CFG (RX_PMA_CFG),
|
.RX_PMA_CFG (RX_PMA_CFG),
|
||||||
.RX_CDR_CFG (RX_CDR_CFG))
|
.RX_CDR_CFG (RX_CDR_CFG),
|
||||||
|
.RX_POLARITY ((RX_LANE_INVERT >> 1) & 1))
|
||||||
i_xch_1 (
|
i_xch_1 (
|
||||||
.qpll2ch_clk (qpll2ch_clk_0),
|
.qpll2ch_clk (qpll2ch_clk_0),
|
||||||
.qpll2ch_ref_clk (qpll2ch_ref_clk_0),
|
.qpll2ch_ref_clk (qpll2ch_ref_clk_0),
|
||||||
|
@ -1231,11 +1237,13 @@ module util_adxcvr #(
|
||||||
.CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
|
.CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
|
||||||
.TX_OUT_DIV (TX_OUT_DIV),
|
.TX_OUT_DIV (TX_OUT_DIV),
|
||||||
.TX_CLK25_DIV (TX_CLK25_DIV),
|
.TX_CLK25_DIV (TX_CLK25_DIV),
|
||||||
|
.TX_POLARITY ((TX_LANE_INVERT >> 2) & 1),
|
||||||
.RX_OUT_DIV (RX_OUT_DIV),
|
.RX_OUT_DIV (RX_OUT_DIV),
|
||||||
.RX_CLK25_DIV (RX_CLK25_DIV),
|
.RX_CLK25_DIV (RX_CLK25_DIV),
|
||||||
.RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
|
.RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
|
||||||
.RX_PMA_CFG (RX_PMA_CFG),
|
.RX_PMA_CFG (RX_PMA_CFG),
|
||||||
.RX_CDR_CFG (RX_CDR_CFG))
|
.RX_CDR_CFG (RX_CDR_CFG),
|
||||||
|
.RX_POLARITY ((RX_LANE_INVERT >> 2) & 1))
|
||||||
i_xch_2 (
|
i_xch_2 (
|
||||||
.qpll2ch_clk (qpll2ch_clk_0),
|
.qpll2ch_clk (qpll2ch_clk_0),
|
||||||
.qpll2ch_ref_clk (qpll2ch_ref_clk_0),
|
.qpll2ch_ref_clk (qpll2ch_ref_clk_0),
|
||||||
|
@ -1324,11 +1332,13 @@ module util_adxcvr #(
|
||||||
.CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
|
.CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
|
||||||
.TX_OUT_DIV (TX_OUT_DIV),
|
.TX_OUT_DIV (TX_OUT_DIV),
|
||||||
.TX_CLK25_DIV (TX_CLK25_DIV),
|
.TX_CLK25_DIV (TX_CLK25_DIV),
|
||||||
|
.TX_POLARITY ((TX_LANE_INVERT >> 3) & 1),
|
||||||
.RX_OUT_DIV (RX_OUT_DIV),
|
.RX_OUT_DIV (RX_OUT_DIV),
|
||||||
.RX_CLK25_DIV (RX_CLK25_DIV),
|
.RX_CLK25_DIV (RX_CLK25_DIV),
|
||||||
.RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
|
.RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
|
||||||
.RX_PMA_CFG (RX_PMA_CFG),
|
.RX_PMA_CFG (RX_PMA_CFG),
|
||||||
.RX_CDR_CFG (RX_CDR_CFG))
|
.RX_CDR_CFG (RX_CDR_CFG),
|
||||||
|
.RX_POLARITY ((RX_LANE_INVERT >> 3) & 1))
|
||||||
i_xch_3 (
|
i_xch_3 (
|
||||||
.qpll2ch_clk (qpll2ch_clk_0),
|
.qpll2ch_clk (qpll2ch_clk_0),
|
||||||
.qpll2ch_ref_clk (qpll2ch_ref_clk_0),
|
.qpll2ch_ref_clk (qpll2ch_ref_clk_0),
|
||||||
|
@ -1447,11 +1457,13 @@ module util_adxcvr #(
|
||||||
.CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
|
.CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
|
||||||
.TX_OUT_DIV (TX_OUT_DIV),
|
.TX_OUT_DIV (TX_OUT_DIV),
|
||||||
.TX_CLK25_DIV (TX_CLK25_DIV),
|
.TX_CLK25_DIV (TX_CLK25_DIV),
|
||||||
|
.TX_POLARITY ((TX_LANE_INVERT >> 4) & 1),
|
||||||
.RX_OUT_DIV (RX_OUT_DIV),
|
.RX_OUT_DIV (RX_OUT_DIV),
|
||||||
.RX_CLK25_DIV (RX_CLK25_DIV),
|
.RX_CLK25_DIV (RX_CLK25_DIV),
|
||||||
.RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
|
.RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
|
||||||
.RX_PMA_CFG (RX_PMA_CFG),
|
.RX_PMA_CFG (RX_PMA_CFG),
|
||||||
.RX_CDR_CFG (RX_CDR_CFG))
|
.RX_CDR_CFG (RX_CDR_CFG),
|
||||||
|
.RX_POLARITY ((RX_LANE_INVERT >> 4) & 1))
|
||||||
i_xch_4 (
|
i_xch_4 (
|
||||||
.qpll2ch_clk (qpll2ch_clk_4),
|
.qpll2ch_clk (qpll2ch_clk_4),
|
||||||
.qpll2ch_ref_clk (qpll2ch_ref_clk_4),
|
.qpll2ch_ref_clk (qpll2ch_ref_clk_4),
|
||||||
|
@ -1540,11 +1552,13 @@ module util_adxcvr #(
|
||||||
.CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
|
.CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
|
||||||
.TX_OUT_DIV (TX_OUT_DIV),
|
.TX_OUT_DIV (TX_OUT_DIV),
|
||||||
.TX_CLK25_DIV (TX_CLK25_DIV),
|
.TX_CLK25_DIV (TX_CLK25_DIV),
|
||||||
|
.TX_POLARITY ((TX_LANE_INVERT >> 5) & 1),
|
||||||
.RX_OUT_DIV (RX_OUT_DIV),
|
.RX_OUT_DIV (RX_OUT_DIV),
|
||||||
.RX_CLK25_DIV (RX_CLK25_DIV),
|
.RX_CLK25_DIV (RX_CLK25_DIV),
|
||||||
.RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
|
.RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
|
||||||
.RX_PMA_CFG (RX_PMA_CFG),
|
.RX_PMA_CFG (RX_PMA_CFG),
|
||||||
.RX_CDR_CFG (RX_CDR_CFG))
|
.RX_CDR_CFG (RX_CDR_CFG),
|
||||||
|
.RX_POLARITY ((RX_LANE_INVERT >> 5) & 1))
|
||||||
i_xch_5 (
|
i_xch_5 (
|
||||||
.qpll2ch_clk (qpll2ch_clk_4),
|
.qpll2ch_clk (qpll2ch_clk_4),
|
||||||
.qpll2ch_ref_clk (qpll2ch_ref_clk_4),
|
.qpll2ch_ref_clk (qpll2ch_ref_clk_4),
|
||||||
|
@ -1633,11 +1647,13 @@ module util_adxcvr #(
|
||||||
.CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
|
.CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
|
||||||
.TX_OUT_DIV (TX_OUT_DIV),
|
.TX_OUT_DIV (TX_OUT_DIV),
|
||||||
.TX_CLK25_DIV (TX_CLK25_DIV),
|
.TX_CLK25_DIV (TX_CLK25_DIV),
|
||||||
|
.TX_POLARITY ((TX_LANE_INVERT >> 6) & 1),
|
||||||
.RX_OUT_DIV (RX_OUT_DIV),
|
.RX_OUT_DIV (RX_OUT_DIV),
|
||||||
.RX_CLK25_DIV (RX_CLK25_DIV),
|
.RX_CLK25_DIV (RX_CLK25_DIV),
|
||||||
.RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
|
.RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
|
||||||
.RX_PMA_CFG (RX_PMA_CFG),
|
.RX_PMA_CFG (RX_PMA_CFG),
|
||||||
.RX_CDR_CFG (RX_CDR_CFG))
|
.RX_CDR_CFG (RX_CDR_CFG),
|
||||||
|
.RX_POLARITY ((RX_LANE_INVERT >> 6) & 1))
|
||||||
i_xch_6 (
|
i_xch_6 (
|
||||||
.qpll2ch_clk (qpll2ch_clk_4),
|
.qpll2ch_clk (qpll2ch_clk_4),
|
||||||
.qpll2ch_ref_clk (qpll2ch_ref_clk_4),
|
.qpll2ch_ref_clk (qpll2ch_ref_clk_4),
|
||||||
|
@ -1726,11 +1742,13 @@ module util_adxcvr #(
|
||||||
.CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
|
.CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
|
||||||
.TX_OUT_DIV (TX_OUT_DIV),
|
.TX_OUT_DIV (TX_OUT_DIV),
|
||||||
.TX_CLK25_DIV (TX_CLK25_DIV),
|
.TX_CLK25_DIV (TX_CLK25_DIV),
|
||||||
|
.TX_POLARITY ((TX_LANE_INVERT >> 7) & 1),
|
||||||
.RX_OUT_DIV (RX_OUT_DIV),
|
.RX_OUT_DIV (RX_OUT_DIV),
|
||||||
.RX_CLK25_DIV (RX_CLK25_DIV),
|
.RX_CLK25_DIV (RX_CLK25_DIV),
|
||||||
.RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
|
.RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
|
||||||
.RX_PMA_CFG (RX_PMA_CFG),
|
.RX_PMA_CFG (RX_PMA_CFG),
|
||||||
.RX_CDR_CFG (RX_CDR_CFG))
|
.RX_CDR_CFG (RX_CDR_CFG),
|
||||||
|
.RX_POLARITY ((RX_LANE_INVERT >> 7) & 1))
|
||||||
i_xch_7 (
|
i_xch_7 (
|
||||||
.qpll2ch_clk (qpll2ch_clk_4),
|
.qpll2ch_clk (qpll2ch_clk_4),
|
||||||
.qpll2ch_ref_clk (qpll2ch_ref_clk_4),
|
.qpll2ch_ref_clk (qpll2ch_ref_clk_4),
|
||||||
|
@ -1849,11 +1867,13 @@ module util_adxcvr #(
|
||||||
.CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
|
.CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
|
||||||
.TX_OUT_DIV (TX_OUT_DIV),
|
.TX_OUT_DIV (TX_OUT_DIV),
|
||||||
.TX_CLK25_DIV (TX_CLK25_DIV),
|
.TX_CLK25_DIV (TX_CLK25_DIV),
|
||||||
|
.TX_POLARITY ((TX_LANE_INVERT >> 8) & 1),
|
||||||
.RX_OUT_DIV (RX_OUT_DIV),
|
.RX_OUT_DIV (RX_OUT_DIV),
|
||||||
.RX_CLK25_DIV (RX_CLK25_DIV),
|
.RX_CLK25_DIV (RX_CLK25_DIV),
|
||||||
.RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
|
.RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
|
||||||
.RX_PMA_CFG (RX_PMA_CFG),
|
.RX_PMA_CFG (RX_PMA_CFG),
|
||||||
.RX_CDR_CFG (RX_CDR_CFG))
|
.RX_CDR_CFG (RX_CDR_CFG),
|
||||||
|
.RX_POLARITY ((RX_LANE_INVERT >> 8) & 1))
|
||||||
i_xch_8 (
|
i_xch_8 (
|
||||||
.qpll2ch_clk (qpll2ch_clk_8),
|
.qpll2ch_clk (qpll2ch_clk_8),
|
||||||
.qpll2ch_ref_clk (qpll2ch_ref_clk_8),
|
.qpll2ch_ref_clk (qpll2ch_ref_clk_8),
|
||||||
|
@ -1942,11 +1962,13 @@ module util_adxcvr #(
|
||||||
.CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
|
.CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
|
||||||
.TX_OUT_DIV (TX_OUT_DIV),
|
.TX_OUT_DIV (TX_OUT_DIV),
|
||||||
.TX_CLK25_DIV (TX_CLK25_DIV),
|
.TX_CLK25_DIV (TX_CLK25_DIV),
|
||||||
|
.TX_POLARITY ((TX_LANE_INVERT >> 9) & 1),
|
||||||
.RX_OUT_DIV (RX_OUT_DIV),
|
.RX_OUT_DIV (RX_OUT_DIV),
|
||||||
.RX_CLK25_DIV (RX_CLK25_DIV),
|
.RX_CLK25_DIV (RX_CLK25_DIV),
|
||||||
.RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
|
.RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
|
||||||
.RX_PMA_CFG (RX_PMA_CFG),
|
.RX_PMA_CFG (RX_PMA_CFG),
|
||||||
.RX_CDR_CFG (RX_CDR_CFG))
|
.RX_CDR_CFG (RX_CDR_CFG),
|
||||||
|
.RX_POLARITY ((RX_LANE_INVERT >> 9) & 1))
|
||||||
i_xch_9 (
|
i_xch_9 (
|
||||||
.qpll2ch_clk (qpll2ch_clk_8),
|
.qpll2ch_clk (qpll2ch_clk_8),
|
||||||
.qpll2ch_ref_clk (qpll2ch_ref_clk_8),
|
.qpll2ch_ref_clk (qpll2ch_ref_clk_8),
|
||||||
|
@ -2035,11 +2057,13 @@ module util_adxcvr #(
|
||||||
.CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
|
.CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
|
||||||
.TX_OUT_DIV (TX_OUT_DIV),
|
.TX_OUT_DIV (TX_OUT_DIV),
|
||||||
.TX_CLK25_DIV (TX_CLK25_DIV),
|
.TX_CLK25_DIV (TX_CLK25_DIV),
|
||||||
|
.TX_POLARITY ((TX_LANE_INVERT >> 10) & 1),
|
||||||
.RX_OUT_DIV (RX_OUT_DIV),
|
.RX_OUT_DIV (RX_OUT_DIV),
|
||||||
.RX_CLK25_DIV (RX_CLK25_DIV),
|
.RX_CLK25_DIV (RX_CLK25_DIV),
|
||||||
.RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
|
.RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
|
||||||
.RX_PMA_CFG (RX_PMA_CFG),
|
.RX_PMA_CFG (RX_PMA_CFG),
|
||||||
.RX_CDR_CFG (RX_CDR_CFG))
|
.RX_CDR_CFG (RX_CDR_CFG),
|
||||||
|
.RX_POLARITY ((RX_LANE_INVERT >> 10) & 1))
|
||||||
i_xch_10 (
|
i_xch_10 (
|
||||||
.qpll2ch_clk (qpll2ch_clk_8),
|
.qpll2ch_clk (qpll2ch_clk_8),
|
||||||
.qpll2ch_ref_clk (qpll2ch_ref_clk_8),
|
.qpll2ch_ref_clk (qpll2ch_ref_clk_8),
|
||||||
|
@ -2128,11 +2152,13 @@ module util_adxcvr #(
|
||||||
.CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
|
.CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
|
||||||
.TX_OUT_DIV (TX_OUT_DIV),
|
.TX_OUT_DIV (TX_OUT_DIV),
|
||||||
.TX_CLK25_DIV (TX_CLK25_DIV),
|
.TX_CLK25_DIV (TX_CLK25_DIV),
|
||||||
|
.TX_POLARITY ((TX_LANE_INVERT >> 11) & 1),
|
||||||
.RX_OUT_DIV (RX_OUT_DIV),
|
.RX_OUT_DIV (RX_OUT_DIV),
|
||||||
.RX_CLK25_DIV (RX_CLK25_DIV),
|
.RX_CLK25_DIV (RX_CLK25_DIV),
|
||||||
.RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
|
.RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
|
||||||
.RX_PMA_CFG (RX_PMA_CFG),
|
.RX_PMA_CFG (RX_PMA_CFG),
|
||||||
.RX_CDR_CFG (RX_CDR_CFG))
|
.RX_CDR_CFG (RX_CDR_CFG),
|
||||||
|
.RX_POLARITY ((RX_LANE_INVERT >> 11) & 1))
|
||||||
i_xch_11 (
|
i_xch_11 (
|
||||||
.qpll2ch_clk (qpll2ch_clk_8),
|
.qpll2ch_clk (qpll2ch_clk_8),
|
||||||
.qpll2ch_ref_clk (qpll2ch_ref_clk_8),
|
.qpll2ch_ref_clk (qpll2ch_ref_clk_8),
|
||||||
|
@ -2251,11 +2277,13 @@ module util_adxcvr #(
|
||||||
.CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
|
.CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
|
||||||
.TX_OUT_DIV (TX_OUT_DIV),
|
.TX_OUT_DIV (TX_OUT_DIV),
|
||||||
.TX_CLK25_DIV (TX_CLK25_DIV),
|
.TX_CLK25_DIV (TX_CLK25_DIV),
|
||||||
|
.TX_POLARITY ((TX_LANE_INVERT >> 12) & 1),
|
||||||
.RX_OUT_DIV (RX_OUT_DIV),
|
.RX_OUT_DIV (RX_OUT_DIV),
|
||||||
.RX_CLK25_DIV (RX_CLK25_DIV),
|
.RX_CLK25_DIV (RX_CLK25_DIV),
|
||||||
.RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
|
.RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
|
||||||
.RX_PMA_CFG (RX_PMA_CFG),
|
.RX_PMA_CFG (RX_PMA_CFG),
|
||||||
.RX_CDR_CFG (RX_CDR_CFG))
|
.RX_CDR_CFG (RX_CDR_CFG),
|
||||||
|
.RX_POLARITY ((RX_LANE_INVERT >> 12) & 1))
|
||||||
i_xch_12 (
|
i_xch_12 (
|
||||||
.qpll2ch_clk (qpll2ch_clk_12),
|
.qpll2ch_clk (qpll2ch_clk_12),
|
||||||
.qpll2ch_ref_clk (qpll2ch_ref_clk_12),
|
.qpll2ch_ref_clk (qpll2ch_ref_clk_12),
|
||||||
|
@ -2344,11 +2372,13 @@ module util_adxcvr #(
|
||||||
.CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
|
.CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
|
||||||
.TX_OUT_DIV (TX_OUT_DIV),
|
.TX_OUT_DIV (TX_OUT_DIV),
|
||||||
.TX_CLK25_DIV (TX_CLK25_DIV),
|
.TX_CLK25_DIV (TX_CLK25_DIV),
|
||||||
|
.TX_POLARITY ((TX_LANE_INVERT >> 13) & 1),
|
||||||
.RX_OUT_DIV (RX_OUT_DIV),
|
.RX_OUT_DIV (RX_OUT_DIV),
|
||||||
.RX_CLK25_DIV (RX_CLK25_DIV),
|
.RX_CLK25_DIV (RX_CLK25_DIV),
|
||||||
.RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
|
.RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
|
||||||
.RX_PMA_CFG (RX_PMA_CFG),
|
.RX_PMA_CFG (RX_PMA_CFG),
|
||||||
.RX_CDR_CFG (RX_CDR_CFG))
|
.RX_CDR_CFG (RX_CDR_CFG),
|
||||||
|
.RX_POLARITY ((RX_LANE_INVERT >> 13) & 1))
|
||||||
i_xch_13 (
|
i_xch_13 (
|
||||||
.qpll2ch_clk (qpll2ch_clk_12),
|
.qpll2ch_clk (qpll2ch_clk_12),
|
||||||
.qpll2ch_ref_clk (qpll2ch_ref_clk_12),
|
.qpll2ch_ref_clk (qpll2ch_ref_clk_12),
|
||||||
|
@ -2437,11 +2467,13 @@ module util_adxcvr #(
|
||||||
.CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
|
.CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
|
||||||
.TX_OUT_DIV (TX_OUT_DIV),
|
.TX_OUT_DIV (TX_OUT_DIV),
|
||||||
.TX_CLK25_DIV (TX_CLK25_DIV),
|
.TX_CLK25_DIV (TX_CLK25_DIV),
|
||||||
|
.TX_POLARITY ((TX_LANE_INVERT >> 14) & 1),
|
||||||
.RX_OUT_DIV (RX_OUT_DIV),
|
.RX_OUT_DIV (RX_OUT_DIV),
|
||||||
.RX_CLK25_DIV (RX_CLK25_DIV),
|
.RX_CLK25_DIV (RX_CLK25_DIV),
|
||||||
.RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
|
.RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
|
||||||
.RX_PMA_CFG (RX_PMA_CFG),
|
.RX_PMA_CFG (RX_PMA_CFG),
|
||||||
.RX_CDR_CFG (RX_CDR_CFG))
|
.RX_CDR_CFG (RX_CDR_CFG),
|
||||||
|
.RX_POLARITY ((RX_LANE_INVERT >> 14) & 1))
|
||||||
i_xch_14 (
|
i_xch_14 (
|
||||||
.qpll2ch_clk (qpll2ch_clk_12),
|
.qpll2ch_clk (qpll2ch_clk_12),
|
||||||
.qpll2ch_ref_clk (qpll2ch_ref_clk_12),
|
.qpll2ch_ref_clk (qpll2ch_ref_clk_12),
|
||||||
|
@ -2530,11 +2562,13 @@ module util_adxcvr #(
|
||||||
.CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
|
.CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
|
||||||
.TX_OUT_DIV (TX_OUT_DIV),
|
.TX_OUT_DIV (TX_OUT_DIV),
|
||||||
.TX_CLK25_DIV (TX_CLK25_DIV),
|
.TX_CLK25_DIV (TX_CLK25_DIV),
|
||||||
|
.TX_POLARITY ((TX_LANE_INVERT >> 15) & 1),
|
||||||
.RX_OUT_DIV (RX_OUT_DIV),
|
.RX_OUT_DIV (RX_OUT_DIV),
|
||||||
.RX_CLK25_DIV (RX_CLK25_DIV),
|
.RX_CLK25_DIV (RX_CLK25_DIV),
|
||||||
.RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
|
.RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
|
||||||
.RX_PMA_CFG (RX_PMA_CFG),
|
.RX_PMA_CFG (RX_PMA_CFG),
|
||||||
.RX_CDR_CFG (RX_CDR_CFG))
|
.RX_CDR_CFG (RX_CDR_CFG),
|
||||||
|
.RX_POLARITY ((RX_LANE_INVERT >> 15) & 1))
|
||||||
i_xch_15 (
|
i_xch_15 (
|
||||||
.qpll2ch_clk (qpll2ch_clk_12),
|
.qpll2ch_clk (qpll2ch_clk_12),
|
||||||
.qpll2ch_ref_clk (qpll2ch_ref_clk_12),
|
.qpll2ch_ref_clk (qpll2ch_ref_clk_12),
|
||||||
|
|
|
@ -46,12 +46,14 @@ module util_adxcvr_xch #(
|
||||||
|
|
||||||
parameter integer TX_OUT_DIV = 1,
|
parameter integer TX_OUT_DIV = 1,
|
||||||
parameter integer TX_CLK25_DIV = 20,
|
parameter integer TX_CLK25_DIV = 20,
|
||||||
|
parameter integer TX_POLARITY = 0,
|
||||||
|
|
||||||
parameter integer RX_OUT_DIV = 1,
|
parameter integer RX_OUT_DIV = 1,
|
||||||
parameter integer RX_CLK25_DIV = 20,
|
parameter integer RX_CLK25_DIV = 20,
|
||||||
parameter [15:0] RX_DFE_LPM_CFG = 16'h0104,
|
parameter [15:0] RX_DFE_LPM_CFG = 16'h0104,
|
||||||
parameter [31:0] RX_PMA_CFG = 32'h001e7080,
|
parameter [31:0] RX_PMA_CFG = 32'h001e7080,
|
||||||
parameter [72:0] RX_CDR_CFG = 72'h0b000023ff10400020) (
|
parameter [72:0] RX_CDR_CFG = 72'h0b000023ff10400020,
|
||||||
|
parameter integer RX_POLARITY = 0) (
|
||||||
|
|
||||||
// pll interface
|
// pll interface
|
||||||
|
|
||||||
|
@ -658,7 +660,7 @@ module util_adxcvr_xch #(
|
||||||
.RXPHDLYRESET (1'h0),
|
.RXPHDLYRESET (1'h0),
|
||||||
.RXPHOVRDEN (1'h0),
|
.RXPHOVRDEN (1'h0),
|
||||||
.RXPMARESET (1'h0),
|
.RXPMARESET (1'h0),
|
||||||
.RXPOLARITY (1'h0),
|
.RXPOLARITY (RX_POLARITY),
|
||||||
.RXPRBSCNTRESET (1'h0),
|
.RXPRBSCNTRESET (1'h0),
|
||||||
.RXPRBSERR (),
|
.RXPRBSERR (),
|
||||||
.RXPRBSSEL (3'h0),
|
.RXPRBSSEL (3'h0),
|
||||||
|
@ -715,7 +717,7 @@ module util_adxcvr_xch #(
|
||||||
.TXPHOVRDEN (1'h0),
|
.TXPHOVRDEN (1'h0),
|
||||||
.TXPISOPD (1'h0),
|
.TXPISOPD (1'h0),
|
||||||
.TXPMARESET (1'h0),
|
.TXPMARESET (1'h0),
|
||||||
.TXPOLARITY (1'h0),
|
.TXPOLARITY (TX_POLARITY),
|
||||||
.TXPOSTCURSOR (5'h0),
|
.TXPOSTCURSOR (5'h0),
|
||||||
.TXPOSTCURSORINV (1'h0),
|
.TXPOSTCURSORINV (1'h0),
|
||||||
.TXPRBSFORCEERR (1'h0),
|
.TXPRBSFORCEERR (1'h0),
|
||||||
|
@ -1369,7 +1371,7 @@ module util_adxcvr_xch #(
|
||||||
.RXPLLCLKSEL (rx_pll_clk_sel_s),
|
.RXPLLCLKSEL (rx_pll_clk_sel_s),
|
||||||
.RXPMARESET (1'h0),
|
.RXPMARESET (1'h0),
|
||||||
.RXPMARESETDONE (),
|
.RXPMARESETDONE (),
|
||||||
.RXPOLARITY (1'h0),
|
.RXPOLARITY (RX_POLARITY),
|
||||||
.RXPRBSCNTRESET (1'h0),
|
.RXPRBSCNTRESET (1'h0),
|
||||||
.RXPRBSERR (),
|
.RXPRBSERR (),
|
||||||
.RXPRBSLOCKED (),
|
.RXPRBSLOCKED (),
|
||||||
|
@ -1460,7 +1462,7 @@ module util_adxcvr_xch #(
|
||||||
.TXPLLCLKSEL (tx_pll_clk_sel_s),
|
.TXPLLCLKSEL (tx_pll_clk_sel_s),
|
||||||
.TXPMARESET (1'h0),
|
.TXPMARESET (1'h0),
|
||||||
.TXPMARESETDONE (),
|
.TXPMARESETDONE (),
|
||||||
.TXPOLARITY (1'h0),
|
.TXPOLARITY (TX_POLARITY),
|
||||||
.TXPOSTCURSOR (5'h0),
|
.TXPOSTCURSOR (5'h0),
|
||||||
.TXPOSTCURSORINV (1'h0),
|
.TXPOSTCURSORINV (1'h0),
|
||||||
.TXPRBSFORCEERR (1'h0),
|
.TXPRBSFORCEERR (1'h0),
|
||||||
|
@ -2244,7 +2246,7 @@ module util_adxcvr_xch #(
|
||||||
.RXPLLCLKSEL (rx_pll_clk_sel_s),
|
.RXPLLCLKSEL (rx_pll_clk_sel_s),
|
||||||
.RXPMARESET (1'd0),
|
.RXPMARESET (1'd0),
|
||||||
.RXPMARESETDONE (),
|
.RXPMARESETDONE (),
|
||||||
.RXPOLARITY (1'd0),
|
.RXPOLARITY (RX_POLARITY),
|
||||||
.RXPRBSCNTRESET (1'd0),
|
.RXPRBSCNTRESET (1'd0),
|
||||||
.RXPRBSERR (),
|
.RXPRBSERR (),
|
||||||
.RXPRBSLOCKED (),
|
.RXPRBSLOCKED (),
|
||||||
|
@ -2343,7 +2345,7 @@ module util_adxcvr_xch #(
|
||||||
.TXPLLCLKSEL (tx_pll_clk_sel_s),
|
.TXPLLCLKSEL (tx_pll_clk_sel_s),
|
||||||
.TXPMARESET (1'd0),
|
.TXPMARESET (1'd0),
|
||||||
.TXPMARESETDONE (),
|
.TXPMARESETDONE (),
|
||||||
.TXPOLARITY (1'd0),
|
.TXPOLARITY (TX_POLARITY),
|
||||||
.TXPOSTCURSOR (5'd0),
|
.TXPOSTCURSOR (5'd0),
|
||||||
.TXPRBSFORCEERR (1'd0),
|
.TXPRBSFORCEERR (1'd0),
|
||||||
.TXPRBSSEL (4'd0),
|
.TXPRBSSEL (4'd0),
|
||||||
|
|
Loading…
Reference in New Issue