Source code for hwtLib.peripheral.ethernet.gmii
from hwt.interfaces.std import VectSignal, Signal, Clk
from hwt.synthesizer.interface import Interface
from ipCorePackager.constants import DIRECTION
from ipCorePackager.intfIpMeta import IntfIpMeta
[docs]class GmiiTxChannel(Interface):
"""
.. hwt-autodoc::
"""
def _declr(self):
self.d = VectSignal(8)
self.en = Signal()
self.er = Signal()
[docs]class GmiiRxChannel(Interface):
"""
.. hwt-autodoc::
"""
def _declr(self):
self.d = VectSignal(8)
self.dv = Signal()
self.er = Signal()
[docs]class Gmii(Interface):
"""
Gigabit media independent interface
Used to connect 1G Ethernet MAC and PHY
:note: There is also variant with GTX_CLK, this version uses
only single TX clock provided from MAC to PHY
"""
def _declr(self):
self.rx_clk = Clk(masterDir=DIRECTION.IN)
with self._associated(clk=self.rx_clk):
self.rx = GmiiRxChannel(masterDir=DIRECTION.IN)
self.tx_clk = Clk()
with self._associated(clk=self.tx_clk):
self.tx = GmiiTxChannel()
[docs] def _getIpCoreIntfClass(self):
return IP_Gmii
[docs]class IP_Gmii(IntfIpMeta):
[docs] def __init__(self):
super().__init__()
self.name = "gmii"
self.version = "1.0"
self.vendor = "xilinx.com"
self.library = "interface"
self.map = {
"tx": {
"d": "TXD",
"en": "TX_EN",
"er": "TX_ER",
},
"tx": {
"d": "RXD",
"dv": "RX_DV",
"er": "RX_ER",
},
"tx_clk": "TX_CLK",
"rx_clk": "RX_CLK",
}