3

我做了一个计算逻辑电路真值表的小程序。在我选择的表示中(出于无知,我没有受过这门学科的教育),我使用 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 的创建,在每一步重用上一步的真值表。

对于一个下午的工作来说,这一切都很好而且很花哨,但它显然会在循环中中断(例如,人字拖)。有谁知道用循环表示逻辑电路的便捷方法?理想的情况是它可以用一个表来表示,也许是一个包含先前状态、新状态和延迟的表。

将我指向描述这种表示的文献也可以。一个小时的互联网搜索只带来了一篇博士论文,有点超出我的理解。

非常感谢!

4

1 回答 1

3

任何循环都必须包含至少一个具有“状态”的节点,其中触发器(或寄存器)是基本构建块。一种有效的方法是将所有有状态的节点拆分为两个节点;一个充当数据,另一个充当数据接收。所以你现在没有循环了。*

为了模拟,在每个时钟周期,**您以前馈方式将数据值从源传播到接收器。然后更新有状态的源(从它们相应的接收器),为下一个周期做好准备。


* 如果此时仍有回路,则说明电路图无效。

** 我假设您想模拟同步逻辑,即您有一个时钟,并且状态仅在时钟边缘更新。如果您想模拟异步逻辑,那么事情会变得更加棘手,因为您需要开始对传播延迟等进行建模。

于 2013-01-02T18:50:24.370 回答