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

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

5.9.1. readyLatency および readyAllowance を使用するデータ転送

readyLatency および readyAllowance を使用してデータを転送する場合は、次の規則が適用されます 。

  • readyLatency が 0 の場合、readyAllowance は 0 以上の値にすることができます。
  • readyLatency が0より大きい場合、readyAllowancereadyLatency 以上の値にすることができます。

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

図 25. readyLatency = 0、readyAllowance = 0

readyLatency = 0readyAllowance = 0 の場合、ソースはいつでも valid をアサートすることができます。シンクは、ready = 1 の場合にのみソースからのデータをキャプチャーします。

次の図は、以下のイベントを表しています。

  1. サイクル 1 で、ソースはデータを提供し、valid をアサートします。
  2. サイクル 2 で、シンクが ready をアサートし、D0 が転送されます。
  3. サイクル 3 では、D1 が転送されます。
  4. サイクル 4 では、シンクが ready をアサートしていますが、ソースは有効なデータを駆動していません。
  5. ソースはサイクル 6 でデータを提供し、valid をアサートします。
  6. サイクル 8 では、シンクが ready をアサートしているため、D2 が転送されます。
  7. D3 はサイクル 9 で転送され、D4 はサイクル 10 で転送されます。
図 26. readyLatency = 0、readyAllowance = 1

readyLatency = 0readyAllowance = 1 の場合、シンクでは、ready = 0 の後にさらに 1 つのデータ転送をキャプチャーすることができます。

次の図は、以下のイベントを表しています。

  1. サイクル 1 では、ソースがデータを提供し、valid をアサートします。シンクは ready をアサートしています。D0 が転送されます。
  2. D1 はサイクル 2 で転送されます。
  3. サイクル 3 では ready がデアサートされていますが、readyAllowance = 1 の場合はさらに 1 つの転送が許可されるため、D2 が転送されます。
  4. サイクル 5 では、valid および ready の両方がアサートされているため、D3 が転送されます。
  5. サイクル 6 では、ソースが valid をデアサートしているため、データは転送されません。
  6. サイクル 7 では、valid がアサートされ、ready がデアサートされています。ただし、readyAllowance = 1 の場合はさらに 1 つの転送が許可されるため、D4 が転送されます。
図 27. readyLatency = 1、readyAllowance = 2

readyLatency = 1readyAllowance = 2 の場合、シンクでは、ready がアサートされた 1 サイクル後にデータを転送することができます。また、ready のデアサート後は、さらに 2 サイクルの転送が許可されます。

次の図は、以下のイベントを表しています。

  1. サイクル 0 で、シンクは ready をアサートします。
  2. サイクル 1 で、ソースがデータを提供し、valid をアサートしています。転送はすぐに行われます。
  3. サイクル 3 で、シンクは ready をデアサートしていますが、ソースは引き続き valid をアサートし、有効なデータを駆動します。シンクでは、ready のデアサート後 2 サイクルは、データをキャプチャーすることができます。
  4. サイクル 6 で、シンクは ready をアサートします。
  5. サイクル 7 で、ソースはデータを提供し、valid をアサートしています。このデータは受け入れられます。
  6. サイクル 10 では、シンクが ready をデアサートしていますが、ソースは valid をアサートし、有効なデータを駆動しています。シンクでは、ready のデアサート後 2 サイクルは、データをキャプチャーすることができます。

適応要件

次の表は、ソース・インターフェイスとシンク・インターフェイスで適応が必要かを示しています。

表 19.  ソースおよびシンクの適応要件
readyLatency readyAllowance 適応
ソースの readyLatency = シンクの readyLatency ソースの readyAllowance = シンクの readyAllowance 適応は必要ありません。シンクはすべての転送をキャプチャーすることができます。
ソースの readyAllowance > シンクの readyAllowance 適応が必要です。 ready のデアサート後に、ソースでは、シンクでキャプチャーすることができるよりも多くの転送を送信することができます。
ソースの readyAllowance < シンクの readyAllowance 適応は必要ありません。 ready のデアサート後に、シンクでは、ソースが送信することができるよりも多くの転送をキャプチャーすることができます。
ソースの readyLatency > シンクの readyLatency ソースの readyAllowance = シンクの readyAllowance 適応は必要ありません。 ready がアサートされると、ソースは、シンクがデータをキャプチャーできるようになった後に送信を開始します。ready がデアサートされると、ソースでは、シンクでキャプチャーできる数の転送を送信することができます。
ソースの readyAllowance > シンクの readyAllowance 適応が必要です。 ready のデアサート後に、ソースでは、シンクでキャプチャーすることができるよりも多くの転送を送信することができます。
ソースの readyAllowance < シンクの readyAllowance 適応は必要ありません。 ready のデアサート後に、ソースは、シンクでキャプチャーすることができるよりも少ない転送を送信します。
ソースの readyLatency < シンクの readyLatency ソースの readyAllowance = シンクの readyAllowance 適応が必要です。シンクでデータをキャプチャーできるようになる前に、ソースが転送の送信を開始することができます。
ソースの readyAllowance > シンクの readyAllowance 適応が必要です。シンクでデータをキャプチャーできるようになる前に、ソースが転送の送信を開始することができます。また、ready のデアサート後に、ソースでは、シンクでキャプチャーすることができるよりも多くの転送を送信することができます。
ソースの readyAllowance < シンクの readyAllowance 適応が必要です。シンクでデータをキャプチャーできるようになる前に、ソースが転送の送信を開始することができます。