Визначення мінімальної кількості воріт NAND / NOR, необхідних для реалізації булевого виразу


9

Чи є алгоритм визначення мінімальної кількості воріт NAND або NOR за допомогою

  1. задана кількість входів
  2. доступність / недоступність доповненого вводу

необхідний для реалізації булевого виразу? Ми можемо отримати форму І-АБО в якості головних імплікантів за допомогою карт Карно, який мінімальний (наскільки я знаю, алгоритм Квіна-МакКлускі отримує їх детерміновано). Чи існує подібна методика і для реалізації NAND чи NOR? Принаймні, така методика повинна визначати необхідну мінімальну кількість воріт NAND / NOR навіть без знаходження фактичної схеми?

Застосування закону Де Моргана щодо основних імплікантів не видається детермінованим,

A ⊕ B = A'B + AB' = ((A'B)'(AB')')' [5 NAND gates]
A ⊕ B = (AB + A'B')' = ((ABAB+ABB') + (A'AB+A'B'))' = (AB(AB+B') + A'(AB+B'))' = ((AB+A')(AB+B'))' = (((AB)'A)'((AB)'B)')' [4 NAND gates by reusing (AB)']

Це для двоступеневої чи багатоетапної реалізації?
Фіз

@RespawnedFluff Мета багаторівневої реалізації - мінімізувати кількість воріт, тому мінімальна реалізація NAND / NOR також повинна бути багаторівневою.
Самік

K-карта не дає мінімального результату для багаторівневої оптимізації.
Фіз

Відповіді:


10

Мінімальну кількість воріт у багаторівневій мережі можна знайти лише шляхом вирішення цілої задачі програмування [або еквівалентів, див. Нижче]. Ця проблема не є повною, тому вирішувати лише десятки воріт - це практично.

Існують методи наближення, які не дадуть вам мінімальної кількості, але є більш простежуваними за необхідний час ... Це самі по собі великі теми, в основному все поле багаторівневої оптимізації. Ви можете прочитати [безкоштовний] огляд тут .

Для невеликих мереж NAND (до 4 змінних) проблема була повністю вирішена вичерпним перерахуванням [або еквівалентними методами]. Існує досить недавня [2009] докторська дисертація Елізабет Ен Ернст, яка узагальнює стародавні результати та розширює їх. Ернст використовує розгалужені, що вдосконалюється на вичерпному методі на практиці, але не асимптотично. Вона також зазначає, що інші неявні методи перерахування, такі як цілочисельне програмування або CSP (задоволення обмеженням, вирішене через SAT), на практиці гірші.

Вона, очевидно, написала якесь програмне забезпечення для свого методу (зване BESS), але я не впевнений, чи він десь доступний для публіки. Повний текст її дисертації є у ​​вільному доступі на сайті umich . І дійсно, ви знайшли мінімальний вираз для 2-х вхідних xor (очевидно, ваш другий), зазначений нижче:

введіть тут опис зображення

Вона також порівняла точні результати (для NAND) з результатами, отриманими евристичним оптимізатором від ABC .

ABC змогла створити оптимальну мережу для 340 з 4 043 функцій, де відома оптимальна мережа. Для тих функцій, де ABC не виробляла оптимальної мережі, вона була в середньому на 36% більшою, ніж оптимальна мережа [.]

Є (очевидно) декілька [більших] мереж, для яких BESS не закінчив, але дозволив знайти верхню межу (у точці, коли пошук був припинений). Для цих ABC було досить добре [добре щодо встановлених меж], як ви бачите з другого графу нижче.

введіть тут опис зображення


Якщо вам цікаво, я спробував ABC щодо проблеми xor ... і це дає 5 нантових воріт, принаймні, за resyn2сценарієм. Так що це не краще, ніж Logic Friday (яка використовує misII).
Фізз

Існують сценарії та бази даних для ABC, які в основному шукають велику кількість функцій для попередньо обчислених оптимальних реалізацій, наприклад, arxiv.org/pdf/1108.3675.pdf Я цього не пробував, але навіть якщо він працює, важка робота була зроблено в іншому місці.
Fizz

Я переглядаю надані вами матеріали, і вони виглядають дуже цікаво, але я намагаюся їх зрозуміти. Після того, як я правильно їх зрозумію, я, мабуть, нагороду отримаю. Тим часом майте виступ.
Самік

1

Напевно, там є кращі методи, але я повернувся, коли в темні віки я знайшов Карни Карно, щоб вони працювали чудово


Чи не заперечуєте ви пролити трохи світла на ті "темні віки" про те, як перейти до мінімальної реалізації NAND / NOR від реалізації AND-OR, отриманої з карт Карно?
Самік

1

NAND, а за ним NAND, є рівносильним до AND, а потім АБО.

NOR, за яким йде NOR, є еквівалентним для OR або за ним AND.

NAND, а за ним NOR, був би еквівалентним AND, а за ним AND, що насправді не має великого сенсу. NOR, а за ним NAND буде аналогічно АБО, а потім АБО.

Я не вірю, що в загальному випадку існує будь-який здійсненний спосіб знайти мінімальне рішення для проблеми з великою кількістю входів (очевидно, що для невеликих підрахунків вводу ви можете змусити грубу силу). Quine-McClusky розглядає лише дворівневі рішення (мінімальне дворівневе солюрація часто не є загальним мінімальним рішенням) і може стати обчислювально нездійсненним за допомогою складних таблиць істинності та великої кількості входів.


Тож немає кращого способу, ніж зміщення бульбашок?
Самік

1

Найкращий алгоритм - алгоритм Еспресо . Певною мірою це реалізується в синтезі FPGA

Логічна п’ятниця - це програмне забезпечення, яке ви можете використовувати. ПРИМІТКА. Це зменшує значення XOR до 5 NAND воріт.


Але Еспресо також дає І-ІЛИ реалізацію, чи не так?
Самік

1
Еспресо є "найкращим" лише в тому сенсі, що це можливо для великих входів (формул) [на відміну від k-карт], але не дає найкращої / мінімальної формули у всіх випадках.
Fizz
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.