부울 식을 실현하는 데 필요한 최소 NAND / NOR 게이트 수 결정


9

최소 NAND 또는 NOR 게이트 수를 결정하는 알고리즘이 있습니까?

  1. 주어진 수의 입력
  2. 보완 된 입력의 가용성 / 비 가용성

부울 식을 실현하는 데 필요한가? 카르노는 그 최소한의 매핑을 통해 우리는 (내가 아는 한, 주요 implicants 같은 AND-OR 양식을 얻을 수 있습니다 Quine-McCluskey에 알고리즘이 결정적를 얻는다). NAND 또는 NOR 구현에도 비슷한 기술이 있습니까? 적어도 그러한 기술은 실제 다이어그램을 찾지 않고도 필요한 최소 NAND / NOR 게이트 수를 결정해야합니까?

주요 함대에 De Morgan의 법칙을 적용하는 것이 결정 론적으로 보이지는 않습니다.

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)']

2 단계 또는 다단계 구현입니까?
Fizz December

@RespawnedFluff 다중 레벨 구현의 목표는 게이트 수를 최소화하는 것이므로 최소 NAND / NOR 구현도 다중 레벨이어야합니다.
Samik

K-map은 다단계 최적화를위한 최소한의 결과를 제공하지 않습니다.
Fizz December

답변:


10

정수 프로그래밍 문제 (또는 이에 상응하는 항목, 아래 참조) 를 해결하여 다중 레벨 네트워크에서 최소 게이트 수만 찾을 수 있습니다 . 이 문제는 NP-complete이므로 최대 12 개의 게이트까지 해결하는 것이 실용적입니다.

최소한의 숫자를 제공하지는 않지만 필요한 시간 측면에서 다루기 쉬운 근사법이 있습니다. 이것들은 그 자체로 광대 한 주제이며 기본적으로 다단계 최적화의 전체 분야입니다. 여기 에서 [무료] 개요를 읽을 수 있습니다 .

NAND의 소규모 네트워크 (최대 4 개의 변수)의 경우 철저한 열거 (또는 동등한 방법)로 문제가 완전히 해결되었습니다. 엘리자베스 앤 에른스트 (Elizabeth Ann Ernst)의 최근 [2009] 박사 학위 논문 은 고대 결과를 요약하고 확장합니다. Ernst는 브랜치 앤 바운드 (branch-and-bound)를 사용하는데, 이는 철저한 방법으로 실용적이지 만 무증상은 아닙니다. 또한 정수 프로그래밍 또는 CSP (제약 조건 만족도, SAT를 통해 해결됨)와 같은 다른 암시 적 열거 방법은 실제로 성능이 떨어집니다.

그녀는 분명히 그녀의 방법에 대한 일부 소프트웨어 (BESS라고 함)를 작성했지만 공개적으로 사용 가능한지 확실하지 않습니다. 그녀의 논문의 전문은 umich 에서 자유롭게 구할 수 있습니다 . 그리고 실제로 2 입력 xor (두 번째 것)에 대한 최소 표현을 찾았습니다.

여기에 이미지 설명을 입력하십시오

또한 정확한 결과 (NAND의 경우)와 ABC 의 휴리스틱 옵티 마이저에서 생성 한 결과를 비교했습니다 .

ABC는 최적의 네트워크가 알려진 4,043 개의 기능 중 340 개의 최적의 네트워크를 생성 할 수있었습니다. ABC가 최적의 네트워크를 생성하지 않은 기능의 경우 최적의 네트워크보다 평균 36 % 더 큽니다.

BESS가 끝나지 않았지만 (검색이 중단 된 시점에서) 상한을 찾을 수있는 일부 [더 큰] 네트워크가 있습니다. 아래의 두 번째 그래프에서 볼 수 있듯이 ABC는 [발견 된 경계와 관련하여] 상당히 잘 수행되었습니다.

여기에 이미지 설명을 입력하십시오


궁금하다면 xor 문제에 대해 ABC를 사용해 보았습니다 ... 그리고 적어도 resyn2스크립트로 5 개의 게이트를 제공합니다 . 따라서 Logic Friday (misII를 사용하는 것)보다 낫지 않습니다.
Fizz

abciv.org/pdf/1108.3675.pdf 사전 계산 된 최적의 구현을 위해 기본적으로 대량의 함수를 찾는 ABC 용 스크립트와 데이터베이스가 있습니다. 예를 들어 시도하지는 않았지만 작동하더라도 어려운 작업은 다른 곳에서 해냈습니다.
Fizz

나는 당신이 제공 한 자료를 살펴보고 있으며 매우 흥미로워 보입니다.하지만 이해하기 위해 고심하고 있습니다. 제대로 이해하면 현상금을 수여 할 것입니다. 그 사이에 공감대를 가지십시오.
Samik

1

아마도 더 나은 기술이있을 수 있지만 어두운 시대에 되돌아 갈 때 Karnaugh Maps 가 제대로 작동한다는 것을 알았습니다.


Karnaugh지도에서 얻은 AND-OR 구현에서 최소 NAND / NOR 구현으로 진행하는 방법에 대해 "어두운 시대"에 대해 설명해 주시겠습니까?
Samik

1

NAND 다음에 NAND는 AND 다음에 OR과 동등합니다.

NOR 다음에 NOR이 있고 OR 뒤에 AND가 있습니다.

NAND 다음에 NOR이 있으면 AND와 동등하며 AND가 그다지 의미가 없습니다. NOR 다음에 NAND와 마찬가지로 OR 다음에 OR과 동등합니다.

나는 일반적으로 많은 수의 입력 문제에 대한 최소한의 해수를 찾는 실행 가능한 방법이 있다는 것을 믿지 않습니다 (분명히 작은 입력 수의 경우 무차별 강제 할 수 있음). Quine-McClusky는 2 단계 솔루션 만보고 ​​(최소 2 레벨 솔로 션은 전체적인 최소 솔로 션이 아닌 경우가 많음) 복잡한 진리표와 많은 수의 입력으로 계산할 수 없게됩니다.


거품 이동보다 더 좋은 방법은 없습니까?
Samik

1

가장 좋은 알고리즘은 Espresso 알고리즘입니다. 어느 정도까지 이것은 FPGA 합성에서 구현됩니다

논리 금요일 은 사용할 수있는 소프트웨어입니다. 참고 : 이렇게하면 XOR이 5 개의 NAND 게이트로 줄어 듭니다.


그러나 Espresso는 AND-OR 구현도 제공합니까?
Samik

1
에스프레소는 k- 맵과 달리 큰 입력 (수식)에 적합하다는 의미에서만 "최고"이지만 모든 경우에 최고 / 최소 공식을 제공하지는 않습니다.
Fizz December
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.