ほとんどの FIFO バッファーでは、FLEX® 10K エンベデッド・アレイ・ブロック (EAB) は、ロジック / メモリーのトレードオフを伴わなずに高性能と大容量 RAM ブロックを提供します。Alteraデバイスはコスト効率が高いため、ロジックエレメント (LE) のみで構成された FIFO バッファーも競合ソリューションを提供できます。
FIFO バッファーを使用する場合は、さまざまなシステム要件を考慮する必要があります。例えば、FIFO バッファーを同時に読み書きする必要があるかどうかを考慮する必要があります。FIFO バッファーによっては、個別の読み取りおよび書き込みクロックを必要とする場合と、同じクロックを使用して書き込みを行う場合があります。Alteraは、これらの要件をすべて満たす FIFO ソリューションを提供します。
この記事では、次の FIFO デザインについて説明します。
- インターリーブ・メモリー FIFO バッファー
- サイクル共有 FIFO バッファー
- 同期 LE ベースの FIFO バッファー
- 非同期 LE ベースの FIFO バッファー
インターリーブド・メモリー FIFO バッファー
インターリーブ・メモリー FIFO バッファーは、1 つのリード / ライト・クロックを持つ比較的深いバッファーに適しています。このタイプの FIFO バッファーでは、各 8 ビット幅に 2 つの EAB が使用されます。追加の EAB を使用せずに、最大 512 ワードの深さまでの FIFO バッファーを実装できます。
各 EAB は、特定のクロックサイクルで読み書きできます。2 つの EAB を使用することで、同時読み出しと書き込みを実装できます。データは非書き込み EAB からプリフェッチされるため、同じ EAB への同時読み取りと書き込みが必要な場合に生じる競合を防ぎます。この FIFO バッファーは、FLEX® 10KA デバイスで 80 MHz のパフォーマンスを実現できます。
サイクル共有 FIFO バッファー
サイクル共有 FIFO バッファーは、インターリーブ・メモリー FIFO バッファーより少ない EAB を使用するため、多くの EAB を使用するデザインに適しています。この FIFO バッファーには 1 個のリード / ライト・クロックがあり、EAB は 2 倍のクロックでタイムドメイン・マルチプレクシングされます。つまり、EAB は後続の 2 倍クロックサイクルで読み書きされます。66MHz クロックを使用して、33 MHz スループットのサイクル共有 FIFO バッファーを実装できます。この FIFO バッファーは、FLEX® 10KA デバイスで 40MHz のパフォーマンスを実現できます。
アービテッド FIFO バッファー
FIFO アプリケーションによっては、同時読み書きは必要ありません。例えば、非同期転送モード (ATM) デザインでは、53 バイトのセル全体が 1 つのバーストで読み書きされる FIFO バッファーを備えている場合があります。ATM デザインでは、1 つのポートが 1 つの FIFO バッファーにセルを書き込み、別のポートが別の FIFO バッファーからセルを読み取る複数の FIFO バッファーを持つ場合があります。この場合、同時読み書きは必要ありません。同時読み出しと書き込みを必要としないアプリケーションでは、EAB を使用してデータを格納する、アービテッド FIFO バッファーを使用できます。アービテッド FIFO は同時読み出しと書き込みを必要としないため、EAB を使用するための特別な手法は必要ありません。パラメーターを使用して、読み書きを優先させることができます。アービテッド FIFO バッファーは、1 個のリード / ライト・クロックを使用し、FLEX® 10KA デバイスで 80MHz 以上を実行します。
同期 LE ベースの FIFO バッファー
ターゲットデバイスの EAB に適合できるよりも多くの FIFO バッファーが必要な場合があります。また、EAB がないデバイス (FLEX 6000 デバイスなど) を対象としたデザインでは、FIFO バッファーが必要になる場合があります。この場合、シフトレジスターを使用して FIFO バッファーにデータを格納する同期 LE ベースの FIFO バッファーが、コスト効率の高いソリューションを提供します。この FIFO バッファーは、1 個のリード / ライト・クロックを備えた複数のステーブル、広い FIFO バッファーに最適です。同期 LE ベースの FIFO バッファーは、高速アプリケーションで最適に使用され、100 MHz 以上のパフォーマンスを実現します。
非同期 LE ベースの FIFO バッファー
個別の読み取りおよび書き込みクロックを必要とするアプリケーションでは、非同期 LE ベースの FIFO バッファーが理想的なソリューションを提供します。例えば、FIFO バッファーは、33MHz PCI バスから 50 MHz バックエンドに送信されるデータをバッファーする場合があります。これらの FIFO バッファーは、「非同期」、「2 クロック」、または「二重クロック」と呼ばれます。非同期 LE ベースの FIFO バッファーは、バンクのレジスターを使用してデータを格納します。書き込みカウンターはデコードされ、どのレジスターが書き込まれるかを判断し、マルチプレクサーを使用して読み取るレジスターを決定します。
レジスターとマルチプレクサーから作成されたメモリー構造は、読み取りマルチプレクサーが書き込みデコーダーから独立しているため、同時に読み書きできます。この構造は、異なるクロックで書き込みおよび読み取りが可能です。FIFO バッファー制御回路は、システムのメタ安定した乱れを防ぎます。
非同期 LE ベースの FIFO バッファーは、独立した読み出しおよび書き込みクロックを備えたアプリケーションに最適です。また、他の FIFO バッファーと組み合わせて、独立した読み出しおよび書き込みクロックを備えた大規模な FIFO バッファーを作成できます。FLEX® 10KA デバイスで 60 MHz のパフォーマンスを実現できます。
MAX PLUS II サポート
この記事で説明した FIFO バッファーのデザインファイルは、Altera アプリケーションから入手できます。FIFO バッファーはパラメーター化可能で、システム要件に合わせてパラメーターを設定したり、デザインの機能をカスタマイズしたりすることが容易になります。さらに、FIFO バッファーにはAlteraのMAX PLUS が提供されます。® II ソフトウェア (サイクル共有 FIFO バッファー、csfifo など)。Alteraは、今後のバージョンのMAX PLUS II ソフトウェアに追加機能を提供する予定です。
結論
FLEX デバイスは、FIFO 要件を満たすデザインに優れたソリューションを提供します。これらのソリューションは、さまざまな FIFO 要件を満たし、高性能と大容量を低コストで提供します。FIFO 要件を備えたデザインをお持ちの場合は、詳細については、お近くのフィールド・アプリケーション・エンジニアにお問い合わせください。