Hard Processor System Technical Reference Manual: Agilex™ 5 SoCs

ID 814346
Date 7/19/2024
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

5.8.7.2.2. Programming Timing Registers

Set the following register fields to program timing registers:

  • SCL_I3C_OD_TIMING: Program the I3C_OD_LCNT and I3C_OD_HCNT fields with the required SCL low and high period values for the I3C open-drain phase. These counts are in terms of the core_clk period used.
  • SCL_I3C_PP_TIMING: Program the I3C_PP_LCNT and I3C_PP_HCNT fields with the required SCL low and high period values for the I3C push-pull phase. These counts are in terms of the core_clk period used.
  • BUS_FREE_AVAIL_TIMING: Program the BUS_FREE_TIME field with the required value of bus free period. The count is in terms of the core_clk period used.
  • SCL_I2C_FMP_TIMING: Program the I2C_FMP_LCNT and I2C_FMP_HCNT fields with the required SCL low and high period values for the I2C FM+ transfer. These counts are in terms of the core_clk period used.
  • SCL_I2C_FM_TIMING: Program the I2C_FM_LCNT and I2C_FM_HCNT fields with the required SCL low and high period values for the I2C FM transfer. These counts are in terms of the core_clk period used.
  • BUS_IDLE_TIMING: Program the BUS_IDLE field with the required value of bus idle period. The count is in terms of the core_clk period used.
  • SCL_EXT_LCNT_TIMING: Program the I3C_EXT_LCNT_1, I3C_EXT_LCNT_2, I3C_EXT_LCNT_3, and I3C_EXT_LCNT_4 fields with the required SCL push-pull low period values for I3C data transfers in SDR1, SDR2, SDR3, and SDR4 speeds respectively. These counts are in terms of the core_clk period used.
  • SCL_EXT_TERMN_LCNT_TIMING[I3C_EXT_TERMN_LCNT]: Program the I3C_EXT_TERMN_LCNT field with the required extended SCL Push-pull low period value for I3C read termination bit. This count is in terms of the core_clk period used.
  • SDA_HOLD_SWITCH_DLY_TIMING: Program the SDA_TX_HOLD field with the required SDA (Data) Hold delay. This count is in terms of the core_clk period used.

To ensure proper I/O timing, all these register fields must be set before any I3C/I2C bus transaction takes place. Effective Read Termination-Bit Low Period is derived based on the following SDR speed:

  • SDR0 speed: I3C_PP_LCNT + I3C_EXT_TERMN_LCNT
  • SDR1 speed: I3C_EXT_LCNT_1 + I3C_EXT_TERMN_LCNT
  • SDR2 speed: I3C_EXT_LCNT_2 + I3C_EXT_TERMN_LCNT
  • SDR3 speed: I3C_EXT_LCNT_3+ I3C_EXT_TERMN_LCNT
  • SDR4 speed: I3C_EXT_LCNT_4 + I3C_EXT_TERMN_LCNT
Note: The minimum count value supported for I3C_OD_LCNT, I3C_OD_HCNT, I3C_PP_LCNT, I3C_PP_HCNT, I2C_FM_LCNT, I2C_FM_HCNT, I2C_FMP_LCNT, I2C_FMP_HCNT and BUS_FREE_TIME is 5. The minimum of five core_clks is to generate high/low period (this includes three clocks for synchronization, one clock to detect the arbitration loss, and one clock for setup time).

For information on the I3C timing characteristic, refer to the Intel® Agilex™ 5 FPGAs and SoCs Device Data Sheet.