FC2カウンター FPGAの部屋 ISE11.1iのチュートリアル5(シミュレーション)
FC2ブログ

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

FPGAの部屋

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

ISE11.1iのチュートリアル5(シミュレーション)

ISE11.1iのチュートリアル4(テストベンチの作成)の続き。

前回テストベンチを作ったので、今度はシミュレーションをしてみよう。シミュレーターとしてはISimを使用する。
Project NavigatorのDesignのHierarchyペインからdice_top_tb を選択しする。ProcessesペインのISim Simulatorを展開して、Simlate Behavioral Model をダブルクリックする。
ISE11_1_tutorial_41_090513.png

ISimが起動して、シミュレーションを行った。
ISE11_1_tutorial_42_090513.png

Zoom to Full Viewアイコンをクリックして、波形全体を表示する。
ISE11_1_tutorial_43_090513.png

入力波形は予定した波形になっている。しかし、出力波形はb_nとc_n が0で、ほかのセグメントは1である。この7セグメントLEDは0で点灯するので、現在は1を表示している。リセットはちゃんとかかっているが、rollスイッチを押しているのに出力が変化しない。
ISE11_1_tutorial_44_090513.png

これは、reject_chatter.vhdでスイッチのチャタリングを除去するために、クロックの25万回に1回サンプルことになっている。さらに、目で遷移しているのが見えるようにするために、その4倍の100万回クロックを数えないとステートマシンのステートが変わらないためだ。これを解消するには、少なくとも20万クロック以上シミュレーションしないとならないが時間もディスクも使用するため、シミュレーションするのは大変だ。そのようなときのために、50MHzはKHz単位にすると50,000である。これをconstantで定義してい置いて、シミュレーションのときには1に切り替える。(もっと良いと自分では思っている方法がある。それはpragmaとgenericを使う方法だ。詳しくは”スパルタン3スタータキットでのISE8.1iのチュートリアル4(シミュレーション編)”を見てほしい)

--constant frequency_KHz : integer := 50000; -- KHz単位でのクロック周波数(インプリメント用)
constant frequency_KHz : integer := 1; -- KHz単位でのクロック周波数(シミュレーション用)


これで、もう一度シミュレーションを行う。とりあえずISimをクローズしよう。その際にDefault.wcfg をセーブするかと聞いてくるので、Noボタンをクリックしておく。
もう一度、Project NavigatorのDesignのHierarchyペインからdice_top_tb を選択しする。ProcessesペインのISim Simulatorを展開して、Simlate Behavioral Model をダブルクリックして、ISim を立ち上げる。そうすると、修正したconstant値が採用されて、セグメントの値が変化しているのが分かる。
ISE11_1_tutorial_45_090513.png

下位モジュールの信号も見てみよう。
左のInstance and Process... ペインのdice_top_tb の左の三角をクリックして展開する。その後、uut の左の三角もクリックして展開する。その中のinst_reject_chatterをクリックする。そうすると、太字で表示される。Objectsペインを見るとinst_reject_chatterの信号を表示する。その中からsw_cntとroll_cnt を右の波形ウインドウのあいているところにドラック&ドロップする。そうすると波形ウインドウに追加される。
ISE11_1_tutorial_46_090513.png

こうすると、下のように信号が追加されるが、波形はまだ表示されていない。
ISE11_1_tutorial_47_090513.png

同様に、inst_dice_smのcurrent_stateを波形ウインドウに追加する。さて、この追加した信号もシミュレーションしてみよう。
SimulationメニューからRestartを選択する。
ISE11_1_tutorial_48_090513.png

すべての波形が消える。SimulationメニューからRunを選択する。
ISE11_1_tutorial_49_090513.png

そうすると、先ほど波形ウインドウに登録した信号も波形が表示される。
ISE11_1_tutorial_50_090513.png

これでシミュレーションは一応完了。
私は、まだ、ISimの使い方が良く分かっていないので、チュートリアルなどをやってみようと思っている。感じとしては、なかなか使えそうな感じだ。たぶん下のConsoleにコマンドを入れても使えるのだろう。

#しかし、チュートリアルは前回もそうだったが、書いていると疲れる。。。皆さんのためになるのかな?

”ISE11.1iのチュートリアル6(デザインのインプリメント)”に続く。
  1. 2009年05月15日 04:53 |
  2. FPGAリテラシー及びチュートリアル
  3. | トラックバック:0
  4. | コメント:4

コメント

ISE11.1は初心者向けの情報が本家に少なかったのでとても助かります。

このチュートリアルを見ながら勉強をしてみます。

ありがとうございます。
  1. 2009/05/16(土) 02:36:04 |
  2. URL |
  3. sawa #-
  4. [ 編集 ]

sawaさん、こんにちは。

コメントありがとうございます。
少しでもお役に手立てて、よかったです。
  1. 2009/05/16(土) 04:33:19 |
  2. URL |
  3. marsee #f1oWVgn2
  4. [ 編集 ]

ISE11.1の入門情報を探してここにたどり着きました.
このチュートリアルのおかげで自分の書いた回路のシミュレーションができるようになりました.
ためになってます.

  1. 2010/01/31(日) 22:06:02 |
  2. URL |
  3. Yoshi #-
  4. [ 編集 ]

Yoshiさん、こんにちは。

おめでとうございます。良かったですね。
X-festのセミナーを受講してISimが結構重要だと思いました。
  1. 2010/02/01(月) 04:06:37 |
  2. URL |
  3. marsee #f1oWVgn2
  4. [ 編集 ]

コメントの投稿


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

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