複雑でないステートマシンでは、StateCADを便利に使っていたのですが、ISE11.1iから使えなくなったようです。
職場のパソコンにはISE9.1i、ISE9.2i、ISE10.1i、ISE11.1iが入っている。StateCADのファイル(.DIA) はISE10.1iのbin/ntに入っているsc.exeに関連付けしてあり、.DIAファイルをダブルクリックするとStateCADが起動するようになっていた。
ISE11.1iにStateCADがなくなっていたのは知っていたのですが、今までどおりに.DIAファイルをダブルクリックすると起動すると思っていた。今日、やってみたところ、”エントリポイントが見つかりません”ダイアログが出てStateCADが起動できなかった。
ショックだが、これを機会にVHDLに書き換えることにする。(職場ではVHDL使っています)
2009/05/22 追記:
ibPortabillity.dllをコピーしなくても、ISE10.1iのインストールフォルダの下のbin/ntの下のsc.exeをダブルクリックすると起動しました。ここからファイルをオープンできるので、ここからファイルを読み込んで使うことにします。
- 2009年05月21日 11:13 |
- StateCADの使い方
-
| トラックバック:0
-
| コメント:2
きのうはもう書くのが疲れてしまって、尻切れトンボ気味になってしまった。
出てきたVHDLコードを見るとあまり人間が作ったようではない。説明のためにランダムロジックを使った例にしてしまったので、わかりにくいコードが出てしまったのかも。普段はもっと自分で書いたようなコードが大体は出てくる。
私はエクスプローラーの"ツール”の”フォルダ オプション”の”ファイルの種類”タブからStateCADのEXE(sc.exe)を登録して****.diaをダブルクリックするとStateCADが起動するようにしている。sc.exeは、Webpackのインストールディレクトリ\bin\ntのディレクトリの中にある。
ファイル名の8文字までがネックだがこれは一度作って、エクスプローラーから名前を変更すればOKだ。ダブルクリックすれば起動できる。
今やってみたが、文字数を変えるとアプリケーションエラーで落ちることもあるようだ。一応、VHDLファイルは出力できているようだが。。。
StateCADはほかの論理回路(カウンタやマルチプレクサなど)を一緒に組み込むのも制約があるし、やはりステートマシンだけを書けばよいときに便利だと思う。
NIのステートマシンも結構これで書いてある。PCIのターゲットやマスタのステートマシンとか。
PCIのところで示した下の図とかはそうだ。
http://blog-imgs-29.fc2.com/m/a/r/marsee101/PCI_traget_access_060106.png日本語は使えないが、後で見て見やすいのが利点だ。見やすい範囲のステート数ならば。。。
そういえばステートの色の変え方を説明していなかった。
ステートの色の変え方は、まずは色を変えるステートを選択して、左のツールバーの下の列の上から二番目のアイコン(Fill Color)をクリックすると、下にハイドされていた色が出てくる。そこで変えたい色をクリックする。
濃い色にしてしまうと字が見えなくなるので、字の色も変えられる。
- 2006年04月26日 09:08 |
- StateCADの使い方
-
| トラックバック:0
-
| コメント:0
StateCADの使い方の続きだ。
次にステートの名前とステートでの出力を入力しよう。いわゆるムーア型ステートマシンにする。ミーリー型にも出来るのだが、あまりやっていないし、なるべくならばムーア型で作ったほうが良い。
3クロック分のパルスを出力する信号はpulse3、入力信号はlong_pulseとする。
左端のツールバーの1番目をクリックすると選択モードになるので、STATE0をクリックしよう。そうするとEdit Stateダイアログが出るのでそこのState Nameに"idle"、Outputに"pulse3 <= '0';"を入れてみよう。
そうするとSTATE0がidle/pulse3 <= '0';に変わったと思う。
同様にSTATE1に"pulse_is_high/pulse3 <= '1'"を、STATE2に"hold_off/pulse3 <= '0'"を入力する。
次に→の遷移条件を入力しよう。
最初にidleステートからpulse_is_highステートに行く→をクリックする。"Condition"のところに"long_pulse"と入力する。これでlong_pulseが1の時にidleステートからpulse_is_highステートに遷移するようになる。startが0の時に遷移するするためには"!long_pulse"と入力する。"long_pulse=1"や"long_pulse=0"でも良い。(ただしVHDLのときにしか確かめたことが無い)
"Outputs"に入力するとミーリー型ステートマシンになるが、やったことは無い。
pulse_is_highステートからhold_offステートに行く→に"count[1]"、hold_offステートからidleステートに行く→に"!long_pulse"を入れる。これでlong_pulseが1になってからcount[1]が1までの間pulse3出力に1が出力される。
次にpulse3を3クロック分にするためにカウンタを作ろう。pulse_is_highステートに遷移してから2カウントしてからhold_offステートに遷移させると3クロック幅のパルスになる。
上のツールバーから"Random Logic"をクリックし、適当なところでクリックするとLogic Wizardダイアログが開く。"Count up"を選択してCOUNTに"count"、Data Path widthに2を入れる。そうしたらOKボタンをクリック。
Edit Equationダイアログが表示される。Sync resetに"pulse3"を入力し、=0にする。Okボタンをクリックする。
そうするとカウンタロジックが生成される。
メニューの"Options"から"Configuration..."を選択して表示する。下の図の通りにしてほしい。Verilogの方はVerilogで生成できるようだ。(私はやったことは無い)特にLanguage VenderはIEEE 1076にしたほうが人間がHDLコードを読みやすいようだ。OKボタンをクリック。
pulse3をOptimizeするかを聞いてくるので、Optimizeしないためにpulse3の前のXを消して、Optimizeボタンをクリック。
そうすると、もう一度countをOptimizeするか聞いてくるので、これはOptimizeするので、Optimizeボタンをクリック。そうするとHDLが表示され、SMSAMPLE.VHDが生成される。
- 2006年04月25日 05:59 |
- StateCADの使い方
-
| トラックバック:0
-
| コメント:0
今日はグラフィカルにステートマシンを記述できるツールStateCADを解説しようと思う。
StateCADを使うと出力信号をFF出力に記述することが簡単に出来る。出力コードを見ると参考になると思う。
今回は入力信号の立ち上がりのときに3クロック分1を出力するステートマシンを作ることにしよう。
まずはstate_sampleというからのプロジェクトを作成する。作成の仕方はいままでやったし、いろんなWebページに書いてあるのでここでは省略する。使用するFPGAはXC3S200-4FT256とする。
ここでメニューの"Project"から"New Source"を選ぶ。
New Source Wizard - Select Source TypeダイアログでFile nameにstatem_sampleと入力し、左のペインからState Diagramを選択する。
次へ>ボタンをクリックして、New Source Wizard - Summaryダイアログが出てくるので、Finishをクリックする。
そうするとエラーが出て落ちる。これがStateCADのよくないところで名前が8文字まで出ないとだめなのだ。それでsmsampleに名前を変えてもう一度やろう。
今度はちゃんとStateCADのウインドウが開いたことと思う。
左端のツールバーの二番目のボタンをクリックするとステートが書けるので、適当なところでクリックするとステートが書ける。3つ下図のように書いてみよう。
左端のツールバーの3番目のボタンをクリックすると遷移を表す→が書ける。まずはSTATE0の上の楕円の線上でダブルクリックすると@ELSEと書かれている→を書ける。これは遷移の→の条件に合わない時に元のステートに戻る→だ。普通の遷移を示す→は例えばSTATE0の楕円の線上をクリックすると赤い線が延びるので、行先まで伸ばして行先のSTATEでクリックするとそこまで→を書くことが出来る。
次にリセットの時にどのステートから始まるかを指定しよう。左端のツールバーの4番目のボタンをクリックするとリセット時にどこのステート空始まるかを指定できる。適当なところでクリックして、STATE0までマウスを移動して線を伸ばしてクリック。
ダイアログが出てくるので非同期リセットならばyesを同期リセットならばnoボタンをクリック。下の図は非同期リセット。
次にステートマシンのタイトルを入れよう。左端のツールバーの5番目のボタンをクリックするとテキストボックスが開いてタイトルを入れることが出来る。
ステートマシンの図の上の適当なところでクリックするとテキストを入れるダイアログが開くので、タイトルを入れる。ここでは"Sample State Machine"と入れた。
今日はとりあえずここまでとする。続きはまた後で。
ここまで作った人はとりあえずセーブして置いてください。
- 2006年04月24日 21:03 |
- StateCADの使い方
-
| トラックバック:0
-
| コメント:0