XilinxSpartan-6(ISE)FPGAでROMRAM初期値データファイルを生成(格納)する方法

論理回路設計経験なし、もちろんFPGAも触ったことがない。でも、やらざるを得なくなったので、今急いで調べてやっています。

ザイリンクスSpartan-6、SP605評価ボードを使って、FPGAを動かす実験をしています。

今回は、

「(テストで用いる)データ・パラメーターをFPGA上に、RAM/ROM初期値として持っておく」

ということがやりたかったんです。

そのやり方を調べました。

 

※メモ:ISEでなく、Vivadoを使うなら、こちらの本は参考になる↓

ものづくりエンジニアの転職事情

 

目次

FPGA(Xilinx Spartan-6)に大量のテストデータ値を埋め込んでおく方法を調べた

冒頭の話、そもそも専門用語がわからなかったので、ネットで下記のキーワードで検索をしました。

  • Xilinx FPGA ROM生成ファイル
  • Xilinx ISE シリアル転送するデータをFPGAに埋め込む方法
  • xilinx テストパタンの数値データのファイルを生成
  • xilinx テストデータのファイル生成
  • xilinx .memファイル生成

調べまくった結果、多分これでいけるなという内容が分かりました。

そのきっかけが、こちらの掲示板↓→リンク切れになっていました 21.08.05

問題としていたXilinxの内部RAMの初期化方法がわかりました.

その解決方法はコア・ジェネレータを用いた解決方法です.
(tomatoさま>VHDLはシングルポートブロックRAMの場合に限り,VHDLソース上で初期値を設計できることと思います.Verilogの場合,それができないのでVerilog-HDLソース上で初期値を与えることもできません.)

いままでは,HDLソース上でRAMを書いていましたが,そのRAM別のモジュールに分解します.そのRAMをコア・ジェネレータを用いてIP coregenとして新規作成します.そして,同じくコア・ジェネレータを用いて初期化ファイルを作成し,目当てのRAMに割り当てます.

この方法を用いるとRAM上に初期設計を書き込むことができます.

引用元:https://www.fpga.co.jp/cbbs/srch.cgi?logs=all&word=coregen

Xilinx ISEを使って、ROM/RAM初期値を埋め込む手順

調べた内容を整理すると、下記の手順で出来ることが分かりました↓

  1. 埋め込みたい初期値データは、COEファイルに作成しておく。(自分で作成。フォーマットは別途Xilinx社マニュアルに記載あり)
  2. ISEの中に入っているCore generator(コアジェネレータ) を起動し、COEファイルを読み込んで、RAM/ROMの初期値ファイルを生成する(FPGAのBRAM(ブロックRAM*)上にデータが置ける)
  3. ISEツール左側のツリー構造のところに、ファイルが生成出来ていることが確認出来る(TOPモジュール側で、今回生成したモジュールのインスタンス指定する必要あり)

 

*ブロックRAM 1ブロックにつき、18Kb

私が使用しているSpartan-6(XC6SLX45T)の場合、116ブロック存在し、合計2088Kb分の領域が使用可能。バイト数でいうと、8で割って、261KBYTE存在する。

Core Generatorの使い方に参考にさせて頂いた先輩方のサイト一覧

コアジェネレータの使い方については、以下の個人運営(?)サイトで先輩方が非常に有益なメモを残してくれていたので、引用させていただきます↓

[quads id=2]

まとめ

今回は、COEファイルを生成して、FPGA上に初期値(ROMデータ)を埋め込む方法について調べました。

 

ザイリンクスSpartan-6は、幸いにももうすでに10年以上前のもの。

幸い、ネット上にはFPGAの先輩方がメモ書きを残してくれているので、今後もネットでググりまくって使い方を覚えていくしかありません。覚悟を決めました。

覚えたことを忘れないように、このブログ記事にも勉強したことをアップしていきたいと思っています。

 

※メモ:ISEでなく、Vivadoを使うなら、こちらの本は参考になる↓


ものづくりエンジニアの転職事情

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメント一覧 (2件)

コメントする

目次