先回顧一下那些常見的邏輯操作:
1猜揪、AND(與)運(yùn)算:
只有輸入都為1時(shí)結(jié)果才為1
AND | 0 | 1 |
---|---|---|
0 | 0 | 0 |
1 | 0 | 1 |
電器符號(hào):
2趟薄、OR(或)運(yùn)算:
有一個(gè)輸入為1時(shí)結(jié)果就為1
OR | 0 | 1 |
---|---|---|
0 | 0 | 1 |
1 | 1 | 1 |
電器符號(hào):
3启绰、NOR(或非)運(yùn)算:
對(duì)或操作結(jié)果取反
NOR | 0 | 1 |
---|---|---|
0 | 1 | 0 |
1 | 0 | 0 |
電器符號(hào):
4荷并、NAND(與非):
對(duì)與操作結(jié)果取反
NOR | 0 | 1 |
---|---|---|
0 | 1 | 1 |
1 | 1 | 0 |
電器符號(hào):
利用這些非常簡(jiǎn)單的門電路我們就可以實(shí)現(xiàn)CPU中最關(guān)鍵單元加法器赏枚。
二绕娘、一位二進(jìn)制的加法
先來(lái)看一下只有一位的二進(jìn)制數(shù)的加法是如何實(shí)現(xiàn)脓规。一位的加法結(jié)果如下表所示:
+ | 0 | 1 |
---|---|---|
0 | 00 | 01 |
1 | 01 | 11 |
我們把結(jié)果分為個(gè)位和十位兩個(gè)部分來(lái)看一下。先單獨(dú)看一下十位的結(jié)果:
+ | 0 | 1 |
---|---|---|
0 | 0 | 0 |
1 | 0 | 1 |
這個(gè)看著這么眼熟险领,這個(gè)不就是與運(yùn)算嗎侨舆,十位的計(jì)算如此簡(jiǎn)單只需要一個(gè)與運(yùn)算:
搞定了十位我們?cè)賮?lái)看一下個(gè)位,先看一下個(gè)位的運(yùn)算結(jié)果:
+ | 0 | 1 |
---|---|---|
0 | 0 | 1 |
1 | 1 | 0 |
我們除去右下角看其他部分绢陌,和或運(yùn)算結(jié)果是完全一致的挨下。再單獨(dú)看一下右下角,輸入都為1時(shí)輸出為0這不就是與非的操作結(jié)果嗎脐湾。那我們將輸入同時(shí)給到或門和與非門看下他們的輸出:
再看一下這個(gè)輸出臭笆,將或門和與非門的輸出看為輸入將我們想要的結(jié)果看為輸出,其正好符合與運(yùn)算秤掌,所以我們只要將輸出再合并到與門的輸入愁铺,就完成了個(gè)位的運(yùn)算:
這個(gè)組合就是異或門,簡(jiǎn)寫XOR闻鉴,當(dāng)且僅當(dāng)兩個(gè)輸入不一致時(shí)輸出1茵乱。符號(hào)為:
現(xiàn)在個(gè)位和十位(近位)的計(jì)算都實(shí)現(xiàn)了,我們把這兩個(gè)結(jié)合在一起就實(shí)現(xiàn)了一位的二進(jìn)制加法:
這組合稱為半加法器孟岛,但每次都畫這么多也不方便所以單獨(dú)設(shè)定一個(gè)符號(hào):
三瓶竭、帶進(jìn)位的加法:
對(duì)于兩位以上二進(jìn)制加法,例如11+11蚀苛,是需要將進(jìn)位也加上的在验,但半加器只能計(jì)算一位的加法,它的輸入也并沒(méi)有上一位的進(jìn)位堵未。所以要實(shí)現(xiàn)多位的加法需要先實(shí)現(xiàn)進(jìn)位相加腋舌。
先來(lái)看一下帶進(jìn)位的加和輸出是如何得到的,處理方式和我們平時(shí)計(jì)算是一樣的::
- 現(xiàn)在有輸入A渗蟹,B和進(jìn)位輸入C0
- 對(duì)輸入A和B計(jì)算得到加和輸出S1和近位輸出C1块饺。
- 將上面得到的加和S1和進(jìn)位輸入C0相加赞辩,就得到加和S2和近位輸出C2,那么S2就是加和輸出授艰。
和我們小學(xué)時(shí)學(xué)的計(jì)算一毛一樣
再來(lái)看一下進(jìn)位輸出如何計(jì)算的:
我們知道辨嗽,對(duì)于A、B和C0三個(gè)輸入最大就是三個(gè)都為1和為11的情況淮腾,所以最多也就產(chǎn)生一個(gè)為1的進(jìn)位糟需。那現(xiàn)在就很明了,這進(jìn)位要么在計(jì)算A加B是產(chǎn)生(A和B都是1)要么在加進(jìn)位是產(chǎn)生(A和B其中只有一個(gè)為1谷朝,進(jìn)位輸入為1)洲押,所以只要將兩次加和的進(jìn)位輸出做一次或運(yùn)算,就取得了進(jìn)位輸出圆凰。
最終電路圖如下:
這組合稱為全加器杈帐,但個(gè)符號(hào)還是有點(diǎn)復(fù)雜了,所以有個(gè)特定符合:
四专钉、多位的加法
前面已經(jīng)實(shí)現(xiàn)了進(jìn)位相加挑童,那么多位加法就非常簡(jiǎn)單了。和我們平時(shí)計(jì)算一樣跃须,將上一位的進(jìn)位給到下一位站叼,第一位可看做進(jìn)位為0。多位加法實(shí)現(xiàn)也是如此回怜,將上一位的進(jìn)位輸出作為下一位的進(jìn)位輸入大年,第一位進(jìn)位輸入0。如下圖:
還是一樣的這個(gè)圖畫起來(lái)太復(fù)雜了玉雾,給個(gè)簡(jiǎn)單的:
五、超前進(jìn)位加法器:
上面實(shí)現(xiàn)的加法器轻要,運(yùn)算時(shí)除第一位外其他位運(yùn)算都依賴上一位的進(jìn)位輸出复旬,只有等上一位計(jì)算完成后給出進(jìn)位值,該位的計(jì)算才是正確的冲泥,所以這又被稱為波進(jìn)位加法器驹碍。
其實(shí)對(duì)于上一位的進(jìn)位輸出是可以根據(jù)輸入自己去計(jì)算得到的,即某一位An需要的進(jìn)位可以利用前面幾位A1凡恍、A2志秃、...、An-1計(jì)算得到不必等待嚼酝,雖然這樣使計(jì)算更多了但實(shí)際的速度確是提升的浮还。這樣加法的實(shí)現(xiàn)稱為超前進(jìn)位加法。