インテル® Agilex™ ハード・プロセッサー・システムのテクニカル・リファレンス・マニュアル

ID 683567
日付 1/19/2023
Public
ドキュメント目次

20.4.4.1. クロックの同期

2つ以上のマスターがバス上で同時に情報の転送を試みた場合は、調停を行い、SCLクロックを同期させる必要があります。すべてのマスターはそれぞれ、独自のクロックを生成してメッセージを転送します。データは、SCLクロックがHighの期間にのみ有効です。クロックの同期は、SCL信号へのワイヤードAND接続を使用して行われます。マスターがSCLクロックを0に遷移すると、マスターはSCLクロックのLowの時間のカウントを開始し、次のクロック周期の開始時にSCLクロック信号を1に遷移します。ただし、別のマスターがSCLラインを0で保持している場合、マスターは、SCLクロックラインが1に遷移するまで、HIGHで待機状態になります。†

次に、すべてのマスターはそれぞれのHighの時間をカウントし、Highの時間が最も短いマスターがSCLラインを0に遷移します。その後、マスターはそれぞれのLowの時間をカウントし、Lowの時間が最も長いマスターが、他のマスターをHIGHの待機状態に強制します。よって、次の図に示すように、同期しているSCLクロックが生成されます。オプションで、スレーブでSCLラインをLowに保持し、I2Cバス上のタイミングを遅らせることができます。†

図 109. 複数のマスターにおけるクロックの同期 †
図 110. 生成されたSCLにおけるSCLの立ち上がり時間と立ち下がり時間の影響

次の計算式を使用し、SCLがHighの時間およびLowの時間を計算することができます。

SCL_High_time = [(HCNT + IC_FS_SPKLEN + 6)*ic_clk] + SCL_Fall_time

SCL_Low_time = [(LCNT + 1)*ic_clk] - SCL_Fall_time + SCL_Rise_time