前面轉載了一篇國外牛人手工CPU的文章( )有朋友蠢蠢欲動準備從三極管這個層面開始動手組裝。
鑑於簡化電路的需要 ,整理了一套用三極管、二極管、電阻組成的邏輯門電路,可實現2輸入或3輸入的AND,OR,NAND,NOR,EXOR操作。
為了便於記憶,我們把上面的每個電路用一個符號來代替
有了這套東西作為基礎,我們可以進行下一步更深入的探討,可以從做一個加法器入手。
一個簡單的二進制加法如下:
我們現在需要把它的結果分為兩位,一個是加法位,一個是進位位。分別如下
進位位的邏輯跟邏輯與門一樣,這就很好辦了。
加法位跟或門邏輯較相似,除了右下角的0邏輯不一樣。也跟與非門較相似,除了左上角的0的邏輯不一樣。我們把它們組合下
現在的輸入輸出情況如下:
從結果中看出,可以把或門和與非門輸出進行與門邏輯組合,就得到了我們的加法位的正確輸出結果
這種組合就叫做異或門。
現在我們加法的加法位和進位位都可以用電路來表示了,現在組合成的加法器如下:
這種組合就滿足了我們對一位二進制的加法的需求,下面我們用下面這種簡單的表達方式表達上面的加法器,比較簡單明瞭:
為什麼叫半加器呢,因為目前位置它只能計算一位的加法,而大多數情況下,我們需要計算多位的二進制加法,它現在還不成熟。
多位加法中,除了第一位,後面每一位的加法都可能跟前面1位的的進1數進行相加。因此除了計算它本身的加法外,還要跟進位進行相加。我們現在把邏輯組合如下
現在我們可以得出一個完整的二進制加法中任意一位的邏輯了。既然它成熟了,我們可以把它叫做全加器了。如下:
一個全加器就完成了。
每個全加器的進位輸出都是都是後面一位的進位輸入,一個串一個,第一個加法的進位輸入為0.最後一個進位輸出,判斷有沒溢出。
以8位為單位,我們也可以做16位加法,只要兩個8位相連就可以了。
有了加法器,後面就可以考慮考慮設計一下寄存器了。
閱讀更多 金陽銘電子 的文章