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

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

3.5.5.1. 書き込みバースト

次の規則は、burstcount が 1 より大きい書き込みバーストを開始する際に適用されます。

  • burstcount<n> がバーストの開始時に提示されると、エージェントでは、<n> 数の連続する writedata のユニットを受け入れ、バーストを完了する必要があります。ホストとエージェントのペア間の調停は、バーストが完了するまでロックされたままになります。ロックを行うことにより、この書き込みバーストが完了するまで、他のホストがこのエージェントでトランザクションを実行できないようにしています。
  • エージェントでは、write がアサートされた際にのみ writedata をキャプチャーする必要があります。バースト中にホストで write をデアサートし、 writedata が無効なことを示すことができます。write をデアサートしてもバーストは終了しません。write がデアサートされると、バーストが遅延します。また、他のホストはそのエージェントにアクセスすることができないため、転送効率が低下します。
  • エージェントは、waitrequest をアサートして writedatawriteburstcountbyteenable が一定に維持されるように強制することで、転送を遅延します。
  • byteenable 信号の機能は、バーストを行うエージェントと行わないエージェントで同じです。32 ビット・ホストによる 64 ビット・エージェントへのバースト書き込みがバイトアドレス 4 から始まる場合、エージェントが最初に認識する書き込み転送はアドレス 0 で、byteenable = 8'b11110000 です。byteenable は、バーストのさまざまなワードに対して変更することができます。
  • byteenable 信号は、すべてアサートする必要はありません。部分的なワードを書き込むバーストホストでは、byteenable を使用し、書き込まれるデータを識別することができます。
  • byteenable 信号がすべて 0 の書き込みは、単に有効なトランザクションとして Avalon® -MM エージェントに渡されます。
  • constantBurstBehavior プロパティーは、バースト信号の動作を指定します。
    • constantBurstBehavior がホストで True の場合、ホストは、address および burstcount をバースト全体で安定した状態に維持します。エージェントで True の場合、constantBurstBehavior は、address および burstcount がバースト全体で安定して維持されることをエージェントが想定していることを宣言します。
    • constantBurstBehavior が False の場合、ホストは、バーストの最初のトランザクションでのみ address および burstcount を安定した状態で維持します。constantBurstBehavior が False の場合、エージェントは、address および burstcount をバーストの最初のトランザクションでのみサンプリングします。
図 14. constantBurstBehavior がホストとエージェントで False に設定されている書き込みバースト次の図は、エージェント書き込みバースト長が 4 の場合を示しています。この例では、エージェントで waitrequest を2回アサートし、バーストを遅延させています。

このタイミング図内の数字は、次の遷移を示しています。

  1. ホストは、addressburstcountwrite をアサートし、writedata の最初のユニットを駆動します。
  2. エージェントは直ちに waitrequest をアサートし、転送に対する準備ができていないことを示します。
  3. waitrequest は Low です。エージェントは、addr1burstcount、および writedata の最初のユニットをキャプチャーします。転送の後続のサイクルでは、address および burstcount は無視されます。
  4. エージェントは、clk の立ち上がりエッジで 2 番目のデータユニットをキャプチャーします。
  5. バーストは、write がデアサートされている間、一時停止します。
  6. エージェントは、clk の立ち上がりエッジで 3 番目のデータユニットをキャプチャーします。
  7. エージェントは waitrequest をアサートします。それに応じて、すべての出力はあと 1 クロックサイクルの間一定に保たれます。
  8. エージェントは、clk のこの立ち上がりエッジでデータの最後のユニットをキャプチャーします。エージェント書き込みバーストは終了します。

上の図で、beginbursttransfer 信号はバーストの最初のクロックサイクルでアサートされ、次のクロックサイクルでデアサートされています。エージェントが waitrequest をアサートしている場合でも、beginbursttransfer 信号は最初のクロックサイクルでのみアサートされます。