邏輯電路模擬器

放置邏輯閘與 D 型正反器並連接導線,切換輸入開關,就能立即看到訊號如何傳遞。可載入半加器、全加器、SR 鎖存器、2 位元計數器等範例,沒有時脈的電路還會自動產生真值表。

邏輯電路模擬器

從「元件」加入零件,拖曳即可移動。先點選輸出接腳、再點選輸入接腳即可接線;點選輸入開關可在 0 與 1 之間切換。選取元件或導線後按「刪除選取項目」即可刪除。

真值表

基本邏輯閘與真值表

AND 只有在所有輸入皆為 1 時輸出 1,OR 只要有任一輸入為 1 就輸出 1,NOT 則將 0 與 1 反相。NAND 與 NOR 是將 AND 與 OR 的輸出反相,XOR 在兩個輸入不同時輸出 1,XNOR 則在相同時輸出 1。放置 2 個輸入與 1 個輸出,中間接上一個邏輯閘,就會自動產生真值表。n 個輸入共有 2ⁿ 種組合,2 個輸入為 4 列,6 個輸入為 64 列。換上不同的邏輯閘比較真值表,就能看出 NAND 正好是 AND 的反相、XNOR 正好是 XOR 的反相。在「2 對 1 多工器」範例中,選擇訊號 C 為 0 時輸入 A 出現在輸出 X,為 1 時則是輸入 B,可以確認用邏輯閘的組合就能切換資料的路徑。

半加器、全加器與進位的原理

將 1 位元的 A 與 B 相加,和為 A XOR B,進位為 A AND B。1 + 1 在二進位為 10,因此和為 0、進位為 1。請載入「半加器」範例(X 為和,Y 為進位),切換 A 與 B 確認看看。連同來自低位的進位 Cin 一起相加的是全加器,可由 2 個半加器與 1 個 OR 閘構成,和為 A⊕B⊕Cin,進位為 AB + Cin(A⊕B)。從「全加器」範例(C 為來自低位的進位 Cin,X 為和,Y 為進位)的真值表可以看出,3 個輸入中 1 的個數為奇數時和為 1,2 個以上為 1 時進位為 1,也能確認 1 + 1 + 1 = 11(二進位)。將半加器的進位接到全加器的 Cin,就成為 2 位元加法器;由於只有 4 個輸入,可以用 16 列的真值表確認所有結果。

NAND 與 NOR 是通用閘

將 NAND 的兩個輸入接到同一個訊號就成為 NOT,在 NAND 後面接 NOT 則成為 AND。根據笛摩根定理,將輸入分別反相後再送入 NAND 就成為 OR,因此只用 NAND 就能構成任何邏輯電路。「只用 NAND 做出 XOR」範例由 4 個 NAND 組成:第 1 個的輸出 N1 = NAND(A, B) 同時送入 NAND(A, N1) 與 NAND(B, N1),最後再用一個 NAND 將這兩個輸出合併。請確認其真值表與 XOR 相同。NOR 也同樣是通用閘,若以相同接法、把所有 NAND 換成 NOR,結果會變成 XNOR。在 CMOS 中,2 輸入 NAND 只需 4 個電晶體,比 AND 還少,因此實際的邏輯電路也常以 NAND 與 NOR 為基礎。

組合電路與循序電路,以及用 NOR 構成的 SR 鎖存器

加法器與多工器是輸出只由目前輸入決定的組合電路。若有將輸出送回輸入的回授,就成為能記住過去輸入的循序電路。「SR 鎖存器(NOR)」範例(A 為 S,B 為 R,X 為 Q,Y 為其反相)將 2 個 NOR 的輸出分別送回對方 NOR 的輸入。S = 1 時 Q 變為 1,R = 1 時 Q 變為 0,兩者都回到 0 時則保持先前的狀態。S = R = 1 時,Q 與原本應為其反相的另一個輸出都變成 0,破壞了兩個輸出互為反相的前提,因此稱為禁止輸入。本模擬器一次只能切換一個開關,結果由最後仍維持 1 的輸入決定;但在實際電路中若兩者同時回到 0,最後會穩定在哪一邊無法確定,可能發生振盪或進入亞穩態。

D 型正反器與 2 位元計數器

D 型正反器只在時脈從 0 變為 1 的上升緣那一瞬間擷取 D 的值並送到 Q,其他時候即使 D 改變也會保持 Q。請將輸入開關與時脈接到 D 型正反器,暫停時脈後切換 D,確認 Q 不會改變,直到按下「前進一個時脈」才會擷取。本工具的 D 型正反器只有 Q 輸出,因此「2 位元計數器」範例用 NOT 閘將 Q 反相後送回 D。如此一來 Q 在每個上升緣都會反相,Q 的頻率為時脈的 1/2。高位元的正反器接上同一個時脈,D 則輸入 Q1 XOR Q0。高位元只在低位元為 1 時反相,因此以時脈 1/4 的頻率切換,輸出(Y, X)依 00→01→10→11→00 的順序計數。所有正反器都由同一個時脈驅動,所以是同步計數器。

練習邏輯設計題目

在1位元半加器中,輸出和(S)與進位(C)的邏輯,下列哪一項正確?

  1. A和為AND,進位為OR
  2. B和為NOR,進位為NAND
  3. C和為XOR,進位為AND
查看答案與解析

正確答案:C. 和為XOR,進位為AND

將1位元的A、B相加,和為A XOR B,進位為A AND B。例如1+1在二進位為10,因此和為0、進位為1。連同來自低位的進位一起相加的全加器,可由兩個半加器與一個OR閘構成,和為 A⊕B⊕Cin,進位為 AB + Cin(A⊕B)。CPU的運算單元(ALU)即以這種全加器為基礎,並結合高速的進位方式製成。

將2輸入NAND閘的兩個輸入接在一起成為1個輸入時,其作用為何?

  1. AAND
  2. BNOT(反相器)
  3. CXOR
查看答案與解析

正確答案:B. NOT(反相器)

當兩個輸入都輸入相同的值A時,輸出為 NOT(A AND A) = NOT A,作用如同反相器。只要能用NAND做出NOT,AND = NAND之後接NOT,OR = 將輸入各自反相後再接NAND(笛摩根),因此僅用NAND即可構成任意邏輯電路。NOR也是同樣的通用閘。不過在實際電路中,將輸入並接會使輸入電容增加,因此使用專用的反相器較有效率。

每次輸入時脈輸出就反相的T型正反器1個,其輸出頻率是時脈頻率的幾倍?

  1. A2倍
  2. B1/2倍
  3. C1/4倍
查看答案與解析

正確答案:B. 1/2倍

T型正反器(T = 1)在每個時脈邊緣輸出就反相,因此2個時脈為1個週期,頻率為時脈的1/2。輸出的工作週期可精確為50%也是優點。串聯起來則成為1/4、1/8…的除頻器或漣波計數器。PLL的回授電路中也使用除頻器,例如從100 MHz的參考頻率改變除頻比,即可合成數GHz的頻率。

常見問題

可以免費使用嗎?需要安裝嗎?

完全免費,不需註冊也不需安裝。只要有瀏覽器即可使用,電腦和手機都能操作;在手機上以點選代替滑鼠點擊。

做好的電路可以儲存或分享給別人嗎?

電路會儲存在您使用的瀏覽器中,下次開啟時可以接著使用。按下「複製分享連結」會產生包含電路內容的網址,開啟該網址的人也能操作相同的電路,適合用於課堂作業或說明電路。

為什麼會顯示「訊號無法穩定」?

因為電路中有輸出反相後回到自身輸入的迴路,值會在 0 與 1 之間不斷切換而無法確定。例如將 NOT 閘的輸出接回自己的輸入,就會 1 變 0、0 變 1 地一直變化。在實際電路中,將奇數個反相器接成環狀,會以由閘延遲決定的週期振盪,稱為環形振盪器。像 SR 鎖存器這樣繞迴路一圈後反相會互相抵消的電路,則會穩定在某個狀態。

真值表最多支援幾個輸入?

輸入為 1~6 個(最多 2⁶ = 64 列)、至少有 1 個輸出,且不使用時脈、正反器及迴路(如 SR 鎖存器的回授)的電路才會顯示真值表。這些電路的輸出也取決於過去的狀態,因此無法只用輸入的表格來表示。

會模擬邏輯閘的傳遞延遲嗎?

不會。每當輸入改變時,本工具只會反覆計算邏輯值直到訊號不再變化,因此不會表現閘延遲,也不會表現設定時間、保持時間等時序。所以因各路徑延遲差異而瞬間出現的突波也不會出現。若要確認時序,請使用加入延遲資訊的閘級模擬或靜態時序分析(STA)。

相關術語

真值表 組合電路 循序電路 正反器 全加器 多工器 笛摩根定理 突波(Glitch) 亞穩態

相關計算工具

半導體、電子電路與資訊計算工具 →