I3C (bus)

Last updated

I3C bus
I3C.png
Type Serial communication bus
Production history
Designer MIPI Alliance
Sensor Working Group
Designed 2016;8 years ago (2016)
Manufacturer Intel Corporation; Lattice Semiconductor
Hot pluggable Yes
Electrical
Signal CMOS
Data
Data signal Open-drain or Push/Pull
Width 2 wires [data + clock]
Bitrate

12.5  Mbit/s  (SDR, standard), 25  Mbit/s  (DDR), 33  Mbit/s  (ternary),
legacy I²C rates
400  Kbits/s  (FM),

1

Contents

  Mbit/s  (FM+)
Protocol Serial, half-duplex

I3C, also known as SenseWire, [1] [2] is a specification [3] to enable communication between computer chips by defining the electrical connection between the chips and signaling patterns to be used. Short for "Improved Inter Integrated Circuit", [4] the standard defines the electrical connection between the chips to be a two wire, shared (multidrop), serial data bus, one wire (SCL) being used as a clock to define the sampling times, the other wire (SDA) being used as a data line whose voltage can be sampled. The standard defines a signalling protocol in which multiple chips can control communication and thereby act as the bus controller.

The I3C specification takes its name from, uses the same electrical connections as, and allows some backward compatibility with, the I²C bus, a de facto standard for inter-chip communication, widely used for low-speed peripherals and sensors in computer systems. The I3C standard is designed to retain some backward compatibility with the I²C system, notably allowing designs where existing I²C devices can be connected to an I3C bus but still have the bus able to switch to a higher data rate for communication at higher speeds between compliant I3C devices. The I3C standard thereby combines the advantage of the simple, two wire I²C architecture with the higher communication speeds common to more complicated buses such as the Serial Peripheral Interface (SPI).

The I3C standard was developed as a collaborative effort between electronics and computer related companies under auspices of the Mobile Industry Processor Interface Alliance (MIPI Alliance). The I3C standard was first released to the public at the end of 2017, [5] [6] although access requires the disclosure of private information. Google and Intel have backed I3C as a sensor interface standard for Internet of things (IoT) devices. [7]

History

Goals of the MIPI Sensor Working Group effort were first announced in November 2014 at the MEMS Executive Congress in Scottsdale AZ. [8]

Electronic design automation tool vendors including Cadence, [9] Synopsys [10] and Silvaco [11] have released controller IP blocks and associated verification software for the implementation of the I3C bus in new integrated circuit designs.

In December 2016, Lattice Semiconductor integrated I3C support into its new FPGA known as an iCE40 UltraPlus. [12]

In 2017, Qualcomm announced the Snapdragon 845 mobile SOC with integrated I3C controller support. [13] [ failed verification ]

In December 2017, the I3C 1.0 specification was released for public review. [7] [14] At about the same time, a Linux kernel patch introducing support for I3C was proposed by Boris Brezillon. [15]

In 2021, DDR5 has introduced I3C.

In June 2022, Renesas Electronics introduced the first I3C Intelligent switch products. [16]

Goals

Prior to public release of the specification, a substantial amount of general information about it has been published in the form of slides from the 2016 MIPI DevCon. [17] The goals for this interface were based on a survey of MIPI member organizations and MEMS Industry Group (MIG) members. The results of this survey have been made public. [18]

I3C v1.0

The initial I3C design sought to improve over I²C in the following ways: [19]

I3C Basic Specification

After making the I3C 1.0 standard publicly accessible, the organization subsequently published the I3C Basic specification, a subset intended to be implementable by non-member organizations under a RAND-Z licence. I3C Basic allows royalty-free implementation of I3C, and is intended for organizations that may view MIPI membership as a barrier for adoption. The basic version includes many of the protocol innovations in I3C 1.0, but lacks some of the potentially more difficult-to-implement ones such as the optional high data rate (HDR) modes like DDR. None the less the default SDR mode at up to 12.5 Mbit/s is a major speed/capacity improvement over I²C. [21]

I3C v1.1

Published in December 2019, this specification is only available to MIPI members.

I3C v1.1.1

Published in June 2021, it has deprecated the terms "master/slave" and now uses the updated normative terms "controller/target." The technical definitions of such devices, and their roles on an I3C bus, remain unchanged.

Nomenclature

Signal pins

I3C uses same two signal pins as I²C, referred to as SCL (serial clock) and SDA (serial data). The primary difference is that I²C operates them as open-drain outputs at all times, so its speed is limited by the resultant slow signal rise time. I3C uses open-drain mode when necessary for compatibility, but switches to push-pull outputs whenever possible, and includes protocol changes to make it possible more often than in I²C.

Generally, SDA is changed just after the falling edge of SCL, and the resultant value is received on the following rising edge. When the controller hands SDA over to the target, it likewise does so on the falling edge of SCL. However, when the target is handing back control of SDA to the controller (e.g. after acknowledging its address before a write), it releases SDA on the rising edge of SCL, and the controller is responsible for holding the received value for the duration of SCL high. (Because the controller drives SCL, it will see the rising edge first, so there will be a brief period of overlap when both are driving SDA, but as they are both driving the same value, no bus contention occurs.)

Framing

All communications in I²C and I3C requires framing for synchronization. Within a frame, changes on the SDA line should always occur while SCL is in the low state, so that SDA can be considered stable on the low-to-high transition of SCL. Violations of this general rule are used for framing (at least in legacy and standard data rate modes).

Between data frames, the bus controller holds SCL high, in effect stopping the clock, and SDA drivers are in a high-impedance state, permitting a pull-up resistor to float it to high. A high-to-low transition of SDA while SCL is high is known as a START symbol, and signals the beginning a new data frame. A low-to-high transition on SDA while SCL is high is the STOP symbol, ending a data frame.

A START without a preceding STOP, called a "repeated START", may be used to end one message and begin another within a single bus transaction.

In I²C, the START symbol is usually generated by a bus controller, but in I3C, even target devices may pull SDA low to indicate they want to start a frame. This is used to implement some advanced I3C features, such as in-band interrupts, multi-controller support, and hot-joins. After the start, the bus controller restarts the clock by driving SCL, and begins the bus arbitration process.

Ninth bit

Like I²C, I3C uses 9 clock cycles to send each 8-bit byte. However, the 9th cycle is used differently. I²C uses the last cycle for an acknowledgement sent in the opposite direction to the first 8 bits. I3C operates the same way for the first (address) byte of each message, and for I²C-compatible messages, but when communicating with I3C targets, message bytes after the first use the 9th bit as an odd parity bit on writes, and an end-of-data flag on reads.

Writes may be terminated only by the controller.

Either the controller or the target may terminate a read. The target sets SDA low to indicate that no more data is available; the controller responds by taking over SDA and generating a STOP or repeated START. To allow a read to continue, the target drives SDA high while SCL is low before the 9th bit, but lets SDA float (open-drain) while SCL is high. The controller may drive SDA low (a repeated START condition) at this time to abort the read.

Bus arbitration

At the start of a frame, several devices may contend for use of the bus, and the bus arbitration process serves to select which device obtains control of the SDA line. In both I²C and I3C, bus arbitration is done with the SDA line in open-drain mode, which allows devices transmitting a binary 0 (low) to override devices transmitting a binary 1. Contending devices monitor the SDA line while driving it in open-drain mode. Whenever a device detects a low condition (0 bit) on SDA while transmitting a high (1 bit), it has lost arbitration and must cease contending until the next transaction begins.

Each transaction begins with the target address, and the implementation gives priority to lower-numbered target addresses. The difference is that I²C has no limit on how long arbitration can last (in the rare but legal situation of several devices contending to send a message to the same device, the contention will not be detected until after the address byte). I3C, however, guarantees that arbitration will be complete no later than the end of the first byte. This allows push-pull drivers and faster clock rates to be used the great majority of the time.

This is done in several ways:

Common command codes

A write addressed to the reserved address 0x7E is used to perform a number of special operations in I3C. All I3C devices must receive and interpret writes to this address in addition to their individual addresses.

First of all, a write consisting of just the address byte and no data bytes has no effect on I3C targets, but may be used to simplify I3C arbitration. As described above, this prefix may speed up arbitration (if the controller supports the optimization of switching to push-pull mid-byte), and it simplifies the controller by avoiding a slightly tricky arbitration case.

If the write is followed by a data byte, the byte encodes a "common command code", a standardized I3C operation. Command codes 00x7F are broadcast commands addressed to all I3C targets. They may be followed by additional, command-specific parameters. Command codes 0x800xFE are direct commands addressed to individual targets. These are followed by a series of repeated STARTs and writes or reads to specific targets.

While a direct command is in effect, per-target writes or reads convey command-specific parameters. This operation is in lieu of target's normal response to an I3C message. One direct command may be followed by multiple per-target messages, each preceded by a repeated START. This special mode ends at the end of the transaction (STOP symbol) or the next message addressed to 0x7E.

Some command codes exist in both broadcast and direct forms. For example, the commands to enable or disable in-band interrupts may be sent to individual targets or broadcast to all. Commands to get parameters from a target (for example the GETHDRCAP command to ask a device which high-data-rate modes it supports) only exist in direct form.

Device classes

On an I3C bus in its default (SDR) mode, four different classes of devices can be supported:

High Data Rate (HDR) options

Each I3C bus transaction begins in SDR mode, but the I3C controller may issue an "Enter HDR" CCC broadcast command which tells all I3C targets that the transaction will continue in a specified HDR mode. I3C targets which do not support HDR may then ignore bus traffic until they see a specific "HDR exit" sequence which informs them it is time to listen to the bus again. (The controller knows which targets support HDR so will never attempt to use HDR to communicate with a target which does not support it.)

Some HDR modes are also compatible with I²C devices if the I²C devices have a 50 ns spike filter on the SCL line; that is, they will ignore a high level on the SCL line which lasts less than 50 ns. This is required by the I²C specification, but not universally implemented, and not all implementations ignore frequently repeated spikes, [22] so I3C HDR compatibility must be verified. The compatible HDR modes use SCL pulses of at most 45 ns so that I²C devices will ignore them.

The HDR-DDR mode uses double data rate signalling with a 12.5 MHz clock to achieve a 25 Mbit/s raw data rate (20 Mbit/s effective). This requires changing the SDA line while SCK is high, a violation of the I²C protocol, but I²C devices will not see the brief high-going pulse on SCL and thus not notice the violation.

The HDR-TSP and HDR-TSL modes use one of three symbols as ternary digits (trits):

  1. A transition of both SDA and SCL (received within 12.8 ns of each other),
  2. A transition of SCL only, or
  3. A transition of SDA only.

Two bytes plus two parity bits (18 bits total) are broken into six 3-bit triplets, and each triplet is encoded as two trits. Sent at 25 Mtrit/s, this achieves a 33.3 Mbit/s effective data rate.

The trit pair consisting of two transitions of SDA only is not used to encode data, and is instead used for framing, to mark the end of an HDR sequence. Although this limits the maximum time between SCL transitions to three trit times, that exceeds the 50 ns limit for legacy I²C devices, so HDR-TSP (ternary symbol, pure) mode may only be used on a bus without legacy I²C devices.

To permit buses including I²C devices (with a spike filter), the HDR-TSL (ternary symbol, legacy) mode must be used. This maintains I²C compatibility by trit stuffing: after any rising edge on SCL, if the following trit is not 0, a 1 trit (transition on SCL only) is inserted by the sender, and ignored by the receiver. This ensures that SCL is never high for more than one trit time.

I²C features not supported in I3C

Related Research Articles

<span class="mw-page-title-main">Peripheral Component Interconnect</span> Local computer bus for attaching hardware devices

Peripheral Component Interconnect (PCI) is a local computer bus for attaching hardware devices in a computer and is part of the PCI Local Bus standard. The PCI bus supports the functions found on a processor bus but in a standardized format that is independent of any given processor's native bus. Devices connected to the PCI bus appear to a bus master to be connected directly to its own bus and are assigned addresses in the processor's address space. It is a parallel bus, synchronous to a single bus clock. Attached devices can take either the form of an integrated circuit fitted onto the motherboard or an expansion card that fits into a slot. The PCI Local Bus was first implemented in IBM PC compatibles, where it displaced the combination of several slow Industry Standard Architecture (ISA) slots and one fast VESA Local Bus (VLB) slot as the bus configuration. It has subsequently been adopted for other computer types. Typical PCI cards used in PCs include: network cards, sound cards, modems, extra ports such as Universal Serial Bus (USB) or serial, TV tuner cards and hard disk drive host adapters. PCI video cards replaced ISA and VLB cards until rising bandwidth needs outgrew the abilities of PCI. The preferred interface for video cards then became Accelerated Graphics Port (AGP), a superset of PCI, before giving way to PCI Express.

<span class="mw-page-title-main">SCSI</span> Set of computer and peripheral connection standards

Small Computer System Interface is a set of standards for physically connecting and transferring data between computers and peripheral devices, best known for its use with storage devices such as hard disk drives. SCSI was introduced in the 1980s and has seen widespread use on servers and high-end workstations, with new SCSI standards being published as recently as SAS-4 in 2017.

Direct memory access (DMA) is a feature of computer systems that allows certain hardware subsystems to access main system memory independently of the central processing unit (CPU).

<span class="mw-page-title-main">I²C</span> Serial communication bus

I2C (Inter-Integrated Circuit; pronounced as “eye-squared-see” or “eye-two-see”), alternatively known as I2C or IIC, is a synchronous, multi-controller/multi-target (historically-termed as master/slave), single-ended, serial communication bus invented in 1982 by Philips Semiconductors. It is widely used for attaching lower-speed peripheral ICs to processors and microcontrollers in short-distance, intra-board communication.

A controller area network is a vehicle bus standard designed to allow microcontrollers and devices to communicate with each other. It is a message-based protocol, designed originally for multiplex electrical wiring within automobiles to save on copper, but it can also be used in many other contexts. For each device, the data in a frame is transmitted serially but in such a way that if more than one device transmits at the same time, the highest priority device can continue while the others back off. Frames are received by all devices, including by the transmitting device.

<span class="mw-page-title-main">SD card</span> Type of memory storage for portable devices

Secure Digital, officially abbreviated as SD, is a proprietary, non-volatile, flash memory card format the SD Association (SDA) developed for use in portable devices.

Serial Peripheral Interface (SPI) is a de facto standard for synchronous serial communication, used primarily in embedded systems for short-distance wired communication between integrated circuits.

The System Management Bus is a single-ended simple two-wire bus for the purpose of lightweight communication. Most commonly it is found in chipsets of computer motherboards for communication with the power source for ON/OFF instructions. The exact functionality and hardware interfaces vary with vendors.

Modbus or MODBUS is a client/server data communications protocol in the application layer. It was originally published by Modicon in 1979 for use with its programmable logic controllers (PLCs). Modbus has become a de facto standard communication protocol for communication between industrial electronic devices in a wide range of buses and network.

XDR DRAM is a high-performance dynamic random-access memory interface. It is based on and succeeds RDRAM. Competing technologies include DDR2 and GDDR4.

<span class="mw-page-title-main">Low Pin Count</span> Low-bandwidth computer motherboard bus

The Low Pin Count (LPC) bus is a computer bus used on IBM-compatible personal computers to connect low-bandwidth devices to the CPU, such as the BIOS ROM, "legacy" I/O devices, and Trusted Platform Module (TPM). "Legacy" I/O devices usually include serial and parallel ports, PS/2 keyboard, PS/2 mouse, and floppy disk controller.

<span class="mw-page-title-main">Digital Addressable Lighting Interface</span> Trademark for network-based product

Digital Addressable Lighting Interface (DALI) is a trademark for network-based products that control lighting. The underlying technology was established by a consortium of lighting equipment manufacturers as a successor for 1-10 V/0–10 V lighting control systems, and as an open standard alternative to several proprietary protocols. The DALI, DALI-2 and D4i trademarks are owned by the lighting industry alliance, DiiA.

<span class="mw-page-title-main">Display Serial Interface</span> Specification by MIPI

The Display Serial Interface (DSI) is a specification by the Mobile Industry Processor Interface (MIPI) Alliance aimed at reducing the cost of display controllers in a mobile device. It is commonly targeted at LCD and similar display technologies. It defines a serial bus and a communication protocol between the host, the source of the image data, and the device which is the destination. The interface is closed source, which means that the specification of the interface is not open to the public. The maintenance of the interface is the responsibility of the MIPI Alliance. Only legal entities can be members. These members or the persons commissioned and approved by them have access to the specification in order to use it in their possible applications.

In mobile-telephone technology, the UniPro protocol stack follows the architecture of the classical OSI Reference Model. In UniPro, the OSI Physical Layer is split into two sublayers: Layer 1 and Layer 1.5 which abstracts from differences between alternative Layer 1 technologies. The actual physical layer is a separate specification as the various PHY options are reused in other MIPI Alliance specifications.

The Serial Low-power Inter-chip Media Bus (SLIMbus) is a standard interface between baseband or application processors and peripheral components in mobile terminals. It was developed within the MIPI Alliance, founded by ARM, Nokia, STMicroelectronics and Texas Instruments. The interface supports many digital audio components simultaneously, and carries multiple digital audio data streams at differing sample rates and bit widths.

Consumer Electronics Control (CEC) is a feature of HDMI designed to control HDMI connected devices by using only one remote controller; so, individual CEC enabled devices can command and control each other without user intervention, for up to 15 devices. For example, a TV remote can also control a digital video recorder and a Blu-ray player.

<span class="mw-page-title-main">LPDDR</span> Computer hardware

Low-Power Double Data Rate (LPDDR), also known as LPDDR SDRAM, is a type of synchronous dynamic random-access memory that consumes less power and is targeted for mobile computers and devices such as mobile phones. Older variants are also known as Mobile DDR, and abbreviated as mDDR.

<span class="mw-page-title-main">UNI/O</span>

The UNI/O bus is an asynchronous serial bus created by Microchip Technology for low speed communication in embedded systems. The bus uses a master/slave configuration, requiring one signal to pass data between devices. The first devices supporting the UNI/O bus were released in May 2008.

MIPI Alliance Debug Architecture provides a standardized infrastructure for debugging deeply embedded systems in the mobile and mobile-influenced space. The MIPI Alliance MIPI Debug Working Group has released a portfolio of specifications; their objective is to provide standard debug protocols and standard interfaces from a system on a chip (SoC) to the debug tool. The whitepaper Architecture Overview for Debug summarizes all the efforts. In recent years, the group focused on specifying protocols that improve the visibility of the internal operations of deeply embedded systems, standardizing debug solutions via the functional interfaces of form factor devices, and specifying the use of I3C as debugging bus.

This article provides information about the communications aspects of Universal Serial Bus (USB): Signaling, Protocols, Transactions. USB is an industry-standard used to specify cables, connectors, and protocols that are used for communication between electronic devices. USB ports and cables are used to connect hardware such as printers, scanners, keyboards, mice, flash drives, external hard drives, joysticks, cameras, monitors, and more to computers of all kinds. USB also supports signaling rates from 1.5 Mbit/s to 80 Gbit/s depending on the version of the standard. The article explains how USB devices transmit and receive data using electrical signals over the physical layer, how they identify themselves and negotiate parameters such as speed and power with the host or other devices using standard protocols such as USB Device Framework and USB Power Delivery, and how they exchange data using packets of different types and formats such as token, data, handshake, and special packets.

References

  1. Cole, Bernard (2014-11-05). "MIPI nears ratification on SenseWire/I3C enhancement of I2C/SPI". News. embedded.com. Archived from the original on 2024-03-22. Retrieved 2024-03-22.
  2. Johnson, R. Colin (2014-12-11). "MEMS/Sensor Interface I3C Rocks". Industrial Control Designline. EE Times . Archived from the original on 2024-03-22. Retrieved 2024-03-22.
  3. "MIPI I3C and I3C Basic". mipi.org. 2017-01-06.
  4. "I3C and I3C Basic Frequently Asked Questions | MIPI". www.mipi.org. Retrieved 2022-08-29.
  5. "MIPI Alliance opens access to its MIPI I3C Sensor Interface Specification". 2017-12-14.
  6. "MIPI Alliance releases MIPI I3C sensor-interface specification". www.evaluationengineering.com.
  7. 1 2 "MIPI makes market push for I3C sensor interface". 2017-12-14.
  8. "MEMS/Sensor Interface I3C Rocks". 2014-11-12.
  9. "IP | Cadence" . Retrieved 2023-08-11.
  10. "VC Verification IP for MIPI I3C". www.synopsys.com.
  11. "MIPI I3C Family for Sensor and IoT Applications" (PDF). silvaco.com. Archived from the original (PDF) on 2019-08-30. Retrieved 2019-08-30.
  12. "Lattice gives iCE40 more power, I/O and memory". 2016-12-12.
  13. "Qualcomm SDM845 SoC | Integrated LTE Application Processor based on Snapdragon 845 | Qualcomm". www.qualcomm.com. Retrieved 2023-08-11.
  14. "MIPI I3C". mipi.org. 2017-01-06.
  15. "LKML: Boris Brezillon: [PATCH v2 0/7] Add the I3C subsystem". lkml.org.
  16. "Renesas Unveils Industry's First I3C Intelligent Switch Family for Next Generation Server, Storage and Communications Systems | Renesas". www.renesas.com. Retrieved 2023-08-11.
  17. "MIPI I3C Sensor Sessions at MIPI DevCon2016". resources.mipi.org. MIPI Alliance Inc.
  18. http://mipi.org/sites/default/files/MIPI%20+%20MIG%20Member%20Sensor%20Interface%20Survey%20Results%20final.pdf [ dead link ]
  19. "MIPI DevCon 2016: A Developer's Guide to MIPI I3C Implementation". YouTube . MIPI Alliance. 2016-09-23.
  20. "MIPI DevCon 2016: MIPI I3C High Data Rate Modes". MIPI Alliance. 2016-09-23.
  21. Foust, Ken. "MIPI Alliance Delivers New I3C Basic Specification". resources.mipi.org. Retrieved 2020-04-06.
  22. "8-Kbit serial I2C bus EEPROM data sheet" (PDF). STMicroelectronics. October 2017. p. 27. DocID 023924 Rev 6. Archived (PDF) from the original on 2019-10-18. Retrieved 2019-11-19.

Further reading