數位電子入門:什麼是數位電子中的狀態機?
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:
-
States(狀態)
表示系統目前可能處於的不同條件或操作模式。
-
Transitions(狀態轉移)
定義系統在什麼條件下,從目前 State 移動到另一個 State。
-
Inputs(輸入)
影響 State Transition 或 Output 的外部 Signal。
-
Outputs(輸出)
系統在特定 State 或特定 Input Condition 下產生的 Action/Signal。
-
State Register(狀態暫存器)
通常由 Flip-Flop 組成,用來保存目前 State。
-
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。
範例:假設 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。
範例: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 改變。
4. 建立 State Transition Table
State Transition Table(狀態轉移表)是 State Diagram 的表格化表示。
通常會列出:
- Current State
- Input
- Next State
- Output
透過列出不同 Current State 與 Input Combination,可以清楚確認每一種情況下應該進入哪一個 Next State。
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 在 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 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 是 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 往往就是最直觀、容易驗證且容易維護的設計方法之一。
持續學習
PCB 佈局設計中的熱管理策略
在電子產品世界中,熱力是無聲的破壞者。它會悄悄滲入電路,降低效能、縮短元件壽命;在極端情況下,更會令原本正常運作的 PCB 變成毫無生氣、過熱失效的電路板。PCB 基材及銅導體的物理特性,是決定電路板在高負荷下表現的主要因素。熱特性、剛性、分散性、相對介電常數等,均會影響電路板的訊號完整性、熱管理及機械性能。在熱傳導方面,選擇合適的基材,可以減少對主動冷卻措施的依賴,協助控制電路板的溫升。PCB 佈局設計中的熱管理並非可有可無,而是必需。 透過選用合適的基材及元件佈局,你可以制定有效的熱管理策略,在不一定採用高導熱基材的情況下,維持較低的電路板溫度。幾項簡單的 PCB 佈局選擇,便能大幅影響整塊電路板的溫升及整體熱管理。本文探討 PCB 散熱所面對的挑戰,並提供經驗證的策略,讓設計保持低溫及可靠。如欲進一步了解 PCB,請參閱我們有關 PCB 製造流程的詳細文章。 PCB 熱管理通常結合設計方法及散熱器等輔助元件,以處理多餘熱量。 仔細選擇及分佈元件,並測試其承受熱衝擊的能力,是改善 PCB 熱管理的方法。 高功率密度電子產品會在短時間內產生大量熱量,因此特別難以進行熱管理。 了解熱問題 電子產品......
掌握戴維寧定理:實用電路分析
在之前的文章中,我們已經看過不同電路的原理圖。當需要求解電路時,通常會使用一些預先定義的定理。電路在較高層次上會變得非常複雜,不能只靠觀察來求解,因此工程師發展出各種定理來處理複雜系統。其中最常用的是戴維寧定理。它可以將任何複雜線性網絡,等效為一個電壓源(稱為戴維寧電壓 Vth)與一個電阻(稱為戴維寧電阻 Rth)串聯的電路。當你需要分析電路在不同負載條件下的 電路 行為時,這種等效電路十分有用。本文將示範如何使用戴維寧定理求解網絡。 戴維寧定理的內容 任何由電壓源、電流源及電阻組成的線性雙端網絡,都可以替換為一個等效電路;該電路由單一電壓源(Vth)與單一 電阻 (Rth)串聯而成。 Vth(戴維寧電壓):端子 A 與 B 之間的開路電壓。 Rth(戴維寧電阻):關閉所有獨立電源後,從端子看到的電阻(電壓源短路,電流源開路)。如果電路中有受控源,則需要使用測試源方法。 使用戴維寧定理分析電路的步驟 1. 斷開負載電阻(RL)。 2. 計算或量度開路電壓,這就是戴維寧電壓(Vth)。移除負載後,在負載端計算該電壓。 3. 將所有電流源開路,並將所有電壓源短路。 4. 計算或量度開路電阻,這就是戴維......
創建高品質電路示意圖:專業且簡化的工作流程
掌握繪製高品質電路圖的技巧對 PCB 玩家與工程師至關重要。電路圖如同藍圖,以視覺化方式呈現電子元件及其連接關係。在本篇專家指南中,JLCPCB 將帶你一步步建立精準且專業的電路圖,提供所需的知識與工具,助你在 PCB 設計領域更上一層樓。 第 1 章:認識電路圖 什麼是電路圖? 電路圖 是一種圖形化表示法,利用標準化符號與連線來展示電子元件之間的連接關係。 電路圖的用途: 溝通:電路圖是通用語言,讓工程師、設計師與技術人員快速理解電路結構與功能。 視覺化:提供電路的視覺呈現,使複雜系統一目了然。 分析與除錯:透過清晰的連接與元件概覽,方便進行電路分析、故障診斷與維修。 文件:作為未來參考、修改或複製設計時的重要文件。 PCB 佈局基礎:PCB 佈局:在設計階段指引 PCB 上元件的擺放與走線。 延伸閱讀:https://jlcpcb.com/blog/pcb-design-rules-and-guidelines-a-complete-best-practices-guide 第 2 章:高品質電路圖的必備要素 標準化符號與慣例: 電路圖使用符號代表各種電子元件。本節將概述常用符號,包括被動元件......
轉接板在電子領域中的重要性
前言 什麼是轉接板(Breakout Board)? 您是否曾想過,如何簡化電子專案中的複雜電路?轉接板或許就是解決方案。轉接板是一種重要的工具,能將多接腳元件的各個接腳引出至一組連接端子,讓元件更容易使用。透過這種方式,您可以更輕鬆地將感測器、晶片及其他元件連接至麵包板或開發板,方便進行原型製作與實驗。 轉接板如何運作? 轉接板如何讓複雜電路變得容易使用?它的運作方式,是將元件的每個接腳轉換為更方便連接的形式。通常會把各個接腳引出至標準 0.1 吋間距的排針,讓您能使用跳線,輕鬆連接至麵包板或微控制器。其目的在於讓您方便使用每個接腳的功能,而無須進行繁複的焊接或配線。 不同類型的轉接板 您知道轉接板有多種類型,分別針對不同元件或功能設計嗎?以下是幾種常見類型: 感測器轉接板:專為加速度計、陀螺儀及溫度感測器等元件設計。 通訊轉接板:支援 I2C、SPI 與 UART 等通訊協定。 電源轉接板:提供穩壓電源,通常包含穩壓器與轉換器。 微控制器轉接板:讓您輕鬆連接微控制器的所有接腳,簡化開發工作。 轉接板在電子專案中的重要性 為什麼轉接板在電子專案中如此重要?它能簡化將複雜元件整合至電路的過程,讓您......
運算放大器如何運作:四種基本運算放大器電路詳解
如本系列第一篇文章所述,運算放大器(op-amp)不只是用來放大訊號;它們之所以稱為「運算放大器」,是有原因的。在類比電腦發展初期,運算放大器確實被用來執行加法、減法、積分及微分等數學運算。時至今日,我們已不再用運算放大器解微積分習題(幸好如此),但相同原理仍然支援音訊混音器、濾波器及訊號處理電路。數碼電路在工作頻率等方面存在一些限制,而類比系統具備即時及高速的優勢;如今數碼電子技術已接近極限,人們也開始重新關注類比運算。在本文中,我們將探討四種經典的運算放大器應用: ● 加法器(求和放大器) ● 減法器(差動放大器) ● 積分器 ● 微分器 1. 為甚麼運算放大器擅長數學運算? 關鍵在於負回授。運算放大器配合電阻(有時也配合電容)使用時,可將輸入訊號轉換成可預測的輸出表示式。由於我們能完全控制各個變數,因此也能完全控制輸出。 ● 加法器/減法器:利用加權電阻網絡,便可將兩個訊號相加或相減。 ● 積分器:在回授路徑中加入電容,可使輸出與輸入的積分值成正比。 ● 微分器:在輸入端加入電容,可使輸出與輸入的微分值成正比。 然而,在數碼世界中,相關任務會因涉及大量位元而變得複雜,而且需要使用 ADC 及......
以子板解鎖現代電子產品的靈活性與可擴展性
重點摘要 子板可在無須重新設計主 PCB 的情況下,提升靈活性與可擴展性。 可輕鬆升級記憶體、無線通訊、感測器及 I/O 模組。 大幅縮短開發時間、降低成本,並減少維護工作。 正確選擇連接器及做好機械設計,是確保可靠性的關鍵。 非常適合 Raspberry Pi HAT 與 Arduino 擴充板等模組化產品。 你是否曾經拆開筆記型電腦後蓋,插入一條 RAM,然後看著它在一分鐘後以更大的記憶體容量啟動?這種小型升級之所以可行,靠的是子板(daughter board)。子板是一塊可插入較大主機板的電路板,能立即擴展系統功能。你不需要安裝新電腦,甚至不必更換整個模組;只要加裝一個模組即可。現代設備中,有大量產品都建立在這個概念之上。 從 Raspberry Pi HAT、Arduino 擴充板,到 SODIMM 記憶體、Wi-Fi 卡及工業 I/O 模組,子板讓產品系列可以在無須完整重新設計的情況下擴展,從而加快開發速度並降低維修成本。本文將探討子板的定義、它與主機板的差異、實際優勢,以及如何建立可靠的多板系統。了解子板及其能力,有助於在打造感測器模組或可堆疊運算平台時,讓設計更靈活,也更容易擴展。......