简化具有未知值的单逻辑门

时间:2015-10-19 00:30:44

标签: c++ logic bitwise-operators simplify

我正在建模一个使用四位类型的系统:

  • ZERO:这是字面值0
  • ONE:这是字面值1
  • DONTCARE:这意味着0或1是可以接受的
  • 未知:这一点应该是什么都不知道。

现在,我有一个简单的逻辑门,它接收两个输入并给出一个输出(AND,OR,NOR,NAND,XOR等)。任何位值都可以在任何位置。

例如,我们可能会:

1: ZERO NAND ONE = UNKNOWN
2: DONTCARE XOR DONTCARE = UNKNOWN
3: ONE AND DONTCARE = ONE
4: ONE OR UNKNOWN = DONTCARE
5: DONTCARE XOR UNKNOWN = ONE

问题是试图尽可能地减少这样的表达,传播两个方向。例如,以上内容可以简化为:

1: ZERO NAND ONE = ONE                  (left to right)
2: DONTCARE XOR DONTCARE = DONTCARE     (left to right)
3: ONE AND ONE = ONE                    (right to left)
4: ONE OR DONTCARE = ONE                (both)
5: DONTCARE XOR UNKNOWN = ONE           (can't do anything)

有很多门,每个门有64(= 4 ^ 3)种可能的输入组合。我已尝试过各种方法来单独处理每个门,但它容易出错且复杂。我需要的是一些减少所有门的统一方法。 我的问题:我应该怎么做?

0 个答案:

没有答案