【底層原理】四位計算機的原理及其實現

你是否想過,計算機爲何會加減乘除?或者更直接一點,計算機的原理究竟是什麼?設計

Waitingforfriday有一篇詳細的教程,講解了如何本身動手,製做一臺四位計算機。從中能夠看到,二進制、數理邏輯、電子學怎樣融合在一塊兒,構成了現代計算機的基礎。3d

 

什麼是二進制blog

首先,從最簡單的講起。教程

計算機內部採用二進制,每個數位只有兩種可能"0"和"1",運算規則是"逢二進一"。舉例來講,有兩個位A和B,它們相加的結果只可能有四種。ci

 

這張表就叫作"真值表"(truth table),其中的sum表示"和位",carry表示"進位"。若是A和B都是0,和就是0,所以"和位"和"進位"都是0;若是A和B有一個爲1,另外一個爲0,和就是1,不須要進位;若是A和B都是1,和就是10,所以"和位"爲0,"進位"爲1。input

 

邏輯門it

布爾運算(Boolean operation)的規則,能夠套用在二進制加法上。布爾運算有三個基本運算符:AND,OR,NOT,又稱"與門"、"或門"、"非門",合稱"邏輯門"。它們的運算規則是:兩個輸入(A和B)都爲1,AND(與門)就輸出1;只要有任意一個輸入(A或B)爲1,OR(或門)就輸出1;NOT(非門)的做用,則是輸出一個輸入值的相反值。它們的圖形表示以下:io

 

 

真值表的邏輯門表示table

如今把"真值表"的運算規則,改寫爲邏輯門的形式:先看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個晶體管。雖然當代處理器包含的晶體管數以億計,可是本質上都是上面這樣簡單電路的累加。

相關文章
相關標籤/搜索