Your SlideShare is downloading. ×
0
有限状態遷移機械(FSM)設計
有限状態遷移機械(FSM)設計
有限状態遷移機械(FSM)設計
有限状態遷移機械(FSM)設計
有限状態遷移機械(FSM)設計
有限状態遷移機械(FSM)設計
有限状態遷移機械(FSM)設計
有限状態遷移機械(FSM)設計
有限状態遷移機械(FSM)設計
有限状態遷移機械(FSM)設計
有限状態遷移機械(FSM)設計
有限状態遷移機械(FSM)設計
有限状態遷移機械(FSM)設計
有限状態遷移機械(FSM)設計
有限状態遷移機械(FSM)設計
有限状態遷移機械(FSM)設計
有限状態遷移機械(FSM)設計
有限状態遷移機械(FSM)設計
有限状態遷移機械(FSM)設計
有限状態遷移機械(FSM)設計
有限状態遷移機械(FSM)設計
有限状態遷移機械(FSM)設計
有限状態遷移機械(FSM)設計
有限状態遷移機械(FSM)設計
有限状態遷移機械(FSM)設計
有限状態遷移機械(FSM)設計
有限状態遷移機械(FSM)設計
有限状態遷移機械(FSM)設計
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

有限状態遷移機械(FSM)設計

485

Published on

FPGAでVerilog-HDLを使って論理回路設計のうち有限状態遷移機械(FSM)設計を行う教材。ASMチャートを利用。

FPGAでVerilog-HDLを使って論理回路設計のうち有限状態遷移機械(FSM)設計を行う教材。ASMチャートを利用。

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
485
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
1
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. 有限状態遷移機械(FSM)設計 © 渡部謹二, 小川清 2013/03/03 (c)watabe.kinji, nagoya.kaizen@gmail.com
  • 2. FSM設計はじめに     組み合わせ論理回路   入力の組み合わせだけで出力が決まる 有限状態遷移機械(FSM : Finate State Machine)   順序論理回路、状態機械(state machine)ともいう   入力とその回路の状態で次の状態が決まる   ミーリ(Mealy)型   状態と入力の組み合わせで出力を決定する   ムーア(Moore)型   ひとつの状態につき一つの出力を決定する 2013/03/03 (c)watabe.kinji, nagoya.kaizen@gmail.com
  • 3. FSM設計状態遷移図     FSM設計を示すのに状態遷移図をつかう 状態遷移図とは?     状態、入力、出力からなる図 同期式設計の場合は同期クロック1つごとに状態遷移する xk/yl Qi 2013/03/03 xk/yl Qj (c)watabe.kinji, nagoya.kaizen@gmail.com Qi
  • 4. FSM設計状態遷移図からVerilog記述へ INIT_STATE module test_state(rst,clk,in_a,); input rst,clk,in_a; in_a が0 A_STATE B_STATE 2013/03/03 in_a が1 parameter INIT_STATE = 3’b001; parameter A_STATE = 3’b010; parameter B_STATE = 3’b100; reg[2:0] state; always @(posedge clk or posedge rst) begin (省略) end endmodule (c)watabe.kinji, nagoya.kaizen@gmail.com
  • 5. FSM設計状態遷移図からVerilog記述へ   書式はD-FFの記述と同じ   状態変数をreg宣言する     状態名を割り当てる       各状態に数値を割り当てる(2進数でよい) 状態名をparameter文で記述すると分かりやすい always文 中のcase文で各状態における動作と 状態遷移を記述する     状態変数でビット幅を多くとっても回路合成時に最適 化する 各状態は1クロックごとに遷移する 出力がないと結果が見えないのでoutputを指定 2013/03/03 (c)watabe.kinji, nagoya.kaizen@gmail.com
  • 6. FSMの回路合成について   エンコーディング方式によ り合成する回路が異なる       コンパイラのオプションなど でエンコーディング方式が 選択できる エンコーディング方式によ り回路規模や安定性に違 いがある コンパイラによって得手不 得手がある。いろいろやっ て回路で確かめ。 2013/03/03 (c)watabe.kinji, nagoya.kaizen@gmail.com
  • 7. 状態遷移表の作成   状態から状態への遷移を表にする     図ではなぜ遷移が無いかを書き切れない 遷移の表記漏れを防げる   2013/03/03 リセット (c)watabe.kinji, nagoya.kaizen@gmail.com
  • 8. 状態遷移表に基づく設計   同時に多くの状態が遷移する条件を同時に処理                   case(in_a) in_0:begin state <= A_STATE; end default:begin //default include in_1(これでいいか) if (state == A_STATE) state <= B_STATE; else state <= A_STATE; end endcase 2013/03/03 (c)watabe.kinji, nagoya.kaizen@gmail.com
  • 9. 状態遷移表に基づいた設計の回路   論理が単純だ と回路も単純     FPGAに配線 する時に合理 的かどうかは 別 設計条件の 間違いは見 つけられない 2013/03/03 (c)watabe.kinji, nagoya.kaizen@gmail.com
  • 10. 状態遷移の鍵   電源投入時の過渡現象       電源投入時の状態遷移図(表)を作る 再設定(reset)時の過渡現象 同時に2つの事象が起きた場合に不定か どうか 2013/03/03 (c)watabe.kinji, nagoya.kaizen@gmail.com
  • 11. 実習       自動販売機のVerilog HDL回路記述を行う 状態遷移図、遷移表、ASMチャートを記述 記述が正しいかどうか検証を行う     テストベンチ記述方法の補足 グループ演習:       2013/03/03 テスト計画、テストベンチ記述、報告&レビュー 仕様および回路記述の修正 周辺回路の設計 (c)watabe.kinji, nagoya.kaizen@gmail.com
  • 12. 外形設計   clk nickel_in dime_in quarter_in reset dispense   nickel_out   dime_out collect             2013/03/03 clk:クロック reset:リセット nickel_in:5㌣投入 dime_in:10㌣投入 quarter_in:25㌣投入 dispense:ドリンク送出 nickel_out:5㌣返却 dime_out:10㌣返却 collect:硬貨受け取り (c)watabe.kinji, nagoya.kaizen@gmail.com
  • 13. dime_in dime_in nickel_in FIFTEEN quarter_in dispense nickel_out nickel_in dime_in TEN dime_in quarter_in nickel_in TWENTY_FIVE dime_in dispense dime_out nickel_in 2013/03/03 IDLE dime_in quarter_in dispense dime_out nickel_out quarter_in dispense dime_out quarter_in dispense nickel_in FIVE TWENTY OWE_DIME dime_in dispense nickel_out quarter_in dispense dime_out nickel_in nickel_in dispense THIRTY quarter_in (c)watabe.kinji, nagoya.kaizen@gmail.com
  • 14. 実習検証計画を立ててみよう           状態遷移図は正しいか?状態遷移表を書いたか? ASMチャートとどちらがよいか? 状態遷移図を正しく設計記述しているか? 何を証拠にするか? 網羅率(coverage)     2013/03/03 すべての状態を網羅しているテストセットか? すべての状態遷移を網羅しているテストセットか? (c)watabe.kinji, nagoya.kaizen@gmail.com
  • 15.   いろいろな視点を導入する   同時にボタンを押したら?           同時とはどれぐらいの時間精度か? 順番が逆になったら? 信号が連続でやってきたら 状態遷移が二順目になったら?(☆) 非同期部にエラーが隠れている場合が多い     2013/03/03 モジュールの接合部 リセットのタイミング、順番など (c)watabe.kinji, nagoya.kaizen@gmail.com
  • 16. 実習、中入り   検証は難しかったか?         どのような視点を取り入れたか? どのようにすれば網羅率、効率が上がるか? 検証のしやすい設計だったか? 保守性、(拡張性、再利用性)はどうか?       (例)商品のバリエーションが増えたら、価格が上がっ たら 状態間、状態経路の依存性が小さいか? 状態数を圧縮できないか?   2013/03/03 サブステート、サブカウンタなどを利用できないか? (c)watabe.kinji, nagoya.kaizen@gmail.com
  • 17. 検証、テスト計画   仕様検討時に検証・テスト方法も考えてお くと良い     設計にも役に立つ 設計時の検討事項を利用する   2013/03/03 状態遷移図を構成するためのユースケース (シナリオ)は検証・テストに利用でき、設計と テスト設計の分業に役立つ (c)watabe.kinji, nagoya.kaizen@gmail.com
  • 18. お疲れ様でした   本資料に関して不明な点は小川清 (nagoya.kaizen@gmail.com)までご連絡ください 2013/03/03 (c)watabe.kinji, nagoya.kaizen@gmail.com
  • 19. 付録:流れ図(flow chart)による設計 2013/03/03 (c)watabe.kinji, nagoya.kaizen@gmail.com
  • 20. なぜ流れ図ではFSM(回路)記述し 辛いのか   流れ図には時間の概念があいまいになっ ている       1クロックで行うことごとに処理を分けなければ ならない FSMでは並列度を上げれば一つのクロックで どれだけの処理でも行うことができる FSMはレジスタの操作に最低1クロックかかる   2013/03/03 レジスタ操作が一つの状態に相当する (c)watabe.kinji, nagoya.kaizen@gmail.com
  • 21. ASM図の紹介   流れ図の一つでFSMの設計に用いる     2013/03/03 流れ図に時間の概念を導入したもの FSMの振る舞い(behavior)を記述する (c)watabe.kinji, nagoya.kaizen@gmail.com
  • 22. ASM図   Algorithmic state machine chart   2013/03/03 右図は自動車 速度コントロー ラの例 (c)watabe.kinji, nagoya.kaizen@gmail.com
  • 23. ASM図の部品     状態箱(state box) 条件出力/レジスタ操作 箱(conditional output or register operation box)     決定箱(decision box)   2013/03/03 レジスタの値の操作に 相当する 条件分岐を示す (c)watabe.kinji, nagoya.kaizen@gmail.com
  • 24. ASM図       データ構成を決定する 状態ボックスなしのASM図へ流 れ図を変換する 記述したASM図(状態箱なし)は ASM箱にまとめる   ASM箱は一つの状態に対応する     2013/03/03 つまり条件出力/レジスタ操作箱を越 えると別の状態にする 決定箱はいくつ含んでも良い (c)watabe.kinji, nagoya.kaizen@gmail.com
  • 25. 補足:「条件出力/レジスタ操作箱」 について   money=0; n_o=0; d_o=0; dispense =0 collect=0; 2013/03/03 この箱では1クロック で行うレジスタ操作 (レジスタへの代入 を含む演算)を記述 する (c)watabe.kinji, nagoya.kaizen@gmail.com
  • 26.   「条件出力/レジスタ 操作箱を越えると別 の状態になる」、「並 列処理はいくつでも可 能」であるので左のよ うな状態はOK     2013/03/03 もちろん分けてもOK つまり縦列のレジスタ 操作はNG (c)watabe.kinji, nagoya.kaizen@gmail.com
  • 27. フローチャートからASMチャートへ1     信号名、レジスタ名を決定する 流れ図を「信号」と「条件出力/レジスタ操 作ブロック」、「決定ボックス」で表現する 2013/03/03 (c)watabe.kinji, nagoya.kaizen@gmail.com
  • 28. 流れ図からASM図へ2 Dispenc e=0 Collect =0 Dispenc e=0 Collect =0 Money> 0 Money> 0 Money> =10 Money> =5     Dispenc e=0 Collect =0 D_o= 1 N_o= 1 D_o= 0 N_o= 0 Money> =10 Money> =5 Money> 0 D_o= 1 N_o= 1 D_o= 0 N_o= 0 ASM図を状態に分ける 各状態の最初に状態箱をつける 2013/03/03 (c)watabe.kinji, nagoya.kaizen@gmail.com Money> =10 Money> =5 D_o= 1 N_o= 1 D_o= 0 N_o= 0

×