この回答では、18k ビットのザイリンクス スタイルの BRAM を想定しています。私は Virtex-4 に最も精通しているので、以下では UG070 を参照しています。その答えは、他のザイリンクス FPGA や、おそらく他のベンダーのパーツにも簡単にマップできます。
最初に注意すべきことは、Virtex-4 BRAM はポートごとに異なるジオメトリを持つデュアル ポート モードで使用できることです。ただし、1 ビット幅のポートでは、これらの RAM のパリティ ビットは役に立ちません。したがって、ここでは 18k ビットの BRAM は事実上 16k ビットにすぎません。
次に、(デザインに関係なく) ストレージに必要な BRAM の数を検討します。294912x8 ビットは 144 個の BRAM にマップされ、これはかなり大きなリソース コミットメントです。スループット、設計の複雑さ、およびリソース要件の間には常にバランスがあります。デザインからすべての MBit/sec を絞り出す必要がある場合は、おそらく BRAM ベースのアプローチが理想的です。そうでない場合は、スループットとレイテンシの要件により、BRAM の代わりにオフチップ RAM を使用できるかどうかを検討する必要があります。
BRAM を使用する予定がある場合は、18x8 BRAM のアレイを検討する必要があります。8 つの列にはそれぞれ 1 つの入力ビットが格納されます。各 BRAM は 1 ビット ポートを介して書き込まれ、32 ビット ポートを使用して読み出されます。
各 8 ビット書き込みは、8 つの 1 ビット書き込み (各列の BRAM への 1 つの書き込み) にマップされます。
すべての 32 ビット読み出しは、 1 つのBRAMからの1つの 32 ビット読み出しにマップされます。
これを機能させるには、シーケンス ロジック (RAMB16 プリミティブ周辺) はほとんど必要ありません。主な複雑さは、1 ビット ポートと 32 ビット ポートの間でアドレス ビットをマップする方法です。