FC2カウンター FPGAの部屋 2010年11月17日
FC2ブログ

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

FPGAの部屋

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

東京エレクトロン・デバイス社の初級DSPコース

明日、東京エレクトロン・デバイス社の初級DSPコースに行ってきます。MATLAB、SIMLINKからFPGAの生成の流れを勉強してこようと思っています。行ってきたら、様子を書き足そうと思います。初めて使うので、わくわくです。どんな感じでインプリできるんだろう?シミュレーションはどうするのか?

行ってきました。
System Generatorは、FIRフィルタとかを作るには最適の環境だと思いました。ブロックをドラックアンドドロップして、できちゃいます。
MATLAB/SIMLINKのSIMLINK Library Browser上から、XilinxのBlocksetの中のブロックを置いていきます。ブロックの中に浮動小数点ー固定小数点変換、固定小数点ー浮動小数点変換のブロックがあって、それをおくと変換されます。System Generator上では固定小数点で演算が行われて、SIMLINK上では浮動小数点演算だからです。固定小数点のビット幅も小数点の位置も自由に変更できるんはとても良いと思いました。
SIMLINK上から、Black Boxに割り当てたVHDLをISimでシミュレーションして、強調HDLシミュレーションもできます。更に実機とJTAGやPCIなどでつないで、実機との強調シミュレーションもできます。(これはあまり意味があるのかな?とは思いましたが。。。)
やはり、自分の作ったVHDLソースを使うとか、自分の回路の一部として、System Generatorで生成したフィルタを使うのが、面倒なのかな?と思いました。決まったことをやるのに便利なツールは、規定外の事をやるときには、決まりを覚える必要があります。(MFCでは覚えるが大変でした。。。)まだ、初級者コースを受けたばかりなのでわかりませんが。。。ただ、ツールが高価なのは確かだと思います。問題はそれに見合った価値があるか?ですね。
フィルタは一瞬でできて、シミュレーションも簡単で、とても良いツールです。もう少し調べてみようと思います。

  1. 2010年11月17日 22:17 |
  2. その他のFPGAの話題
  3. | トラックバック:0
  4. | コメント:2

ISE12.3のISimの使い方のヒント(Project Navigatorから使用するとき)

大体、原稿も娘のイラストを除いて準備が済んだ。Makeの出展関係の準備も大体済んだ。もうちょっとパラメータをいじって良い気がするが、やはり会場がよくわかないので、このままにしよう。

AlteraのFPGAのお勉強が途中だが、とりあえず、ISimをどうやってProject Navigatorから使っているかを書いてみたい。大きいなプロジェクトはISim単体で動かしているが、お手軽にProject Navigatorから使うのも良いと思う。ISE12.3を使用する。
使うのはSpartan-6のSP605ボード用のキャラクタ・ディスプレイ・コントローラとする。このテストベンチは約20ms後にSTOPする。
DesignのViewからSimulationのラジオボタンをクリックして、Project Navigatorをシミュレーションモードにする。Hierarchyからテストベンチ・ファイルCharDispCtrlerTest_SP605_tb.vを選択すると、ProcessesウインドウにISim Simulatorが出てくるので、それを展開して、Simulate Behavioral Modelをダブルクリックする。
ISim_Hint_1_101117.png

このまま、ISimを起動するとテストベンチの信号をwaveウインドウに入れて、1000nsecシミュレーションする。
ISim_Hint_2_101117.png
(Radixを16進数にしてある)

Project NavigatorのSimulate Behavioral Modelを右クリックしたときの右クリック・メニューから選べるプロセス・プロパティがある。
ISim_Hint_3_101117.png

プロセス・プロパティのSimulatin Run Timeが1000 nsになっているので、これを21 msに修正する。そうすると21 msまで、シミュレーションすることができる。実際はその前にテストベンチの$STOPでストップする。
ISim_Hint_4_101117.png

更に、次には、21msecもシミュレーションするのだから、自分の見たい波形を入れたいと思う。その時は、ISimで見たい波形を構成する。(信号の追加の仕方は、”ISE11.1iのチュートリアル5(シミュレーション)”参照のこと)
自分の見たい信号をISimのWaveウインドウに入れたら、FileメニューからSave As...で自分の好きな名前でWaveウインドウの信号名をセーブする。ここでは、CharDispCtrlerTest_SP605.wcfgとしてセーブした。
ISim_Hint_5_101117.png

次に、Project NavigatorのSimulate Behavioral Modelを右クリックしたときの右クリック・メニューから選べるプロセス・プロパティをもう一度開く。
Use Custom Waveform Configuration Fileをチェックして、Custom Waveform Configuration Fileで、先ほどセーブしたCharDispCtrlerTest_SP605.wcfgを選択する。
ISim_Hint_6_101117.png

そして、ISimを落として、もう一度、Simulate Behavioral Modelをダブルクリックすると、今度は、デフォルトのテントベンチの信号ではなく、自分で定義したharDispCtrlerTest_SP605.wcfgがISimに表示される。シミュレーション時間も最後にSTOPするまでシミュレーションされる。
ISim_Hint_7_101117.png

Project Navigatorからお手軽にISimを使うときのヒントをブログに書いた。プロセス・プロパティでは、もっといろいろと設定できるが、プロジェクトによって書き換えて使用している。ISim単体で使うときもある。

なお、残念ながら、HDLソースを書き換えたときに、ISimを落としてもう一度起動する必要はあると思う。HDLソースをコンパイルして、実行形式を作り、それを起動しているからだ。

(追加)
この場合は、CharDispCtrlerTest_SP605.prj にISimのプロジェクトが出来ているので、一旦ISimのプロジェクトを作らせておいて、後はバッチコマンドをつくって、ISimを起動するのも良いかもしれない。その際にfuse コマンドに、 -incremental オプションをつけておくと、毎回コンパイルしなくて済むと思う。ただ、これはプロジェクトに書かれているHDLが変化したかどうかを見ているので、例えばCoreGenで生成したROMなどの初期化ファイル(COE)などを書き換えたときには、再コンパイルをしないので、注意が必要だ。いつも再コンパイルしたほうが安全かもしれない。
ISimプロジェクトを使ったバッチファイルでのシミュレーションは、”Spartan-3A Starter KitでCMOSカメラ・ディスプレイ回路のSCCB回路追加時のシミュレーション”を参照のこと。
最後に、CharDispCtrlerTest_SP605.prj の内容を下に示す。

verilog work "ipcore_dir/DCM_CLKGEN_S6.v"
verilog work "../frame_buffer.v"
verilog work "../disp_timing.v"
verilog work "../char_gen_rom.v"
verilog work "../CharDispCtrler.v"
verilog work "../CharDispCtrlerTest.v"
verilog work "../CharDispCtrlerTest_SP605.v"

  1. 2010年11月17日 06:15 |
  2. ISim
  3. | トラックバック:0
  4. | コメント:0