論理回路 1 順序回路

2015 年 6 月 19 日
小野寺秀俊
論理回路
1
1.1
順序回路
順序回路とは
組合せ回路 (combinational circuit) 出力がその時点での入力のみにより決まる。
順序回路 (sequential circuit) 出力がその時点での入力とともに、過去の入力系列にも
依存する。順序回路は、組合せ回路と記憶回路で構成される。(図 1 参照)
同期式順序回路 (synchronous sequential circuit) 入力変数と状態変数の値を、クロッ
ク (0 と 1 を一定周期 T で繰り返す信号) に同期して一斉に変化させる回路。クロッ
クの周期 T は、組合せ回路の演算時間より長くとる。同期式順序回路では、T が時
間の単位となる。時刻 t における入力変数 (input variable) xi (t), (i = 1, 2, · · · , n) の
値が定まると、時刻 t における出力変数 (output variable) zj (t), (j = 1, 2, · · · , m) と、
時刻 t + 1 における状態変数 (state variable) yk (t + 1), (k = 1, 2, · · · , s) は、
zj (t) = gj (x1 (t), x2 (t), · · · , xn (t), y1 (t), y2 (t), · · · ys (t))
yk (t + 1) = fk (x1 (t), x2 (t), · · · , xn (t), y1 (t), y2 (t), · · · ys (t))
のように論理関数で表現できる。このとき、gj を出力関数、fk を状態遷移関数 (励
起関数) という。
非同期式順序回路 (asynchronous sequential circuit) クロックを持たない順序回路。
1.2
順序回路の表現法
有限状態機械 (FSM: Finite state machine) 順序回路の動作を数学的に表現したもの。
ミーリ型機械 (Mealy machine) は、M = (S, I, O, δ, λ) なる 5 組で定義される。こ
こで、S は状態集合、I は入力集合、O は出力集合、 δ : S × I → S は状態遷移関
数 (state transition function)、λ : S × I → O は出力関数 (output function) である。
ムーア型機械 (Moore machine) は、出力関数が λ : S → O となったもの。すなわ
ち、ミーリ型機械は出力が現状態と入力の関数になっており、ムーア型機械は出力
が現状態のみの関数となっている。図 2 参照
状態遷移図 (state transition diagram) 順序回路の内部状態とその遷移を表現した有向
グラフ。各節点は内部状態に対応し、各有向枝は状態遷移に対応する。各有向枝に
は、その遷移を起こす入力と、そのときの出力が “入力”/“出力” という書式でラベ
ル付けされる。
例 150 円のジュースを売る自動販売機。100 円硬貨と 50 円硬貨のみを受け付け、お
つりも出す。
入力は「硬貨が投入されなかった」「50 円硬貨が投入された」「100 円硬貨が投入さ
れた」の 3 種類 (I1 ,I2 ,I3 ) 。出力は「何も出さない」
「ジュースを出す」
「ジュースと
おつりを出す」の 3 種類 (O1 , O2 , O3 ) 。内部状態は「何もお金が入っていない」
「50
円入った状態」「100 円入った状態」の 3 種類 (S1 , S2 , S3 ) 。 図 3 参照
状態遷移表 状態遷移と出力の様子を表で表したもの。各行が現状態に対応し、各列は入
力の値に対応する。現状態と入力により次状態と出力がどうなるかを示したもの (状
態遷移と出力を別けて表現する場合もある—遷移表と出力表—)。表 1 参照
状態割当てと符合化 内部状態を符号化 (論理変数で表現) することを状態割当て (state
assignment) という。n 個の状態変数で、最大 2n 個の内部状態を表現できるが、状
態割当ての方法により回路 (組合せ回路部分) の複雑度が異なる。入力や出力も記号
で表現されている場合には符合化するが、この符号化の方法によっても回路の複雑
度が異なってくる。表 2(状態割当てと符号化の例)
表 2 の状態割り当てと符号化を施した後の遷移表および主力表が表 3。
状態割当てにおける符号化の例
最短符号 (minimum length code) n 個の状態を表すための、[log2 n] ビットの符
号。必要な記憶素子 (フリップフロップ) 数が最小である。
例 4 状態を符号化するには、最低 2 ビット必要。最短符号を用いた状態の割当
て方は全体で 4! = 24 通り存在する。
状態割当てのヒント: 状態遷移が頻繁に生ずる状態対の符号のハミング距離を
なるべく小さくする。
1 ホット符号 (1-hot code) n 個の状態を表すための、一カ所のみが 1 で他が 0 の n
ビット符号。最短符号に比べ記憶素子が多く必要であるが、組合せ回路部分が
簡単になることが期待される。高速性を狙った回路で有効。
1.3
フリップフロップ
順序回路の記憶回路として、ラッチ (latch) やフリップフロップ (flip-flop: FF と略記) と
呼ばれる 1 ビットの記憶素子を用いる。ラッチは、入力の変化に応じて出力が直ちに変化
する素子。FF は、外部から与える信号 (クロック) に同期して、出力が変化する素子。ラッ
チの中で、制御信号入力を持つものをレベルセンシティブラッチ (level-sensitive latch)、
持たないものを透過型ラッチ (transparent latch) という。
SR ラッチ NOR や NAND などの否定ゲートをたすき掛けに接続した回路。S=1, R=0 の
とき Q=1 となる (セットされる)。S=0, R=1 のとき Q=0 となる (リセットされる)。
S=R=0 のとき、二つの安定状態 (Q=1 または 0) を持つ。すなわち、以前の状態が
保持される。S=1, R=1 は入力禁止。
マスタースレーブ型 SR FF クロックに同期して出力を変化させるため、入力をサンプ
ルするラッチと出力を保持するラッチを従属接続し、それぞれが逆位相のクロック
で動作するようにしたもの。入力側のラッチをマスター (master) ラッチ、出力側を
スレーブ (slave) ラッチという。
特性方程式は、Q(t + 1) = S + RQ(t) 但し S · R = 0。
マスタースレーブ型 D FF マスタースレーブ型 SR FF の R に S を入力するもの。
特性方程式は、Q(t + 1) = D。現在の入力が、次の時刻の出力となる。すなわち、
入力 D の値を遅延 (delay) させる機能がある。
マスタースレーブ型 JK FF SR FF の禁止入力において、出力が反転するようにスレー
ブラッチからマスターラッチにフィードバックをかけている。
特性方程式は、Q(t + 1) = JQ(t) + KQ(t)。
マスタースレーブ型 T FF JK FF で J = K としたもの。T = 1 のとき、1 クロックごと
に状態が反転する。T = 0 のときには、状態は変化しない。
特性方程式は、Q(t + 1) = T Q(t) + T Q(t)
S R
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
Q(t) Q(t+1)
0
1
0
1
0
1
0
1
0
1
0
0
1
1
X
X
ホールド
リセット
セット
入力禁止
J
K Q(t)
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
Q(t+1)
0
1
0
0
1
1
1
0
ホールド
リセット
セット
トグル
各 FF の駆動条件 順序回路の記憶素子として FF を用いる場合、FF の出力が順序回路の
状態変数に対応する。次のクロックで (次の時刻で)、順序回路が所望の状態遷移を
行なうためには、FF に適切な入力を与える (組合せ回路部分で適切な値を作成する)
必要がある。各種の FF において、それぞれの状態遷移を起こすために必要な入力
値を以下に示す (大変重要: 必ず導出できること)。組み合わせ回路部分は、FF を駆
動する関数、すなわち励起関数 (excitation function) を実現するように設計する。
Q(t) → Q(t + 1)
0→0
0→1
1→0
1→1
S
0
1
0
*
R
*
0
1
0
D
0
1
0
1
J
0
1
*
*
K
*
*
1
0
T
0
1
1
0
入力変数
x1
x2
xn
I
出力変数
・
・
・
z1
z2
・
・
・
組合せ回路
λ 出力関数
O
δ 状態遷移関数
S
zm
y1
ys
Mealy型 (Mealy machine)
状態変数
I
記憶回路
図1
λ 出力関数
O
δ 状態遷移関数
S
順序回路の概念図
Moore型 (Moore machine)
図2
表1 状態遷移表
I 2/ O1
I 1/ O1
I 1/ O1
S1
S2
I 3/ O2
I 2/ O2
I 3/ O1
I 2/ O1
I 3/ O3
次状態、出力
現状態
入力
I2
I1
I3
S1
S 1 , O1
S 2 , O1
S 3 , O1
S2
S 2 , O1
S 3 , O1
S 1 , O2
S3
S 3 , O1
S 1 , O2
S 1 , O3
S3
I 1/ O1
図3
表2
S 1 未投入
S 2 50円投入済
S 3 100円投入済
状態遷移図
状態割当(一例)
state assigment
符合化(一例)
encoding
I 1 無投入
I 2 50円投入
I 3 100円投入
O 1 何も出さない
O 2 ジュースを出す
O 3 ジュースと50円を出す
状態割当て及び符合化後の遷移表および出力表
y1y2
z1z2
x1 x2
出力
z1 z2
x1x2
y1y2 0 0 0 1 1 1 1 0
00 01 11 10
I1
0 0
O1
0 0
00
00 01 * * 11
00 00 * * 00
0 1
I2
0 1
O2
0 1
01
01 11 * * 00
00 00 * * 01
1 1
I3
1 0
O3
1 1
11
11 00 * * 00
00 01 * * 11
10
* * * * * * * *
* * * * * * * *
状態
y1 y2
S1
0 0
S2
S3
入力
x1x2
S
R
Q
S
Q
(norで)
S
Q
S
Q
R
R
Q
Q
Q
CK
R
Q
S
Q
R
Q
D
Q
CK
(nandで)
level-sensitive SR latch
SR latch
S
Q
S
Q
D
S
>CK
R
Q
R
Q
>CK
Q
R
CK
>CK
Q
Q
master-slave D FF
master-slave SR FF
(negative edge-triggered)
(negative edge-triggered)
J
Q
J
Q
T
J
>CK
K
Q
K
Q
T
>CK
Q
K
Q
>CK
Q
Q
CK
master-slave JK FF
master-slave T FF
R
Q
D
Q
D
ck
>CK
CK
Q
S
ck
ck
Q
ck
\Q
ck
switch: ck=1でon, ck=0でoff
D
Negative edge-triggered D FF (bipolar)
Negative edge-triggered D FF (CMOS)