Я моделирую систему, которая использует четыре типа битов:
Теперь у меня есть простой логический вентиль, который принимает два входа и дает один выход (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) возможных комбинации входов. Я пробовал различные способы решения каждой проблемы в отдельности, но она подвержена ошибкам и является сложной. Что мне нужно, так это какой-то унифицированный метод сокращения всех ворот. Мой вопрос: как мне это сделать?
Задача ещё не решена.
Других решений пока нет …