1. 程式人生 > >數位電路----加法器的實現

數位電路----加法器的實現

閘電路

常見的閘電路有:與門,或門,非門,異或門,與非門,或非門。
今天,我們就來說說這些閘電路是如何實現的,並用它來實現一個加法器。

非門(NOT)

  • 邏輯符號 & 布林表示式 & 真值表
    這裡寫圖片描述
    請務必記住其邏輯框圖符合,再後面做加法器時我們要用其來表示!!!
  • 實現
    我們先用繼電器實現一下
    這裡寫圖片描述`

這裡寫圖片描述輸入端輸入1時,電磁鐵會把金屬彈簧片吸下來,從而燈泡電路斷開,燈泡不發光,即輸出0
輸入端輸入0時,電磁鐵會把金屬彈簧片維持原來的位置,從而燈泡電路連線,燈泡發光即輸出1
這就實現了一個非門:輸入1,輸出0;輸入0,輸出1.
我們再用電晶體實現一下
這裡寫圖片描述
在分析這個電路之前,我們先看看這個電晶體的線路:

這裡寫圖片描述
在計算機電路中,源極是一個高電壓,發射極接地,基極通常做輸入端,它決定了是否將源極接地:
當基極為高電壓(1)時:電晶體閉合->源極接地->輸出端為低電壓(0)
當基極為低電壓(0)時:電晶體開啟->源極不接地->輸出端為高電壓(1)
經過上面的分析,你應該已經知道電晶體非閘電路實現的原理了吧,那麼對上面那幅圖就不做再多的闡述了。

與門(NOT)

  • 邏輯符號 & 布林表示式 & 真值表
    這裡寫圖片描述
  • 實現
    我們先用繼電器實現一下
    這裡寫圖片描述
    可以看出,只有當兩個開關都閉合時,燈泡才亮,很明顯,這是一個與閘電路。
    兩個繼電器串聯可以組成一個與門

    我們再用電晶體實現一下
    這裡寫圖片描述
    相信這個電路大家都看得懂,不再做過多的闡述

    或門(OR)

  • 邏輯符號 & 布林表示式 & 真值表
    這裡寫圖片描述
  • 實現
    我們先用繼電器實現一下
    這裡寫圖片描述
    可以看出,只有任意一個開關閉合,燈泡就亮,很明顯,這是一個或閘電路。
    兩個繼電器並聯可以組成一個或門

    我們再用電晶體實現一下
    這裡就不畫了,等到後面介紹或非門時,你可以在或非門輸出端加上一個非門,從而組成或門。

與非門(NAND)

  • 邏輯符號 & 布林表示式 & 真值表
    這裡寫圖片描述
  • 實現
    我們先用繼電器實現一下
    這裡寫圖片描述
    我們可以看到:只要有一個開端斷開,則燈泡就亮,這符合與非門:有0則1
    我們再用電晶體實現一下

    這裡寫圖片描述
    V1,V2只要有一個為低電平,那麼源極將不會接地,則輸出端為高電平

或非門(XOR)

  • 邏輯符號 & 布林表示式 & 真值表
    這裡寫圖片描述
  • 實現
    我們先用繼電器實現一下
    這裡寫圖片描述
    我們可以看到:只要有一個開端閉合,則燈泡將不亮,這符合與或門:有1則0
    我們再用電晶體實現一下
    這裡寫圖片描述
    V1,V2有一個微高電平時,源極將接地,輸出端為低電平。

異或門(XOR)

  • 邏輯符號 & 布林表示式 & 真值表
    這裡寫圖片描述
    注意到:異或門的真值表,剛好符合我們二進位制的加法運算,1+1 = 01,0是本位輸出位,1則是進位,後面我們將用異或門來做加法器
  • 實現
    由於異或門的實現需要用到或門和與非門和與門,要想用繼電器來描述則有點難畫,所以我們用邏輯框圖符合來描述異或門:
    這裡寫圖片描述
    我們來看看每一步的真值表:
    這裡寫圖片描述
    顯然,輸入和輸出完全符合我們之前的定義的異或門。下面,我們要用其來做加法器。

    經過上面的分析,我們已經掌握了6種邏輯閘:
    非門:將唯一的輸入值求逆
    與門:屬於都為1時,輸出才為1
    或門:屬於有一個為1時,就為1
    與非門:結果與非門的相反
    或非門:結果與或門的相反
    異或門:兩個輸入皆相同時,就輸出0
    以上幾種閘電路的特徵務必記住,下面我們就要開始真正地做加法器了,讓我們看看計算機內部是如何進行加法運算的

加法器

半加器

所謂半加器,就是計算兩個位數的和併產生進位的電路,不考慮進位。
我們來分析分析,

第一個數 第二個數 本位輸出 進位輸出
0 0 0 0
1 0 1 0
0 1 1 0
1 1 0 1
  • 在本位加輸出中,若兩個輸入數相同則是0,不同則是1,所以我們可以用異或門
    來實現
  • 在進位輸出中,若輸入的兩個數都是1,才輸出1,所以我們可以用與門來實現。
    那麼我們的半加器就做出來了:
    這裡寫圖片描述
    為了簡單,我們也可以採用以下表示:
    這裡寫圖片描述

全加器

在實際中,因為涉及到多位數的運算,所以不得不考慮進位,那麼半加器就不能滿足我們的需求了,所以我們要做一個全加器
所謂全加器,就是對二進位制執行加法運算的電路,考慮進位
我們來分析分析,

第一個數 第二個數 進位到本位的數 本位輸出 進位輸出
0 0 0 0 0
1 0 0 1 0
0 1 0 1 0
0 0 1 1 0
1 1 0 0 1
1 0 1 0 1
0 1 1 0 1
1 1 1 1 1

我們直接給出全加器的電路,請讀者根據真值表來分析
這裡寫圖片描述
這裡寫圖片描述
我們再組合一下,把表達變得更簡單:
這裡寫圖片描述

八位加法器

要實現八位加法器,當然就要八個全加器,只不過第一個全加器的進位輸入值我們設為0就好啦。
這裡寫圖片描述
這就是八位加法器,進位輸入我們設定為0,然後A,B就是我要進行加法運算的8bits的二進位制數啦。
按照這種思路,我們也可以設計出16位,32位的加法器。

circuits

下面我們用circuits線上電路設計和模擬工具實現各種電路。請點選這裡進入circuits.io

任務一:非門實現

在circuits中,並沒有提供“NOT GATE”,我們可以用三極體來實現。
這裡寫圖片描述

INPUT OUTPUT
OFF ON
ON OFF

當然,我們看到這個線上工具提供了XOR GATE,我們也可以用它來實現非門
這裡寫圖片描述

INPUT 1 OUTPUT
OFF 1 ON
ON 1 OFF

三極體知識總結:三極體串聯是與非門,並聯是或非門。

任務二:驗證電路等價

在此實驗中,我們將設計兩個電路:A(B+C),AB+AC,並驗證他們等價
這是A(B+C)
這裡寫圖片描述
這是AB+AC
這裡寫圖片描述
我們列舉所有可能,結果如下

A B C 01 02
0 0 0 0 0
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
1 1 0 1 1
1 0 1 1 1
0 1 1 0 0
1 1 1 1 1

從中我們可以看出,這兩個電路是等價的。

任務三:理解儲存電路

在本實驗中,我們將搭建一個S-R鎖存器,在進行實驗之前,我們先來了解一下S-R鎖存器的知識。
S-R鎖存器是觸發器中的一種。它的功能就是儲存資料,結構如下:
這裡寫圖片描述
它的真值表如下:
這裡寫圖片描述
我們做出一些說明,方便理解該觸發器:

  • 我們規定:S和R端不能同時置為1,這是我們禁止的,所以在使用S-R鎖存器時,千萬別放這種低階錯誤;
  • Q端的輸出即我們想要保留的東西,就是說你想儲存1,那Q端就該輸出1,想儲存0,Q端就該輸出0;
  • S端我們用來置位和復位,置為你可以理解為把Q端輸出置為1,復位你可以理解為把Q端輸出置為0;
  • Q和非Q端的輸出肯定是相反的,這也是我們為什麼把一端稱為Q端,而另一端稱為非Q端的原因;
  • 我們對真值表第三行做一些說明,它的意思是:當S,R端皆為0時,它的輸出將保持不變。也就是說:
    • 如果上次為SR端分別為:10,Q非Q端輸出分別為10,那麼將S重新置為0時,R端維持0不變,那麼Q非Q端輸出仍然為10;
    • 如果上次為SR端分別為:01,Q非Q端輸出分別為01,那麼將R重新置為0時,S端維持0不變,那麼Q非Q端輸出仍然為01;

以上四點,其中的原因請讀者結合電路具體分析,相信你學了閘電路後,可以將它理解透徹。
下面我們就開始做實驗啦!!!
這裡寫圖片描述

任務四:設計加法電路

這網頁有毒,巨耗記憶體。。。。全加器我實在畫不下去了,每次畫到一半必定卡死。。。所以我建議老師在找不到替代網站,還是手畫此題吧。。。
一位全加器,我畫了一半,剩下一半用筆補了一下。。原理上面已經分析了。。。相信大家能夠理解。。。
這裡寫圖片描述

至於2位全加器,在我的垃圾電腦上是無法畫出來的。。所以我截了別人的圖。上面都分析了八位加法器的實現,相信這個二位就不用說了。請看偷來的圖。。。
這裡寫圖片描述
在此宣告一點:以上圖片中你可以看到很多地方用了電阻。之所以這樣子,因為這個網站電路連線不能交叉,所以只能用電阻把它隔開。