Document

第13回
順序回路の設計方法
仕様が与えられたら、それを満たす順序回路を設計できるように
する
本講義のホームページを活用して下さい
http://www.ee.tcu.ac.jp/lectures/digital/index.html
ユーザ名: tcu
パスワード: seto
1
重要連絡
期末試験
電卓は使用不可,テンプレートを忘れないように
2
順序回路の設計手順 (本講義で説明)
仕様 (スペック)
設計者
が検討
(重要)
設計する回路の
機能説明書
(仕様の機能を実現する)
1. 回路の入出力を決定
2. 状態遷移図を描く
3. 状態に0,1の列を割当てる
機械的
な作業
4. 状態遷移表を書く
組合せ回路の設計
5. 状態遷移関数、出力関数
を導き、カルノー図で簡単化
回路図
前回
の講義
3
順序回路の仕様(例) (注意深く読む!)
入出力一覧
信号名
clk
rst
x
f
入出力
論理
ビット幅
入力
-
1
入力
正論理
1
入力
正論理
1
出力
正論理
1
機能・備考
クロック信号 (立上りで動作)
リセット信号(初期状態に戻す)
クロックに同期した入力
回路の動作説明
入力xが3回“1”となったとき (連続していなくてもよい)、
3回目に“1”となったクロック周期間だけ“1”を出力
“1”を出力した直後のクロック周期で、初期状態に戻る
4
ステップ1. 入出力の決定
この例では、与えられているので,それを使えばよい
クロック入力 clk
リセット入力 rst
クロックに同期した1ビットの入力信号 x
1ビットの出力 f
x
rst
設計対象の
順序回路
f
clk
実際の設計では、入出力は、自分で考えて決定することも多い
5
補足: クロックに同期した信号とは?
クロックの立上り直後以外で変化しない信号 (つまり,D-FFの出力)
パタパタ変化しないので、扱いやすい
クロックに同期しない信号を,非同期信号と呼ぶ
クロック
非同期入力
x’
同期入力
x
非同期入力
クロック
x’
同期化された入力
Q D
x
順序回路
6
ステップ2. 状態遷移図を描く (1): 状態の検討
機能を実現するために,どんな 状態 (丸) が必要か考える
仕様 をよく読む
「入力xが3回“1”となったとき、 “1”を出力」 と書いてある
「連続しなくてもよい」,と書いてある
x が何回“1”になったか,状態として覚えておく必要がある
clk
x
状態
0 回
0 回
1 回
1 回
2 回
“1”になった “1”になった“1”になった “1”になった “1”になった
7
ステップ2. 状態遷移図を描く (2): 状態の検討
必要そうな 状態 が考えついたら、丸をかく
適当にコンパクトな記号を記入 ( S0, S1, S2 )
rst
S0
0回
1になった
S1
1回
1になった
S2
2回
1になった
また リセット状態 がどこかになる検討し、矢印を記入 (rst)
リセットされたときに移る,最初の状態
状態遷移図の本質は、動作を
手続き
順番に整理することである。
に分けて、
8
ステップ2.状態遷移図を描く(3): 状態遷移(矢印)の検討
仕様をよく読み、各状態で、入力 x のすべてのパターン(0, 1)に
対してどんな 状態遷移が起こるか考える
仕様:
状態S0: x=0 のとき、S0 のまま
入力xが3回“1”となったとき、
x=1 のとき、S1 にジャンプ
3回目に“1”となったクロック
状態S1: x=0 のとき、S1 のまま
周期だけ“1”を出力する
x=1 のとき、S2 にジャンプ
「“1”を出力した直後のクロッ
状態S2: x=0 のとき、S2 のまま
ク周期で、初期状態に戻る」
x=1 のとき、S0 にジャンプ
rst
0/
S0
0回
1になった
1/
0/
S1
1回
1になった
1/
1/
0/
S2
2回
1になった
9
ステップ2. 状態遷移図を描く (4): 出力の検討
各状態にいるときに、入力 x のすべてのパターンに対して 出力
f がどうなるか考える
状態S0: x=0 のとき、f = 0
x=1 のとき、f = 0
仕様:
状態S1: x=0 のとき、f = 0
入力xが3回1となったとき、3回
目に1となったサイクルだけ1を
x=1 のとき、f = 0
出力する
状態S2: x=0 のとき、f = 0
x=1 のとき、f = 1
rst
0/ 0
S0
0回
1になった
1/ 0
0/ 0
S1
1回
1になった
1/ 1
1/ 0
0/ 0
S2
2回
1になった
10
ステップ3. 状態に0, 1の列を割当てる ( 状態割り当て )
状態は 3 個 (S0, S1, S2)
2 ビットあれば、よい (Q1, Q2 とする)
Q1, Q2 を 状態 変数 とも呼ぶ
割り当てかた は、自由
ここでは、以下のように割当てる
rst
0/0
S0
Q1Q2
00
1/0
0/0
S1
Q1Q2
01
1/0
0/0
S2
Q1Q2
10
1/1
11
ステップ4. 状態遷移図から、状態遷移表を書く
現状態、入力、出力、次状態の順 現状態 入
力
に,表を作成
Q1 Q2 x
現状態、入力の全パターンを昇順で
0 0 0
列挙
rst
0/0
S0
Q1Q2
00
1/0
0/0
S1
Q1Q2
01
1/0
0/0
S2
Q1Q2
10
1/1
ただし、Q1=1 かつ Q2=1 の状態
には行かないので、そのときの
出力、次状態はともに、 ドントケア
0
0
1
0
1
0
0
1
1
1
0
0
1
0
1
1
1
0
1
1
1
出
力
f
次状態
D1
D2
* * *
* * 12*
ステップ4. 状態遷移図から、状態遷移表を書く
現状態、入力の各パターンに対し、
状態遷移図を参考に、
出力、次状態を埋めていく
rst
0/0
S0
Q1Q2
00
1/0
0/0
S1
Q1Q2
01
1/1
1/0
0/0
S2
Q1Q2
10
現状態
入
力
出
力
次状態
Q1 Q2
x
f
D1
D2
0
0
0
0
0
1
0
0
0
0
0
1
0
0
1
1
1
1
0
0
0
1
0
1
0
0
0
1
0
1
1
0
1
0
0
0
1
1
0
*
*
*
1
1
1
*
*
*
ここを埋める
13
ステップ5. 状態遷移関数、出力関数を導き、カルノー図で簡単化(1)
まず、 状態遷移表 から、 論理式
ドントケアの論理式 も導く
次状態
を導く
現状態
入
力
出
力
Q1 Q2
x
f
D1
D2
0
0
0
0
0
1
0
0
0
0
0
1
D1  Q1Q2 x  Q1Q2 x
0
0
1
1
1
0
0
1
0
0
0
0
0
1
1
1
0
0
D2  Q1Q2 x  Q1Q2 x
1
1
1
0
1
1
1
0
1
1
*
*
0
*
*
0
*
*
f  Q1 Q2 x
DC  Q1Q2 x  Q1Q2 x
ドントケア (Don’t Care)
14
5. 状態遷移関数、出力関数を導き、カルノー図で簡単化(2) (復習)
出力関数 f の簡単化
f  Q1 Q2 x
DC  Q1Q2 x  Q1Q2 x
ドントケア (don’t care)
囲みを大きく、囲みの数を少なく
f  Q1 x
Q1Q2
x
00
01
11
10
0
*
1
*
1
11
10
Q 1Q 2
x
00
01
0
*
1
*
1
15
5. 状態遷移関数、出力関数を導き、カルノー図で簡単化(3) (復習)
状態遷移関数 D1の簡単化 Q1Q2
D1  Q1Q2 x  Q1Q2 x
DC  Q1Q2 x  Q1Q2 x
ドントケア (don’t care)
囲みを大きく、囲みの数を少なく
D1  Q2 x  Q1 x
x
00
01
0
1
Q1Q2
x
00
10
*
1
1
*
01
11
10
*
1
0
1
11
1
*
16
5. 状態遷移関数、出力関数を導き、カルノー図で簡単化(4) (復習)
状態遷移関数 D2の簡単化 Q1Q2
D2  Q1Q2 x  Q1Q2 x
DC  Q1Q2 x  Q1Q2 x
ドントケア (don’t care)
囲みを大きく、囲みの数を少なく
D2  Q1Q2 x  Q2 x
x
00
0
1
Q1Q2
x
11
1
*
1
00
0
1
01
1
10
*
01
11
1
*
*
10
17
ステップ6. 回路図を描く
状態のビット数分
D-FFを用意
簡単化された、
状態遷移関数D1, D2
出力関数 f
から、組合せ回路を描く
f
x
f
D2
D1
f  Q1 x
D1  Q2 x  Q1 x
Q1 D1
D2  Q1Q2 x  Q2 x
Q2 D2
ただし、クロックとリセットは省略
18
完成した順序回路
仕様書
x
f
入出力は、以下の通り。
クロック入力clk
クロックに同期した
1ビットの入力信号x
1ビットの出力f
リセット入力 (rst)
以下の動作をする。
…
設計後、簡単な動作チェックをしよう
rst
Q1 D1
クロックとリセットも忘れずに描くこと
実は前回の小テストで、
状態遷移図を描いた回路
Q2 D2
clk
19
まとめ
仕様から、順序回路を設計する方法を学んだ
仕様→状態遷移図→状態遷移表→順序回路
状態遷移図を描けることが重要
最後は、組合せ回路の設計方法を活用
問題を解いて、方法を身に付けて下さい
20