mirror of
https://github.com/enjoy-digital/usb3_pipe.git
synced 2025-01-04 10:18:41 +08:00
pocs/lfps: add lfps polling generation (and local copy of gtp_7series)
This commit is contained in:
parent
afdebbcd3c
commit
2e5c62ddbc
1077
pocs/lfps/gtp_7series.py
Normal file
1077
pocs/lfps/gtp_7series.py
Normal file
File diff suppressed because it is too large
Load Diff
@ -15,7 +15,7 @@ from litex.soc.integration.soc_core import *
|
||||
from litex.soc.integration.builder import *
|
||||
from litex.soc.cores.uart import UARTWishboneBridge
|
||||
|
||||
from liteiclink.transceiver.gtp_7series import GTPQuadPLL, GTP
|
||||
from gtp_7series import GTPQuadPLL, GTP
|
||||
|
||||
from litescope import LiteScopeAnalyzer
|
||||
|
||||
@ -129,6 +129,33 @@ class USB3Sniffer(SoCMini):
|
||||
o_RXELECIDLE = rxelecidle)
|
||||
self.comb += platform.request("user_gpio", 0).eq(rxelecidle)
|
||||
|
||||
# LFPS Polling generation ------------------------------------------------------------------
|
||||
# 5Gbps linerate / 4ns per words
|
||||
# 25MHz burst can be generated with 5 all ones / 5 all zeroes cycles.
|
||||
txelecidle = Signal()
|
||||
lfps_polling_pattern = Signal(20)
|
||||
lfps_polling_count = Signal(4)
|
||||
self.sync.tx += [
|
||||
lfps_polling_count.eq(lfps_polling_count + 1),
|
||||
If(lfps_polling_count == 4,
|
||||
lfps_polling_count.eq(0),
|
||||
lfps_polling_pattern.eq(~lfps_polling_pattern),
|
||||
)
|
||||
]
|
||||
lfps_burst_timer = WaitTimer(int(1e-6*sys_clk_freq))
|
||||
lfps_repeat_timer = WaitTimer(int(10e-6*sys_clk_freq))
|
||||
self.submodules += lfps_burst_timer, lfps_repeat_timer
|
||||
self.comb += [
|
||||
lfps_burst_timer.wait.eq(~lfps_repeat_timer.done),
|
||||
lfps_repeat_timer.wait.eq(~lfps_repeat_timer.done),
|
||||
]
|
||||
|
||||
self.comb += gtp.tx_produce_pattern.eq(1)
|
||||
self.comb += gtp.tx_pattern.eq(lfps_polling_pattern)
|
||||
self.comb += txelecidle.eq(lfps_burst_timer.done)
|
||||
gtp.gtp_params.update(i_TXELECIDLE=txelecidle) # FIXME: check TX OOB settings
|
||||
self.comb += platform.request("user_gpio", 1).eq(txelecidle)
|
||||
|
||||
# Analyzer ---------------------------------------------------------------------------------
|
||||
analyzer_signals = [rxelecidle]
|
||||
self.submodules.analyzer = LiteScopeAnalyzer(analyzer_signals, 4096, clock_domain="sys",
|
||||
|
Loading…
x
Reference in New Issue
Block a user