Source code for hwtLib.peripheral.i2c.intf
from hwt.interfaces.tristate import TristateClk, TristateSig
from hwt.simulator.agentBase import AgentWitReset
from hwt.synthesizer.interface import Interface
from ipCorePackager.intfIpMeta import IntfIpMeta
from hwtSimApi.agents.peripheral.i2c import I2cAgent
from hwtSimApi.hdlSimulator import HdlSimulator
[docs]class I2c(Interface):
"""
I2C interface also known as IIC, TWI or Two Wire
If interface is outside of chip it needs pull-up resistors
.. hwt-autodoc::
"""
def _declr(self):
self.scl = TristateClk() # serial clk
self.sda = TristateSig() # serial data
[docs] def _getIpCoreIntfClass(self):
return IP_IIC
[docs] def _initSimAgent(self, sim: HdlSimulator):
scl = self.scl
sda = self.sda
rst = AgentWitReset._discoverReset(self, allowNoReset=True)
self._ag = I2cAgent(
sim, (scl, sda), rst)
[docs]class IP_IIC(IntfIpMeta):
[docs] def __init__(self):
super().__init__()
self.name = "iic"
self.version = "1.0"
self.vendor = "xilinx.com"
self.library = "interface"
self.map = {"scl": {"t": "SCL_T",
"i": "SCL_I",
"o": "SCL_O"},
"sda": {"t": "SDA_T",
"i": "SDA_I",
"o": "SDA_O"}
}