《编码的奥秘》pdf就放在二楼了。挂了t我。
〇第一章,在异星工厂里实现继电器和三级管
如上图。三极管和mos管的本质,是“由一个输入来控制另一条电路的通断”。其实在功能上,三极管/mos管和继电器是完全同构的:输入高电平,电磁铁被激活,磁力吸引开关的铁片闭合开关。这样就连通了另一条电路,另一条电路的输出也从0(低电平)变成了1(高电平)。
不同之处是,三极管由电流驱动,而mos管由电压驱动。(*注意这里只讨论它们作为布尔元件时逻辑功能上的相同点,要记住它们在物理原理上是完全不同的。这也是为什么基于mos管的门电路要远比基于三极管的门电路复杂。下一章末尾会作为进阶内容具体讨论。)
继电器的真值表/逻辑表如上。输入0则输出0,输入1则输出1。
要注意这并不是一条导线,实际上继电器的输入和输出之间没有任何电流可以构成回路。“输出0信号”是电磁铁关闭开关断开,输出端输出电流为0;而“输出1信号”是电磁铁打开开关闭合,把输出端直接和V端(供电电压,一般+1.8V)连接来输出1的。
所以我们需要做的,是在异星工厂里搭出来一个和继电器/三极管同构的元件。它的要求是:
1,你所设置的高电平信号“D”可以直接输入元件的基极(BASE)/栅极(GATE)来作为布尔值(0或1)输入——说得这么高大上,但你要做的其实很简单——那就是要找到一个结构,这个结构可以接收高电平信号D,然后像上图中的继电器一样,由D输入的1/0来直接控制“电磁铁”的开启/关闭
2,与此同时,你所设置的高电平信号“D”也可以直接作为VDD,来给元件的集电极(COLLECTOR)/漏极(DRAIN)供电——如上,说的很高大上,但你要做的结构其实也很简单——那就是在元件里再做一个小回路,这个小回路的输入为VDD,而它的通断受“电磁铁”控制。
(这个结构可以用工厂里的信号电路来做,也可以用机械臂来做,甚至可以用传送带来做——只要这个结构和继电器的功能同构就行。和MC或泰拉瑞亚中搭电脑一样,最重要的不是你的元件会不会用到电,而是你一定要找到一个和继电器/三极管/mos管同构的结构——比如你也可以用水流电路/沙子电路来在MC中实现逻辑门,不一定非要用红石电路。是的,这也是“图灵完备”的释义:只要我们能做继电器/三极管,就一定能做出逻辑门;只要我们能做出逻辑门,就一定能一步步做出图灵机甚至冯诺依曼机。其中“逻辑”才是主体,具体实现逻辑的“元件”的选取其实并没有绝对的限制。反正玩游戏嘛大家可以自由选择。)
(*课外内容tips:“基极B,集电极C,发射极E”为三极管的三个引脚。其实继电器就像图中的水龙头一样:一个名为B的水龙头开关来控制C的水流到E。三极管完全由电流驱动,内部结构基本和继电器/水龙头同构,且三极管的输出可以并联(*继电器可以,但三极管的输出并不完全能并联。所以记得串个电阻再并联)。而“栅极G,漏极D,源极S”为mos管的三个引脚。因为mos管是由电压驱动的所以要特别注意,mos管的输出不可并联。因为一旦两个mos管输出不一致就会造成VDD→VSS短接,烧掉芯片(lz也是查了很多资料才完全理解,为什么游戏《图灵完备》里逻辑门的输出不能并联,而《异星工厂》里却可以==。工厂里的元件更像是已经做好了带电阻接地的三极管,永远不会短路)。所以如果你看过现实世界里芯片/cpu设计图的话,会看到mos管逻辑电路通常比三极管逻辑电路更加复杂。因为我们不希望芯片发生VDD→VSS短接)
——经过一番思考,我做出了这样一个结构↑↑↑。这个结构在书中被称为“延迟线(buffer relay)”(*其实逻辑电路中更常用串联非门的形式来搭延迟线)
首先我把“绿色信号=1”作为“高电平”;自然“绿色信号=0”也就对应“低电平”。
然后常量箱作为开关,控制输入的值。打开常量箱,则发送一个高电平信号(绿色=1)到元件的基极(BASE);关闭常量箱,则不再发送高电平信号(也可以看作绿色=0),此时元件的基极输入=0。
这个元件由两部分构成。↑↑↑当它的输入端,也就是基极(BASE)接收到绿色信号>0(电平>0)时,电磁铁被激活,发送一个模拟磁力的信号“√”到小回路的开关。
↑↑↑然后当小回路接收到电磁铁发出的磁力信号后,就立即闭合,允许由集电极(COLLECTOR)输入的电平信号从此通过。
测试一下,成功!模拟三极管的元件正常运转。