インテルのみ表示可能 — GUID: nik1412467947555
Ixiasoft
3.5.5.1. 書き込みバースト
以下の規則は、burstcountが1より大きい書き込みバーストが開始する際に適用されます。
- burstcountの <n> がバーストの開始時に提示されると、スレーブでは、 <n> 数の連続するwritedataのユニットを受け入れ、バーストを完了する必要があります。マスターとスレーブのペア間の調停は、バーストが完了するまでロックされたままになります。ロックを行うことにより、この書き込みバーストが完了するまで、他のマスターがこのスレーブでトランザクションを実行できないようにしています。
- スレーブでは、writeがアサートされた際にのみwritedataをキャプチャーする必要があります。バースト中に、マスターでwriteをデアサートし、writedataが無効なことを示すことができます。writeをデアサートしても、バーストは終了しません。writeがデアサートされると、バーストが遅延します。また、他のマスターはスレーブにアクセスすることができないため、転送効率が低下します。
- スレーブは、waitrequestをアサートしてwritedata、write、burstcount、byteenableが一定に維持されるように強制することで、転送を遅延します。
- 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回アサートし、バーストを遅延させています。
このタイミング図内の数字は、次の遷移を示しています。
- マスターは、address、burstcount、writeをアサートし、writedataの最初のユニットを駆動します。
- スレーブは直ちにwaitrequestをアサートし、転送に対する準備ができていないことを示します。
- waitrequestはLowです。スレーブは、addr1、burstcount、およびwritedataの最初のユニットをキャプチャーします。転送の後続のサイクルでは、addressおよびburstcountは無視されます。
- スレーブは、clkの立ち上がりエッジで2番目のデータユニットをキャプチャーします。
- バーストは、writeがデアサートされている間、一時停止します。
- スレーブは、clkの立ち上がりエッジで3番目のデータユニットをキャプチャーします。
- スレーブはwaitrequestをアサートします。それに応じて、すべての出力はあと1クロックサイクルの間一定に保たれます。
- スレーブは、clkのこの立ち上がりエッジでデータの最後のユニットをキャプチャーします。スレーブ書き込みバーストは終了します。
上の図で、beginbursttransfer信号はバーストの最初のクロックサイクルでアサートされ、次のクロックサイクルでデアサートされています。スレーブがwaitrequestをアサートしている場合でも、beginbursttransfer信号は、最初のクロックサイクルでのみアサートされます。
関連情報