I2C (Inter-IC) bus is a simple, low-bandwidth, short-distance protocol. It is often seen in systems with peripheral devices that are accessed intermittently. It is also a common communication solution in a close system where minimum trace on the board is desired.
This reference design implements an I2C slave module in a FPGA or CPLD. It follows the I2C specification to provide device addressing, read/write operation and an acknowledgment mechanism. It adds an instant I2C compatible interface to any component in the system. The programmable nature of FPGA and CPLD devices provides users with the flexibility of configuring the I2C slave device to any legal slave address. This avoids the potential slave address collision on an I2C bus with multiple slave devices.