辛丑牛年(2021),《我的世界》,一高二學(xué)生因爆肝在B站火了。
他從未接觸過數(shù)電,一切從零開始,僅僅是為了搞清計算器的原理。
然后……然后……
就直接在《我的世界》里肝出了個“理論最快”四則計算器:
0.05s完成運算!
這位ID為“史蒂夫的骨灰”的Up主,是從去年10月開始這個項目,由于在上高二,只有周末和放假才有時間推進(jìn)。
瞧瞧,這密密麻麻的零部件,這可都是他“億點億點”純手工搞上去的。
引得網(wǎng)友直呼:熟練地讓人心疼。
也有人回憶起讀過的《編碼》一書中的話——“這么多繼電器組合太大了,現(xiàn)實中做不到”,而后驚呼道:
好家伙,在《我的世界》直接夢想成真了!
甚至連小鵬汽車都來湊熱鬧了:
快進(jìn)到在《我的世界》做出一臺智能汽車【狗頭】
接下來,讓我們共同走進(jìn)這位高中生的爆肝之作。
理論最快四則計算器
先來看看計算器實際運行效果:
視頻里說的gt也就是“游戲刻”(GameTick),指理論上《我的世界》游戲程序更新一次數(shù)據(jù)的時間:0.05s。
這里可以看出,加減乘除四種運算全在1游戲刻之內(nèi)得出結(jié)果!
就是為了實現(xiàn)這個速度,UP主骨灰君才把計算器體積做到這么大、結(jié)構(gòu)這么復(fù)雜。
過去在《我的世界》中用紅石電路做計算器,或多或少都需要一些運算時間。
這是因為游戲中傳輸信號的元件會產(chǎn)生0.1秒的延時。
與整個游戲的運行速度不同,紅石電路是把1秒分成10份,每份稱為1紅石刻,也就是0.1秒。
這樣無論怎么進(jìn)行優(yōu)化,都不能在小于1紅石刻的時間里完成運算。
骨灰君采用另一個思路,用另一個元件活塞來實現(xiàn)電路。
活塞可以在小于1紅石刻的時間內(nèi)完成一次推拉,相當(dāng)于在電路中產(chǎn)生一個脈沖信號。
以這種方式傳遞信號,整個電路的運算時間,理論上限就是1游戲刻=0.05s了。
當(dāng)然,由于CPU性能的限制,在個人電腦上實際運行時間會長一些。
整套計算器運行起來非常吃配置,不加水冷的話CPU直接飆到3位數(shù)溫度。
這么龐大的工程,到底是怎么做出來的?
怎么肝出來的?
說到這個問題,時間還得回溯到1年前。
當(dāng)時骨灰君的想法非常的簡單,就是想用《我的世界》來研究一下計算器的原理。
所以就先設(shè)計了一個加法架構(gòu),一段時間之后,還搞出來了個乘法器。
當(dāng)時的他,其實沒有想過做完整的一個計算器,但后來覺得既然開始了,那就一步步研究吧。
而且將數(shù)電和械電結(jié)合,過程中可以說是困難重重。
但骨灰君認(rèn)為:
想到可能很多人是看到我的工程動態(tài)才留下的,我更應(yīng)該把這個工程做到底。
從動態(tài)區(qū)中不難看出,骨灰君真的就是一步一個腳印,每突破一個困難就會記錄下來。
例如把二進(jìn)制轉(zhuǎn)為BCD碼的模塊就得搭700米長的方塊,甚至超過了游戲的默認(rèn)顯示范圍。
BCD碼是用4位二進(jìn)制表示十進(jìn)制中的0-9,相當(dāng)于不把123當(dāng)成“一百二十三”,而是當(dāng)成“一二三”再分別用二進(jìn)制表示。
再例如由于耗時過長,游戲都更新了,有改動的部分還得重新調(diào)整:
而后更是像在給粉絲們做“工作匯報”一樣:
進(jìn)度:XXX。
于是,就這么一點一滴像打地基一樣,計算器的各個部件就做好了。
到后來,當(dāng)初教他數(shù)電基礎(chǔ)的網(wǎng)友反倒跟不上了。
最后的工作,用骨灰君的話就是“簡單組裝一下”。
(講真,有被凡爾賽到,瞧瞧彈幕的反饋)
乘法模塊:
BCD轉(zhuǎn)binary:
Binary轉(zhuǎn)BCD(整數(shù)):
......
最后是顯示器+總控電路:
大功告成!
網(wǎng)友:5000粉整出50W粉的活
如此浩大的工程,出了bug怎么辦?
還別說,真有網(wǎng)友問了這個問題:
骨灰君也對此作出了回復(fù):
檢查一整天找出4個錯誤方塊……
自但更多的網(wǎng)友還是“膜拜”于骨灰君之肝:
還有集成電路設(shè)計專業(yè)的來招人:
回到這個項目的初衷,其中一個讓骨灰君堅持的理由,就是為了當(dāng)時近5000的粉絲。
而有網(wǎng)友認(rèn)為,Up主的工程,堪稱“50W粉的活”。
不過放眼現(xiàn)在,骨灰君的粉絲量已經(jīng)達(dá)到了1.4W!
恭喜,恭喜!
同時也期待骨灰君下一次的力作,不過要等到高考以后了~
評論