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