serdes-transceiver/bidirectionalIO.py

26 lines
703 B
Python

from migen import *
class BiDirectionalIO(Module):
def __init__(self, i_pads, o_pads):
self.i = Signal(4)
self.o = Signal(4)
self.t = Signal(4)
for i in range(4):
self.specials += Instance("OBUFTDS",
i_I=self.i[i],
o_O=o_pads[i].p,
o_OB=o_pads[i].n,
# Always chain the 3-states input to serializer
# Vivado will complain otherwise
i_T=self.t[i],
)
for i in range(4):
self.specials += Instance("IBUFDS",
i_I=i_pads[i].p,
i_IB=i_pads[i].n,
o_O=self.o[i],
)