20260625_4


12.2 Mealy Machine 具体例(figure 12-7, 12-8)

回路構成:

  • J-K FF 2個(A, B)で状態を記憶
  • 入力X, 出力Z

方程式:

  • 出力:Z = XB’ + XA + X’A’B(入力Xを含む!
  • 次状態:A+ = XBA’ + X’A, B+ = XB’ + X’B + A’B
  • FF入力:JA = XB, KA = X, JB = X, KB = XA

状態表(Table 12-3):

現在状態次状態 (X=0)次状態 (X=1)Z (X=0)Z (X=1)
S0 (00)S0S101
S1 (01)S1S210
S2 (11)S2S001
S3 (10)S3S101

→ 出力が入力Xの列ごとに異なる = Mealy型の特徴

False Output(誤った出力):

  • 状態が変わってから入力が変わるまでの間に、一瞬だけ誤った値が出る
  • タイミング図で確認(figure 12-8)
  • アクティブエッジ直前の出力が安定 — そこで読むのが正解

12.3 State Tables and Graphs(状態表と状態図)

この章の目的:
→ 回路図から「状態表」や「状態図」を作成し、回路の動作を理解する

Ch11との違い:

  • Ch11:設計(DESIGN)→ 「こういう回路を作りたい」
  • Ch12:解析(ANALYSIS)→ 「こういう回路がある → 動きを理解する」

遷移表の作成手順

  1. 次状態方程式を求める(FF入力方程式から)
  2. 次状態マップ(カルノー図)を描く
  3. 遷移表を作成
  4. 状態にシンボルを割り当て → 状態表にする
  5. 状態図を描く

状態表 vs 状態図

状態表状態図
形式表(テーブル)図(グラフ)
見やすさ数値を正確に見られる全体の流れが一目でわかる
用途計算・検証概念理解・説明

Moore Machineの例(figure 12-5, 12-9)

回路:

  • DA = X ⊕ B’, DB = X + A, Z = A ⊕ B

状態表(Table 12-2(b)):

現在状態次状態 (X=0)次状態 (X=1)出力Z
S0 (00)S3S10
S1 (01)S0S21
S2 (11)S1S20
S3 (10)S2S11

→ 出力Zは状態のみで決まる(入力Xの列は1つだけ)

状態図(figure 12-9):

  • 状態の中に出力を書く(例:S0: 0, S1: 1)
  • 矢印の上に入力のみを書く
stateDiagram-v2
    direction LR
    S0: S0 / Z=0
    S1: S1 / Z=1
    S2: S2 / Z=0
    S3: S3 / Z=1

    S0 --> S3: X=0
    S0 --> S1: X=1
    S1 --> S0: X=0
    S1 --> S2: X=1
    S2 --> S1: X=0
    S2 --> S2: X=1
    S3 --> S2: X=0
    S3 --> S1: X=1

Mealy Machineの例(figure 12-7, 12-11)

回路:

  • JA = XB, KA = X, JB = X, KB = XA, Z = XB’ + XA + X’A’B

状態表(Table 12-3(b)):

現在状態次状態 (X=0)次状態 (X=1)Z (X=0)Z (X=1)
S0 (00)S0S101
S1 (01)S1S210
S2 (11)S2S001
S3 (10)S3S101

→ 出力Zは入力Xの列ごとに異なる

状態図(figure 12-11):

  • 矢印の上に**「入力/出力」を書く**(例:0/0, 1/1)
stateDiagram-v2
    direction LR
    S0: S0
    S1: S1
    S2: S2
    S3: S3

    S0 --> S0: 0/0
    S0 --> S1: 1/1
    S1 --> S1: 0/1
    S1 --> S2: 1/0
    S2 --> S2: 0/0
    S2 --> S0: 1/1
    S3 --> S3: 0/0
    S3 --> S1: 1/1

Serial Adder(逐次加算器)の例(figure 12-12, 12-14)

概要:

  • 2つのnビット2進数 X, Y を最下位ビットから逐次加算
  • 出力 Si = Xi ⊕ Yi ⊕ Cin
  • 次のキャリー Cin+ = XiYi + XiCin + YiCin

状態:

  • S0: キャリーなし(Cin=0)
  • S1: キャリーあり(Cin=1)

状態図(figure 12-14):

  • Mealy型(出力が入力と状態の両方に依存)
stateDiagram-v2
    direction LR
    S0: S0 (Cin=0)
    S1: S1 (Cin=1)

    S0 --> S0: 00/0
    S0 --> S0: 11/1
    S0 --> S1: 01/1
    S0 --> S1: 10/1
    S1 --> S0: 01/0
    S1 --> S0: 10/0
    S1 --> S1: 00/1
    S1 --> S1: 11/0

タイミング図の作り方と解釈(p.127)

ポイント:

  1. 状態はアクティブエッジの後に変化
  2. 入力はアクティブエッジ前後で安定していること
  3. Moore型:出力は状態変化のみで変化
  4. Mealy型:入力変化でも出力が変化 → False Outputに注意

Mealy型のタイミング図作成手順:

  1. 最初の入力に対する出力を状態表から読む
  2. 次状態を求める(クロックエッジ後)
  3. 次状態で旧入力に対する出力を読む → これはFalse Outputの可能性
  4. 新しい入力に切り替えて繰り返し

アクティブエッジ直前の出力が正しい値

Moore型 vs Mealy型 まとめ(超重要!!)

Moore型Mealy型
出力の決め方状態のみ状態 + 入力
出力のタイミングクロックエッジ(1クロック遅れ)入力変化と同時
状態グラフ状態の中に出力を書き込む遷移矢印に出力を書き込む
遅れ1クロック遅れる即座に反応
False Outputなしあり(遷移中に一瞬誤った値)
用途安定した出力が必要な場面入力に即座に反応が必要な場面

覚え方:

  • Moore = まじめ(クロック待ってから出力)
  • Mealy = めっちゃ早い(入力即出力)

順序回路の本質:
→ 「今までの入力の履歴をFFで記憶して、出力を決める」
→ 組合せ回路(今の入力だけ)ではなく、過去の入力の影響を受ける


12.4 General Models for Sequential Circuits(順序回路の一般モデル)

一般形式(p.128)

順序回路の構造:

  • フリップフロップ(記憶素子)+ 組合せ回路(入出力関数を実現)
  • 組合せ回路はゲートやその他の回路で実現できる

Mealy Machineの一般モデル(figure 12-17)

構成:

  • m個の入力(X1, X2, …, Xm)
  • n個の出力(Z1, Z2, …, Zn)
  • k個のD-FF(Q1, Q2, …, Qk)

方程式:

  • 出力:Zn = fn(X1, X2, …, Xm, Q1, Q2, …, Qk) → 入力と状態の関数
  • 次状態:Q+ = D = gn(X1, X2, …, Xm, Q1, Q2, …, Qk) → 入力と状態の関数

タイミング:

  • tp: FFの遅延
  • tc: 組合せ回路の遅延

Moore Machineの一般モデル(figure 12-19)

特徴:

  • 出力Zがフリップフロップの現状態Q1, Q2, …, Qkのみの関数
  • 入力Xは出力に直接影響しない

最小クロック周期(p.129)

基本式:

tclk(min) = tp + tc + tsu
  • tp: FFの遅延
  • tc: 組合せ回路の遅延
  • tsu: セットアップ時間

Clock Skewがある場合:

tclk(min) = tp + tc + tsu + tsk
  • tsk: FF間のクロックスキュー

意味:

  • クロック周期は「FFの遅延 + 組合せ回路の遅延 + セットアップ時間」より短くできない
  • これを満たさないとsetup time violationが起きる

練習問題 12.1(p.130)

回路:

  • DA = B(A + X)
  • JB = A’ ⊕ X, KB = X
  • Z = XA + X’B

遷移表の作成:

  1. 次状態方程式を求める
  2. カルノー図を描く
  3. 遷移表を作成
現在状態次状態 (X=0)次状態 (X=1)Z (X=0)Z (X=1)
S0 (00)010000
S1 (01)001110
S2 (11)101111
S3 (10)000101

12章 まとめ

学んだこと:

  1. パリティ検査:T-FFを使った順序パリティチェッカー
  2. Moore型 vs Mealy型:出力の決め方の違い
  3. 状態表と状態図:回路の動作を記述する方法
  4. Serial Adder:Mealy型の具体例
  5. 一般モデル:順序回路の構造と最小クロック周期

超重要ポイント:

  • Moore型 = まじめ(クロック待ってから出力)
  • Mealy型 = めっちゃ早い(入力即出力)
  • False Outputはアクティブエッジ直前で読む
  • 最小クロック周期 = tp + tc + tsu

Ch13 Derivation of State Graphs and Tables(状態図と状態表の導出)

この章の目的:
→ 問題文から状態図や状態表を自力で作り出す方法を学ぶ

Ch12との違い:

  • Ch12:回路図から状態図を作る(解析)
  • Ch13:問題文から状態図を作る(設計)

13.1 Design of a Sequence Detector(系列検出器の設計)

系列検出器とは?
→ 入力Xに来的ビット列の中から、指定されたパターン(例:101)を検出し、検出したらZ=1を出力する回路

ルール:

  • 入力Xはクロックパルスの間だけ変化する
  • オーバラップあり(例:10101 → 最後の1は次の系列の先頭として使える)

Mealy型系列検出器(101検出)

状態の意味:

  • S0: 初期状態(何も記憶していない)
  • S1: 「1」を検出した
  • S2: 「10」を検出した

状態遷移の考え方:

S0 --1--> S1 --0--> S2 --1--> S0 (Z=1)

→ S2で「1」が来たら「101」完成 → Z=1を出力してS0に戻る

状態表(Table 13-1):

現在状態次状態 (X=0)次状態 (X=1)Z (X=0)Z (X=1)
S0S0S100
S1S2S100
S2S0S101

状態図(figure 13-4):

stateDiagram-v2
    direction LR
    S0: S0
    S1: S1
    S2: S2

    S0 --> S0: 0/0
    S0 --> S1: 1/0
    S1 --> S2: 0/0
    S1 --> S1: 1/0
    S2 --> S0: 0/0
    S2 --> S1: 1/1

遷移表(Table 13-2):

  • S0=00, S1=01, S2=10(2ビットで状態を表現)
  • AB=11はdon’t care(使用しない状態)

回路設計(figure 13-5):

  • A+ = X’B
  • B+ = X
  • Z = XA

Moore型系列検出器(101検出)

Mealy型との違い:

  • 出力が状態のみで決まる
  • 「101が検出された状態」を別途用意する必要がある
  • 状態数が1つ増える(S3を追加)

状態の意味:

  • S0: 初期状態
  • S1: 「1」を検出
  • S2: 「10」を検出
  • S3: 「101」を検出(出力Z=1)

状態表:

現在状態次状態 (X=0)次状態 (X=1)出力Z
S0S0S10
S1S2S10
S2S0S30
S3S2S11

状態図:

stateDiagram-v2
    direction LR
    S0: S0 / Z=0
    S1: S1 / Z=0
    S2: S2 / Z=0
    S3: S3 / Z=1

    S0 --> S0: X=0
    S0 --> S1: X=1
    S1 --> S2: X=0
    S1 --> S1: X=1
    S2 --> S0: X=0
    S2 --> S3: X=1
    S3 --> S2: X=0
    S3 --> S1: X=1

Mealy型 vs Moore型(系列検出器)

Mealy型Moore型
状態数少ない(3つ)多い(4つ)
出力タイミング入力と同時1クロック遅れる
実現のしやすさ状態数が少なくシンプル出力が安定している