Skip to content

Commit 4ef0372

Browse files
committed
docs: add information about clock registers
Signed-off-by: Karol Gugala <[email protected]>
1 parent 78a74d0 commit 4ef0372

File tree

1 file changed

+25
-0
lines changed

1 file changed

+25
-0
lines changed

doc/source/phy.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,3 +53,28 @@ Additionally, there is an RTL testbench run in Verilator and Icarus simulators t
5353
### Clock synchronization (5.1.7)
5454

5555
The entire core functions in a single clock domain - all I3C bus signals are sampled with this clock.
56+
57+
### I3C timing configuration
58+
59+
The core implements 4 CSRs for controlling timings of the I3C bus:
60+
61+
* `T_F_REG` - SCL falling time
62+
* `T_R_REG` - SCL rise time
63+
* `T_HD_DAT_REG` - SDA hold time
64+
* `T_SU_DAT_REG` - SDA setup time
65+
66+
In the target configuration, the first three should be set to `0`, the `T_SU_DAT_REG` should be set according to the following equation:
67+
68+
```
69+
reg_val = $ceil(3 / system_clock_period) - 1
70+
T_SU_DAT_REG = reg_val > 0 ? reg_val : 0
71+
```
72+
73+
For system clock frequencies below 320MHz, the core should be configured with the `DisableInputFF` parameter set to `True` (see [example configuration](https://github.com/chipsalliance/i3c-core/blob/main/i3c_core_configs.yaml#L49))
74+
This parameter removes one flipflop on the input lines, shortening the response latency.
75+
76+
Example configurations:
77+
78+
* 160MHz system clock (minimal operting clock) - `DisableInputFF=True`, `T_SU_DAT_REG=0`
79+
* 400MHz system clock - `DisableInputFF=False`, `T_SU_DAT_REG=0`
80+
* 1GHz system clock - `DisableInputFF=False`, `T_SU_DAT_REG=2`

0 commit comments

Comments
 (0)