我制作了一个计算逻辑电路真值表的小程序。在我所选择的表示中(出于无知,我没有关于这个问题的教育),我使用Circuit类和Connector类来表示“电路”(包括基本门,如NOT,OR ......)和接线
工厂类用于“焊接引脚和电线”,其语句如下所示
factory.addCircuit("OR0", CircuitFactory.OR);
factory.addConnector("N0OUT", "NOT0", 0, "AND1", 1);
当电路完成时
factory.createTruthTable();
计算电路的真值表。 输入OR NOT和AND的真值表,代码链接了XOR,1/2 ADDER,ADDER和4位ADDER的创建,在每一步重复使用上一步的真值表。
对于下午的工作来说,这一切都非常精细和花花公子,但它显然会在循环中断开(例如,人字拖鞋)。有没有人知道用循环表示逻辑电路的便捷方法?理想的情况是,它可以用表格表示,也可以是具有先前状态,新状态和延迟的表格。
指着我描述这种表述的文学也没关系。一小时的互联网搜索只带来了博士论文,有点超出我的理解。
非常感谢!
答案 0 :(得分:3)
任何循环必须包含至少一个具有“state”的节点,其中触发器(或寄存器)是基本构建块。一种有效的方法是将所有有状态节点分成两个节点;一个充当数据源,另一个充当数据汇集。所以你现在没有循环。 *
要在每个时钟周期模拟 ** ,您可以以前馈方式将数据值从源传播到接收器。然后,您更新有状态的源(来自相应的接收器),为下一个周期做好准备。
<小时/> *如果此时仍有循环,则表示电路图无效。
**我假设您要模拟同步逻辑,即您有一个时钟,并且仅在时钟边缘上进行状态更新。如果你想模拟异步逻辑,那么事情会变得棘手,因为你需要开始建模传播延迟等等。