數位電路----加法器的實現
閘電路
常見的閘電路有:與門,或門,非門,異或門,與非門,或非門。
今天,我們就來說說這些閘電路是如何實現的,並用它來實現一個加法器。
非門(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位全加器,在我的垃圾電腦上是無法畫出來的。。所以我截了別人的圖。上面都分析了八位加法器的實現,相信這個二位就不用說了。請看偷來的圖。。。
在此宣告一點:以上圖片中你可以看到很多地方用了電阻。之所以這樣子,因為這個網站電路連線不能交叉,所以只能用電阻把它隔開。