我正在读大卫·哈里斯( David ),莎拉·哈里斯( Sarah )的“数字设计与计算机体系结构”( the 数字设计与计算机体系结构)。作者给出了组合逻辑的以下定义:
一个组合电路的输出只依赖于输入的当前值;换句话说,它结合当前的输入值来计算输出。组合电路是无记忆的,但时序电路具有存储器。组合电路的功能规范用当前输入值表示输出值。
然而,他们声称这个电路不是组合的:

因为“节点n6连接到I3和I4的输出终端”。事实上,当一个方案不能组合时,它是一个指定的符号,但根据作者的说法:
某些不遵守这些规则的电路仍然是组合的,只要输出只依赖于输入的当前值。
正如我能够理解的,前面提到的电路是这样的:它的输出是1当且仅当它的输入都是1,否则输出是0。因此,输出被定义为输入(和函数)的函数。
事实上,在计算机科学网络中已经有一个关于这个电路的问题,它有一个接受答案。下面是一段摘录:
电路(d)不能写成这种形式的公式,因为I3和I4的输出是连接在一起的。最右边门的输入与I3和I4的输出之间有什么关系?不是可以用组合方式描述的东西。
不幸的是,我还是很困惑
我需要详细说明。如果有人提供了一个电路示例,当两个门的输出连接到一个输入,它实际上会导致“内存”(与考虑的示例相反),也许事情就会发生。
发布于 2021-03-12 15:48:58
电路(d)不是组合电路,因为它根本不是逻辑门电路。
我认为这是解释组合电路和时序电路的一个非常愚蠢的例子。
在逻辑电路中,输出线不能转到另一条输出线。您假设,当将输出连接在一起时,它们将作为逻辑或或自身的。
这不是真的(否则我们为什么要首先使用AND/OR门)。
城门 (即您使用的特定集成电路或制造过程),这是,而不是逻辑电路用来建模的东西。
一个逻辑电路必须表现相同的行为,无论你使用的是什么品牌。
在电路(d)中,I3的输出将给以(最右边的输入)和I4的输出(互补也是真)。
如果电流从它们的输出中流出,大多数集成电路会中断,其他的不会,但是它们会干扰右方的能力--大多数不会感觉到它的输入。
逻辑电路是仍然电路,所以在理论上,您应该执行一个完整的电路分析,其中包括求解微分方程,来求解它们的输出。
数字电子学是一个从这些“低级”细节中抽象出来的分支,但代价是做出一些假设,其中之一是:没有门,输出就永远不会合并。
组合电路的全部要点是,您可以编写out = f(in0, in1, ..., ink),但这并不总是可能的。
例如,一个边缘检测器,它只是一个f(A) = (NOT A) AND A,根据排除的中间层的规律,它应该总是输出0。
但这并不是因为NOT A路径需要更长的时间才能到达AND输入。
如何用f(A)函数来描述这种动态行为?
不要想太多,当你到顺序电路时,你会立即发现差异(如果你需要预览,查找“锁存电路”)。
https://stackoverflow.com/questions/66600889
复制相似问题