數位電子入門:什麼是數位電子中的狀態機?
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 往往就是最直觀、容易驗證且容易維護的設計方法之一。
持續學習
使用麵包板搭建簡單電路
如果您剛開始接觸電子電路,搭建一個簡單電路就是很好的入門方式。麵包板是最容易上手的工具之一。這是一種小巧、可重複使用的板子,讓您無需焊接即可連接電子元件。這表示您可以嘗試不同的想法、修正錯誤並逐步學習,而不必進行永久性的改動。 本指南將逐步帶您在麵包板上搭建一個基本電路。完成後,您不僅會擁有一個可以運作的電路,也能更清楚地了解電子元件如何相互配合。 1. 什麼是麵包板? 麵包板是一種塑膠板,板面設有以網格排列的孔位。孔位透過內部的金屬導電片相互連接,讓電訊號能夠傳導。麵包板的主要優點,是無需進行永久性佈線,就能快速連接或拆下元件。 麵包板主要分為兩個區域: 接線區(Terminal Strips):位於麵包板中央,用於插接大多數電子元件。 電源排(Power Rails):位於麵包板兩側,用於分配電源。 2. 所需材料 開始之前,請先準備以下材料: 麵包板:用於搭建電路的工作平台。 跳線:用於連接各個元件。 電阻(例如 220 Ω):用於限制電流。 LED(發光二極體):本次電路的主要輸出元件。 電池或電源(例如附連接扣的 9 V 電池):用於供應電力。 基本工具:非必要,但準備一把鑷子,有助於操......
高功率 LED PCB 的熱管理技術
談到高功率設計與 LED PCB 設計,原文將金屬芯印刷電路板(MCPCB)形容為能在高熱條件下維持效能的「唯一可靠選擇」。電子元件相當敏感,發光二極體尤其如此。如果熱量無法迅速從 PCB 傳遞至周圍環境,就可能發生過熱與效能下降。若過多熱量集中在同一位置,甚至可能造成電路板燒損。 不過,MCPCB 只是讓 PCB 散熱的一種方式。如果問題也涉及元件本身,就需要搭配其他可靠、可實作的技術,讓電子系統維持適當溫度。因此,本文將著重介紹高功率 LED 的熱管理方法。 傳統白熾燈泡的大部分熱量以輻射方式釋放;相較之下,LED 的熱量直接產生於半導體接面。為了讓 LED 持續維持正常的工作表現,必須將接面產生的熱量傳導出去,再進行散熱。如果溫度超過必要的限制,元件可能出現明顯色偏與亮度下降。電氣條件與熱條件之間的平衡,也會影響 LED 的可靠度;原文在此另提及「optical perforation design」。 譯註:開頭的「唯一可靠選擇」與後文列出的陶瓷、複合材料等方案並不一致;「optical perforation design」的含義也未在原稿中說明,此處保留原詞,不推定其所指的光學設計項目......
為什麼電路圖對每位電子工程師都很重要?
在電子工程中,電路圖不只是由線條與符號組成的圖面,更是工程師的視覺語言。電路圖呈現了如何將概念轉化為能夠運作的系統。無論是設計放大器、電源供應器,還是嵌入式控制器,工程師都需要藉助電路圖進行分析與設計。 以 LF351 運算放大器為核心的電路,就是一個簡單而有效的音訊放大設計範例。透過這個電路,我們可以了解工程師如何利用原理圖想像電流的流動、在設計過程中進行批判性思考、有效查閱資料表,以及將較小的子電路整合成更大的系統。 透過電路圖理解工程師的思考 在工程設計中,電路圖就像一張呈現邏輯與創新的路線圖。正如建築師依照藍圖興建建築物,工程師也透過原理圖描述並建立電子系統。圖中的電阻、電容、電晶體、儀表、積體電路與其他元件,都以各自的符號表示。 工程師可以辨認出,這個 LF351 運算放大器電路是一個音訊放大器。它接收來自音源的微弱音訊訊號,透過運算放大器與電晶體進行放大,再驅動揚聲器。 原理圖並不呈現電路的實體佈局,而是表達電壓與電流之間的關係,以及訊號如何進入、如何放大與如何輸出。這種符號化的表達方式十分重要,因為工程師可以在實際製作電路之前,先對電路的行為做出相當準確的預測。 了解 LF351 放......
如何閱讀電路原理圖
電路原理圖是電子工程的語言。它將複雜的電路拆解成圖面,呈現元件之間的連接方式,以及它們如何互相配合來完成特定功能。您可以把原理圖視為電子系統的設計藍圖,了解各個元件如何組成能夠運作的電路。無論是製作、除錯,還是修改電子專案,首先需要掌握的技能,就是讀懂這些原理圖。 了解原理圖的用途 原理圖(Schematic)呈現的是電子元件之間的電氣連接,而不是它們的實際擺放位置。每一種元件,例如電阻、電容、二極體與電晶體,都有對應的符號。透過標示哪些元件串聯、哪些元件並聯,原理圖能協助我們理解電路功能,並進行故障排除。 原理圖優先考慮的是清楚的表達與連接關係,而不是元件的實體排列。它的目的是說明各部分如何共同構成完整的電子系統。上圖是一個收音機接收電路,包含天線線圈(L₁)、調諧電容(C₁)、二極體、兩顆電晶體(Q₁ 與 Q₂)、電阻與變壓器(T₁)。這些元件互相連接,形成可以運作的電子系統。 常見元件符號一覽 首先,需要了解原理圖中使用的符號。每個符號都代表一種元件及其功能。 上圖整理了 JLCPCB 網站介紹的常見電氣符號。 符號/代號 名稱 元件或電路角色 用途 L1 線圈 天線線圈 接收射頻(RF)訊......
數位電子入門:什麼是數位電子中的狀態機?
有人說,自然界中存在的訊號本質上大多是 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。......
Breadboard vs Protoboard 完整指南:麵包板與洞洞板差異、用途、優缺點與選擇
剛開始接觸電子電路時,我一直很好奇:要怎麼使用不同的電子元件來讓電路正常運作,同時又不必把元件永久焊死,這樣之後還能把它們拆下來,用在其他電路中。 當時教授給我的建議是先使用 Breadboard(麵包板);如果希望連接方式更加固定,再使用 Protoboard。 幾乎每一位電子初學者都會遇到這個經典問題: 「我應該先用 Breadboard,還是 Protoboard?」 其實兩者都沒有絕對的好壞,真正的選擇取決於電路本身的需求。 Breadboard 在 Radio Frequency 或較高頻率下,可能因為內部接點、較長 Jumper Wire 以及寄生電容與寄生電感而引入額外雜訊;改用焊接式 Protoboard,可以在某些情況下降低這些問題。 另一方面,Protoboard 通常需要焊接,而 Breadboard 則是一種接近 Plug-and-Play 的免焊接原型工具。 兩者都能讓您在正式製作 Printed Circuit Board(PCB) 之前先建立與驗證電路,但它們適合的使用階段並不完全相同。 本文將介紹: 什麼是 Breadboard 什麼是 Protoboard Bre......