乐高逻辑门和机械计算

2021-07-29 21:48:57

一些人使用乐高气动装置设计了布尔逻辑设备,并继续开发基本的计算机设备,如全加器和触发器。这些已经在 LUGNET 上进行了大量讨论。我曾怀疑会有大量使用机械原理的逻辑设备,但是(早在 2004 年)搜索机械逻辑设备并没有得到很多点击。一个机械逻辑页面详细介绍了使用杆来制作逻辑门。令我惊讶的是,我只看到了两个乐高网页,其中提供了机械逻辑门的任何细节。第一页有乐高非门的详细信息。遗憾的是,第二页现在都已不复存在,有一个极其复杂的与门的照片,使用顺时针和逆时针旋转来表示逻辑状态。如果您制作了任何机械逻辑门,请与我联系。终于有人接听了电话,尽管他们不是乐高,而是 K'NEX,我会给你链接到 William Hilton 的 K'NEX 逻辑门视频。他们仍然使用像我这样的推拉系统,但设计却大不相同。从那以后,谷歌进行了无数次尝试,但总的来说,他们的灵感最终来自这些和我自己的。最初我考虑将轴顺时针旋转用于逻辑 1,逆时针旋转用于逻辑 0。这是我发现的其他乐高逻辑门中使用的方法。但是,除了非门(我现在已经开发了一种方法来执行此操作,正如我在本页中所描述的那样),我实在想不出任何将轴运动从两个输入解耦到单个输出的方法。我决定尝试使用推/拉杆来表示逻辑状态。推入轴为逻辑 1,拉出轴为逻辑 0。这种方法的优点是您可以同时使用线性和旋转运动。我的机械逻辑门将运动的一个螺柱长度转换为另一个线性运动的螺柱。我现在已经设计了所有基本门的工作版本,即非门、或门、或非门、与门和与非门。最近,我制作了一个 XOR 门,它本身就是一个门,即不是 AND、OR 和 NOT 的组合。使用两个与非门,我创建了一个与非门锁存器或触发器。这些自然的后续是时钟逻辑、半加器和全加器,最终成为真正的“计算机”设备。这些大门只是示威者。它们可以工作,但由于齿轮滑动和惯性引起的限制,实际可行的用途是有限的。 NOT 门是第一个也是最容易设计的门。您所要做的就是确保一个推杆与另一个推杆相反,如图所示。原始的非门设计过度,在很多方面,非门作为一个实体是多余的。在所有非输入的逻辑门上,您只需要反转驱动机架向前或向后的齿轮的方向。这很容易受到影响,只需将输入推杆放在齿轮的底部或顶部,具体取决于您需要机架移动的方式。齿轮的方向在每种情况下都不同,因此齿轮作用在其上的任何齿条也将沿相反方向移动。这正是我们在注意输入时需要的动作。唯一需要对输出进行 NOTd 的情况是,如果我们不打算将其用作另一个门的输入,即使这样,对于可用的门,也不需要非门。缓冲门实际上是对非门的修改,有几种构造它们的方法。我选择了一个由不同大小的齿轮(24 和 8 齿)组成的简单系统,但杠杆也同样有效。这个想法是采用半螺柱输入并将其转换为单螺柱输出,从而创建一个在线放大,尽管是被动的。图片应该更清楚地显示这一点,或者您可以观看正在运行的缓冲区的视频。 OR 和 NAND 门相关,一个只是另一个带有 NOTd 输入的,这就是为什么它们都在本节中。 OR 门是我设计的第一个实际执行某些操作的逻辑门。我决定在 NOT 门之后制作 OR 门,因为有了这两个门,您可以制作 NAND、AND 和 NOR 门。或门的关键机制是其中一根横梁的旋转。这允许输入杆分别向后或向前移动,而无需改变输出杆的位置。轴另一端的固定横梁无论是由一根还是两根输入杆推动,都会向前移动。四种输入和输出状态如下图所示。有关如何构建模型的分步说明可供下载。如果您渴望看到它的实际效果,还可以观看视频。从逻辑上讲,与非门与具有 NOTd 输入的或门相同。这是一个非常有用的等价方法。我可以通过两种方式对我的 OR 门执行此操作。最简单的方法是在每个输入处使用非门。另一种方法是通过认识到不是输入只需要在每个齿轮系中有一个额外的齿轮,以反转齿条的运动。从照片中显示的四种逻辑状态应该可以清楚地看出这一点。不幸的是,通过使用额外的齿轮,门会受到齿轮微小松弛的影响。这减少了推杆的线性运动,以至于在两个门串联后,一切都停止了。有关如何构建模型的分步说明可供下载。还有一个视频可以观看。正如 OR 门和 NAND 门是相关的,AND 门和 NOR 门也是相关的,因此这两个门都在本节中介绍。

只是非>NAND门的输出并获得AND门似乎是一件简单的事情。但是,如果反转或门的内部轴机构,将固定梁和旋转梁的位置互换,那么或门就变成了与门!更重要的是,这意味着现在可以用比以前更少的部件来制作与非门(一个非+与,对比两个非+或)。有关如何构建模型的分步说明可供下载。还有一个视频可以观看。与与非门一样,或非门可以通过对或门输出进行非操作来简化。然而,正如与非门也可以通过对或门的输入进行非运算来制作,如果与门的输入是非门,那么你就会得到一个或非门。同样,这可以通过使用非门或在齿轮系中添加额外的齿轮来实现。有关如何构建模型的分步说明可供下载。还有一个视频可以观看。 XOR 门与普通 OR 门的不同之处在于 1,1 输入给出零输出。 XOR 门非常重要,因为它是加法器的基本组件。这是最难构建的门,主要是因为它是由两个 AND、两个 NOT 和一个 OR 门组成的复合门。当然我可以这样做,但这并不令人满意,并且考虑到惯性和齿轮滑动,这意味着半加器可能永远不会发生。但在 1 月 5 日左右,我终于破解了它。门使用了一种杠杆系统。它们是从顶部或底部推动的,如果仅从其中一个推动,它们将围绕其中心旋转。这就是诀窍,如果同时从顶部和底部推动杠杆,它将横向移动。好吧,这不是最清楚的解释,但希望下面的照片显示了处于四种可能状态的门以及显示内部工作原理的剖切照片将使事情变得更加清晰。如果失败,请查看可供下载的 XOR 门视频。触发器是一个复合逻辑门,通常由 NAND 或 NORS 制成。与半加器一样,没有触发器,现代计算将不存在。一旦你有了一个很好的简单工作的 NOR 或 NAND 门,那么构建触发器 (FF) 就变得很简单了。在计算中,FF 非常重要,因为它们构成了内存的基础。 FF 是由两个 NOR 或两个 NAND 门制成的设备。大多数 FF 是使用与非门制造的,并且有几种不同的类型。基本操作将一个门的输出作为另一个门的输入,反之亦然。这意味着 FF 有两个输入和两个输出。乐高 FF 的图片应显示正在发生的事情以及下面的描述。 FF 的初始设置为 Set=1、Clear=1 和 Q=1、Qbar=0。脉冲清除为 0。这使得 Q=0 和 Qbar=1,现在请注意,由于右侧的 NAND 输出为 1,因此清除对 Q 或 Qbar 都没有影响。现在脉冲设置为 0。这将变为 Q=1 和 Qbar=0。在这种情况下,左手与非门输出为 1,因此更改 Set 的值不会做任何事情。如果您查看任何数字电子书,您很快就会发现任何有用的东西都倾向于使用时钟脉冲来同步所有内容。时钟输入与逻辑输入分开,但它们是相关的。实现时钟的一种简单方法是使用两个与非门。这样做会将设置和清除操作从处理 0 到 1 的转换更改为处理 0 到 1 的转换。时钟触发器示例应该显示正在发生的事情以及下面的描述。 FF、Set、Clock (clk)、Clear 和 Qbar 的初始设置处于逻辑电平 0 且 Q 为 1。脉冲清除为 1,然后脉冲到时钟 (clk) 为 1。这使得 Q=0并且 Qbar=1。就像之前右手边的 NAND 输出为 1 一样,Clear 不会对 Q 或 Qbar 产生影响。时钟变为 0,然后清除变为 0。必须按此顺序完成以防止输出变得不确定。现在脉冲设置为 1,时钟设置为 1。这将变为 Q=1 和 Qbar=0。左边的与非门输出是 1,所以改变 Set 的值不会做任何事情。 Clock 变为 0,然后 Set 变为 0。就像之前一样,它必须按此顺序进行以呈现不确定的输出。可以为时钟信号构建一个边沿检测器。它需要更多的与非门。这样做的好处是,时钟信号何时回到 0 并避免不确定状态不再重要。半加器是计算的基本构建块。该器件由异或门和与门组成。有两个输入,分别输入 XOR 和 AND 门。还有两个输出,一个来自异或门,一个来自与门。 XOR 输出称为和,S,AND 输出称为进位,C。顾名思义,该设备添加二进制数!即在两位相加的情况下,0+0之和=0,进位0; 0+1 = 1,进位 0; 1+0 = 1,进位0,1+1 = 0,进位1。可惜只能加两位,显然限制了它的用处。然而,通过组合两个半加器,可以得到一个全加器,然后可以级联产生任何大小的二进制加法器。上图显示了处于四种不同状态的乐高半加器,其中 A 和 B 是输入,S 是总和,C 是进位位。还有一个正在运行的视频。推挽逻辑门有两个重大问题。第一个是惯性,第二个是输出衰减。增加的惯性意味着随着添加更多的门,需要对第一个门的输入施加越来越大的力来影响最后一个门的输出。输出衰减是机构(例如齿轮)滑动的结果。这种 slippage 错误是累积性的,这意味着在几个门之后,第一个逻辑状态的变化可能不会改变最后一个。为了克服这两个问题,需要一种为门供电的方法。为了实现这一点,我使用了线性执行器来获取旋转输入来驱动推挽逻辑机制。然后逻辑切换输出旋转的方向,从而改变电路中下一个门输入的旋转逻辑状态。实际上,推挽系统和旋转系统之间是统一的,这允许创建更复杂的反馈门,如翻转。

推挽逻辑门有一个很大的缺点,那就是惯性。解决这个问题的唯一方法是使用某种放大器,电路板上 +ve 线的机械等效物。不幸的是,对于推拉系统,这几乎是不可能的。相反,我已经回到绘图板并考虑使用旋转来表示逻辑状态。我已经将轴在任何方向上的旋转都表示为逻辑一,而没有旋转(即轴是静止的)则为逻辑零。这意味着缓冲更容易实现。除了提出供讨论的想法之外,我没有发现其他网页详细说明使用旋转来表示逻辑。似乎没有人真正构建过任何东西,如果他们有,就我所知,它不在互联网上。好吧,这不太正确,网页上有乐高非门的详细信息。这个页面有一个旋转与门 os\f 排序,但与我自己的相比,它非常复杂。我的旋转逻辑门背后的基本概念是旋转的加法和减法。这不是一个新想法,还有其他网站有这样的例子,好心的人向我建议了它。本质上,这种加法和减法允许建立一系列输出来表示您喜欢的一组输入的任何内容。每个逻辑门页面都显示了所涉及的基本代数。我最近获得了一本绝版书——Antonin Svoboda 所著的“计算机制和链接”,它说明并解释了许多机械计算的原理和技术,包括我使用的方法。如果您使用旋转制作任何机械逻辑门,请与我联系。旋转逻辑门的详细信息都可以在此页面上找到。用于构建旋转逻辑门的底层机制无非是增加或减少轴的旋转。我已经将轴在任何方向上的旋转都表示为逻辑一,而没有旋转(即轴是静止的)则表示为逻辑零。虽然旋转方向并不重要,但单一机构中的混合方向可能会导致各种问题。本节包含三种与轴旋转有关的数学运算:加法、减法和绝对值。最后一个特别有用,因为减法会导致等效逻辑输出沿不同方向旋转的情况,这会完全破坏任何后续门的操作。加法和减法的数学运算是通过使用差速器实现的,这是解耦和/或耦合轴旋转的唯一有效方法。绝对值是使用单向齿轮机制创建的。还演示了一个简单的开/关切换开​​关。由于它用于启动逻辑零/单状态,因此将其包含在本节中。使用本页描述的机制,理论上,可以创建和操作您可能想要的任何布尔逻辑函数(当然还有其他功能!)。当连接到差速齿轮内齿轮的两个轴同向旋转时,外壳也随之旋转。它以等于单个轴速度总和的一半的速度这样做,因此输出必须加倍。使用 16 齿和 8 齿齿轮很容易。这是加法表:这看起来很像 OR 门的真值表!几乎是,就像旋转或门部分所描述的那样,只要多一点力学和数学的知识就可以让我们到达那里。通过观看操作视频可能更容易理解加法机制。从加法到减法只是反转输入轴之一的旋转方向。当连接到差速齿轮内齿轮的轴之一反转时,外壳保持静止。当输入以相反方向旋转时,外壳就会转动。在下表中,您可以将 + 读为顺时针,- 读为逆时针。就像加法器一样,当外壳确实旋转时,它的旋转速度等于各个轴速度之和的一半,因此输出必须加倍。同样,这对于 16 和 8 齿齿轮来说很容易。这是减法表:现在那个表看起来不像异或门的真值表吗?!所要做的就是将输出旋转速度加倍,使其与输入相同,并且除了讨厌的符号变化之外,它是一个 XOR 门,如本页 XOR 门部分所述。如果您希望看到减法机制的实际效果,可以观看视频。为了获得旋转的绝对值,可以使用一种称为单向或单向齿轮的机制。多年来,在网络上发布了许多此类示例。从本质上讲,该机构所做的就是接受任何方向的输入旋转并提供始终沿相同方向旋转的输出。有两种方法(我知道)可以做到这一点。第一个,如此处所示,使用两组齿轮(见下面的视频)。一组是枢转的,将根据输入旋转的方式驱动不同的齿轮。第二种使用蜗轮而不是枢轴齿轮系。我怀疑后者更健壮,但当输入改变方向时,它会遭受相当长的滞后。可以在此处找到对第二种方法的很好解释。该站点也有旋转加法器/减法器的详细信息。您可以使用这些说明来构建该机制的一个版本。输入到输出值的表格很简单!