SlideShare una empresa de Scribd logo
1 de 28
Descargar para leer sin conexión
有限状態遷移機械(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

Más contenido relacionado

La actualidad más candente

[Slide]闇アジャイラーvs光アジャイラーforDevLOVE(EnergizedWorkLT祭)
[Slide]闇アジャイラーvs光アジャイラーforDevLOVE(EnergizedWorkLT祭)[Slide]闇アジャイラーvs光アジャイラーforDevLOVE(EnergizedWorkLT祭)
[Slide]闇アジャイラーvs光アジャイラーforDevLOVE(EnergizedWorkLT祭)
masashi takehara
 

La actualidad más candente (20)

とあるスタートアップの評価指標(メトリクス)
とあるスタートアップの評価指標(メトリクス)とあるスタートアップの評価指標(メトリクス)
とあるスタートアップの評価指標(メトリクス)
 
無料アイスブレイクスライドサンプル
無料アイスブレイクスライドサンプル無料アイスブレイクスライドサンプル
無料アイスブレイクスライドサンプル
 
MeCabでオリジナル辞書を構築してみる
MeCabでオリジナル辞書を構築してみるMeCabでオリジナル辞書を構築してみる
MeCabでオリジナル辞書を構築してみる
 
グロースハック なぜ我々は無意味な施策を打ってしまうのか
グロースハック なぜ我々は無意味な施策を打ってしまうのかグロースハック なぜ我々は無意味な施策を打ってしまうのか
グロースハック なぜ我々は無意味な施策を打ってしまうのか
 
システム思考を学ぶゲーム型研修【ビールゲーム】
システム思考を学ぶゲーム型研修【ビールゲーム】システム思考を学ぶゲーム型研修【ビールゲーム】
システム思考を学ぶゲーム型研修【ビールゲーム】
 
集約署名
集約署名集約署名
集約署名
 
MonotaROが向かうクラウド活用の今後 2016-04-21 関西スタートアップAWS勉強会
MonotaROが向かうクラウド活用の今後 2016-04-21 関西スタートアップAWS勉強会MonotaROが向かうクラウド活用の今後 2016-04-21 関西スタートアップAWS勉強会
MonotaROが向かうクラウド活用の今後 2016-04-21 関西スタートアップAWS勉強会
 
非エンジニアのためのこれだけは押さえておきたいWEBサービスの基礎技術
非エンジニアのためのこれだけは押さえておきたいWEBサービスの基礎技術非エンジニアのためのこれだけは押さえておきたいWEBサービスの基礎技術
非エンジニアのためのこれだけは押さえておきたいWEBサービスの基礎技術
 
新卒社会人の仕事術20160210 sapporo
新卒社会人の仕事術20160210 sapporo新卒社会人の仕事術20160210 sapporo
新卒社会人の仕事術20160210 sapporo
 
ChatGPT Impact - その社会的/ビジネス価値を考える -
ChatGPT Impact - その社会的/ビジネス価値を考える -ChatGPT Impact - その社会的/ビジネス価値を考える -
ChatGPT Impact - その社会的/ビジネス価値を考える -
 
論文紹介:The wavelet matrix
論文紹介:The wavelet matrix論文紹介:The wavelet matrix
論文紹介:The wavelet matrix
 
マッチングサービスにおけるKPIの話
マッチングサービスにおけるKPIの話マッチングサービスにおけるKPIの話
マッチングサービスにおけるKPIの話
 
データドリブン経営のメトリクス分析 AARRR!モデルの紹介
データドリブン経営のメトリクス分析 AARRR!モデルの紹介データドリブン経営のメトリクス分析 AARRR!モデルの紹介
データドリブン経営のメトリクス分析 AARRR!モデルの紹介
 
実践イカパケット解析α
実践イカパケット解析α実践イカパケット解析α
実践イカパケット解析α
 
チャットボットが生み出す新しいユーザーエクスペリエンス(UX):LINE Platform - UI/UX勉強会 #01 - Chat Bot編
チャットボットが生み出す新しいユーザーエクスペリエンス(UX):LINE Platform - UI/UX勉強会 #01 - Chat Bot編チャットボットが生み出す新しいユーザーエクスペリエンス(UX):LINE Platform - UI/UX勉強会 #01 - Chat Bot編
チャットボットが生み出す新しいユーザーエクスペリエンス(UX):LINE Platform - UI/UX勉強会 #01 - Chat Bot編
 
スケジュール遅延が当たり前な状況を少し良くしたいチームがその未来のためにScrumに”再”挑戦した話
スケジュール遅延が当たり前な状況を少し良くしたいチームがその未来のためにScrumに”再”挑戦した話スケジュール遅延が当たり前な状況を少し良くしたいチームがその未来のためにScrumに”再”挑戦した話
スケジュール遅延が当たり前な状況を少し良くしたいチームがその未来のためにScrumに”再”挑戦した話
 
ドット絵でプログラミング!難解言語『Piet』勉強会
ドット絵でプログラミング!難解言語『Piet』勉強会ドット絵でプログラミング!難解言語『Piet』勉強会
ドット絵でプログラミング!難解言語『Piet』勉強会
 
20141213 俺のインセプションデッキ #agilesamurai
20141213 俺のインセプションデッキ #agilesamurai20141213 俺のインセプションデッキ #agilesamurai
20141213 俺のインセプションデッキ #agilesamurai
 
[Slide]闇アジャイラーvs光アジャイラーforDevLOVE(EnergizedWorkLT祭)
[Slide]闇アジャイラーvs光アジャイラーforDevLOVE(EnergizedWorkLT祭)[Slide]闇アジャイラーvs光アジャイラーforDevLOVE(EnergizedWorkLT祭)
[Slide]闇アジャイラーvs光アジャイラーforDevLOVE(EnergizedWorkLT祭)
 
Post-quantum zk-SNARKs on Hyperledger Fabric​
Post-quantum zk-SNARKs on Hyperledger Fabric​Post-quantum zk-SNARKs on Hyperledger Fabric​
Post-quantum zk-SNARKs on Hyperledger Fabric​
 

Destacado

Destacado (15)

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

Más de Kiyoshi Ogawa

Más de Kiyoshi Ogawa (20)

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

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