FC2カウンター FPGAの部屋 StateCADの使い方2
FC2ブログ

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

FPGAの部屋

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

StateCADの使い方2

StateCADの使い方の続きだ。

次にステートの名前とステートでの出力を入力しよう。いわゆるムーア型ステートマシンにする。ミーリー型にも出来るのだが、あまりやっていないし、なるべくならばムーア型で作ったほうが良い。
3クロック分のパルスを出力する信号はpulse3、入力信号はlong_pulseとする。
左端のツールバーの1番目をクリックすると選択モードになるので、STATE0をクリックしよう。そうするとEdit Stateダイアログが出るのでそこのState Nameに"idle"、Outputに"pulse3 <= '0';"を入れてみよう。
StateCAD_8_060425.png


そうするとSTATE0がidle/pulse3 <= '0';に変わったと思う。
同様にSTATE1に"pulse_is_high/pulse3 <= '1'"を、STATE2に"hold_off/pulse3 <= '0'"を入力する。
StateCAD_9_060425.png


次に→の遷移条件を入力しよう。
最初に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"に入力するとミーリー型ステートマシンになるが、やったことは無い。
StateCAD_10_060425.png


pulse_is_highステートからhold_offステートに行く→に"count[1]"、hold_offステートからidleステートに行く→に"!long_pulse"を入れる。これでlong_pulseが1になってからcount[1]が1までの間pulse3出力に1が出力される。
StateCAD_11_060425.png


次にpulse3を3クロック分にするためにカウンタを作ろう。pulse_is_highステートに遷移してから2カウントしてからhold_offステートに遷移させると3クロック幅のパルスになる。
上のツールバーから"Random Logic"をクリックし、適当なところでクリックするとLogic Wizardダイアログが開く。"Count up"を選択してCOUNTに"count"、Data Path widthに2を入れる。そうしたらOKボタンをクリック。
StateCAD_12_060425.png


Edit Equationダイアログが表示される。Sync resetに"pulse3"を入力し、=0にする。Okボタンをクリックする。
StateCAD_13_060425.png


そうするとカウンタロジックが生成される。
StateCAD_14_060425.png


メニューの"Options"から"Configuration..."を選択して表示する。下の図の通りにしてほしい。Verilogの方はVerilogで生成できるようだ。(私はやったことは無い)特にLanguage VenderはIEEE 1076にしたほうが人間がHDLコードを読みやすいようだ。OKボタンをクリック。
StateCAD_15_060425.png


pulse3をOptimizeするかを聞いてくるので、Optimizeしないためにpulse3の前のXを消して、Optimizeボタンをクリック。
StateCAD_16_060425.png


そうすると、もう一度countをOptimizeするか聞いてくるので、これはOptimizeするので、Optimizeボタンをクリック。そうするとHDLが表示され、SMSAMPLE.VHDが生成される。
  1. 2006年04月25日 05:59 |
  2. StateCADの使い方
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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