cxp GW: add eop marker at rx pipeline

This commit is contained in:
morgan 2025-01-14 10:45:13 +08:00
parent c5d71f269d
commit ca3f6e4bba

View File

@ -122,8 +122,8 @@ class DownConn_Interface(Module, AutoCSR):
# Receiver Pipeline WIP # Receiver Pipeline WIP
# #
# 32 32+8(dchar) # 32 32+8(dchar)
# PHY ---/---> dchar -----/-----> trigger ack ------> packet ------> CDC FIFO ------> raw stream data packet without # PHY ---/---> dchar -----/-----> trigger ack ------> packet ------> EOP Marker ------> stream data packet
# decoder checker decoder the first 2 words (K27.7 & 0x01) # decoder checker decoder with CRC
# #
cdr = ClockDomainsRenamer("cxp_gtx_rx") cdr = ClockDomainsRenamer("cxp_gtx_rx")
@ -221,7 +221,10 @@ class DownConn_Interface(Module, AutoCSR):
# self.submodules += ClockDomainsRenamer({"write": "cxp_gtx_rx", "read": "sys"})(cdc_fifo) # self.submodules += ClockDomainsRenamer({"write": "cxp_gtx_rx", "read": "sys"})(cdc_fifo)
# self.submodules.debug_out = debug_out = RX_Debug_Buffer(word_layout_dchar) # self.submodules.debug_out = debug_out = RX_Debug_Buffer(word_layout_dchar)
rx_pipeline = [phy, dchar_decoder, trig_ack_checker, bootstrap] # Drop the K29.7 and mark the EOP for arbiter and crc cheker
self.submodules.eop_marker = eop_marker = cdr(EOP_Marker())
rx_pipeline = [phy, dchar_decoder, trig_ack_checker, bootstrap, eop_marker]
for s, d in zip(rx_pipeline, rx_pipeline[1:]): for s, d in zip(rx_pipeline, rx_pipeline[1:]):
self.comb += s.source.connect(d.sink) self.comb += s.source.connect(d.sink)
self.source = rx_pipeline[-1].source self.source = rx_pipeline[-1].source