你們打游戲的時(shí)候 有沒(méi)有想過(guò)搞一個(gè)“大新聞” 6月是個(gè)畢業(yè)季,中高考的同學(xué)歷經(jīng)磨難浴火重生,大學(xué)的同學(xué)們也為各種論文焦頭爛額。為了寫(xiě)一篇正兒八經(jīng),蘊(yùn)含無(wú)限道理的學(xué)術(shù)論文,超模君曾經(jīng)熬掉了多少寶貝的頭發(fā)…… 為了緩解論文壓力的折磨,超模君去下了一款叫《我的世界》(Minecraft)的高自由沙盒游戲。但作為游戲菜雞,造物工程量巨大,耗時(shí)遙遙無(wú)期。想在游戲中造出一個(gè)現(xiàn)實(shí)事物的想法就這樣“流產(chǎn)”了…… 然而,一位來(lái)自復(fù)旦大學(xué)的MC紅石電路玩家季文瀚卻能將游戲與課程論文相結(jié)合,耗時(shí)一年多完成一項(xiàng)造物工程——電腦。 也就意味著,他必須得將計(jì)算機(jī)中的所有硬件做出來(lái)才可以完成一臺(tái)完整可使用的電腦。 擁有力量的少年 當(dāng)然,想要在游戲中造出這樣一臺(tái)計(jì)算機(jī),在考試中折磨大家的編譯原理和微機(jī)原理,還有數(shù)字電路及匯編語(yǔ)言通通都不能少。 順便讓我們來(lái)看看從邏輯門(mén)到計(jì)算機(jī),都要經(jīng)歷些什么。
要造成一個(gè)完整的計(jì)算機(jī),真的要經(jīng)歷很多工程,也是十分復(fù)雜的。在游戲中,這些工程的復(fù)雜性可是會(huì)被放大多倍的。超模君真心表示十分佩服ORZ 另外,從上面我們可以看到,邏輯門(mén)似乎是組成計(jì)算機(jī)最基礎(chǔ),最簡(jiǎn)單又不可或缺的部分。 邏輯門(mén)的實(shí)現(xiàn) 邏輯門(mén)是在集成電路上的基本組件,它又稱(chēng)“數(shù)學(xué)邏輯電路基本單元”,可以組合使用實(shí)現(xiàn)更為復(fù)雜的邏輯運(yùn)算?!盎颉遍T(mén)和“非”門(mén)在數(shù)字電路中最為常見(jiàn)。 實(shí)際上Minecraft游戲制作者也只設(shè)計(jì)了這兩種能直接實(shí)現(xiàn)的邏輯門(mén),但理論上說(shuō)“或”門(mén)和“非”可以實(shí)現(xiàn)一切邏輯。季文瀚表示:“通過(guò)在空間上對(duì)或門(mén)和非門(mén)的組合排布就能實(shí)現(xiàn)更加復(fù)雜的邏輯門(mén)?!?/p> 他先用紅石火把被充能方塊熄滅的特性,也就是當(dāng)一個(gè)方塊被充能時(shí),其前后左右和上方的紅石火把會(huì)滅掉(變成低電平輸出),做出“非”門(mén)。 “或門(mén)就更簡(jiǎn)單了”季文瀚如是說(shuō)。只需要任意一個(gè)輸入端輸入信號(hào),輸出端就一定輸出信號(hào)。 做好了基本邏輯門(mén)就到了做復(fù)雜邏輯門(mén)的時(shí)間,與非門(mén)和異或門(mén)就可以上場(chǎng)了。 左邊是與非門(mén) 右邊是RS觸發(fā)器 做與非門(mén)時(shí)他將輸入端(紫色)連著兩個(gè)紅石火把,做成非門(mén),而火把中間通著導(dǎo)線(xiàn)的是或門(mén)。而常見(jiàn)的與非門(mén)應(yīng)用也就是觸發(fā)器了,低電平有效,紫色輸入,橙色輸出,RSQQ非就隨便怎么分配了。所以用與非門(mén)構(gòu)造的RS觸發(fā)器和現(xiàn)實(shí)中基本一致。 異或門(mén)是數(shù)字電路里非常重要的一類(lèi)復(fù)雜邏輯門(mén),是構(gòu)造全加器以及一切具有ALU運(yùn)算器結(jié)構(gòu)單元的基礎(chǔ)。比較簡(jiǎn)單的異或門(mén)設(shè)計(jì)就如下圖左右兩種。 左右是兩種不同的異或門(mén) 除了紅石導(dǎo)線(xiàn)外,左邊一種用到了活塞,火把和繼電器,則右邊只用了火把。這兩種都是國(guó)外玩家設(shè)計(jì)的,是目前設(shè)計(jì)出來(lái)的體積最小的異或門(mén)。一開(kāi)始季文瀚設(shè)計(jì)出的異或門(mén)比這兩種體積還大一些。而基礎(chǔ)邏輯門(mén)的體積對(duì)計(jì)算機(jī)建設(shè)至關(guān)重要,稍微大一點(diǎn)整體結(jié)構(gòu)就將超過(guò)地圖加載范圍。 因此季文瀚表達(dá)了對(duì)國(guó)外玩家的感謝,因?yàn)闆](méi)有國(guó)外高玩在基礎(chǔ)結(jié)構(gòu)上的設(shè)計(jì),他的工程就不可能實(shí)現(xiàn)。 以此上的思維類(lèi)推,利用邏輯門(mén)的組合就可以設(shè)計(jì)適用于各種功能的信號(hào)結(jié)構(gòu),從而可以達(dá)到硬件算法的目的。 算法是硬件設(shè)計(jì)的靈魂 判斷一個(gè)計(jì)算機(jī)有沒(méi)有靈魂就要看看它的算法如何了。游戲中季文瀚設(shè)計(jì)的計(jì)算機(jī)那靈魂肯定是相當(dāng)?shù)淖悖〖訙p法和乘法都可以完成,但大神表示:這些都沒(méi)什么特別的,重點(diǎn)還是后面幾個(gè)。 我們將目光聚集在他設(shè)計(jì)的運(yùn)算平臺(tái)上,在這里他將給我們展示完整的運(yùn)算過(guò)程和結(jié)果。 運(yùn)算平臺(tái)上養(yǎng)著只小豬 舉個(gè)栗子,季文瀚用的是Cordic旋轉(zhuǎn)迭代算法中的旋轉(zhuǎn)坐標(biāo)算法,來(lái)計(jì)算sin(24.8)。 因?yàn)樾枰啻蔚赃\(yùn)算很慢,得花130秒輸出sin值,再過(guò)10秒才能輸出cos值,而輸入角限制在0-83.88度之間。 后臺(tái)正余弦的運(yùn)算過(guò)程 計(jì)算出來(lái)的結(jié)果 既然他設(shè)計(jì)的算法可以完成,那肯定少不了其他必備的硬件。 從算術(shù)芯片到計(jì)算機(jī) 一個(gè)完整的計(jì)算機(jī)絕對(duì)少不了CPU,因此他決定先做一個(gè)CPU,畫(huà)出CPU的構(gòu)架圖。 構(gòu)架圖基本是按照實(shí)際距離做的,在計(jì)算機(jī)上方復(fù)式看到的結(jié)構(gòu)和架構(gòu)圖可以一一對(duì)應(yīng)。 做好CPU后,他就開(kāi)始做剩下的功能結(jié)構(gòu)。例如可以看做是計(jì)算機(jī)最核心部件的全加器。 之前的異或門(mén)可以相當(dāng)于一個(gè)半加器,兩個(gè)半加器可以組成一個(gè)全加器。 但這種基于活塞的全加器不穩(wěn)定,所以季文瀚又做了另一種設(shè)計(jì)較為好的全加器。 最后做這個(gè)顯示器他耗費(fèi)了很長(zhǎng)的時(shí)間,一開(kāi)始的設(shè)計(jì)方案體積可是如今的3倍大。后來(lái)還是突發(fā)奇想才解決了不少技術(shù)問(wèn)題,縮小體積并改為完全的時(shí)序控制。 令人敬佩的玩家 其實(shí)文章中記錄的也只是他工程中的小小小的一部分而已,真要說(shuō)完季文瀚所做的技術(shù)細(xì)節(jié)和內(nèi)容,怕是要寫(xiě)一本200多頁(yè)的書(shū)才可以。這一工程的問(wèn)世,也不禁讓很多計(jì)算機(jī)專(zhuān)業(yè)的學(xué)生聞風(fēng)喪膽,有該專(zhuān)業(yè)表示“我可能學(xué)了個(gè)假的計(jì)算機(jī)專(zhuān)業(yè)”。 盡管這一路上很曲折,也有很多難題需要攻破,進(jìn)度十分緩慢??杉疚腻耘f沒(méi)有棄坑。因此這一“壯舉”在全世界MC紅石電路玩家還是首次 這種堅(jiān)持不懈的精神真是令超模君佩服,做到了我可能這輩子都做不到的事情,想必也是大部分MC玩家連想都沒(méi)敢想的事情…… 玩游戲都想著學(xué)習(xí) |
|
來(lái)自: 東西二王 > 《硬件知識(shí)》