forked from M-Labs/artiq-zynq
cxp upconn:clean up and remove csr
This commit is contained in:
parent
bc0d45cd82
commit
e78d0f4083
|
@ -10,9 +10,9 @@ from misoc.interconnect.csr import *
|
||||||
class CXP_UpConn(Module, AutoCSR):
|
class CXP_UpConn(Module, AutoCSR):
|
||||||
def __init__(self, pad, sys_clk_freq, debug_sma, pmod_pads, fifo_depth, nfifos=3):
|
def __init__(self, pad, sys_clk_freq, debug_sma, pmod_pads, fifo_depth, nfifos=3):
|
||||||
self.clock_domains.cd_cxp_upconn = ClockDomain()
|
self.clock_domains.cd_cxp_upconn = ClockDomain()
|
||||||
self.clk_reset = CSRStorage(reset=1)
|
self.clk_reset = Signal()
|
||||||
self.bitrate2x_enable = CSRStorage()
|
self.bitrate2x_enable = Signal()
|
||||||
self.tx_enable = CSRStorage()
|
self.tx_enable = Signal()
|
||||||
|
|
||||||
# # #
|
# # #
|
||||||
|
|
||||||
|
@ -43,15 +43,15 @@ class CXP_UpConn(Module, AutoCSR):
|
||||||
Instance("BUFGMUX",
|
Instance("BUFGMUX",
|
||||||
i_I0=pll_cxpclk,
|
i_I0=pll_cxpclk,
|
||||||
i_I1=pll_cxpclk2x,
|
i_I1=pll_cxpclk2x,
|
||||||
i_S=self.bitrate2x_enable.storage,
|
i_S=self.bitrate2x_enable,
|
||||||
o_O=self.cd_cxp_upconn.clk
|
o_O=self.cd_cxp_upconn.clk
|
||||||
),
|
),
|
||||||
AsyncResetSynchronizer(self.cd_cxp_upconn, ~pll_locked | self.clk_reset.storage)
|
AsyncResetSynchronizer(self.cd_cxp_upconn, ~pll_locked | self.clk_reset)
|
||||||
]
|
]
|
||||||
|
|
||||||
self.submodules.startup_fsm = startup_fsm = ClockDomainsRenamer("cxp_upconn")(FSM(reset_state="WAIT_TX_ENABLE"))
|
self.submodules.startup_fsm = startup_fsm = ClockDomainsRenamer("cxp_upconn")(FSM(reset_state="WAIT_TX_ENABLE"))
|
||||||
self.submodules.encoder = encoder = ClockDomainsRenamer("cxp_upconn")(SingleEncoder(True))
|
self.submodules.encoder = encoder = ClockDomainsRenamer("cxp_upconn")(SingleEncoder(True))
|
||||||
self.submodules.tx_fifos = tx_fifos = TxFIFOs(self.nfifos, fifo_depth)
|
self.submodules.tx_fifos = tx_fifos = TxFIFOs(nfifos, fifo_depth)
|
||||||
self.submodules.tx_idle = tx_idle = TxIdle()
|
self.submodules.tx_idle = tx_idle = TxIdle()
|
||||||
|
|
||||||
o = Signal()
|
o = Signal()
|
||||||
|
@ -63,12 +63,12 @@ class CXP_UpConn(Module, AutoCSR):
|
||||||
tx_wordcount = Signal(max=10000)
|
tx_wordcount = Signal(max=10000)
|
||||||
tx_reg = Signal(10)
|
tx_reg = Signal(10)
|
||||||
|
|
||||||
priorities = Signal(max=self.nfifos)
|
priorities = Signal(max=nfifos)
|
||||||
idling = Signal()
|
idling = Signal()
|
||||||
|
|
||||||
|
|
||||||
startup_fsm.act("WAIT_TX_ENABLE",
|
startup_fsm.act("WAIT_TX_ENABLE",
|
||||||
If(self.tx_enable.storage,
|
If(self.tx_enable,
|
||||||
NextValue(tx_idle.word_idx, 0),
|
NextValue(tx_idle.word_idx, 0),
|
||||||
NextState("ENCODE_CHAR")
|
NextState("ENCODE_CHAR")
|
||||||
)
|
)
|
||||||
|
@ -93,7 +93,7 @@ class CXP_UpConn(Module, AutoCSR):
|
||||||
|
|
||||||
startup_fsm.act("START_TX",
|
startup_fsm.act("START_TX",
|
||||||
tx_en.eq(1),
|
tx_en.eq(1),
|
||||||
If((~self.tx_enable.storage) & (tx_charcount == 3),
|
If((~self.tx_enable) & (tx_charcount == 3),
|
||||||
NextState("WAIT_TX_ENABLE")
|
NextState("WAIT_TX_ENABLE")
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
@ -199,23 +199,6 @@ class CXP_UpConn(Module, AutoCSR):
|
||||||
Instance("OBUF", i_I=p0, o_O=pmod_pads[6]),
|
Instance("OBUF", i_I=p0, o_O=pmod_pads[6]),
|
||||||
Instance("OBUF", i_I=p3, o_O=pmod_pads[7]),
|
Instance("OBUF", i_I=p3, o_O=pmod_pads[7]),
|
||||||
]
|
]
|
||||||
self.symbol0 = CSR(9)
|
|
||||||
self.symbol1 = CSR(9)
|
|
||||||
self.symbol2 = CSR(9)
|
|
||||||
|
|
||||||
self.sync += [
|
|
||||||
tx_fifos.sink_stb[0].eq(self.symbol0.re),
|
|
||||||
tx_fifos.sink_data[0].eq(self.symbol0.r[:8]),
|
|
||||||
tx_fifos.sink_k[0].eq(self.symbol0.r[8]),
|
|
||||||
|
|
||||||
tx_fifos.sink_stb[1].eq(self.symbol1.re),
|
|
||||||
tx_fifos.sink_data[1].eq(self.symbol1.r[:8]),
|
|
||||||
tx_fifos.sink_k[1].eq(self.symbol1.r[8]),
|
|
||||||
|
|
||||||
tx_fifos.sink_stb[2].eq(self.symbol2.re),
|
|
||||||
tx_fifos.sink_data[2].eq(self.symbol2.r[:8]),
|
|
||||||
tx_fifos.sink_k[2].eq(self.symbol2.r[8]),
|
|
||||||
]
|
|
||||||
|
|
||||||
class TxFIFOs(Module):
|
class TxFIFOs(Module):
|
||||||
def __init__(self, nfifos, fifo_depth):
|
def __init__(self, nfifos, fifo_depth):
|
||||||
|
|
Loading…
Reference in New Issue