LVDS Tunneling Protocol and Interface (LTPI) IP User Guide: Agilex™ 3 and Agilex™ 5 FPGAs and SoCs

ID 844310
Date 8/15/2025
Public
Document Table of Contents

6.2. I2C Channel

The I2C/SMBus channel tunnels I2C/SMBus buses through the LTPI interface where the controller can be located on either the SCM or HPM.

The main use case is shown in the following figure, where the BMC on SCM controls the I2C/SMBus links with the target devices on HPM.

Figure 32. I2C Mapping in LTPI I2C Channel

I2C/SMBus SCL and SDA signals are bidirectional and can be driven by either the controller or target devices during transactions. Therefore, they cannot be tunneled directly through LTPI like GPIO or UART signals. Instead, LTPI uses an event-based model for I2C/SMBus channels. Events and states are captured on one side and recovered on the other. When the controller generates an event (like a START condition), the local SCL line is held until the remote event is received and processed. Once processed, the SCL line is released. The I2C/SMBus relays in the LTPI manage the states of the SCL and SDA signals.

To handle LTPI latency and turnaround time, the clock stretching method from the I2C/SMBus specification is used. Refer to the following figure for the state transition that follows the behavior and event exchange flows between the controller and the target.

Figure 33. State Transition

The received events do not need to be confirmed with an echo message, except for the data received events. An echo is sent for these events to differentiate between subsequent incoming data events within a byte transmission. For example:

  1. New data event is started by one end and is sent continuously on LTPI.
  2. When a data bit is received by the other end, it starts sending data echo continuously to confirm the reception of the data event.
  3. When a data bit is regenerated on the physical bus, a data received event starts sending continuously to confirm regeneration. The other end is still sending data event, which should be ignored until the data received event echo is received as a differentiator between the subsequent data events.
  4. When the data received event is received by the other end, the data received echo is transmitted continuously until a new data event is generated.

The I2C/SMBus events are defined with binary encoding in the following table. By using 4-bit encoding, an 8-bit LTPI frame field can accommodate two I2C/SMBus interfaces.

Table 50.  I2C/SMBus Event Bit Encoding
Bus Event Direction Description Encoding Event [4b]
Idle Bidirectional I2C/SMBus LTPI relay is in idle state. 0b0000
Start Controller to target Start Event detected on Controller side. 0b0001
Start Received Target to controller Start event recovered on the target side. 0b0010
Stop Controller to target Stop Event detected on Controller side. 0b0011
Stop Received Target to controller Stop event recovered on the target side. 0b0100
Data Received Bidirectional SDA bit value recovered on remote side. 0b0101
Data 0 Bidirectional Send SDA bit value 0. 0b0110
Data 1 Bidirectional Send SDA bit value 1. 0b0111
Start Echo Target to controller Event used to indicate that the start event is correctly received by the target side. If the echo is not received within expected time, i.e., frame turnaround time (typically 1–2 LTPI frames), the event can be repeated immediately without waiting for the start event timeout. 0b1000
Stop Echo Controller to target Optional stop event correctly received by target side. If the echo is not received within expected time, i.e., frame turnaround time (typically 1–2 LTPI frames), the event can be repeated immediately without waiting for the start event timeout. 0b1001
Data 0 Echo Bidirectional Send SDA bit value 0 received correctly. If the echo is not received within expected time, i.e., frame turnaround time (typically 1–2 LTPI frames), the event can be repeated immediately without waiting for the start event timeout. 0b1010
Data 1 Echo Bidirectional Send SDA bit value 1 received correctly. If the echo is not received within expected time, i.e., frame turnaround time (typically 1–2 LTPI frames), the event can be repeated immediately without waiting for the start event timeout. 0b1011
Data Received Echo Bidirectional Event used to indicate that the data received event was correctly received. It is used to differentiate between consecutive data 0/1 events during byte transmission. 0b1100
Reserved Reserved Reserved for future use. 0b1101–0b1111