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

2022-02-11 19:17:42 字數 3079 閱讀 9470

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

waitingforfriday有一篇詳細的教程,講解了如何自己動手,製作一台四位計算機。從中可以看到,二進位制、數理邏輯、電子學怎樣融合在一起,構成了現代計算機的基礎。

一、什麼是二進位制?

首先,從最簡單的講起。

計算機內部採用二進位制,每乙個數字只有兩種可能"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個電晶體。雖然當代處理器包含的電晶體數以億計,但是本質上都是上面這樣簡單電路的累加。

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

你是否想過,計算機為什麼會加減乘除?或者更直接一點,計算機的原理到底是什麼?waitingforfriday有一篇詳細的教程,講解了如何自己動手,製作一台四位計算機。從中可以看到,二進位制 數理邏輯 電子學怎樣融合在一起,構成了現代計算機的基礎。一 什麼是二進位制?首先,從最簡單的講起。計算機內部採...

跳表的原理及其實現

作用 目的 跳表作為一種資料結構通常用於取代平衡樹。起因平衡樹可以用於表示抽象的資料型別如字典和有序鍊錶,它通過樹旋轉 tree rotation 操作強制使樹結構保持平衡來保證節點搜尋的效率。在資料為隨機插入的情況下,平衡樹效能表現良好 但資料為順序插入或者需要刪除節點的情況下,平衡樹的效能就會有...

計算機組成原理(四)

數值型資料表示法 基 每一數字上允許使用的計數符號個數 權 每位對應1個表示在該數碼中的位置的值 例如 二進位制每一位非0即1,基數為2.帶符號數的表示 原碼 0,1表示符號位,0正1負。0有兩種形式,0.反碼 正數反碼 正數原碼 負數反碼 原碼符號位不變,其餘各位按位取反 0也有兩種形式 補碼 正...