インテルのみ表示可能 — GUID: nik1412467942812
Ixiasoft
3.5.4.1. 可変レイテンシーでのパイプライン読み出し転送
アドレスおよび制御信号をキャプチャー後、Avalon-MMのパイプライン・スレーブは、データの生成に1サイクルもしくは複数サイクルを費やします。パイプライン・スレーブでは、複数の保留中の読み出し転送をいつでも保持することができます。
- readdatavalid信号が追加で必要です。この信号は、読み出しデータが有効なことを示します。
- パイプライン化されていない読み出し転送と同じ信号セットを含みます。
スレーブは、読み出しコマンドの受け入れ順と同じ順序でreaddataを返す必要があります。可変レイテンシーのパイプライン・スレーブ・ポートでは、waitrequestを使用する必要があります。スレーブでは、waitrequestをアサートして転送をストールすることで、保留中の転送を許容数に維持することができます。スレーブがwaitrequestで新しいコマンドをストールしているか否かにかかわらず、スレーブでは、readdatavalidをアサートしてマスターにデータを転送することができます。
次の図は、複数のスレーブ読み出し転送を表しています。スレーブは可変レイテンシーでパイプライン化されています。この図において、スレーブでは最大2つの保留中の転送を許容することができます。スレーブでは、waitrequestを使用してこの最大値を超えないようにします。
このタイミング図内の数字は、次の遷移を示しています。
- マスターがaddressおよびreadをアサートし、読み出し転送を開始します。
- スレーブはaddr1をキャプチャーします。
- スレーブはaddr2をキャプチャーします。
- スレーブはwaitrequestをアサートします。スレーブではすでに最大の2つの保留中の読み出しを受け入れているため、3番目の転送はストールします。
- スレーブは、addr1への応答であるdata1をアサートします。スレーブは、waitrequestをデアサートします。
- スレーブはaddr3をキャプチャーします。インターコネクトでdata1をキャプチャーします。
- スレーブはaddr4をキャプチャーします。インターコネクトでdata2をキャプチャーします。
- スレーブは、3番目の読み出し転送に対するreaddatavalidおよびreaddataを駆動します。
- スレーブはaddr5をキャプチャーします。インターコネクトでdata3をキャプチャーします。read信号がデアサートされます。waitrequestの値が該当しなくなります。
- インターコネクトでdata4をキャプチャーします。
- スレーブがdata5を駆動し、readdatavalidをアサートして、最後の保留中の読み出し転送のデータフェーズを完了します。
保留中の読み出し転送の処理中にスレーブで書き込み転送を処理できない場合は、スレーブでwaitrequestをアサートし、保留中の読み出し転送が完了するまで書き込み操作をストールする必要があります。Avalon-MMの仕様では、現在保留されている読み出し転送と同じアドレスへの書き込み転送をスレーブが受け入れた場合のreaddataの値を定義していません。