Home
Explore Uedu
Student Console
Register as Member/Login
(2) In future presentations of the research findings, in addition to the course project website and public presentations, your real name and personal information will not appear in this research report. If you are interested in the research results, we can provide you with an executive summary after the study is completed.
問卷中心
Teacher Console
Course Setup
Support & Messages
Uptime Data

UeduGPTs

--

Jupyters

0

Local AI

--

CISOSE26 本地 AI UG26
臺北 AQI 17 · 臺中 AQI 41 · 臺南 AQI 29 · 高雄 AQI 39

AI Reply Desktop Notifications

Show a desktop notification when the AI TA finishes replying

Chat Message Notifications

Notify me when classmates post messages in the forum

Sound notification

Play an alert sound whenever there is a new notification

序向邏輯

序向邏輯:會記憶狀態的電路

從一顆正反器到計數器與狀態機,看電路如何學會「記住過去」。

會記憶的電路

到目前為止,我們看過的邏輯閘與組合邏輯都有一個共同點:輸出只取決於「此刻」的輸入。輸入一變,輸出立刻跟著變,電路本身不記得任何事。但真實世界的數位系統需要「記憶」——計算機要記住上一步的結果,紅綠燈要知道現在是第幾個狀態,遊戲機要記得你的分數。

能夠記住過去、保存狀態的電路,就叫做序向邏輯(Sequential Logic)。它的輸出不只看現在的輸入,還看「電路目前處於什麼狀態」。一句話總結兩者的差別:

組合邏輯:輸出 = f(現在的輸入)。 序向邏輯:輸出 = f(現在的輸入,目前的狀態)。

序向邏輯概念示意圖

最小的記憶單元:正反器

讓電路「記得住」的祕訣是回授——把輸出繞回去當作輸入。最基本的記憶元件是正反器(Flip-Flop),它能穩定地保存一個位元(0 或 1)。

最常見的是 D 型正反器。它有一個資料輸入 $D$、一個時脈輸入 $\text{CLK}$,以及輸出 $Q$。它的行為非常單純:

在時脈的上升邊緣(從 0 變 1 的那一瞬間),把 $D$ 的值「拍照」存進 $Q$;其餘時間 $Q$ 維持不變。

我們用一個下標表示時間步:$Q_{n+1}$ 代表「下一個時脈邊緣之後」的輸出。D 型正反器的特性方程式簡潔到不行:

$$ Q_{n+1} = D $$

這就像快門:只有按下快門(時脈邊緣)的那一刻才會記錄畫面,平常你怎麼晃動鏡頭都沒關係。這種「只在邊緣動作」的設計,讓整個系統可以靠同一個時脈訊號同步前進,是現代同步數位電路的基石。

多個位元排排站:暫存器

一個正反器存 1 個位元,那存 8 個位元呢?把 8 個 D 型正反器並排,共用同一條時脈線,就得到一個 8 位元暫存器(Register)。CPU 裡的暫存器、記憶體的快取,骨子裡都是成群的正反器。

如果讓正反器「手牽手」——前一個的輸出接到後一個的輸入——資料就會在每個時脈邊緣往前移動一格,這叫移位暫存器(Shift Register),常用於串列/並列資料轉換,例如把一條線傳來的位元一個一個接住,湊滿 8 個再一次輸出。

會數數的電路:計數器

把正反器串起來再加一點回授,就能做出計數器(Counter):每來一個時脈脈衝,輸出的二進位數字就加一。

來看一個帶數字的小範例。假設我們有一個 4 位元二進位計數器,輸出 $Q_3Q_2Q_1Q_0$ 從 $0000$ 開始,每個時脈邊緣加一。

  • 第 1 個脈衝後:$0001$(十進位 1)
  • 第 2 個脈衝後:$0010$(十進位 2)
  • 第 3 個脈衝後:$0011$(十進位 3)
  • ……依此類推。

4 個位元能表示的最大值是多少?最高可數到

$$ 2^{4} - 1 = 16 - 1 = 15 $$

也就是 $1111$。再加一就「進位溢位」回到 $0000$,所以這個計數器的循環長度是 $2^4 = 16$ 個狀態(稱為「模 16 計數器」)。

如果輸入時脈頻率是 $f_{\text{in}} = 16\ \text{kHz}$,那麼最高位元 $Q_3$ 每數滿 16 次才翻轉一次,它的輸出頻率就是

$$ f_{Q_3} = \frac{f_{\text{in}}}{2^{4}} = \frac{16\,000}{16} = 1\,000\ \text{Hz} = 1\ \text{kHz} $$

這正說明了計數器的另一個身分:除頻器(Frequency Divider)。每多一級正反器,頻率就被除以 2,這在時脈產生與數位時鐘裡無所不在。

狀態機:把這一切組織起來

當記憶單元(正反器)配上組合邏輯(決定「下一個狀態」與「輸出」),就構成了數位系統的萬用模型——有限狀態機(Finite State Machine,FSM)。電梯控制、自動販賣機、交通號誌、通訊協定,全部都能用「目前在哪個狀態 → 看輸入 → 跳到哪個狀態」來描述。序向邏輯,正是讓電路「有記憶、能依序動作」的根本原因。

深入探討(研究所視角)

從理論計算的角度看,序向邏輯實現的是有限狀態機這個計算模型。FSM 又分兩種:輸出只與目前狀態有關的 Moore 機,輸出為 $\lambda(s)$;以及輸出同時取決於狀態與輸入的 Mealy 機,輸出為 $\lambda(s, x)$。兩者在表達能力上等價,可互相轉換,但 Mealy 機通常用較少狀態、反應更快,Moore 機輸出則較不易出現毛刺(glitch)。FSM 的能力上界正對應 Chomsky 階層中的正規語言(regular language),這也是它無法獨力辨識需要無限記憶的語言(如平衡括號)的根本原因——要做到那種事,得加上外部記憶體成為下推自動機或圖靈機。

在實作層面,狀態指派(state assignment)是一個非平凡的最佳化問題:如何把抽象狀態映射到二進位編碼,會直接影響所需正反器數目與下一狀態組合邏輯的複雜度。常見策略包括最小位元的二進位編碼、抗競賽冒險的格雷碼,以及一狀態一正反器、面積換速度的 one-hot 編碼。經典的化簡理論則有 Huffman–Mealy 狀態最小化,透過尋找等價狀態(對任意輸入序列產生相同輸出)合併狀態表。

序向電路真正的硬骨頭在於時序(timing)。正反器要正確擷取資料,輸入必須在時脈邊緣前後維持穩定,這定義了建立時間 $t_{su}$ 與保持時間 $t_h$。若在此窗口內輸入跳變,正反器可能進入亞穩態(metastability),輸出長時間懸在 0 與 1 之間的不定電位——這在跨時脈域(CDC)的非同步介面特別致命,工程上以同步器與平均無故障時間(MTBF)模型來量化風險。整個系統的最高時脈頻率則受最長路徑限制:

$$ T_{\text{clk}} \ge t_{cq} + t_{\text{comb,max}} + t_{su} $$

其中 $t_{cq}$ 是時脈到輸出延遲、$t_{\text{comb,max}}$ 是兩級正反器間組合邏輯的最大延遲。這條不等式是靜態時序分析(STA)與數位 IC 後端設計的核心,也把抽象的狀態機理論,牢牢釘回了物理世界的電晶體延遲之上。

AI 共讀助教正在陪你讀:序向邏輯:會記憶狀態的電路
嗨!我是這篇文章的共讀助教,只根據〈序向邏輯:會記憶狀態的電路〉的內容回答。可以問我「解釋某段」「舉個例子」「出題考我」,或反白文中段落後點下方「解釋選取段落」。