你们打游戏的时候
有没有想过搞一个“大新闻”
6月是个毕业季,中高考的同学历经磨难浴火重生,大学的同学们也为各种论文焦头烂额。为了写一篇正儿八经,蕴含无限道理的学术论文,超模君曾经熬掉了多少宝贝的头发……
为了缓解论文压力的折磨,超模君去下了一款叫《我的世界》(Minecraft)的高自由沙盒游戏。但作为游戏菜鸡,造物工程量巨大,耗时遥遥无期。想在游戏中造出一个现实事物的想法就这样“流产”了……
然而,一位来自复旦大学的MC红石电路玩家季文瀚却能将游戏与课程论文相结合,耗时一年多完成一项造物工程——电脑。
也就意味着,他必须得将计算机中的所有硬件做出来才可以完成一台完整可使用的电脑。
拥有力量的少年
当然,想要在游戏中造出这样一台计算机,在考试中折磨大家的编译原理和微机原理,还有数字电路及汇编语言通通都不能少。
顺便让我们来看看从逻辑门到计算机,都要经历些什么。
逻辑门:或门,非门→或非门,与门→与非门,异或门算法硬件:译码器,位数判断器,加法器→乘法器,加法器,位移器→开方算法,16bit除法器,单精度浮点加法,储存器计算机:基本逻辑门→复杂逻辑门→全加器,信号长度转换器,多态选择器,储存单元,译码器单元,求补码单元,位移器单元→可读写储存器,译码器,加法器,位移器,时钟发生器→加减法器,乘法器,除法器,可读写储存器阵列,寄存器,程序计数器→总数,ALU,CU→计算机
要造成一个完整的计算机,真的要经历很多工程,也是十分复杂的。在游戏中,这些工程的复杂性可是会被放大多倍的。超模君真心表示十分佩服ORZ
另外,从上面我们可以看到,逻辑门似乎是组成计算机最基础,最简单又不可或缺的部分。
逻辑门的实现
逻辑门是在集成电路上的基本组件,它又称“数学逻辑电路基本单元”,可以组合使用实现更为复杂的逻辑运算。“或”门和“非”门在数字电路中最为常见。
实际上Minecraft游戏制作者也只设计了这两种能直接实现的逻辑门,但理论上说“或”门和“非”可以实现一切逻辑。季文瀚表示:“通过在空间上对或门和非门的组合排布就能实现更加复杂的逻辑门。”
他先用红石火把被充能方块熄灭的特性,也就是当一个方块被充能时,其前后左右和上方的红石火把会灭掉(变成低电平输出),做出“非”门。
“或门就更简单了”季文瀚如是说。只需要任意一个输入端输入信号,输出端就一定输出信号。
做好了基本逻辑门就到了做复杂逻辑门的时间,与非门和异或门就可以上场了。
左边是与非门 右边是RS触发器
做与非门时他将输入端(紫色)连着两个红石火把,做成非门,而火把中间通着导线的是或门。而常见的与非门应用也就是触发器了,低电平有效,紫色输入,橙色输出,RSQQ非就随便怎么分配了。所以用与非门构造的RS触发器和现实中基本一致。
异或门是数字电路里非常重要的一类复杂逻辑门,是构造全加器以及一切具有ALU运算器结构单元的基础。比较简单的异或门设计就如下图左右两种。
左右是两种不同的异或门
除了红石导线外,左边一种用到了活塞,火把和继电器,则右边只用了火把。这两种都是国外玩家设计的,是目前设计出来的体积最小的异或门。一开始季文瀚设计出的异或门比这两种体积还大一些。而基础逻辑门的体积对计算机建设至关重要,稍微大一点整体结构就将超过地图加载范围。
因此季文瀚表达了对国外玩家的感谢,因为没有国外高玩在基础结构上的设计,他的工程就不可能实现。
以此上的思维类推,利用逻辑门的组合就可以设计适用于各种功能的信号结构,从而可以达到硬件算法的目的。
算法是硬件设计的灵魂
判断一个计算机有没有灵魂就要看看它的算法如何了。游戏中季文瀚设计的计算机那灵魂肯定是相当的足!加减法和乘法都可以完成,但大神表示:这些都没什么特别的,重点还是后面几个。
我们将目光聚集在他设计的运算平台上,在这里他将给我们展示完整的运算过程和结果。
运算平台上养着只小猪
举个栗子,季文瀚用的是Cordic旋转迭代算法中的旋转坐标算法,来计算sin(24.8)。
因为需要多次迭代,所以运算很慢,得花130秒输出sin值,再过10秒才能输出cos值,而输入角限制在0-83.88度之间。
后台正余弦的运算过程
计算出来的结果
既然他设计的算法可以完成,那肯定少不了其他必备的硬件。
从算术芯片到计算机
一个完整的计算机绝对少不了CPU,因此他决定先做一个CPU,画出CPU的构架图。
构架图基本是按照实际距离做的,在计算机上方复式看到的结构和架构图可以一一对应。
做好CPU后,他就开始做剩下的功能结构。例如可以看做是计算机最核心部件的全加器。
之前的异或门可以相当于一个半加器,两个半加器可以组成一个全加器。
但这种基于活塞的全加器不稳定,所以季文瀚又做了另一种设计较为好的全加器。
来源:超级数学建模最后做这个显示器他耗费了很长的时间,一开始的设计方案体积可是如今的3倍大。后来还是突发奇想才解决了不少技术问题,缩小体积并改为完全的时序控制。
令人敬佩的玩家
其实文章中记录的也只是他工程中的小小小的一部分而已,真要说完季文瀚所做的技术细节和内容,怕是要写一本200多页的书才可以。这一工程的问世,也不禁让很多计算机专业的学生闻风丧胆,有该专业表示“我可能学了个假的计算机专业”。
尽管这一路上很曲折,也有很多难题需要攻破,进度十分缓慢。可季文瀚仍旧没有弃坑。因此这一“壮举”在全世界MC红石电路玩家还是首次
这种坚持不懈的精神真是令超模君佩服,做到了我可能这辈子都做不到的事情,想必也是大部分MC玩家连想都没敢想的事情……
玩游戏都想着学习
网友评论