Documentation
The I2C is a two-wire, bi-directional serial bus that provides a simple and efficient method of short distance data transmission between many devices. The DI2CMS core provides an interface between a microprocessor / microcontroller and an I2C bus. It can work as a master or slave transmitter/receiver depending on working mode determined by microprocessor/microcontroller. The DI2CMS core incorporates all features required by the latest I2C specification including clock synchronization, arbitration, multi-master systems and High-speed transmission mode (the DI2CMS itself supports all the transmission speed modes). Built-in timer allows operation from a wide range of the clk frequencies.
The DI2CMS is a technology independent, that's why VHDL or VERILOG design that can be implemented in a variety of process technologies. Furthermore it can be also completely customized in accordance to customer needs.
The DI2CMS is delivered with fully automated testbench and complete set of tests allowing easy package validation at each stage of SoC design flow.
Family summary
| Design | I2C specification | Operation type | Standard mode | Fast mode | Fast Plus mode | High Speed mode | Multi master | 7 bit address | 10 bit address | Interrupt gen. | Passive elements interface | Microcontroller interface | User defined timing |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 100 kb/s | 400 kb/s | 1 Mb/s | 3.4 Mb/s | ||||||||||
| DI2CM | v3.0 | MASTER | + | + | + | + | + | + | + | + | - | + | + |
| DI2CMS | v3.0 | MASTER/SLAVE | + | + | + | + | + | + | + | + | - | + | + |
| DI2CS | v3.0 | SLAVE | + | + | + | + | + | + | - | + | - | + | + |
| DI2CSB | v3.0 | SLAVE | + | + | + | + | + | + | - | - | + | - | - |
The main features of each I2C bus controllers family members have been summarized in table above. It gives a briefly member characterization helping you to find the most suitable IP Core for the application.
Performance
Each core has been tested in variety of FPGA and ASIC technologies. Its implementation's results are summarized below.
| Implementation |
Speed grade |
Utilized Area [LUT/PFU] |
Frequency [MHz] |
|---|---|---|---|
| XP | -5 | 477 / 153 | 148 |
| EC | -5 | 477 / 153 | 166 |
| ECP | -5 | 477 / 153 | 167 |
| ECP2 | -7 | 421 / 153 | 245 |
| SC | -7 | 415 / 156 | 284 |
DI2CMS implementation results for LATTICE devices.
All features have been included.
| Implementation |
Speed grade |
Utilized Area [Slices] |
Frequency [MHz] |
|---|---|---|---|
| SPARTAN-IIE | -7 | 212 | 125 |
| SPARTAN-3 | -5 | 215 | 133 |
| SPARTAN-3E | -4 | 215 | 115 |
| VIRTEX-E | -8 | 216 | 137 |
| VIRTEX-II | -6 | 216 | 140 |
| VIRTEX-II pro | -7 | 217 | 233 |
| VIRTEX-4 | -12 | 215 | 283 |
DI2CMS implementation results for XILINX devices.
All features have been included.
| Implementation |
Speed grade |
Utilized Area [LC] |
Frequency [MHz] |
|---|---|---|---|
| MAX3000A | -7 | 198 | 49 |
| MAX7000AE | -5 | 198 | 67 |
| MAX 2 | -3 | 291 | 187 |
| APEX20KC | -7 | 394 | 150 |
| CYCLONE | -6 | 370 | 220 |
| STRATIX | -5 | 291 | 254 |
| CYCLONE II | -6 | 354 | 263 |
| STRATIX II | -3 | 337 | 380 |
DI2CMS implementation results for ALTERA devices.
All features have been included.
Info
The I2C-bus supports any IC fabrication process (NMOS, CMOS, bipolar). Two wires, serial data (SDA) and serial clock (SCL), carry information between devices connected to the bus. Each devices is recognised by a unique address – whether it is a microcontroller, LCD driver, memory or keyboard interface. It can operate as either transmitter or receiver, depending on the function of the device. Obviously an LCD driver is only a receiver, whereas a memory can both receive and transmit data. In addition to transmitters and receivers, devices can also be considered as masters or slaves when performing data transfers (see Figures below).
A master is the device which initiates a data transfer on the bus and generates the SCL clock signals. A slave is the device addressed by a master.
The I2C-bus is a multi-master bus. This means that more than one device capable of controlling the bus can be connected to it. As masters are usually microcontrollers or microprocessors.
Key Features
- Conforms to v.3.0 of the I2C specification
- Master mode
- Master operation
- Master transmitter
- Master receiver
- Support for all transmission speeds
- Standard (up to 100 kb/s)
- Fast (up to 400 kb/s)
- Fast Plus (up to 1 Mb/s)
- High Speed (up to 3,4 Mb/s)
- Arbitration and clock synchronization
- Support for multi-master systems
- Support for both 7-bit and 10-bit addressing formats on the I2C bus
- Build-in 8-bit timer for data transfers speed adjusting
- Master operation
- Slave mode
- Slave operation
- Slave transmitter
- Slave receiver
- Supports 3 transmission speed modes
- Standard (up to 100 kb/s)
- Fast (up to 400 kb/s)
- Fast Plus (up to 1 Mb/s)
- High Speed (up to 3,4 Mb/s)
- Allows operation from a wide range of input clock frequencies
- User-defined data setup time
- Slave operation
- User-defined timing (data setup, start setup, start hold, etc.)
- Simple interface allows easy connection to microprocessor/microcontroller devices
- Interrupt generation
- Available system interface wrappers:
- AMBA - APB Bus
- Altera Avalon Bus
- Xilinx OPB Bus
- Fully synthesizable
- Static synchronous design
- Positive edge clocking and no internal tri-states
- Scan test ready
Applications
- Embedded microprocessor boards
- Consumer and professional audio/video
- Home and automotive radio
- Low-power applications
- Communication systems
- Cost-effective reliable automotive systems
Symbol
clk
scli

sdai
we
rd
cs
datai (7:0)
address (2:0)

Pins description
| Pin | Type | Description |
|---|---|---|
| clk | input | Global clock |
| scli | input | I2C bus clock line (input) |
| sdai | input | I2C bus data line (input) |
| we | input | Processor write strobe |
| rd | input | Processor read strobe |
| cs | input | Chip select |
| datai (7:0) | input | Processor data bus (input) |
| address (2:0) | input | Processor address lines |
| sclo | output | I2C bus clock line (output) |
| sclhs | output | High-speed clock line (output) |
| sdao | output | I2C bus data line (output) |
| irq | output | Processor interrupt line |
| datao (7:0) | output | Processor data bus (output) |
Block Diagram
| TimerTimer allows operation from a wide range of the input frequencies. It is programmed by an user before transmission and can be reprogrammed to change the SCL frequency. |
| Clock UnitPerforms clock synchronization, clock generation in master mode, and clock stretching in slave mode. |



| Control LogicControl Logic manages execution of all commands sent via interface. Synchronizes internal data flow. Includes Control Register used for performing all types of I2C Bus transmissions, and Status Register indicates state of the I2C Bus and the DI2CMS core. |
| Data UnitIt controls SDA line, performs data and address shifts during the data transmission and reception. Input data spikes are also filtered. |


| CPU interfaceCPU Interface performs the interface functions between DI2CMS internal blocks and microprocessor. It allows an easy connection of the core to the microprocessor/microcontroller system. |
we
rd
cs
irq
datai (7:0)
datao (7:0)
address (2:0)

| data bus |