Ping-Pong バッファーを使用した受信のソフトウェア シーケンス - 3.0 日本語

AXI Ethernet Lite MAC v3.0 LogiCORE IP 製品ガイド (PG135)

Document ID
PG135
Release Date
2015-11-18
Version
3.0 日本語

[Number of Receive Buffers] を 1 に設定した場合、受信データ用のメモリ バッファーが 2 つ用意されます。元の Ping 受信バッファーは同じメモリ アドレスのままです。もう 1 つの Pong 受信バッファーはアドレス 0x1800 ~ 0x1FFC にマップされます。データの格納方法は Ping バッファーと Pong バッファーで同じです。

[Number of Receive Buffers] = 1 の場合、受信パケットを処理するためのソフトウェア シーケンスは次のとおりです。

1.ソフトウェアで Ping バッファーの受信ステータス ビットを監視して AXI Ethernet Lite MAC コアによって 1 にセットされるのを待つか、受信完了割り込みが有効な場合は割り込みの発生を待ちます。

2.Ping 受信ステータス ビットが 1 にセットされるか受信完了割り込みが発生すると、ソフトウェアで Ping デュアル ポート メモリから受信データ全体を読み出します。

3.AXI Ethernet Lite MAC コアが次のパケットを受信し、Pong 受信バッファーに格納します。

4.ソフトウェアで Ping 受信ステータス ビットに 0 を書き込みます。これで、AXI Ethernet Lite MAC コアは次のパケットを Ping 受信バッファーに格納できます。

5.ソフトウェアで Pong 受信ステータス ビットを監視して AXI Ethernet Lite MAC コアによって 1 にセットされるのを待つか、受信完了割り込みが有効な場合は割り込みの発生を待ちます。

6.Pong 受信ステータス ビットが 1 にセットされるか受信完了割り込みが発生すると、ソフトウェアで Ping デュアル ポート メモリから受信データ全体を読み出します。

7.ハードウェアは、リセット後最初に受信したパケットを常に Ping バッファーに書き込み、次に受信したパケットを Pong バッファーに書き込み、その次に受信したパケットを Ping バッファーに書き込むという順番で交互に書き込みます。

 

重要 : Ping および Pong バッファーのステータス ビットをクリアしないと、パケットが失われます。
たとえば、1 番目と 2 番目のパケットを正しく受信すると、Ping バッファーと Pong バッファーのステータス ビットが AXI Ethernet Lite MAC コアによって 1 にセットされます。ここでソフトウェアが Pong バッファーのステータス ビットのみをクリアした場合、3 番目に受信したパケットは Ping バッファーのステータス ビットがクリアされていないため受信できず失われます。4 番目に受信したパケットは正しく受信されます。