You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: doc/source/phy.md
+25Lines changed: 25 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -53,3 +53,28 @@ Additionally, there is an RTL testbench run in Verilator and Icarus simulators t
53
53
### Clock synchronization (5.1.7)
54
54
55
55
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