1 from liteeth
.common
import *
2 from liteeth
.core
.etherbone
import common
3 from liteeth
.core
.etherbone
.packet
import *
5 class LiteEthEtherbone(Module
):
6 def __init__(self
, udp
, udp_port
):
7 self
.submodules
.packet
= packet
= LiteEthEtherbonePacket(udp
, udp_port
)
9 self
.submodules
.fsm
= fsm
= FSM(reset_state
="IDLE")
11 packet
.source
.ack
.eq(1),
12 If(packet
.source
.stb
& packet
.source
.sop
,
14 packet
.source
.ack
.eq(0),
15 NextState("SEND_PROBE_RESPONSE")
19 fsm
.act("SEND_PROBE_RESPONSE",
20 packet
.sink
.stb
.eq(1),
21 packet
.sink
.sop
.eq(1),
22 packet
.sink
.eop
.eq(1),
24 packet
.sink
.ip_address
.eq(packet
.source
.ip_address
),
25 packet
.sink
.length
.eq(0),
27 packet
.source
.ack
.eq(1),