forked from M-Labs/artiq
drtio: fix GTH clock domains
This commit is contained in:
parent
1af21c0b29
commit
f8c8f3fe26
|
@ -1,3 +1,6 @@
|
||||||
|
from functools import reduce
|
||||||
|
from operator import or_
|
||||||
|
|
||||||
from migen import *
|
from migen import *
|
||||||
from migen.genlib.resetsync import AsyncResetSynchronizer
|
from migen.genlib.resetsync import AsyncResetSynchronizer
|
||||||
from migen.genlib.cdc import MultiReg
|
from migen.genlib.cdc import MultiReg
|
||||||
|
@ -237,16 +240,10 @@ class GTH(Module, TransceiverInterface):
|
||||||
|
|
||||||
TransceiverInterface.__init__(self, channel_interfaces)
|
TransceiverInterface.__init__(self, channel_interfaces)
|
||||||
|
|
||||||
# rtio clock domain (clock from gth tx0, ored reset from all gth txs)
|
self.comb += [
|
||||||
self.comb += self.cd_rtio.clk.eq(ClockSignal("gth0_rtio_tx"))
|
self.cd_rtio.clk.eq(self.gths[master].cd_rtio_tx.clk),
|
||||||
rtio_rst = Signal()
|
self.cd_rtio.rst.eq(reduce(or_, [gth.cd_rtio_tx.rst for gth in self.gths]))
|
||||||
for i in range(nchannels):
|
]
|
||||||
rtio_rst.eq(rtio_rst | ResetSignal("gth" + str(i) + "rtio_tx"))
|
|
||||||
new_rtio_rst = Signal()
|
|
||||||
rtio_rst = new_rtio_rst
|
|
||||||
self.comb += self.cd_rtio.rst.eq(rtio_rst)
|
|
||||||
|
|
||||||
# rtio_rx clock domains
|
|
||||||
for i in range(nchannels):
|
for i in range(nchannels):
|
||||||
self.comb += [
|
self.comb += [
|
||||||
getattr(self, "cd_rtio_rx" + str(i)).clk.eq(self.gths[i].cd_rtio_rx.clk),
|
getattr(self, "cd_rtio_rx" + str(i)).clk.eq(self.gths[i].cd_rtio_rx.clk),
|
||||||
|
|
Loading…
Reference in New Issue