40 lines
1.2 KiB
Python
40 lines
1.2 KiB
Python
from migen.fhdl.module import Module
|
|
from migen.fhdl.specials import Instance
|
|
from migen.genlib.io import DifferentialInput, DifferentialOutput
|
|
|
|
|
|
class QuartusDifferentialInputImpl(Module):
|
|
def __init__(self, i_p, i_n, o):
|
|
self.specials += Instance("ALT_INBUF_DIFF",
|
|
name="ibuf_diff",
|
|
i_i=i_p,
|
|
i_ibar=i_n,
|
|
o_o=o)
|
|
|
|
|
|
class QuartusDifferentialInput:
|
|
@staticmethod
|
|
def lower(dr):
|
|
return QuartusDifferentialInputImpl(dr.i_p, dr.i_n, dr.o)
|
|
|
|
|
|
class QuartusDifferentialOutputImpl(Module):
|
|
def __init__(self, i, o_p, o_n):
|
|
self.specials += Instance("ALT_OUTBUF_DIFF",
|
|
name="obuf_diff",
|
|
i_i=i,
|
|
o_o=o_p,
|
|
o_obar=o_n)
|
|
|
|
|
|
class QuartusDifferentialOutput:
|
|
@staticmethod
|
|
def lower(dr):
|
|
return QuartusDifferentialOutputImpl(dr.i, dr.o_p, dr.o_n)
|
|
|
|
|
|
altera_special_overrides = {
|
|
DifferentialInput: QuartusDifferentialInput,
|
|
DifferentialOutput: QuartusDifferentialOutput
|
|
}
|