加深加廣學習成果報告 - 四位元加法電路


一、動機

暑假時,我有買一本計算機概論解解讀書的悶,當成課外讀書把整本看過一遍,但我覺得沒有親自實作一次,感覺只是知識而非內化在心裡的東西。因此產生了


經過上個專案基本電子電路課程之後,對電子有了基本的認識,接下來,便是繼續完成製作一臺電腦的目標。電腦的演變是從加法器開始,也就是說,電腦發明的根本原因是計算。因此,學習製作一個可計算數學的電路,可以向我的目標邁向一大步。


二、方法

自己完成一個四位元加法電路。


三、實作歷程

尋找資料

因為紙本計算機概論電子電路只有大略的知識,所以我另外去Neso Academy學習一些電路知識。

▲圖一:Neso Academy(資料來源:自行截圖)


在學習期間,為了知道其知識在電腦結構中在什麼位置,我另外看了一些與電腦相關的影片,Crash Course: Computer Science 與 Sebastian Lague 的 How Computers Work。

▲圖二:Crash Course: Computer Science(資料來源:自行截圖)


▲圖三:How Computers Work 播放集(資料來源:自行截圖)


前者是計算機概論的簡化版,提供的資訊量跟書比廣度少,深度淺,但利用動畫使知識容易被理解;後者廣度三者最淺,但在ALU部分的知識最深,動畫也最細緻。


在尋找資料的過程,我了解到找資料時,專精於單一個資料來源,不及多個資料來源。單一個資料來源提供的知識可能只是指體的一部份,並且每個資料來源陳述的方式都不太一樣,描述相同的東西,能吸收到的東西都不相同。唯有多個資料來源,才能將育研究的知識點看透。


繪製電路圖與焊接電路


在焊接電路前,我先以Tinkercad的電路模擬,確認電路是否可以運作。

▲圖四:利用Tinkercad電路進行電路模擬(資料來源:自行拍攝)


模擬成功後,接著繪製電路圖,方便焊接。此電路有些複雜,不好以手繪製,我找到EasyEDA來完成電路繪製。

▲圖五:EasyEDA網頁畫面(資料來源:自行截圖)


有了電路圖後,就可以親手用萬用電路板焊電路了。我本來預計將圖中直向的電路用萬用電路板金屬面用裸單心線連接,而橫向的線路以上方跳線連接。因為直向皆為會分支的主幹,橫向只是從一個點連接到另一個點。

▲圖六:四位元加法電路電路圖(資料來源:自行截圖)


然而,中間發生了一個小插曲,我將IC的位置焊錯,而IC難以解焊,導致我必須拋棄之前規劃的電路,根據新的IC位置,重新規劃。


經過仔細思考,我將所有的線路分成三個部分,分別為普通線路(紅),從普通線路有分岔的(黃),與無分岔的(綠)。黃色的線路焊接時依據跳線長短將相同訊號源的線路區分出來,以裸單新線連接,綠色的線路則可以用元件面跳線連接。

▲圖七:將電路分類(資料來源:自行拍攝)


焊接約十幾個小時,終於把實體完成。焊接縮時攝影請參閱此網址:Making My First Computer! #3 [4 Bit Adder with Perfboard 四位元萬用電路板加法器] - YouTube

▲圖八、九、十:焊接過程與完成品(資料來源:自行拍攝)






四、登錄書

以下為此課程的登錄書

▲圖十一:評量登錄表(資料來源:自行拍攝)


五、心得與未來展望

此作品是我電子電路的第二件作品。這學期之前,我都沒有焊製電路的經驗,為了能完成這件作品,我在睡前查詢了許多資料,涵蓋技術層面與知識層面,在這之中,感覺對電腦的認識又近了些。我拿了這件作品給電腦老師看,他只說他從未實作,接著開始抱怨大學的種種不悅。當然,等老師停止完抱怨,我跟老師講述我的壯舉:製作一臺電腦,他說電腦牽扯到Timing和一堆奇怪的東西,當然,最後他總結說,我應該去學Apple II 如何操作,會收益良多。我回去查了一下,發現他是用6502的積體電路去執行電路處理的,而6502大大影響了電腦的發展。學歷史是用來鑑往知來,相信當我了解6502是如何運作的,我將會離製作人生第一臺電腦的夢想更接近。

▲圖十二:Apple ][ 教學影片與Apple ][模擬器(資料來源:自行截圖)


六、四位元加法電路成果

▲圖十三:完整品附加說明(資料來源:自行拍攝)



此電路有2*4個輸入,五個輸出,電源的電壓為4.5V,每橫排四個輸入表示一個數字,輸出方面,最左邊的燈泡為CARRY,其餘四個表示一個數字。藉由調整指撥開關,可調整輸入的兩個數字,並且兩個數字的相加會同步從輸出端顯示出來。數字的表示法以二進位表示。例如上圖,上排指撥開關,依序為1011,以二的補數轉成十進位為-5,下排指撥開關,依序為1011,也是-5,CARRY可以不用管,輸出為0110,也就是6。至於(-5)+(-5)運算結果是6,是因為輸出端只能表示-8~+7的數字,而發生了溢位。 


留言

這個網誌中的熱門文章

Zerojudge 基礎題庫a004 文文的求婚 (Python)

紙蜻蜓的受風面積與紙蜻蜓落地時間的關係 #1 [實驗歷程與Python Matplotlib]

Zerojudge 基礎題庫a013 羅馬數字 (Python)