2017-02-25 24 views
0

今私はfpgasを使ってi2c経由でマスターからスレーブにバイトを送信するプロジェクトに取り組んでいます。今、私の奴隷に私は入ってくるデータを格納したいと私は0から71までの異なる指標をそれぞれ次のような3-5アレイの間に持っていることを計画:ブロックRAMまたは分散RAMを使用する方がいいですか?

type array1 is array(0 to 49) of std_logic_vector(7 downto 0); 

type array2 is array(0 to 23) of std_logic_vector(7 downto 0); 

type array3 is array(0 to 71) of std_logic_vector(7 downto 0); 

は、いくつかの研究を行ってきて、私はそこにあることを理解しますザイリンクスには、ブロックと分散と呼ばれる2種類のラムがありますが、分散メモリは小さいサイズのメモリに使用する必要があります。今私の質問は、私はこれらのタイプの配列を使用する場合は、分散を使用するのに十分な小さいですか?それとも、ブロックに行くほうがいいですか?

答えて

1

あなたのデザインと使用している特定のFPGAによって異なります。 合成ツールは、しばしばあなたのために最高のものを決めることができます。 ツールを自分のために決定できるようにするには、そのツールを両方として実装できる方法で実装する必要があります。ザイリンクスのFPGAについては、たとえば、The sysnthesis user guideを参照することができます。これは、「RAM HDLコーディング手法」のVHDL構文を正しく示しています。 I. (デュアルポートRAM方式以外の)複数のエントリに同時にアクセスすることはできません。また、データストアや検索に一定のクロックサイクルが必要です。

いくつかのより多くのリンク:あなたのケースでは

1

それは本当に問題ではありません - 分散またはブロックメモリ。おそらく数百ビットのメモリが必要な非常に低速の設計です。

0

私はこれらのタイプのアレイを使用すれば、分散型を使用するのに十分小さいのですか?

これは、使用している特定のFPGAと、使用するモードによって異なります。例えば、7シリーズデバイスは、異なるメモリ構成を有する多数の異なるアクセス構成(シングル、デュアル、クワッド)を提供する(例えば、単一スライスは256×1ビットのシングルポートRAMを提供する可能性がある)。

あなたが提供する例に基づいて、あなたのアレイの1つを分散型RAMに収めることができます。残りは複数のDRAMまたは1つのBRAMを必要とします。 DRAM/BRAMのミックスを使用した場合は、DRAMの読み込みセマンティクス(非同期、BRAMの同期と対比)を考慮する必要があります。これは、説明する必要があります。

デバイスで使用できるBRAMがあり、使用されていない場合は、DRAMに優先して使用します(ただし、それは私だけかもしれません)。

関連する問題