次の構成で Verilog で RAM ブロックを構築しようとしています。
- ポート A: 128 ビット幅、clk_a を使用すると、RAM ブロックは 128 ビット幅 x 128 ラインの深さと見なされます。
- ポート B: clk_b を使用した 32 ビット幅、RAM ブロックを 32 ビット幅 x 512 ラインの深さとして認識
READ-WRITE シリアライゼーションとミューテックスについて心配する必要はありません。その上のレイヤーで処理します。
基本的に、128 ビット× 128 行を生成するコードは次のようになります。
reg [DATA_WIDTH-1:0] mem [0:2**ADDRESS_WIDTH-1];
さて、32 ビット× 512 の深さのように見せたい場合、このメモリをリファクタリングして異なるようにするにはどうすればよいでしょうか (C でのリキャストのようなものです)。32 ビット ワード イネーブルでこれを実行できる可能性があることは理解していますが、これを達成するためのよりクリーンな方法があるかどうかを確認しようとしています。
どう考えているか教えてください ?
RRS
訂正: ザイリンクスの BRAM について言及しています (BRAM は深さ 512 にはなりません)。ただし、これは基本的に、グルー ロジックが複数の BRAM をチェーンするメモリ ブロックです。ご指摘ありがとうございます!!