I2C Master/Slave Controller

The I2C-MS core is a controller for the Inter-Integrated Circuit (I2C) bus. The highly configurable core can implement an I2C bus master, slave, or a combined master and slave, and it communicates with the host via an APB, AHB, or Wishbone slave interface. 

The core supports all variations and configurations of I2C networks. It can be used in single- or multiple-master networks, running in any of bus standard-defined speeds, employing either 7-bit or 10-bit I2C slave addressing. Supporting clock stretching, it allows communication between slow slave and fast master. 

Designed for ease of use and operation, the core allows choosing between master and slave operation, and setting up I2C transfers at runtime with few register accesses. The core reports its internal status and the I2C bus status via its registers but also with via a rich set of interrupts.  

The I2C-MS core is rigorously verified, and silicon-proven. It is available in synthesizable RTL and FPGA netlist forms, and includes everything required for successful implementation, including a sophisticated self-checking testbench, simulation scripts, test vectors, and expected results, synthesis scripts and comprehensive user documentation.


The I2C-MS as delivered is warranted against defects for ninety days from purchase. Thirty days of phone and email technical support are included, starting with the first interaction. Additional maintenance and support options are available. 


  • Synthesizable RTL or FPGA netlist
  • Testbench & sample test cases
  • Simulation & synthesis scripts
  • Documentation 

Features List

I2C Bus Protocol Controller

  • Compliant to Philips I2C standard
  • All I2C bus speeds:
    • Standard-mode (Sm): up to 100 kbit/s, bidirectional  
    • Fast-mode (Fm): up to 400 kbit/s, bidirectional  
    • Fast-mode Plus (Fm+): up to 1 Mbit/s, bidirectional  
    • High-speed mode (Hs-mode): up to 3.4 Mbit/s, bidirectional  
    • Ultra Fast-mode (UFm): up to 5 Mbit/s, unidirectional
  • Both 7-bit and 10-bit slave addressing
  • Supports single or multi-master buses
  • Clock-Stretching to allow fast-master slow-slave communication 

Configuration Options

  • Operation mode: Master, Slave, or Master/Slave
  • Host Interface: APB, AHB, or Wishbone Slave 
  • Read and Write Data FIFOs depth
  • Maximum number of I2C transfers without host intervention 

Run-Time Options

  •  I2C Bus Speed and Clock Frequency
  • Master or slave operation (for I2C master/slave core)
  • I2C slave addressing mode (for I2C master)

Let's talk about your project and our IP solutions

Request Info