2016-10-03 7 views
1

私は、FPGA上で部分的にエミュレートする作業デバイスからRAMをダンプしました。ザイリンクスISEでは、Core Generatorを使用してRAMモジュールを生成しました。RAILメモリダンプからザイリンクスISEブロックメモリを開始するにはどうすればよいですか?

ここで、RAMをCOEファイルで初期化するオプションがあります。 残念ながら、RAEメモリーダンプをCOEファイルに変換できるツールは見つかりませんでした。そのことに関して何かをCOEにしてください。

これを行うにはどのような方法が最適ですか?

+2

[COEファイルの構文](http://www.xilinx.com/itp/xilinx10/isehelp/cgn_r_coe_file_syntax.htm)および[AR#11744 CORE Generator - メモリコア用のCOEファイルを作成するヒント(ブロックメモリ、Distメモリ、ROM、RAMなど)](http://www.xilinx.co.jp/support/answers/11744.html)を参照してください。 [ザイリンクスFPGA用のCOEファイルでBRAMを初期化する方法](http://tipsarea.com/2014/05/21/how-to-initialize-bram-with-coe-file-for-xilinx-fpga/)も参照してください。 ISEのバージョンがGUIからのメモリエディタアクセスをブロックしている場合。グーグルが見つかりました* COEザイリンクスISE *。 – user1155120

+0

[製品コードv0.01 - ザイリンクスFPGAブロックRAMのバイナリファイルから.coeファイルを生成する](https://wornwinter.wordpress.com/2015/02/07/coegen-v0-01-generate-coe-files-from -binary-files-for-xilinx-fpga-block-ram /)を指定します。検索用語*バイナリをCOE形式のザイリンクスにグーグルグーグルで掲載しています。 – user1155120

+0

[SRecord 1.64](http://srecord.sourceforge.net/download.html)には、同様の検索キーワードであるlibboost(COEGenも必要)が必要です。 – user1155120

答えて

1

FPGAでBRAMを初期化するには、COREジェネレータを使用することができますが、合成ツールがBRAMまたはルックアップテーブル(LUT)を推論するようにVHDLを書き込むことをお勧めします。注意、私はCore Genを使用してRAMを作成/初期化することはありません。

データがどのようにフォーマットされているのかわかりませんが、各行にバイナリ文字列が含まれているテキストファイルを読み込み、そのファイルの内容で信号を作成する方法については、VHDLコードスニペットを参照してください。あらかじめファイルの形式と長さを知っておく必要があります。

-- define a type for the lookup table (LUT) 
type lut_type is array(0 to 2**12-1) of std_logic_vector(15 downto 0); 

impure function init_lut_from_file(lut_file_name : in string) 
    return lut_type is 
    FILE lut_file  : TEXT open READ_MODE is lut_file_name; 
    variable lut_line : line; 
    variable bv_temp : bit_vector(15 downto 0); 
    variable lut  : lut_type; 
begin 
    for i in lut_type'range loop 
     readline(lut_file, lut_line); 
     read(lut_line, bv_temp); 
     lut(i) := to_stdlogicvector(bv_temp); 
    end loop; 
    return lut; 
end function; 

signal lut   : lut_type := init_lut_from_file("c:\data.txt"); 

上記不純な関数は2^12 = 4096のエントリを持つLUTにファイルの各行に16ビットのバイナリ文字列を含むc:\data.txtを読み取ります。

通常、に書き込むコードを追加してlutに書き込むことができます。

+0

それは合成可能ですか?それは少なくともROMと読み取り専用シミュレーションではうまくいくでしょうし、スーパースーパーファイナルデザインではRAMを初期化する必要はありません。 – Pepijn

+0

はい、このコードを使用してISEデザインスイートを使用したザイリンクスFPGAのルックアップテーブルを実装し、Virtex6 FPGAでテストしました。 –

関連する問題