2

ザイリンクス ISE ブロック RAM 推論の堅牢性について質問があります。

私のマシンには xilinx ise がインストールされていません (今日) が、通常は専用のコーディングを使用してブロック RAM を完全に推論します。

type   ram_type is array(2**ADDR_WIDTH-1 downto 0) of std_logic_vector(DATA_WIDTH-1 downto 0);

私の質問は次のとおりです。ISE が正しいブロック RAM を推論するかどうか教えてください。

signed(DATA_WIDTH-1 downto 0)` instead of `std_logic_vector(DATA_WIDTH-1 downto 0)

またはそれ以上(パッケージ内):

subtype signed8 is signed(7 downto 0)

その後

type   ram_type is array(2**ADDR_WIDTH-1 downto 0) of signed8;

シンセサイザーが時々扱いにくいことは知っています...

4

3 に答える 3

5

これは一般的なコメントであり、問​​題に固有のものではありません。仮説に基づいて合成ツールを推測しようとしても、あまり生産的ではありません。結果は、ツールのバージョン、およびデザインとインプリメンテーションのコンテキスト (さまざまなスイッチ、最適化の目標、ターゲット アーキテクチャなど) によって異なる場合があります。ISE/XST は無料です。ダウンロードしてコードを試してください。次に、より意味のある質問をすることができます...「XST バージョン XY は、これらの条件下でブロック RAM を推論しないのはなぜですか?」次に、XST の動作が正しいかどうかについても説明します。

于 2011-02-01T21:42:21.343 に答える
5

私はこれを自分でテストしていませんが、「署名付き」タイプは std_logic タイプから派生しているため、これが機能しない理由がわかりません。

合成に XST を使用していると仮定すると、XST ユーザー ガイドは、XST がブロック RAM の推論で認識するとザイリンクスが公式に述べている内容を確認するのに適した場所です。12.4 用 XST ユーザー ガイド (pdf)

于 2011-02-01T16:25:07.210 に答える
3

Joshが提案したリンク(XSTによるRAMの実装について詳しく説明しています)に加えて、ザイリンクスのWebサイトにある別のドキュメントで、さまざまなRAMの実装とそのトレードオフ(76ページ)について説明しています。

http://www.xilinx.com/support/documentation/sw_manuals/xilinx12_4/sim.pdf

ちなみに、私は「配列」アプローチを使用しており、小さなブロックRAMサイズに最適です。しかし、Spartan-6で1 BlockRAMのサイズよりもはるかに大きいメモリモジュールを生成するためにそれを使用しようとしましたが、推測できませんでした(XSTは分散RAMとして実装しようとしました)。ザイリンクスが提供するBlockRAMマクロを直接インスタンス化し、メモリモジュール内の適切な個々のBlockRAMを選択/書き込み/読み取りするための適切なメモリデコードモジュールを作成することで、問題を解決しました。

于 2011-02-01T18:39:57.507 に答える