SlideShare a Scribd company logo
有限状態遷移機械(FSM)設計	
© 渡部謹二, 小川清	

2013/03/03

(c)watabe.kinji,
nagoya.kaizen@gmail.com
FSM設計はじめに	
 

 

組み合わせ論理回路
  入力の組み合わせだけで出力が決まる
有限状態遷移機械(FSM : Finate State Machine)
  順序論理回路、状態機械(state machine)ともいう
  入力とその回路の状態で次の状態が決まる
  ミーリ(Mealy)型
  状態と入力の組み合わせで出力を決定する
  ムーア(Moore)型
  ひとつの状態につき一つの出力を決定する	
2013/03/03

(c)watabe.kinji, nagoya.kaizen@gmail.com
FSM設計状態遷移図	
 
 

FSM設計を示すのに状態遷移図をつかう
状態遷移図とは?
 
 

状態、入力、出力からなる図
同期式設計の場合は同期クロック1つごとに状態遷移する

xk/yl

Qi

2013/03/03

xk/yl

Qj

(c)watabe.kinji, nagoya.kaizen@gmail.com

Qi
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
FSM設計状態遷移図からVerilog記述へ	
 

書式はD-FFの記述と同じ
 

状態変数をreg宣言する
 

 

状態名を割り当てる
 
 

 

各状態に数値を割り当てる(2進数でよい)
状態名をparameter文で記述すると分かりやすい

always文 中のcase文で各状態における動作と
状態遷移を記述する
 

 

状態変数でビット幅を多くとっても回路合成時に最適
化する

各状態は1クロックごとに遷移する

出力がないと結果が見えないのでoutputを指定	

2013/03/03

(c)watabe.kinji, nagoya.kaizen@gmail.com
FSMの回路合成について	
 

エンコーディング方式によ
り合成する回路が異なる
 

 

 

コンパイラのオプションなど
でエンコーディング方式が
選択できる
エンコーディング方式によ
り回路規模や安定性に違
いがある
コンパイラによって得手不
得手がある。いろいろやっ
て回路で確かめ。
2013/03/03

(c)watabe.kinji, nagoya.kaizen@gmail.com
状態遷移表の作成	
 

状態から状態への遷移を表にする
 
 

図ではなぜ遷移が無いかを書き切れない
遷移の表記漏れを防げる
 

2013/03/03

リセット

(c)watabe.kinji, nagoya.kaizen@gmail.com
状態遷移表に基づく設計	
 

同時に多くの状態が遷移する条件を同時に処理
 
 
 
 
 
 
 
 
 

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
状態遷移表に基づいた設計の回路	
 

論理が単純だ
と回路も単純
 

 

FPGAに配線
する時に合理
的かどうかは
別
設計条件の
間違いは見
つけられない	

2013/03/03

(c)watabe.kinji, nagoya.kaizen@gmail.com
状態遷移の鍵	
 

電源投入時の過渡現象
 

 
 

電源投入時の状態遷移図(表)を作る

再設定(reset)時の過渡現象
同時に2つの事象が起きた場合に不定か
どうか	

2013/03/03

(c)watabe.kinji, nagoya.kaizen@gmail.com
実習	
 
 
 

自動販売機のVerilog HDL回路記述を行う
状態遷移図、遷移表、ASMチャートを記述
記述が正しいかどうか検証を行う
 
 

テストベンチ記述方法の補足
グループ演習:
 
 
 

2013/03/03

テスト計画、テストベンチ記述、報告&レビュー
仕様および回路記述の修正
周辺回路の設計	
(c)watabe.kinji, nagoya.kaizen@gmail.com
外形設計	
 

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
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
実習検証計画を立ててみよう	
 
 
 
 
 

状態遷移図は正しいか?状態遷移表を書いたか?
ASMチャートとどちらがよいか?
状態遷移図を正しく設計記述しているか?
何を証拠にするか?
網羅率(coverage)
 
 

2013/03/03

すべての状態を網羅しているテストセットか?
すべての状態遷移を網羅しているテストセットか?

(c)watabe.kinji, nagoya.kaizen@gmail.com
 

いろいろな視点を導入する
 

同時にボタンを押したら?
 

 
 
 

 

同時とはどれぐらいの時間精度か?

順番が逆になったら?
信号が連続でやってきたら
状態遷移が二順目になったら?(☆)

非同期部にエラーが隠れている場合が多い
 
 

2013/03/03

モジュールの接合部
リセットのタイミング、順番など	

(c)watabe.kinji, nagoya.kaizen@gmail.com
実習、中入り	
 

検証は難しかったか?
 
 
 

 

どのような視点を取り入れたか?
どのようにすれば網羅率、効率が上がるか?
検証のしやすい設計だったか?

保守性、(拡張性、再利用性)はどうか?
 

 
 

(例)商品のバリエーションが増えたら、価格が上がっ
たら
状態間、状態経路の依存性が小さいか?
状態数を圧縮できないか?
 

2013/03/03

サブステート、サブカウンタなどを利用できないか?	
(c)watabe.kinji, nagoya.kaizen@gmail.com
検証、テスト計画	
 

仕様検討時に検証・テスト方法も考えてお
くと良い
 

 

設計にも役に立つ

設計時の検討事項を利用する
 

2013/03/03

状態遷移図を構成するためのユースケース
(シナリオ)は検証・テストに利用でき、設計と
テスト設計の分業に役立つ	

(c)watabe.kinji, nagoya.kaizen@gmail.com
お疲れ様でした	
 

本資料に関して不明な点は小川清
(nagoya.kaizen@gmail.com)までご連絡ください

2013/03/03

(c)watabe.kinji, nagoya.kaizen@gmail.com
付録:流れ図(flow chart)による設計	

2013/03/03

(c)watabe.kinji, nagoya.kaizen@gmail.com
なぜ流れ図ではFSM(回路)記述し
辛いのか	
 

流れ図には時間の概念があいまいになっ
ている
 

 

 

1クロックで行うことごとに処理を分けなければ
ならない
FSMでは並列度を上げれば一つのクロックで
どれだけの処理でも行うことができる
FSMはレジスタの操作に最低1クロックかかる
 

2013/03/03

レジスタ操作が一つの状態に相当する
(c)watabe.kinji, nagoya.kaizen@gmail.com
ASM図の紹介	
 

流れ図の一つでFSMの設計に用いる
 
 

2013/03/03

流れ図に時間の概念を導入したもの
FSMの振る舞い(behavior)を記述する	

(c)watabe.kinji, nagoya.kaizen@gmail.com
ASM図	
 

Algorithmic
state machine
chart
 

2013/03/03

右図は自動車
速度コントロー
ラの例	

(c)watabe.kinji, nagoya.kaizen@gmail.com
ASM図の部品	
 
 

状態箱(state box)
条件出力/レジスタ操作
箱(conditional output
or register operation
box)
 

 

決定箱(decision box)
 

2013/03/03

レジスタの値の操作に
相当する
条件分岐を示す

(c)watabe.kinji, nagoya.kaizen@gmail.com
ASM図	
 
 
 

データ構成を決定する
状態ボックスなしのASM図へ流
れ図を変換する
記述したASM図(状態箱なし)は
ASM箱にまとめる
 

ASM箱は一つの状態に対応する
 

 

2013/03/03

つまり条件出力/レジスタ操作箱を越
えると別の状態にする
決定箱はいくつ含んでも良い	

(c)watabe.kinji, nagoya.kaizen@gmail.com
補足:「条件出力/レジスタ操作箱」
について	
 

money=0;
n_o=0;
d_o=0;
dispense =0
collect=0;

2013/03/03

この箱では1クロック
で行うレジスタ操作
(レジスタへの代入
を含む演算)を記述
する	

(c)watabe.kinji, nagoya.kaizen@gmail.com
 

「条件出力/レジスタ
操作箱を越えると別
の状態になる」、「並
列処理はいくつでも可
能」であるので左のよ
うな状態はOK
 
 

2013/03/03

もちろん分けてもOK
つまり縦列のレジスタ
操作はNG

(c)watabe.kinji, nagoya.kaizen@gmail.com
フローチャートからASMチャートへ1	

 
 

信号名、レジスタ名を決定する
流れ図を「信号」と「条件出力/レジスタ操
作ブロック」、「決定ボックス」で表現する	

2013/03/03

(c)watabe.kinji, nagoya.kaizen@gmail.com
流れ図から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

More Related Content

PDF
NDTスキャンマッチング 第1回3D勉強会@PFN 2018年5月27日
PDF
組み込み関数(intrinsic)によるSIMD入門
PDF
はじめてのKrylov部分空間法
PDF
[データマイニング+WEB勉強会][R勉強会] R言語によるクラスター分析 - 活用編
PDF
Jetson活用セミナー ROS2自律走行実現に向けて
PDF
簡単な算数でできる文章校正
PPTX
3Dマップを活用したVisual Localization
PPTX
You Only Learn One Representation: Unified Network for Multiple Tasks
NDTスキャンマッチング 第1回3D勉強会@PFN 2018年5月27日
組み込み関数(intrinsic)によるSIMD入門
はじめてのKrylov部分空間法
[データマイニング+WEB勉強会][R勉強会] R言語によるクラスター分析 - 活用編
Jetson活用セミナー ROS2自律走行実現に向けて
簡単な算数でできる文章校正
3Dマップを活用したVisual Localization
You Only Learn One Representation: Unified Network for Multiple Tasks

What's hot (20)

PDF
PRML上巻勉強会 at 東京大学 資料 第1章前半
PPTX
Go-ICP: グローバル最適(Globally optimal) なICPの解説
PDF
べき乗則・パレート分布・ジップの法則
PPTX
Structured Light 技術俯瞰
PDF
ベイズ最適化
PDF
3次元レジストレーションの基礎とOpen3Dを用いた3次元点群処理
PDF
20190825 vins mono
PDF
ChatGPTがもたらす未来予測
PDF
VisualSFMとMeshLabとCloudCompareによるドローン撮影画像を用いたデジタル地図作成
PDF
3次元レジストレーション(PCLデモとコード付き)
PPTX
[DL輪読会]PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metr...
PPTX
ORB-SLAMの手法解説
PDF
最適化超入門
PPTX
ベイズファクターとモデル選択
PPTX
機械学習の応用例にみる認知症診断と将来の発症予測
PDF
研究効率化Tips Ver.2
PPTX
[DL輪読会]Graph R-CNN for Scene Graph Generation
PDF
【DL輪読会】Motion Policy Networks
PDF
階層的クラスタリング入門の入門
PRML上巻勉強会 at 東京大学 資料 第1章前半
Go-ICP: グローバル最適(Globally optimal) なICPの解説
べき乗則・パレート分布・ジップの法則
Structured Light 技術俯瞰
ベイズ最適化
3次元レジストレーションの基礎とOpen3Dを用いた3次元点群処理
20190825 vins mono
ChatGPTがもたらす未来予測
VisualSFMとMeshLabとCloudCompareによるドローン撮影画像を用いたデジタル地図作成
3次元レジストレーション(PCLデモとコード付き)
[DL輪読会]PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metr...
ORB-SLAMの手法解説
最適化超入門
ベイズファクターとモデル選択
機械学習の応用例にみる認知症診断と将来の発症予測
研究効率化Tips Ver.2
[DL輪読会]Graph R-CNN for Scene Graph Generation
【DL輪読会】Motion Policy Networks
階層的クラスタリング入門の入門
Ad

Viewers also liked (15)

PDF
【Interop Tokyo 2015】 DC 6: Cisco UCS 管理ツールご紹介
PDF
Cisco Connect Japan 2014:Cisco ASA 5500-X 次世代ファイアウォールの機能と、安定導入・運用方法
PDF
Cisco Connect Japan 2014:データセンターを支える 最新 Cisco Unified Computing System ご紹介
PPTX
お絵かきのお話(~nw構成図ってどんな感じで書いてます?~)
PPTX
誰にでも分かる「IPネットワーク」の図の描き方がない!?
PPTX
ネットワーク機器のAPIあれこれ入門 (NetOpsCoding#2)
PDF
中国にOpenflowを入れてきた話
PDF
ポケモンGoをスマートグラスで表示してみた話
PDF
ロードバランスへの長い道
PPTX
社内ネットワーク改善の過程で分かった物理ゆえの闇と脆弱性そしてネットワークの基礎入門
PPTX
Go言語でのステート管理
PDF
ネットワークでなぜ遅延が生じるのか
PDF
0528 kanntigai ui_ux
PDF
女子の心をつかむUIデザインポイント - MERY編 -
PDF
見やすいプレゼン資料の作り方 - リニューアル増量版
【Interop Tokyo 2015】 DC 6: Cisco UCS 管理ツールご紹介
Cisco Connect Japan 2014:Cisco ASA 5500-X 次世代ファイアウォールの機能と、安定導入・運用方法
Cisco Connect Japan 2014:データセンターを支える 最新 Cisco Unified Computing System ご紹介
お絵かきのお話(~nw構成図ってどんな感じで書いてます?~)
誰にでも分かる「IPネットワーク」の図の描き方がない!?
ネットワーク機器のAPIあれこれ入門 (NetOpsCoding#2)
中国にOpenflowを入れてきた話
ポケモンGoをスマートグラスで表示してみた話
ロードバランスへの長い道
社内ネットワーク改善の過程で分かった物理ゆえの闇と脆弱性そしてネットワークの基礎入門
Go言語でのステート管理
ネットワークでなぜ遅延が生じるのか
0528 kanntigai ui_ux
女子の心をつかむUIデザインポイント - MERY編 -
見やすいプレゼン資料の作り方 - リニューアル増量版
Ad

More from Kiyoshi Ogawa (20)

PPTX
Misracompliant20162020
PDF
High Quality Design with Hcd and hazop
PDF
Deep learningwithgithubanddocker
PDF
Deep learningwithgithubanddocker
PDF
Nagoya2018
PDF
Hazop tokyo201809
PPTX
Who like C++ coding standard
PDF
Who enjoy a coding standard? ver. 0.30
PDF
Who enjoy a coding standard? ver. 0.20
PDF
Who enjoy a coding standard?
PDF
機械と標準
PDF
TOPPERS as an IoT OS(kernel)
PDF
How can we resolve problems.
PDF
Datamining Introduction using R with Raspbian on Raspberry Pi 3B.
PDF
Hazop Safety and Security at Fukui 2017(2/2)
PDF
Hazop Safety and Security at Fukui 2017(1/2)
PDF
Hazop and triz by/of/for the children(3/3)
PDF
Hazop and triz by/of/for the children(2/3)
PDF
Hazop and triz by/of/for the children(1/3)
PDF
Raspberrypitraining20171027
Misracompliant20162020
High Quality Design with Hcd and hazop
Deep learningwithgithubanddocker
Deep learningwithgithubanddocker
Nagoya2018
Hazop tokyo201809
Who like C++ coding standard
Who enjoy a coding standard? ver. 0.30
Who enjoy a coding standard? ver. 0.20
Who enjoy a coding standard?
機械と標準
TOPPERS as an IoT OS(kernel)
How can we resolve problems.
Datamining Introduction using R with Raspbian on Raspberry Pi 3B.
Hazop Safety and Security at Fukui 2017(2/2)
Hazop Safety and Security at Fukui 2017(1/2)
Hazop and triz by/of/for the children(3/3)
Hazop and triz by/of/for the children(2/3)
Hazop and triz by/of/for the children(1/3)
Raspberrypitraining20171027

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