首先,我们需要在红框位置再新增加两条线,来解码新的ADD(加)和SUB(减)指令,像这样:
我们使用8位加法器将两个数据相加,然后设置8位开关,接入总线。开关要让ADD指令路控制。像这样,注意红框位置:
减法和加法类似,只需要在8位加法器的输入2前面加上一个8位取反器,让数字变成负数。其他的都一样,开关照样接,让SUB指令路控制,然后接入总线:
现在我们就做好了一个具有加法和减法功能的计算引擎,这是整体截图:
本关最终答案
本关开始我们可以自己创造函数(元件),也就是游戏里说的“元件工坊”。我们制作好的元件会被“浓缩”。例如我们之前做的人头,压缩成元件后就是这样:
首先,我们将代码解码为宽带:
把它延伸下去:
我们规划,6个寄存器由上至下分别是R0~R5,并且连接获取相应的数据。把INPUT的开关连接到左侧线路上,OUTPUT的开关连接到右侧线路上。这样:
将各寄存器及INPUT、OUTPUT连接到总线:
本关最终答案
题目说白了就是要让我们做一个“可以根据不同二进制数决定要启用什么计算机功能”的电路。其实再一想,就是前几关我们做过的解码器,但是要连接到具体的指令上。我们先做解码器:
然后再连接到4个输出即可:
本关最终答案
在“寄存器之间”关卡的成品基础上,添加元件工坊里的指令解码器(DEC):
将DEC的第三个端口加非门,连接到两个3位解码器的右端,防止之后的宽带或总线短路:
添加元件工坊的算数引擎(ALU),并将指令输入端连接至顶部端口,用于向ALU输入指令:
将ALU的输出端添加8位开关来防止总线短路,让DEC的第二个输出端口控制开关,此时我们就可以直接将ALU的输出结果接入总线了:
题目说将REG1和REG2作为要进行操作的数字,输出到REG3。所以我们先将REG1和REG2连接到ALU。注意REG1要连接ALU的输入1端口,REG2要连接ALU的输入2端口:
因为ALU的计算结果会直接输出至总线,所以我们只需要设置“何时开启REG3的写入功能”。由于REG3在本关要求的特殊性,我们添加一个或门,在原条件的基础上,再加入一个条件。满足任意一个条件,就开启REG3的写入功能。一端依然连接至宽带,另一端连接至DEC的第二端口。如下图:
这样就完成了,本关整体电路如下图:
本关最终答案
先对两侧都进行拆解,并在指令侧制作宽带:
要将题目里的情况全部考虑到,我们需要制作更多宽带:
然后再逐个进行与门逻辑判断,再用或门连到输出端:
本关最终答案
注意这个地方不要忘了连,我刚才没连上
错误检修
我们本关制作的元件被加入了元件工坊。它要求输入一个条件和数据,在数据满足条件的情况下输出1。
本关很简单,只需要使用8位计数器+PROGRAM替代原来的指令输入端即可:
本关最终答案
首先我们改造一下REG0的写入条件,用一个或门。原来宽带上的还是在宽带上,但是当DEC的第一个端口开启时REG0的写入端也要开启。像这样:
本关最终答案
首先我们在REG3旁放置一个元件工坊的条件判断器(COND),将REG3内储存的值不断输入到COND的“输入”端。将PROGRAM输入的值输入到COND的“条件”端(亮绿色线):
将REG0连接至计时器的写入端:
将COND的判断结果和DEC的第四输出端口接入到一个与门进行判断,然后输出至计时器的“步进/擦写模式”接口(注意几个画红框的地方):
这样就完成了。
如果你运行后发现明明电路都一样,但是却运行错误。检查发现计数器莫名其妙出现奇怪的数字(比如“7”),那么请你点击计数器,在下方将单步增量重新调整为1(即只开启最右侧),然后再运行。
恭喜你!造出了一台图灵完备的计算机!让我们来看一下我们携手制作的计算机:
本关最终答案
以下三章为《图灵完备 Turing Complete》游戏手把手教程(教程原创为知乎:淘气喵w,特此说明)
第一章:基础逻辑电路
第二章:算术运算和存储器
第三章:处理器架构