Я бы предложил использовать сетки Rott's. Сетка Ротта является графическим приложением законов Де Моргана, и она особенно полезна для решения таких проблем, как ваша. Некоторые логические вентили требуют больше транзисторов, чем другие. Необходимость уменьшения потенциальных задержек на логических воротах может быть мотивацией для оптимизации дизайна с использованием ворот NOR или NAND. Поиск соответствующей функции - с логическими вентилями вам нужно - можно сделать очень быстро с помощью сетки Ротт в:
сетки Каждая Ротт в создается в соответствии с этими тремя принципами:
- Законы Де Моргана уважаются, переключаясь между ⋅ (конъюнкция) и + (дизъюнкция) и делением их на горизонтальные линии (отрицания),
- вертикальные линии разделяют отдельные входы, изменяя количество логических входов,
- на последняя строка помещает входные переменные либо в их первичную, либо в отрицательную которая определяется индивидуально количеством горизонтальных линий над ними.
Все пять следующих сеток разные представления данной функции:
a ⋅ b ⋅ c a ⋅ b ⋅ c a ⋅ b ⋅ c a ⋅ b ⋅ c a ⋅ b ⋅ c
| | ----------- ----------- ----------- -----------
a | b | c + + + + + + + +
----------- ----------- | ------ | ------
⋅ ⋅ ⋅ ⋅ | ⋅ | ⋅
| ------ ------ | | ------ | |
| + + | | + ¬a | b | c
| ------ ------ | | |
| ⋅ ⋅ | ¬a | ¬b|¬c
| | | |
a | b | c a | b | c
Первая сетка не очень полезно, это просто оригинальная функция реализуется 3 -вход И:
f = a ⋅ b ⋅ c
Вторая сетка Ротта реализована с использованием только 2-входных NAND.Вы можете использовать либо две NAND-устройства с 2 входами, либо два инвертора или четыре 2-входных NAND - два из них в месте инверторов, потому что 2-входная NAND с тем же входом на обоих выводах инвертирует сигнал.
f = ¬(nand(a,¬(nand(b,c))))
Третья сетка Ротта - это всего лишь вариация на первом.
f = ¬(nand(¬(nand(a,b)),c))
Четвертая сетка Ротта может быть реализована с использованием двух 2-входных NOR и четырех инверторов. Инверторы могут быть заменены 2-входными NOR или 2-входными NAND.
f = nor(¬a,¬(nor(¬b,¬c))))
Пятая сетка ROTT может быть реализован с помощью комбинации одного 2-входа NOR, один-два входа NAND и одного инвертора.
f = nor(not(a),nand(b,c))
(Изображение было получено с помощью online latex tool.)
Я хочу использовать только NAND. Я где-то читал, что у процессора есть только NAND-ворота. В общем, я только хочу использовать NAND. –
Я думаю, что вы могли бы быть готовы к тому, что CPU можно будет использовать только с помощью NAND-ворот и сложной проводки. Дайте мне минуту, чтобы набросать, как это будет достигнуто с использованием только NAND – amarunowski
Итак, имейте в виду, что вы можете подключить «a» к обоим входам на NAND-ворот и получить инвертор (или «не ворота»). Если вы это сделаете, вы можете легко сделать или выйти из 3-х ворот NAND. – amarunowski