litex/liteeth/mac/core/last_be.py

37 lines
846 B
Python
Raw Normal View History

2015-01-28 03:14:01 -05:00
from liteeth.common import *
from liteeth.mac.common import *
2015-01-27 17:59:06 -05:00
2015-01-28 03:14:01 -05:00
class LiteEthMACTXLastBE(Module):
2015-01-27 17:59:06 -05:00
def __init__(self, d_w):
self.sink = sink = Sink(eth_description(d_w))
self.source = source = Source(eth_description(d_w))
###
ongoing = Signal()
self.sync += \
If(self.sink.stb & self.sink.ack,
If(sink.sop,
ongoing.eq(1)
).Elif(sink.last_be,
ongoing.eq(0)
)
)
self.comb += [
Record.connect(self.sink, self.source),
self.source.eop.eq(self.sink.last_be),
self.source.stb.eq(self.sink.stb & (self.sink.sop | ongoing))
]
2015-01-28 03:14:01 -05:00
class LiteEthMACRXLastBE(Module):
2015-01-27 17:59:06 -05:00
def __init__(self, d_w):
self.sink = sink = Sink(eth_description(d_w))
self.source = source = Source(eth_description(d_w))
###
self.comb += [
Record.connect(self.sink, self.source),
self.source.last_be.eq(self.sink.eop)
]