FC2カウンター FPGAの部屋 Coregenで作成したFIFOのバグ
FC2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

Coregenで作成したFIFOのバグ

ここ2日ほど、Coregenで作成したFIFOのバグで悩んだので、その顛末を書いておく。
結論から先に書くと、Project Navigator のプロジェクトを作り直したら正常になった。

使用したFPGAは、Spartan-3E xc3s500e-4pq208、ISE12.4とISE13.1を使用して、どっちも同じ状況だった。
いつものように、プロジェクトが入ったフォルダをコピーして、改変を開始した(最初はISE12.4)。今回は、方式を大幅に変更した。以前のゴミが残るが、とりあえず無視して非同期FIFOや同期FIFOを追加して、追加した。(ちなみに、そのフォルダの下にソースファイル用、シミュレーション用、インプリメント用(各ISEのバージョンごと)にフォルダを分けています)
全体をインプリメントすると、SLICEMがオーバーしてしまった。そんなはずは無いのだが?cam_afifoは、34ビット幅で16深度なので、こんなに使うはずはない?
Coregen_1_110303.png

とりあえず、cam_afifoを分散RAMからBlockRAMにしても、BlockRAMが使われずにSLICEMがオーバーしてしまう。Camera_Controller.vhdをトップにしてやってもオーバー。
Coregen_2_110303.png

どうも、分散RAMで深度1Kワード程度で固定されて、Coregen を起動してパラメータを変更しても、変更されない気がする。
そのうちにISE13.1が出たので、インプリメント用のフォルダだけコピーして、ISE13.1にプロジェクトを変換してやってみたが、同じ状況だった。ここからISE13.1で作業を継続した。

1.インプリメントフォルダの下のipcore_dirフォルダの下のcam_afifo関連のファイルをすべて削除して、FIFO IPを新規作成してみたが、やはりダメ。
2.Project Navigator のProjectメニューからCleanup Project Files...でプロジェクトファイルを消してみてもダメだった。

最後に、プロジェクトを新規作成して、FIFO IPを新規作成したら、問題なくなった。下にそのISE13.1のProject Navigator の画面を示す。
Coregen_3_110303.png

使用しているLUTが116で正常に戻った。

Coregen で生成したIPがおかしい時は、素直にプロジェクトを作り直した方が良さそうだ。
  1. 2011年03月03日 12:30 |
  2. Core Generator
  3. | トラックバック:0
  4. | コメント:4

コメント

肝に銘じておきます。
  1. 2011/03/03(木) 22:28:10 |
  2. URL |
  3. Sim #mQop/nM.
  4. [ 編集 ]

Simさん、こんにちは。了解です。
これで、足掛け2日位悩みました。CoregenでIPを生成するのが遅いですよね?
  1. 2011/03/04(金) 04:15:25 |
  2. URL |
  3. marsee #f1oWVgn2
  4. [ 編集 ]

FIFOの生成は特に遅いですよね
パラメータがたくさんあるから仕方ないのかもしれませんが
データシートのPDFもその都度コピーされるし
  1. 2011/03/07(月) 13:51:53 |
  2. URL |
  3. windy #JalddpaA
  4. [ 編集 ]

windyさん、お久しぶりです。
本当にFIFOの生成は遅いですね。他のことをして待っているようにしています。
  1. 2011/03/08(火) 04:21:29 |
  2. URL |
  3. marsee #f1oWVgn2
  4. [ 編集 ]

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
http://marsee101.blog.fc2.com/tb.php/1735-ab1c0b5f
この記事にトラックバックする(FC2ブログユーザー)