從開關到 CPU · LogicLab

從一隻開關搭到一台 CPU:撥動串聯、並聯的開關和繼電器,發現“與”“或”“非”;看信號沿發光的導線流過邏輯門,透視門裡一隻隻通斷的晶體管;親手接線,只用與非門搭出所有的門,再搭出半加器、全加器,驗證通過後封裝成芯片;把四隻全加器排成豎式,看進位一位一位傳到最高位;最後按下時鐘,看自己搭的加法器在一台 4 位小 CPU 裡一條條執行程序,再拉遠數一數一塊芯片裡有多少晶體管。

學科:信息技術 · 適用學段:國中、高中 · 知識點:邏輯門與真值表、二進制與進位、半加器與全加器、CPU 怎樣執行指令

章節內容

開關會“算”嗎

一隻開關只有兩種狀態:斷開和合上。把斷開記作 0、合上記作 1,燈滅記作 0、燈亮記作 1,一個電路就成了一道“判斷題”。

直接在畫面裡點開關。兩隻開關串聯:都合上燈才亮;並聯:合上任意一隻燈就亮。把四種組合都試一遍,右邊的真值表會一行一行填出來。

再換成繼電器:線圈通電後變成電磁鐵,把另一個迴路的觸點吸開。它是一隻用電來撥動的開關。1937 年,21 歲的香農在碩士論文裡指出:這樣的開關電路,正好能表達邏輯裡的“與”“或”“非”。電路本身的規律見 VoltLab。

邏輯門

把上一課的開關電路裝進一個盒子,只留下輸入和輸出,就是邏輯門。導線上有電壓記作 1(亮),沒有記作 0(暗)。

撥動左邊的輸入開關,看信號沿導線走到門裡,門“想”一下,再把結果送到指示燈。在右側換一種門,把每種門的真值表都試出來:與門 Y = A · B,或門 Y = A + B,非門 Y = A;輸出端帶小圓圈的與非門、或非門是先算再取反;異或門在兩個輸入不同時輸出 1。

點“透視”,看門的內部:沒有任何會動的零件,只有幾隻晶體管——用電壓控制的微型開關。左上角可以在形狀符號和國標符號(&、≥1、1、=1)之間切換。

萬能的與非門

這一課你來接線。板上只有與非門,任務是用它搭出別的門。

接線:按住一個引腳拖到另一個引腳(或者先點一個、再點另一個)。導線要從輸出連到輸入,一個輸出可以分給好幾個輸入,一個輸入只能接一根線。點一根線可以把它拆掉。撥動左邊的開關,隨時看信號怎樣流過你接的電路。

接好後按驗證:每一種輸入都會自動試一遍,和目標真值表逐行比較。全對了就把它封裝成芯片。芯片工廠正是這樣做的:與非門只要四隻晶體管,最省、最快,於是成了搭建一切的“積木”。卡住了可以按“提示一根線”。

只用 0 和 1 數數

一根導線只能表示 0 或 1,叫作一位(bit)。要表示更大的數,就把幾根導線排成一排,像十進制的個位、十位、百位那樣,每一位有自己的位權——只不過這裡是 1、2、4、8,逢二進一。

撥動四隻開關,每隻下面的燈表示這一位是 0 還是 1,右邊的數碼管顯示它對應的十進制數。1011 就是 8 + 0 + 2 + 1 = 11。

再按“加 1”一下一下地數:最低位是 1 時再加 1,它變回 0 並向左進位。從 0111 加 1,進位會一連傳過三位。四位都是 1 之後再加 1,就溢出了。

半加器

兩個一位二進制數相加只有四種情況:0 + 0 = 0,0 + 1 = 1,1 + 0 = 1,1 + 1 = 10。結果要用兩位表示:本位的和 S,與向高位的進位 C。

對照右邊的目標真值表:S 這一列像哪一種門?C 這一列又像哪一種?板上擺著四種門,挑出合適的兩個,把 A、B 接進去,再把輸出接到 S 和 C 兩盞燈上。多餘的門不用管。

驗證通過後把它封裝成一隻半加器芯片。1937 年,貝爾實驗室的斯蒂比茲把幾隻繼電器、兩個手電筒燈泡帶回家,在廚房的餐桌上搭出的,就是這樣一個二進制加法電路。

全加器

列豎式做加法時,每一位其實要加三個數:A 的這一位、B 的這一位,還有低位送來的進位 Cin。能處理這三個輸入的電路叫全加器。

板上有你剛封裝好的兩隻半加器芯片(HA)。先用第一隻把 A 和 B 加起來,再用第二隻把這個結果和 Cin 加起來,第二隻的“和”就是最終的 S。

兩隻半加器各有一個進位輸出,只要其中一個是 1,就該向高位進位。挑一個門把它們合併成 Cout。驗證八種輸入,全對後封裝成全加器芯片(FA)。

四位加法器

四隻全加器排成一行,和豎式一模一樣:上面一排開關是 A,第二排是 B,下面一排燈是和。每隻全加器的進位輸出,接到左邊高一位的進位輸入——橙色的線就是進位。

撥動開關出一道題,看信號一位一位算過去。試試 1111 + 0001:最低位產生的進位要依次穿過四隻全加器,高位的結果要等低位算完才能定下來,所以它叫行波進位加法器。右側的波形圖記下了每個和位是什麼時候穩定的。

右邊還有一隻“減”開關 M:打開後,每個 B 先經過異或門被取反,最低位再多加一個 1。A − B = A + B + 1,減法也交給了同一隻加法器。

從加法器到 CPU

你搭的四位加法器成了這台小 CPU 的運算器。它周圍多了幾樣東西:寄存器 A、B 用來記住數;程序存儲器裡存著一條條指令;程序計數器 PC 記著現在執行到第幾條;控制器看懂指令,決定這一拍把哪些數送進加法器。

每按一下時鐘,它執行一條指令,分四拍:取指令 → 譯碼 → 執行 → PC 加 1。先一步一步執行“3 + 4”,再運行“倒數”和“3 × 4”——它沒有乘法器,乘法是用加法循環做出來的。右側的程序可以改:點操作數旁的 − 和 +,換個數再運行。

最後按“拉遠”,數一數從一隻開關到一塊芯片要多少晶體管。1971 年的 Intel 4004 也是 4 位的,有 2300 隻。機器怎樣用更多的加法和乘法“學習”,見 NeuroLab。

隨堂檢測

回顧八個課題,完成下面的選擇題。

更多實驗

返回首頁