CPU怎么識(shí)別我們寫的代碼?
為了深入理解這個(gè)問題,大神耗時(shí)整整半年,“逐點(diǎn)”焊接,自制了一個(gè)CPU,杰作如下圖所示。
據(jù)大神介紹,他主要采用了如下3個(gè)原材料:
用一堆開關(guān)做成一個(gè)CPU?
下文介紹下大神自制CPU的過程。
通常來講,CPU的結(jié)構(gòu)可以大致分為運(yùn)算邏輯部件、寄存器部件和控制部件等。
而他最先“下手”的,就是CPU的寄存器部分。
大神設(shè)計(jì)了一個(gè)6位的移位寄存器,樣子如下圖,是不是跟想象中的不一樣?
它的作用不僅能是用來存儲(chǔ),還能在時(shí)鐘信號(hào)的控制下,將數(shù)據(jù)進(jìn)行進(jìn)行逐次右移或左移。
程序計(jì)數(shù)器
大神處理的第二個(gè)結(jié)構(gòu),是程序計(jì)數(shù)器(PC)。
它作用簡單來說,就是記錄程序運(yùn)行的位置。而這也是整個(gè)項(xiàng)目下來最耗時(shí)、最復(fù)雜的部分,花了整整3個(gè)月之久。
程序計(jì)數(shù)器涉及的功能那可就多了。像最基本的就是挨個(gè)字節(jié)讀完指令后,計(jì)數(shù)要自動(dòng)+1;而CPU重啟之后,計(jì)數(shù)便會(huì)清零。
而且在不同的條件之下,還要能實(shí)現(xiàn)直接跳轉(zhuǎn)、調(diào)用函數(shù)、函數(shù)返回等功能。
功夫不負(fù)有心人,在經(jīng)歷3個(gè)月令人頭禿的時(shí)光之后,最復(fù)雜的模塊還是被他搞定了。上電測試也沒有問題。
硬盤(ROM)和內(nèi)存(RAM)是CPU外,比較龐大兩個(gè)部分。大神用上了比較容易操作的HM628512芯片來做ROM和RAM,如下圖分別是HM芯片(上)、RAM(中)和ROM(下):
將ROM和RAM組裝上去,現(xiàn)在CPU的基礎(chǔ)模塊已經(jīng)基本完成了。
指令譯碼器
接下來就是打造指令譯碼器。
它主要是用于把傳到這里的CPU指令,進(jìn)行解析運(yùn)行:
再把做加減乘除的運(yùn)算器(ALU)加上去:
最后還得再焊一個(gè)通用緩存上去,這個(gè)全部由三極管、二極管和電阻焊接而成的CPU就完成了!看到這密密麻麻的元件,工程量的浩大就不用多說。
二進(jìn)制編碼
因?yàn)檫@個(gè)CPU的指令集和架構(gòu)都是自主研發(fā)的,所以沒有適配的編程語言。
那怎么能讓它跑起來呢?
純手寫最原始代碼——二進(jìn)制編程!
之后竟然就開啟了上古編程模式——“扣”程序:
一切準(zhǔn)備工作就緒。接下來,便是見證奇跡的時(shí)刻。
上電測試
最開始,程序的運(yùn)行并不是一帆風(fēng)順。即便大神重啟了幾次,跑馬燈的效果偶爾還是出現(xiàn)問題。于是,大神重新編程,一切修改完畢,重新“扣”程序,啟動(dòng)!這一次,就沒有任何的異常了。
審核編輯:湯梓紅。
-
三極管
+關(guān)注
關(guān)注
142文章
3561瀏覽量
120876 -
二極管
+關(guān)注
關(guān)注
147文章
9408瀏覽量
164381 -
電阻
+關(guān)注
關(guān)注
85文章
5344瀏覽量
170810 -
cpu
+關(guān)注
關(guān)注
68文章
10698瀏覽量
209329
原文標(biāo)題:手工自制CPU
文章出處:【微信號(hào):單片機(jī)與嵌入式,微信公眾號(hào):單片機(jī)與嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論