This website requires JavaScript.
優惠券
寄往
部落格

數位電子入門:什麼是數位電子中的狀態機?

最初發布於 Sep 07, 2026, 更新於 Sep 07, 2026

4 分鐘

目錄
  • 什麼是 State Machine?
  • 為什麼 State Machine 在 Digital Electronics 中很重要?
  • State Machine 的主要組成
  • State Machine 的主要類型
  • 如何設計 State Machine?
  • State Machine 在 Electronics 與 PCB Design 中的應用
  • State Machine 的優點與限制
  • Moore 與 Mealy State Machine 的差異
  • 結論

有人說,自然界中存在的訊號本質上大多是 Analog(類比)的,而 Digital(數位)則是人類為了簡化資訊表示、儲存與運算而建立的一種方式。

Digital System(數位系統)廣泛應用於 Signal Processing、Data Storage 與各類控制系統。現代 MCU、FPGA 與其他 Digital IC 主要使用數位邏輯進行運算,而在需要處理真實世界的 Analog Signal 時,則可透過 ADC 與 DAC 在類比與數位訊號之間進行轉換。

本文要介紹的是 State Machine(狀態機)

State Machine 是許多 Digital Control System 的重要基礎。例如 Microcontroller、CPU、FPGA 與 Communication Controller 的控制邏輯中,都可能包含一個或多個 State Machine,用來管理事件順序、Protocol Flow 與系統狀態。

State Machine 的核心概念,是讓系統根據目前的 State(狀態)Input(輸入),決定下一個 State,並產生對應的 Output。

換句話說,它透過一組明確規則,控制系統何時從一個狀態轉換到另一個狀態。

無論您是電子工程學生、Embedded Engineer 或 FPGA Designer,理解 State Machine 都是非常重要的 Digital Design 基礎。

什麼是 State Machine?

State Machine(狀態機)是一種用來描述系統行為的數學與邏輯模型。

在 Digital Electronics 中,當系統只有有限數量的 State 時,通常稱為 Finite State Machine(FSM,有限狀態機)

對一個典型的同步 FSM 而言,在某一個時刻系統會處於其中一個定義好的 State,然後根據:

  • 目前 State
  • External Input
  • Clock Event
  • Transition Condition

決定下一個 State,並產生相應的 Output。

例如,可以把 Traffic Light Controller(交通號誌控制器)想像成一個簡單 State Machine:

  • 具有不同 State:Red、Yellow、Green。
  • 根據 Timer 或 Sensor 等 Input 進行 State Transition。
  • 每個 State 決定目前哪一盞燈亮起。

這種結構化設計方式,可以幫助工程師建立更容易預測、驗證與擴充的 Digital System。

為什麼 State Machine 在 Digital Electronics 中很重要?

State Machine 是 Sequential Logic Design(循序邏輯設計)中的核心概念之一。

與 Combinational Logic 不同:

  • Combinational Logic:Output 主要由目前 Input 決定。
  • Sequential Logic:Output 與下一步行為還會受到目前 State,也就是過去歷史資訊的影響。

State Machine 透過 Flip-Flop、Register 等 Memory Element 儲存目前 State,因此系統能夠「記住」先前發生過的事件。

FSM 之所以重要,是因為:

  • 它們是 Microprocessor、MCU、FPGA 與其他 Digital System 中常見的 Control Logic。
  • UART、I²C、SPI、CAN 等 Communication Protocol Controller 經常利用 FSM 管理 Handshake、Timing 與 Data Transfer。
  • Automation 與 Industrial Electronics 中,可以利用 FSM 建立清楚的 Sequential Controller。

State Machine 的主要組成

一個典型 State Machine 通常包含以下幾個 Building Block:

  1. States(狀態)

    表示系統目前可能處於的不同條件或操作模式。

  2. Transitions(狀態轉移)

    定義系統在什麼條件下,從目前 State 移動到另一個 State。

  3. Inputs(輸入)

    影響 State Transition 或 Output 的外部 Signal。

  4. Outputs(輸出)

    系統在特定 State 或特定 Input Condition 下產生的 Action/Signal。

  5. State Register(狀態暫存器)

    通常由 Flip-Flop 組成,用來保存目前 State。

  6. Next-State Logic(下一狀態邏輯)

    根據 Current State 與 Input 計算下一個 State。

State Machine 的主要類型

Digital Electronics 中常見的 Finite State Machine 可以分成兩大類:

1. Moore State Machine(Moore 型有限狀態機)

Moore State Machine 中,Output 只取決於目前 State。

Input 會影響 Next State,但不直接進入 Output Logic。

可以表示為:

Output = f(Current State)

由於 Output 主要由 Registered State 決定,Moore Machine 通常具有較容易分析、較穩定的 Output Behavior。

Moore State Machine 狀態機示意圖

範例:假設 Elevator Controller 的 Door Control Output 完全由目前 State 決定,例如「停靠並開門」、「移動中」、「關門」等狀態,就可以使用 Moore-Type Architecture 表示。

2. Mealy State Machine(Mealy 型有限狀態機)

Mealy State Machine 中,Output 同時取決於:

  • Current State
  • Current Input

可以表示為:

Output = f(Current State, Input)

因此 Input 發生改變時,Output 可以在不等待 State Transition 的情況下產生反應。

這可能讓 Mealy Machine 使用較少 State 完成某些功能,但 Output Logic 也更需要注意 Input Timing、Combinational Path 與 Glitch。

Mealy State Machine 狀態機示意圖

範例:Serial Data Receiver 的某些 Output,可能同時取決於目前 Receiving State 與即時 Incoming Signal,因此適合使用 Mealy-Type Logic。

如何設計 State Machine?

State Machine 可以從非常簡單的 Sequence Controller,一路延伸到複雜的 Communication Protocol 與 Processor Control Logic。

設計 FSM 時,可以按照以下流程進行。

1. 定義問題與系統功能

首先必須清楚定義:

  • 系統要完成什麼功能?
  • 有哪些操作模式?
  • 每個模式之間如何切換?
  • 有哪些特殊或錯誤狀態?

例如設計 Traffic Light Controller 時,首先要確定 Red、Yellow、Green 的順序、Timing,以及 Sensor 或 Button 如何影響控制流程。

2. 定義 Inputs 與 Outputs

接著列出系統所有 Input 與 Output。

以 Traffic Light Controller 為例:

Input 可能包括:

  • Clock
  • Timer Done
  • Vehicle Sensor
  • Pedestrian Button
  • Reset

Output 可能包括:

  • Red LED
  • Yellow LED
  • Green LED
  • Pedestrian Signal

3. 建立 State Diagram

接下來畫出 State Diagram(狀態圖)

State Diagram 主要用來表示:

  • 有哪些 State
  • State 之間的 Transition
  • 什麼 Input Condition 會觸發 Transition
  • 各 State 或 Transition 對應的 Output

透過 State Diagram,可以非常直觀地理解系統如何隨 Input 與 Current State 改變。

Finite State Machine State Diagram 狀態圖

4. 建立 State Transition Table

State Transition Table(狀態轉移表)是 State Diagram 的表格化表示。

通常會列出:

  • Current State
  • Input
  • Next State
  • Output

透過列出不同 Current State 與 Input Combination,可以清楚確認每一種情況下應該進入哪一個 Next State。

State Transition Table 狀態轉移表示意圖

5. 實作 Digital Logic

完成 State Transition Table 後,就可以進一步實作實際 Digital Logic。

典型同步 FSM 通常包含:

  • State Register:使用 Flip-Flop 儲存 Current State。
  • Next-State Combinational Logic:根據 Current State 與 Input 計算 Next State。
  • Output Logic:依 Moore 或 Mealy Architecture 產生 Output。

在 ASIC/Discrete Logic 中,可以利用 Logic Gate 與 Flip-Flop 實作;在 FPGA 中,則通常使用 Verilog、SystemVerilog 或 VHDL 描述 FSM。

State Machine Digital Logic 實作

State Machine 在 Electronics 與 PCB Design 中的應用

State Machine 廣泛應用於 Digital IC Design、Embedded System 與 PCB System-Level Design。

有些簡單 Control Function 不一定需要完整 Microcontroller,也可以利用 CPLD、FPGA、ASIC 或其他 Digital Logic 實作特定 FSM,以符合 Cost、Latency、Power 或 Size Requirement。

常見應用包括:

  • Microcontroller 與 CPU: Processor Control Unit、Instruction Sequencing、Bus Control 等功能常使用 State Machine。
  • Communication Protocol: UART、I²C、SPI、CAN Bus 等介面控制器可以使用 FSM 管理 Handshake、Frame State、Error Handling 與 Data Transfer。
  • Robotics 與 Automation: 可用於 Sequence Controller、Robot Arm、PLC 與 Industrial Automation。
  • Consumer Electronics: Washing Machine、Microwave Oven、Coffee Machine 與其他家電,可利用 FSM 管理不同 Operation Sequence。

State Machine 的優點與限制

State Machine 的主要優勢,是可以把複雜控制流程拆解成明確 State 與 Transition。

主要優點包括:

  • Behavior 清楚且容易預測
  • Control Logic 結構化
  • 方便 Simulation 與 Debugging
  • 容易建立 Test Case
  • 可以依需求增加更多 State
  • 非常適合 ASIC/FPGA Implementation

不過,FSM 也有一些限制。

  • State Explosion: 如果系統具有大量彼此相關的 Condition 與 Mode,State 數量可能快速增加,導致 Design、Verification 與 Maintenance 變得困難。
  • Moore Output Latency: 因為 Output 依賴 Current State,如果某個事件必須先完成 State Transition 才能反映到 Output,可能相較 Mealy Architecture 多出一個 Clock-Level 的反應延遲。
  • Mealy Glitch Risk: Output 直接受到 Input 影響,因此如果 Input 未同步、存在短暫變化,或 Combinational Path Timing 不一致,就可能產生 Glitch。實際設計時常需要 Synchronization 或 Registered Output。

Moore 與 Mealy State Machine 的差異

Moore 與 Mealy State Machine 差異比較

比較項目 Moore State Machine Mealy State Machine
Output 取決於 Current State Current State + Input
Output 反應 通常隨 State 更新 Input 改變時即可影響 Output
State 數量 某些設計可能需要較多 State 某些功能可以使用較少 State
Output 穩定性 通常較容易控制 需要特別注意 Combinational Glitch
設計複雜度 通常較直觀 Output 與 Input 關係較直接,分析可能較複雜
適合應用 需要明確、穩定 State-Based Output 的控制邏輯 需要快速回應 Input 的 Control/Protocol Logic

結論

State Machine 在數位電子系統中的應用

State Machine 是 Digital Electronics 中非常重要且具有結構化特性的 Control Model。

從簡單的 Vending Machine、Traffic Light Controller,到複雜的 CPU Controller、Communication Protocol 與 FPGA Logic,FSM 都非常常見。

本文介紹了:

  • State Machine 的基本概念
  • State、Input、Output 與 Transition
  • State Register 與 Next-State Logic
  • Moore State Machine
  • Mealy State Machine
  • State Diagram
  • State Transition Table
  • Digital Logic Implementation

對學生而言,理解 Moore 與 Mealy State Machine,可以建立扎實的 Sequential Logic Design 基礎。

對 Electronics、FPGA 與 PCB Engineer 而言,FSM Knowledge 則可以直接應用於 Control Logic、Protocol Interface、Embedded System 與各種 Digital Hardware Design。

當系統行為可以清楚拆分成有限的 State 與 Transition 時,State Machine 往往就是最直觀、容易驗證且容易維護的設計方法之一。

Finite State Machine FSM 數位電路設計

持續學習