Avalon® インターフェイスの仕様書

ID 683091
日付 9/26/2022
Public
ドキュメント目次

5.9. バックプレッシャーを使用するデータ転送

シンクは、ready を単一のクロックサイクルでアサートし、アクティブサイクルに対して準備ができていることを示します。 シンクでデータに対する準備が整っている場合、そのサイクルは Ready サイクルです。Ready サイクル時に、ソースは valid をアサートし、シンクにデータを提供することが可能です。ソースに送信するデータがない場合、ソースは valid をデアサートし、data を任意の値に駆動することができます。

バックプレッシャーをサポートするインターフェイスでは、readyLatency パラメーターを定義し、ready がアサートされてから有効なデータを駆動できるまでのサイクル数を示します。readyLatency が 0 以外の場合に、ready がサイクル <n> でアサートされると、サイクル <n + readyLatency> が Ready サイクルになります。

readyLatency = 0 の際に、データ転送は、ready および valid が同じサイクルでアサートされている場合にのみ発生します。このモードでは、ソースは有効なデータを送信する前にシンクの ready 信号を受信しません。ソースは、ソースに有効なデータがある場合は常にデータを提供し、valid をアサートします。ソースは、シンクがデータをキャプチャーして ready をアサートするまで待機します。ソースはいつでもデータを変更することができます。シンクは、ready および valid の両方がアサートされている際にのみソースからの入力データをキャプチャーします。

readyLatency >= 1 の場合、シンクは ready サイクル自体の前に ready をアサートします。ソースは、適切な後続のサイクルで応答することができます。それには、valid をアサートします。ソースは、ready サイクルではないサイクル時に valid をアサートすることができません。

readyAllowance は、ready がデアサートされた際にシンクでキャプチャーすることができる転送の数を定義します。readyAllowance = 0 の場合、シンクでは、ready がデアサートされた後に転送を受け入れることはできません。readyAllowance = <n> において n > 0 の場合、シンクでは、最大 <n> 数の転送を ready がデアサートされた後に受け入れることができます。