Home
探索 Uedu
學生控制台
註冊會員/登入
研究知情同意中心
教師控制台
課程設定
支援與訊息
Uptime 數據

UeduGPTs

--

Jupyters

2

UG26 CISOSE26
臺北 AQI 51 · 臺中 AQI 32 · 臺南 AQI 29 · 高雄 AQI 27

AI 回覆桌面通知

AI 助教回覆完成時顯示桌面通知

聊天訊息通知

同學在討論區發送訊息時通知

聲音通知

每當有新通知時播放提示音

序向邏輯

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

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

會記憶的電路

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

能夠記住過去、保存狀態的電路,就叫做序向邏輯(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 共讀助教正在陪你讀:序向邏輯:會記憶狀態的電路
嗨!我是這篇文章的共讀助教,只根據〈序向邏輯:會記憶狀態的電路〉的內容回答。可以問我「解釋某段」「舉個例子」「出題考我」,或反白文中段落後點下方「解釋選取段落」。