天天看點

四位計算機的原理及其實作

你是否想過,計算機為什麼會加減乘除?或者更直接一點,計算機的原理到底是什麼?

一、什麼是二進制?

首先,從最簡單的講起。

計算機内部采用二進制,每一個數位隻有兩種可能"0"和"1",運算規則是"逢二進一"。舉例來說,有兩個位a和b,它們相加的結果隻可能有四種。

四位計算機的原理及其實作

這張表就叫做"真值表"(truth table),其中的sum表示"和位",carry表示"進位"。如果a和b都是0,和就是0,是以"和位"和"進位"都是0;如果a和b有一個為1,另一個為0,和就是1,不需要進位;如果a和b都是1,和就是10,是以"和位"為0,"進位"為1。

二、邏輯門(logic gate)

布爾運算(boolean operation)的規則,可以套用在二進制加法上。布爾運算有三個基本運算符:and,or,not,又稱"與門"、"或門"、"非門",合稱"邏輯門"。它們的運算規則是:

  and:如果( a=1 and b=1 ),則輸出結果為1。   or:如果( a=1 or b=1 ),則輸出結果為1。   not:如果( a=1 ),則輸出結果為0。

兩個輸入(a和b)都為1,and(與門)就輸出1;隻要有任意一個輸入(a或b)為1,or(或門)就輸出1;not(非門)的作用,則是輸出一個輸入值的相反值。它們的圖形表示如下:

四位計算機的原理及其實作

三、真值表的邏輯門表示

現在把"真值表"的運算規則,改寫為邏輯門的形式。

先看sum(和位),我們需要的是這樣一種邏輯:當兩個輸入不相同時,輸出為1,是以運算符應該是or;當兩個輸入相同時,輸出為0,這可以用兩組and和not的組合實作。最後的邏輯組合圖如下:

四位計算機的原理及其實作

再看carry(進位)。它比較簡單,兩個輸入a和b都為1就輸出1,否則就輸出0,是以用一個and運算符就行了。

四位計算機的原理及其實作

現在把sum和carry組合起來,就能得到整張真值表了。這被稱為"半加器"(half-adder),因為它隻考慮了單獨兩個位的相加,沒有考慮可能還存在低位進上來的位。

四位計算機的原理及其實作

四、擴充的真值表和全加器

如果把低位進上來的位,當做第三個輸入(input),也就是說,除了兩個輸入值a和b以外,還存在一個輸入(input)的carry,那麼問題就變成了如何在三個輸入的情況下,得到輸出(output)的sum(和位)和carry(進位)。

這時,真值表被擴充成下面的形式:

四位計算機的原理及其實作

如果你了解了半加器的設計思路,就不難把它擴充到新的真值表,這就是"全加器"(full-adder)了。

四位計算機的原理及其實作

五、全加器的串聯

多個全加器串聯起來,就能進行二進制的多位運算了。

先把全加器簡寫成方塊形式,注明三個輸入(a、b、cin)和兩個輸出(s和cout)。

四位計算機的原理及其實作

然後,将四個全加器串聯起來,就得到了四位加法器的邏輯圖。

四位計算機的原理及其實作

六、邏輯門的半導體實作

下一步,就是用半導體做出邏輯門的電路。

先看not。半導體的基極(base)作為輸入,集電極(collector)作為輸出,發射極(emitter)接地。當輸入為1(高電平),電流流向發射極,是以輸出為0;當輸入為0(低電平),電流從集電極流出,是以輸出為1。

四位計算機的原理及其實作

接着是and。這需要兩個半導體,隻有當兩個基極的輸入都為1(高電平),電流才會流向輸出端,得到1。

四位計算機的原理及其實作

最後是or。這也需要兩個半導體,隻要兩個基極中有一個為1(高電平),電流就會流向輸出端,得到1。

四位計算機的原理及其實作

七、全加器的電路

将三種邏輯門的半導體實作,代入全加器的設計圖,就可以畫出電路圖了。

四位計算機的原理及其實作

按照電路圖,用半導體和電路闆組裝出全加器的內建電路。

四位計算機的原理及其實作

左邊的三根黃線,分别代表三個輸入a、b、cin;右邊的兩根綠線,分别代表輸出s和cout。

八、制作計算機

将四塊全加器的電路串聯起來,就是一台貨真價實的四位半導體計算機了,可以計算0000~1111之間的加法。

四位計算機的原理及其實作

電路闆的下方有兩組各四個開關,标注着"a"和"b",代表兩個輸入數。從上圖可以看到,a組開關是"上下上上",代表1011(11);b組開關是"上下下下",代表1000(8)。它們的相加結果用五個led燈表示,上圖中是"亮暗暗亮亮",代表10011(19),正是1011與1000的和。

九、結論

雖然這個四位計算機非常簡陋,但是從中不難體會到現代計算機的原理。

完成上面的四位加法,需要用到88個半導體。雖然當代處理器包含的半導體數以億計,但是本質上都是上面這樣簡單電路的累加。