Bagaimana cara membangun gerbang XOR hanya menggunakan 4 gerbang NAND?


17

xorgate, sekarang saya perlu membuat gate ini hanya menggunakan 4 nandgate

a b out
0 0 0
0 1 1
1 0 1
1 1 0

yang xor = (a and not b) or (not a and b), yang merupakan

A¯B+AB¯

Saya tahu jawabannya tetapi bagaimana cara mendapatkan diagram gerbang dari formula?

gerbang xor

EDIT

Maksud saya secara intuitif, bagi saya, saya harus mendapatkan yang ini jika saya melakukannya langkah demi langkah diikuti oleh definisi xor = (a and not b) or (not a and b).

A¯B¯SEBUAHB¯¯¯

dan xorakan dibangun dengan 5 nandgerbang (gambar # 1 pertama di bawah)

xor gate 2

pertanyaan saya lebih seperti: bayangkan orang pertama dalam sejarah mencari tahu rumus ini, bagaimana dia (proses berpikir) dapat memperoleh 4 nandsoluion dari rumus ini, langkah demi langkah.

SEBUAH¯B+SEBUAHB¯

Saya yakin Anda tahu cara mengambil XOR (atau fungsi lainnya) dan mengonversinya ke sirkuit setara yang hanya menggunakan NAND (yang selalu memungkinkan, karena NAND selesai ). Namun jika Anda bertanya bagaimana mengurangi rumus ini dengan hanya menggunakan 4 NAND, atau secara umum, kurang dari NAND, dan apakah mungkin untuk mendapatkan rangkaian setara dengan k NAND - saya tidak yakin ada cara yang mudah jawab untuk itu. kk
Ran G.

Di bawah ini adalah dua jawaban untuk masalah tersebut. Milik saya cukup jujur ​​tentang fakta bahwa Anda dapat merancang (a posteriori) cara untuk menemukan konstruksi yang diinginkan dari mengetahui hasil akhir di muka, yang diberikan dalam pertanyaan dan tersedia di Internet. Ini jelas merupakan cara yang lebih sederhana dalam melakukan sesuatu, absurd seperti kelihatannya, singkat memberikan prosedur umum, yang tidak ada jawaban. Oleh karena itu, saya tertarik mengetahui mengapa pemilih lebih memilih satu jawaban daripada yang lain, ketika mereka melakukannya ... jika Anda mau meluangkan waktu untuk komentar singkat. Terima kasih sebelumnya.
babou

Pertanyaan ini ditutup karena tidak jelas. Saya pikir mungkin cukup jelas apa yang diminta OP, dan lebih menarik lagi, jika OP repot-repot bereaksi terhadap berbagai pengguna yang mencoba menjawabnya,
babou

electronics.stackexchange.com/questions/84714/... - pertanyaan ini lebih umum, jawabannya memberikan informasi lebih lanjut tentang pendekatan umum untuk menyelesaikan masalah ini, dan jawaban ini electronics.stackexchange.com/a/84803 menunjukkan cara memperoleh NAND representasi untuk operator XOR
Anton Trunov

Saya bermain-main dengan beberapa masalah yang sama dan hanya menulis sebuah program yang mencoba semuanya secara sistematis ... Baik hingga empat input, di mana hanya ada 65.536 fungsi yang mungkin. Untuk sirkuit yang sedikit lebih rumit ini juga memungkinkan saya untuk mengoptimalkan penundaan, dan untuk menemukan sirkuit yang optimal jika satu atau dua input tersedia lebih lambat daripada yang lain. Sirkuit dengan 5 input = 2 ^ 32 fungsi yang mungkin mungkin bisa dilakukan menggunakan brute force.
gnasher729

Jawaban:


13

Dari formula itu? Itu bisa dilakukan. Tetapi lebih mudah untuk memulai dengan yang satu ini: (menggunakan notasi yang berbeda di sini)

a ^ b = ~(a & b) & (a | b)

Ok sekarang apa? Akhirnya kita harus menurunkan ~(~(~(a & b) & a) & ~(~(a & b) & b))(yang terlihat seperti memiliki 5 NAND, tetapi seperti diagram rangkaian, ia memiliki sub-ekspresi yang digunakan dua kali).

Jadi buatlah sesuatu yang terlihat seperti ~(a & b) & a(dan hal yang sama tetapi dengan bdi akhir) dan berharap itu akan bertahan: ( andmendistribusikan lebih or)

(~(a & b) & a) | (~(a & b) & b)

Cukup dekat sekarang, cukup terapkan DeMorgan untuk mengubah tengah itu ormenjadi and:

~(~(~(a & b) & a) & ~(~(a & b) & b))

Dan itu saja.


9

Saya pikir Anda meminta bukti ini:

A^B = (!A)B + A(!B)
    = !!((!A)B) + !!(A(!B))
    = !(!!A + !B) + !(!A + !!B)
    = !(A + !B) + !(!A + B)
    = !((A + !B)(!A + B))
    = !(A(!A) + AB + (!A)(!B) + B(!B))
    = !(AB + (!A)(!B))
    = !(AB)(!(!A)(!B))
    = !(AB)(!!A + !!B)
    = !(AB)(A+B)
    = !(AB)A + !(AB)B
    = !!(!(AB)A + !(AB)B)
    = !((!(!(AB)A))(!(!(AB)B)))

Meskipun ternyata ada 5 NANDs yang digunakan dalam persamaan yang dihasilkan, tetapi duplikat !(AB)akan digunakan hanya sekali ketika Anda mendesain rangkaiannya.


Maaf, tapi bukankah A ^ B berarti A AND B? Tampaknya niat Anda adalah untuk membuktikan XOR simbol mana yang harus ⊕ atau ⊻. Namun bukti ini adalah apa yang sebenarnya saya cari, terima kasih!
osiixy

5

Karena Anda sudah memiliki jawaban diagram, mudah tersedia dari wikipedia dengan mengetikkan judul pertanyaan Anda di Google, sebagai diagram .png yang identik dengan Anda, seharusnya mudah bagi Anda untuk menemukan rumus dengan mengekstraknya dari diagram itu. Diberi definisi NAND sebagai NAND(A,B)=AB¯:

  • Gerbang paling kiri menghasilkan ;C=AB¯

  • Gerbang atas memberikan ;D1=AC¯

  • Gerbang atas memberikan , karena NAND komutatve seperti DAN;D2=BC¯

  • Gerbang paling kanan menghasilkan .E=D1D2¯

Menyatukan semuanya pertama-tama kita perhatikan itu

C=AB¯=A¯+B¯

D1¯=AC=A(A¯+B¯)=AA¯+AB¯=0+AB¯=AB¯

Demikian pula: D2¯=BA¯

Demikian
E=D1D2¯=D1¯+D2¯=AB¯+BA¯

Yang tepatnya definisi XOR. Anda dapat membalikkan semua ini jika Anda ingin memulai dari data awal Anda, bukan hanya memeriksa jawabannya.

Menemukan jawabannya tanpa pengetahuan sebelumnya

Ini dimaksudkan untuk menjawab permintaan eksplisit, ditambahkan sebagai edit untuk pertanyaan, untuk cara menemukan solusi dari awal. Mengingat bahwa pertanyaannya adalah tentang proses berpikir, saya memberikan semua detail.

Saya akan mencoba untuk bergantung pada kendala masalah (hanya 4 gerbang NAND) dan pada kesimetrisannya antara dan BAB yang dapat dipertahankan dalam solusi.

Satu hal yang saya tahu (dengan asumsi informasi mengalir dari kiri ke kanan seperti pada diagram pertanyaan) adalah harus ada gerbang NAND paling kanan yang menghasilkan jawaban yang diinginkan XOR(A,B)=AB¯+BA¯.

Jadi kita bisa mencoba menebak input seperti apa ke gerbang ini yang akan menghasilkan output yang diinginkan.

Kita tahu bahwa NAND(X,Y)=XY¯=X¯+Y¯

Menyatukan formula terakhir ini dengan hasil yang harus kami dapatkan, kami memperoleh:

  • X¯=AB¯X=AB¯¯=A¯+B.

  • Y=A¯B¯=A+B¯.

Perhatikan bahwa ini hanya kemungkinan yang paling sederhana. Ada pasangan input lain yang akan memberikan hasil yang diinginkan, karena kami tidak menyatukan dalam aljabar gratis, karena NAND memiliki sifat persamaan. Tapi kami mencoba itu sebagai permulaan.

XYAB

Kita dapat mencoba mengulangi prosedur penyatuan (saya lakukan), tetapi ini secara alami akan mengarahkan kita untuk menggunakan empat gerbang lagi, maka untuk solusi 5 gerbang.

XYZAB

XYZABAB

AB

Z=NAND(A,B)=AB¯=A¯+B¯

ZABXY

AB

Mudah untuk memeriksanya

NAND(Z,A)=ZA¯=AB¯A¯=(A¯+B¯)A¯=A¯A+B¯A¯=0+B¯A¯=B¯A¯=AB¯¯=X

NAND(Z,B)=Y

Maka kita dapat menyusun empat gerbang ini untuk mendapatkan hasil yang diinginkan, yaitu fungsi XOR.


Tidak secara terbalik untuk membuktikan bahwa mereka setara. Tetapi gambar yang Anda tidak tahu diagram tetapi untuk membangun gerbang menggunakan gerbang nand minimum.
Abadi

1
Apa yang Anda harapkan sebagai jawaban? Teknik sistematis untuk melakukan itu. Saya tidak tahu bahwa ada sesuatu yang cukup layak untuk digunakan dalam kasus-kasus kompleks. Mengingat bahwa saya tahu jawabannya, saya hanya bisa berbohong kepada Anda dan berpura-pura menemukan dengan alasan apa yang saya temukan dengan memeriksa jawabannya. Ini mengatakan, melihat apa yang saya dapatkan dengan NAND (A, B) adalah semua yang tampaknya berguna sebagai permulaan. Kemudian NANDing hasilnya dengan satu argumen A atau B, juga merupakan satu hal untuk dilihat, untuk mendapatkan pandangan di mana saya berada. Dari sana, seseorang cukup dekat dengan jawaban akhir.
babou

1
@Timeless Cara lain untuk melakukannya adalah mundur dari jawabannya, mengetahui bahwa jawabannya adalah dari gerbang NAND. Jika Anda berasumsi bahwa solusinya simetris dalam A dan B, itu memberi Anda kemungkinan bentuk input ke gerbang NAND terakhir. Ada banyak cara untuk mengatasinya, baik untuk menemukan jawabannya, atau untuk membenarkan menemukan itu suatu posisi. Tetapi bukti adalah bukti, apakah ditemukan oleh kecerdikan Anda, atau diberikan oleh oracle atau teman baik. Dan pada titik tertentu tidak ada yang bisa membedakannya. Sebenarnya, bukti terbelakang yang saya berikan bisa menjadi bukti terbaik, bahkan jika solusinya ditemukan dengan cara lain.
babou

Sebenarnya, sangat umum dalam matematika untuk memiliki bagian analisis untuk menemukan solusi, kemudian bagian sintesis di mana Anda membuktikannya adalah solusinya. Seseorang biasanya memberikan keduanya, tetapi hanya bagian kedua yang benar-benar diperlukan.
babou

@Timeless Kedua jawaban didasarkan pada pengetahuan tentang formula yang akan diperoleh, disimpulkan dari diagram yang akan diperoleh. Hasil edit Anda meminta skenario intuitif yang masuk akal untuk menemukan jawabannya tanpa sepengetahuan sebelumnya mengenai hasilnya. Saya memang menambahkan itu ke jawaban saya, tetapi akan menyenangkan untuk mengetahui apakah itu sesuai dengan yang Anda harapkan.
babou

0

Saya mengambil input (0,0) sebagai contoh.

Untuk XOR, output yang diinginkan adalah 0. Namun, NAND(0,0)=1.

  • Karena satu-satunya cara untuk mendapatkan 0 menggunakan NAND adalah (pada lapisan terakhir) NAND(1,1)=0, Anda harus terlebih dahulu menghasilkan dua 1.

    • Berdasarkan NAND(0,1)=1 atau NAND(1,0)=1, Anda menghasilkan 1 menggunakan satu NAND(0,0) di lapisan pertama dan beri makan, bersama dengan satu input 0, ke dalam lapisan kedua NAND.

Hanya empat NANDS terlibat. Tetapi itu hanya benar untuk input(0,0)sejauh ini. Jadi, Anda perlu memeriksa input lainnya(0,1),(1,0), dan (1,1)menentang solusi dan menemukan bahwa itu hanya berfungsi. Beruntung.


0

Saya mencoba yang terbaik untuk memberikan jawaban menggunakan rumus seperti yang diminta. Semoga Anda menghargainya.
Z = AB '+ A'B
Z = AA' + AB '+ BB' + A'B ---> BB '= AA' = 0
Z = A (A '+ B') + B (B '+ A ')
Z = A (AB)' + B (AB) '-> Petunjuk
jadi sekarang (AB)' dapat melewati gerbang NAND ke-1, maka di gerbang NAND ke-2 dan ketiga output dari gerbang NAND ke-1 melewati dengan salah satu dari input sebagai A dan B. Setelah ini kita perlu satu pelengkap lagi jadi gunakan gerbang NAND keempat.
NAND (1) = (AB) '= A' + B '
NAND (2) = (A (AB)') '= (A (A' + B '))' = (AB ')' = A '+ B
NAND (3) = (B (AB) ')' = (B (A '+ B')) '= (A'B)' = A + B '
NAND (4) = [(A' + B) (A + B ')]' = [A'B '+ AB]' = (A + B) (A '+ B') = AB '+ A'B

Senang!


0

Rumusnya: XOR = (a dan bukan b) atau (bukan a dan b).

Bukan itu yang Anda inginkan, Anda menginginkan formula yang merupakan NAND. Ingat bahwa tidak (a atau b) = bukan a dan bukan b, dan karena itu (a atau b) = tidak (bukan a dan bukan b). Karena itu

(a dan bukan b) atau (bukan a dan b) =

not (not (a dan not b) dan not (not a dan b)) =

not ((bukan a atau b) dan (a atau tidak b)) =

NAND (bukan a atau b, a atau tidak b).

Jadi kami menggunakan satu gerbang NAND, dan harus menghitung (bukan a atau b) dan (a atau tidak b) menggunakan tiga NAND. Kami mengubah setiap ekspresi menjadi NAND:

not a atau b = not (a dan not b) = NAND (a, not b)

a atau tidak b = tidak (bukan a dan b) = NAND (bukan a, b)

Sekarang kita amati bahwa (x dan y) = x dan (bukan x atau y): Jika x salah maka kedua sisi salah. Jika x benar maka (bukan x atau y) = (false atau y) = y. Ini berlaku untuk NAND seperti halnya untuk DAN. Karena itu

NAND (a, bukan b) = NAND (a, bukan a atau tidak b) = NAND (a, NAND (a, b))

NAND (b, bukan a) = NAND (b, bukan b atau tidak a) = NAND (b, NAND (a, b)).

Jadi pertama-tama kita menemukan mid = NAND (a, b), kiri = NAND (a, mid) dan kanan = NAND (b, mid), akhirnya XOR = NAND (kiri, kanan).


-2

* Dari kiri ke kanan - D1, D2, D3, D4 ** D1 = (AB) 'ATAU (A' + B ')

seharusnya

(AB) '= C

D2 = (AC) '= A' + C '

D3 = (BC) '= B' + C 'lalu

D4 = (D2.D3) '

D4 = ((AC) '. (BC)') '

D4 = (AC) '' + (BC) ''

D4 = (AC) + (BC)

D4 = A. (A '+ B') + B. (A '+ B')

D4 = AB '+ BA' {A.A '= B.B' = 0} **


2
Saya merasa sulit untuk mengikuti jawaban ini atau memahami proses apa yang Anda gunakan. Bisakah Anda menambahkan beberapa kalimat teks untuk menjelaskan pendekatan, jadi ini bukan hanya urutan persamaan?
DW
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.