第二週內容主要從這幾個電路開始
- 半加法器
- 全法器
- 加法器
- 增量器
半加法器只把兩個bit相加,輸出sum, carry, 全加法器則是除了兩個bit之外,多一個carry,可以視為前一位相加的進位。接著由半加法器與全加法器就能組合出加法器,例如8bit加法器 or 16bit加法器,在n bit加法器的實作裡面,我們會忽略n+1的溢位。增量器則如同名稱的意思,就是增加1。
有了加法器,我們就能來實現ALU了,這邊介紹的ALU是課程設計的版本,實際上ALU可能有更多控制位,或是更少不一定。
可以看到這是一個16位的ALU,有六個控制位,這六個控制位是照順序去做處理的,由於每個控制位有兩個選擇,總共就有64種功能。另外輸出還有zr,代表輸出是否為0,以及ng代表輸出是否為負。
從加法器到ALU可以發現每個功能都是基於上一個實作的結果,難度基本上都不高。值得注意的是,在設計電路時,我們可以讓一個電路的輸出變成很多個電路的輸入,但禁止讓很多個電路的輸出變成一個輸入,這其實也很好理解,畢竟如果很多個輸出變成一個輸入就會搞混輸入是1 or 0了。