forked from M-Labs/artiq-zynq
pipeline GW: add test packet
This commit is contained in:
parent
b2ce43155e
commit
6b50d83e67
|
@ -278,3 +278,62 @@ class TX_Command_Packet(Module, AutoCSR):
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
|
|
||||||
|
class TX_Test_Packet(Module, AutoCSR):
|
||||||
|
def __init__(self, layout):
|
||||||
|
|
||||||
|
self.stb = CSR()
|
||||||
|
|
||||||
|
# # #
|
||||||
|
|
||||||
|
testdata_src = stream.Endpoint(layout)
|
||||||
|
|
||||||
|
|
||||||
|
# Section 9.9.2 (CXP-001-2021)
|
||||||
|
# 0x00, 0x01 ... 0xFF need to be send 16 times
|
||||||
|
# cnt[8:12] is used to count up 16 times while cnt[:8] is the data
|
||||||
|
|
||||||
|
cnt = Signal(max=0x1000)
|
||||||
|
clr_cnt = Signal()
|
||||||
|
inc_cnt = Signal()
|
||||||
|
|
||||||
|
self.sync += [
|
||||||
|
If(clr_cnt,
|
||||||
|
cnt.eq(cnt.reset),
|
||||||
|
).Elif(inc_cnt,
|
||||||
|
cnt.eq(cnt + 1),
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
||||||
|
self.submodules.fsm = fsm = FSM(reset_state="IDLE")
|
||||||
|
|
||||||
|
fsm.act("IDLE",
|
||||||
|
clr_cnt.eq(1),
|
||||||
|
If(self.stb.re,
|
||||||
|
NextState("WRITE")
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
fsm.act("WRITE",
|
||||||
|
testdata_src.stb.eq(1),
|
||||||
|
testdata_src.data.eq(cnt[:8]),
|
||||||
|
testdata_src.k.eq(0),
|
||||||
|
If(cnt == 0xFFF,
|
||||||
|
testdata_src.eop.eq(1),
|
||||||
|
If(testdata_src.ack, NextState("IDLE"))
|
||||||
|
).Else(
|
||||||
|
inc_cnt.eq(testdata_src.ack)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
self.submodules.pak_type_inserter = pak_type_inserter = Code_Inserter(layout)
|
||||||
|
self.submodules.pak_wrp = pak_wrp = Packet_Wrapper(layout)
|
||||||
|
self.comb += [
|
||||||
|
pak_type_inserter.data.eq(0x04),
|
||||||
|
pak_type_inserter.k.eq(0x04),
|
||||||
|
|
||||||
|
testdata_src.connect(pak_type_inserter.sink),
|
||||||
|
pak_type_inserter.source.connect(pak_wrp.sink),
|
||||||
|
]
|
||||||
|
|
||||||
|
self.source = pak_wrp.source
|
||||||
|
|
Loading…
Reference in New Issue