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

ID 683091
日付 12/21/2020
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信号は、最初のクロックサイクルでのみアサートされます。