mirror of
https://github.com/enjoy-digital/usb3_pipe.git
synced 2025-01-04 10:18:41 +08:00
lfps/LFPSUnit: add control signals, use 20-bit data-width
This commit is contained in:
parent
c2c126247b
commit
409466fb91
@ -116,8 +116,8 @@ class LFPSBurstGenerator(Module):
|
|||||||
self.length = Signal(32) # i
|
self.length = Signal(32) # i
|
||||||
|
|
||||||
# Transceiver
|
# Transceiver
|
||||||
self.tx_idle = Signal(reset=1) # o
|
self.tx_idle = Signal(reset=1) # o
|
||||||
self.tx_pattern = Signal(40) # o
|
self.tx_pattern = Signal(20) # o
|
||||||
|
|
||||||
# # #
|
# # #
|
||||||
|
|
||||||
@ -147,7 +147,7 @@ class LFPSBurstGenerator(Module):
|
|||||||
)
|
)
|
||||||
fsm.act("BURST",
|
fsm.act("BURST",
|
||||||
self.tx_idle.eq(0),
|
self.tx_idle.eq(0),
|
||||||
self.tx_pattern.eq(Replicate(clk, 40)),
|
self.tx_pattern.eq(Replicate(clk, 20)),
|
||||||
NextValue(count, count - 1),
|
NextValue(count, count - 1),
|
||||||
If(count == 0,
|
If(count == 0,
|
||||||
NextState("IDLE")
|
NextState("IDLE")
|
||||||
@ -169,7 +169,7 @@ class LFPSGenerator(Module):
|
|||||||
|
|
||||||
# Transceiver
|
# Transceiver
|
||||||
self.tx_idle = Signal() # o
|
self.tx_idle = Signal() # o
|
||||||
self.tx_pattern = Signal(40) # o
|
self.tx_pattern = Signal(20) # o
|
||||||
|
|
||||||
# # #
|
# # #
|
||||||
|
|
||||||
@ -204,16 +204,23 @@ class LFPSGenerator(Module):
|
|||||||
|
|
||||||
class LFPSUnit(Module):
|
class LFPSUnit(Module):
|
||||||
def __init__(self, sys_clk_freq, serdes):
|
def __init__(self, sys_clk_freq, serdes):
|
||||||
|
self.rx_polling = Signal() # o
|
||||||
|
self.tx_polling = Signal() # i
|
||||||
|
|
||||||
|
# # #
|
||||||
|
|
||||||
# LFPS Checker -----------------------------------------------------------------------------
|
# LFPS Checker -----------------------------------------------------------------------------
|
||||||
checker = LFPSChecker(sys_clk_freq=sys_clk_freq)
|
checker = LFPSChecker(sys_clk_freq=sys_clk_freq)
|
||||||
self.submodules += checker
|
self.submodules += checker
|
||||||
self.comb += checker.idle.eq(serdes.rx_idle)
|
self.comb += checker.idle.eq(serdes.rx_idle)
|
||||||
|
self.comb += self.rx_polling.eq(checker.polling)
|
||||||
|
|
||||||
# LFPS Generator ---------------------------------------------------------------------------
|
# LFPS Generator ---------------------------------------------------------------------------
|
||||||
generator = LFPSGenerator(sys_clk_freq=sys_clk_freq, lfps_clk_freq=25e6)
|
generator = LFPSGenerator(sys_clk_freq=sys_clk_freq, lfps_clk_freq=25e6)
|
||||||
self.submodules += generator
|
self.submodules += generator
|
||||||
self.comb += [
|
self.comb += [
|
||||||
If(generator.polling,
|
If(self.tx_polling,
|
||||||
|
generator.polling.eq(1),
|
||||||
serdes.tx_idle.eq(generator.tx_idle),
|
serdes.tx_idle.eq(generator.tx_idle),
|
||||||
serdes.tx_pattern.eq(generator.tx_pattern)
|
serdes.tx_pattern.eq(generator.tx_pattern)
|
||||||
).Else(
|
).Else(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user