forked from M-Labs/artiq
gtp_7series: flexible QPLL channel selection
This commit is contained in:
parent
9f87c34a94
commit
d6157514c7
|
@ -43,8 +43,7 @@ class GTPSingle(Module):
|
||||||
txdata = Signal(20)
|
txdata = Signal(20)
|
||||||
rxdata = Signal(20)
|
rxdata = Signal(20)
|
||||||
rxphaligndone = Signal()
|
rxphaligndone = Signal()
|
||||||
self.specials += \
|
gtp_params = dict(
|
||||||
Instance("GTPE2_CHANNEL",
|
|
||||||
# Reset modes
|
# Reset modes
|
||||||
i_GTRESETSEL=0,
|
i_GTRESETSEL=0,
|
||||||
i_RESETOVRD=0,
|
i_RESETOVRD=0,
|
||||||
|
@ -77,16 +76,11 @@ class GTPSingle(Module):
|
||||||
p_PD_TRANS_TIME_NONE_P2=0x3c,
|
p_PD_TRANS_TIME_NONE_P2=0x3c,
|
||||||
p_PD_TRANS_TIME_TO_P2=0x64,
|
p_PD_TRANS_TIME_TO_P2=0x64,
|
||||||
|
|
||||||
# QPLL - must use channel 1!
|
|
||||||
i_PLL1CLK=qpll_channel.clk,
|
|
||||||
i_PLL1REFCLK=qpll_channel.refclk,
|
|
||||||
|
|
||||||
# TX clock
|
# TX clock
|
||||||
p_TXBUF_EN="FALSE",
|
p_TXBUF_EN="FALSE",
|
||||||
p_TX_XCLK_SEL="TXUSR",
|
p_TX_XCLK_SEL="TXUSR",
|
||||||
o_TXOUTCLK=self.txoutclk,
|
o_TXOUTCLK=self.txoutclk,
|
||||||
p_TXOUT_DIV=2,
|
p_TXOUT_DIV=2,
|
||||||
i_TXSYSCLKSEL=0b11,
|
|
||||||
i_TXOUTCLKSEL=0b11,
|
i_TXOUTCLKSEL=0b11,
|
||||||
|
|
||||||
# TX Startup/Reset
|
# TX Startup/Reset
|
||||||
|
@ -136,7 +130,6 @@ class GTPSingle(Module):
|
||||||
p_TX_CLK25_DIV=5,
|
p_TX_CLK25_DIV=5,
|
||||||
p_RX_XCLK_SEL="RXUSR",
|
p_RX_XCLK_SEL="RXUSR",
|
||||||
p_RXOUT_DIV=2,
|
p_RXOUT_DIV=2,
|
||||||
i_RXSYSCLKSEL=0b11,
|
|
||||||
i_RXOUTCLKSEL=0b010,
|
i_RXOUTCLKSEL=0b010,
|
||||||
o_RXOUTCLK=self.rxoutclk,
|
o_RXOUTCLK=self.rxoutclk,
|
||||||
i_RXUSRCLK=ClockSignal("rtio_rx"),
|
i_RXUSRCLK=ClockSignal("rtio_rx"),
|
||||||
|
@ -168,6 +161,27 @@ class GTPSingle(Module):
|
||||||
o_GTPTXP=pads.txp,
|
o_GTPTXP=pads.txp,
|
||||||
o_GTPTXN=pads.txn
|
o_GTPTXN=pads.txn
|
||||||
)
|
)
|
||||||
|
if qpll_channel.index == 0:
|
||||||
|
gtp_params.update(
|
||||||
|
i_RXSYSCLKSEL=0b00,
|
||||||
|
i_TXSYSCLKSEL=0b00,
|
||||||
|
i_PLL0CLK=qpll_channel.clk,
|
||||||
|
i_PLL0REFCLK=qpll_channel.refclk,
|
||||||
|
i_PLL1CLK=0,
|
||||||
|
i_PLL1REFCLK=0,
|
||||||
|
)
|
||||||
|
elif qpll_channel.index == 1:
|
||||||
|
gtp_params.update(
|
||||||
|
i_RXSYSCLKSEL=0b11,
|
||||||
|
i_TXSYSCLKSEL=0b11,
|
||||||
|
i_PLL0CLK=0,
|
||||||
|
i_PLL0REFCLK=0,
|
||||||
|
i_PLL1CLK=qpll_channel.clk,
|
||||||
|
i_PLL1REFCLK=qpll_channel.refclk,
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
raise ValueError
|
||||||
|
self.specials += Instance("GTPE2_CHANNEL", **gtp_params)
|
||||||
|
|
||||||
# tx clocking
|
# tx clocking
|
||||||
tx_reset_deglitched = Signal()
|
tx_reset_deglitched = Signal()
|
||||||
|
|
Loading…
Reference in New Issue