クリティカルな問題
RapidIO MegaCore ファンクション I/O Avalon-MM マスターの読み取りおよび 書き込みポートは、Avalon-MM 上に読み取りおよび書き込みトランザクションを存在する場合があります。 インターフェイスが RapidIO に表示されているのとは異なる順序で表示されます。 リンク。具体的には、RapidIO IP コアがリードを受信した場合 複数のパケットを受信した直後に RapidIO リンクでパケットをリクエストする 要求パケットを書き込む前に、リード・トランザクションが完了する可能性があります。 すべての書き込みトランザクションが完了します。
次の図は状況の例を示しています。 問題が発生する可能性があります。
図では、RapidIO IP コアAvalon-MM マスター書き込み ポートには、Avalon-MM に送信できる書き込み要求トランザクション w0 があります。 スレーブ 0、および RapidIO IP コア Avalon-MM マスター・リード・ポートには、 同じAvalon-MM に送信できる読み取り要求トランザクション r5 スレーブ、Avalon-MM スレーブ 0。トランザクション番号は次の番号を示します。 トランスポート層からトランザクションが届いた順序、 これは、トランザクションが完了する順序です。しかし 次のシナリオでは、トランザクションの注文が失われます。
- マスター書き込みポートが w0 リクエストを送信します。 Avalon-MM スレーブ 0 に接続します。
- Avalon-MM スレーブ 0 は、次のように主張して応答します
waitrequest。 - マスター・リード・ポートが r5 リクエストを Avalon-MM に送信します。 スレーブ 0。
- Avalon-MM スレーブ 0 はデータを取得して転送します。 r5 リクエストに応じて、Avalon-MM マスター・リード・ポートは、 w0 トランザクションが完了します。
w1、w2、w3、w4 が存在する場合も同様のシナリオが生じる可能性があります。 遅延。同様に、w0 は取り扱いではなく、以前も完全である可能性があります。 r5、r5 の前に w1 が完了していないなど。同じシナリオ r0 読み取りトランザクションおよび w1 でも理論上発生する可能性があります。 書き込みトランザクション。ただし、RapidIO 仕様ではプリクロードされません。 読み取りトランザクションを渡すことからの書き込みトランザクション。
トランザクションの送信を防止するには NREAD
上記の一連の NWRITE トランザクションのいずれか
書き込みトランザクションと書き込みトランザクションの間に適切な遅延を確保します。
RapidIO リンク上の読み取りトランザクション。たとえば、次のことが考できます。
最終 NWRITE トランザクションをトランザクションにする NWRITE_R
代わりに、 NREAD リンク上でのみトランザクションを送信してください
受け取った後で NWRITE_R 確認してください。
この問題は、将来のバージョンの RapidIO で修正される予定です。 MegaCore ファンクション