バイナリポインターとグレイコードポインターの違い
(1)ハンドシェイク同期により、ポインターは複数のビットを同時に変更でき、バイナリポインターは移動するたびに任意の長さを飛び越すことができるため、FIFOの一部の関数の実装に便利です(たとえば、ハードウェアはキャッシュからFIFOを直接制御します。エラーパケットはデータストリームで破棄されます。 グレイコードポインタは通常、上または下にしか移動できません。
(3)直接同期と比較して、ハンドシェイクによる同期には複数のクロックサイクルが必要であるため、バイナリポインターの完全な空の判断は、グレイコードポインターの完全な空の判断よりも「保守的」です。 大容量でメモリで構成されたFIFOを設計する場合、保守的な判断により失われたスペースは無視できると言われています。 しかし、小さなFIFOの場合、この「保守的」は許容できない場合があります。 たとえば、8つのレジスタで構成されるFIFO。 グレイコードでエンコードされたポインターの場合、最悪の場合、FIFOがライターによっていっぱいであると判断された場合、実際に格納されるデータは5つだけです(2レベルのシンクロナイザーを使用すると、2サイクルの3つの同期が必要になる場合があります) 、および読み取り操作はこれらの3つのサイクル内で発生します); バイナリエンコーディングのポインターの場合、FIFOがいっぱいであると判断された場合、FIFOに3つ以下のデータしか存在しない可能性があります(2ステージのシンクロナイザーを使用。最良の場合、ハンドシェイクの5サイクルが必要で、読み取り操作が発生します5つのサイクルすべてで)。
