順序回路の総復習(Ch12-13)

そもそも「順序回路」とは?

組合せ回路との違い:

  • 組合せ回路:今の入力だけから出力を決める(AND、OR、NOT)
  • 順序回路過去の入力の履歴も含めて出力を決める

なぜ「過去」が使えるのか?
フリップフロップ(FF) が状態を記憶しているから

イメージ:

  • 組合せ回路 = 電卓(押したボタンだけで計算)
  • 順序回路 = 自動販売機(お金を入れた履歴を覚えてる)

有限状態機械(FSM)

FSMとは:
→ 「今の状態」と「今の入力」から、「次の状態」と「出力」を決める回路

構成要素:

  • 状態:FFが記憶する値(例:お金が入ったかどうか)
  • 入力:外部からの信号(例:コイン投入)
  • 出力:外部に出す信号(例:商品を出す)

Moore型 vs Mealy型(超重要!!)

Moore型(ムーア)

特徴:

  • 出力が状態のみで決まる
  • 入力は出力に直接影響しない

タイミング:

  • 入力を与えても、出力は次のクロックエッジまで待つ
  • → 「出力が1クロック遅れる」

状態図の書き方:

  • 状態の中に出力を書く(例:S0: 0, S1: 1)
  • 矢印の上に入力のみを書く

例:自動販売機

  • 「お金が入っている状態」→ 商品選択ボタンが光る
  • 入力(コイン投入)→ 状態が変わる → 出力(ボタンが光る)

Mealy型(ミーリー)

特徴:

  • 出力が状態と入力の両方で決まる
  • 入力が変わると即座に出力も変わる

タイミング:

  • 入力が変わったと同時に出力が変わる
  • → 「即座に反応」
  • ただし、遷移中に**一瞬誤った出力(False Output)**が出ることがある

状態図の書き方:

  • 矢印の上に**「入力/出力」を書く**(例:0/0, 1/1)

例:エレベーター

  • ボタンを押した瞬間にドアが開き始める
  • 状態が変わるのを待たずに即反応

比較表

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

覚え方

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

状態表と状態図

状態表

とは:
→ 現在の状態と入力から、次状態と出力を表にまとめたもの

見方:

  • 縦列:現在の状態
  • 横列:入力の値(X=0, X=1)
  • セル:次状態と出力

例(Mealy型):

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

状態図

とは:
→ 状態表を図にまとめたもの。全体の流れが一目でわかる

見方:

  • 円:状態
  • 矢印:状態遷移
  • ラベル:入力/出力(Mealy型)、または入力のみ(Moore型)

状態表 vs 状態図

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

系列検出器(13章)

とは?

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

設計の考え方(101検出器)

状態の意味:

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

状態遷移の考え方:

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

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

オーバラップ:

  • 10101 → 最後の1は次の系列の先頭として使える
  • つまり、2回カウントされる

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

状態表:

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

状態図:

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

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

Mealy型との違い:

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

状態表:

現在状態次状態 (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

最小クロック周期

基本式:

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

意味:

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

重要ポイントまとめ

  1. Moore型 = 状態のみで出力決定、1クロック遅れ
  2. Mealy型 = 状態+入力で出力決定、即座に反応
  3. False Output = Mealy型特有の問題、アクティブエッジ直前で読む
  4. 系列検出器 = パターンを検出する回路、Mealy型は状態数が少ない
  5. 最小クロック周期 = tp + tc + tsu