phy/rmii/LiteEthPHYRMIIRX: Use SDRInput on pads.csr_dv/rx_data to make it clear input is synchronous.
This commit is contained in:
parent
5538c87115
commit
3cfbf007ab
|
@ -10,7 +10,7 @@ from migen.genlib.resetsync import AsyncResetSynchronizer
|
||||||
|
|
||||||
from litex.gen import *
|
from litex.gen import *
|
||||||
|
|
||||||
from litex.build.io import DDROutput
|
from litex.build.io import SDRInput, SDROutput, DDROutput
|
||||||
|
|
||||||
from liteeth.common import *
|
from liteeth.common import *
|
||||||
from liteeth.phy.common import *
|
from liteeth.phy.common import *
|
||||||
|
@ -45,21 +45,27 @@ class LiteEthPHYRMIIRX(LiteXModule):
|
||||||
|
|
||||||
# # #
|
# # #
|
||||||
|
|
||||||
|
# Input.
|
||||||
|
# ------
|
||||||
|
crs_dv = Signal()
|
||||||
|
rx_data = Signal(2)
|
||||||
|
self.specials += SDRInput(i=pads.crs_dv, o=crs_dv)
|
||||||
|
for i in range(2):
|
||||||
|
self.specials += SDRInput(i=pads.rx_data[i], o=rx_data[i])
|
||||||
|
|
||||||
|
# Converter: 2-bit to 8-bit.
|
||||||
|
# --------------------------
|
||||||
converter = stream.Converter(2, 8)
|
converter = stream.Converter(2, 8)
|
||||||
converter = ResetInserter()(converter)
|
converter = ResetInserter()(converter)
|
||||||
self.converter = converter
|
self.converter = converter
|
||||||
|
|
||||||
|
# Delay.
|
||||||
|
# ------
|
||||||
self.delay = delay = stream.Delay(layout=[("data", 8)], n=2)
|
self.delay = delay = stream.Delay(layout=[("data", 8)], n=2)
|
||||||
self.comb += delay.source.connect(converter.sink)
|
self.comb += delay.source.connect(converter.sink)
|
||||||
|
|
||||||
crs_dv = Signal()
|
|
||||||
crs_dv_d = Signal()
|
crs_dv_d = Signal()
|
||||||
rx_data = Signal(2)
|
self.sync += crs_dv_d.eq(crs_dv)
|
||||||
self.sync += [
|
|
||||||
crs_dv.eq(pads.crs_dv),
|
|
||||||
crs_dv_d.eq(crs_dv),
|
|
||||||
rx_data.eq(pads.rx_data)
|
|
||||||
]
|
|
||||||
|
|
||||||
crs_first = (crs_dv & (rx_data != 0b00))
|
crs_first = (crs_dv & (rx_data != 0b00))
|
||||||
crs_last = (~crs_dv & ~crs_dv_d) # End of frame when 2 consecutives 0 on crs_dv.
|
crs_last = (~crs_dv & ~crs_dv_d) # End of frame when 2 consecutives 0 on crs_dv.
|
||||||
|
|
Loading…
Reference in New Issue