[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 番目に受信したパケットは正しく受信されます。