xor
gate, sekarang saya perlu membuat gate ini hanya menggunakan 4 nand
gate
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
Saya tahu jawabannya tetapi bagaimana cara mendapatkan diagram gerbang dari formula?
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)
.
dan xor
akan dibangun dengan 5 nand
gerbang (gambar # 1 pertama di bawah)
pertanyaan saya lebih seperti: bayangkan orang pertama dalam sejarah mencari tahu rumus ini, bagaimana dia (proses berpikir) dapat memperoleh 4 nand
soluion dari rumus ini, langkah demi langkah.
logic
boolean-algebra
Abadi
sumber
sumber
Jawaban:
Dari formula itu? Itu bisa dilakukan. Tetapi lebih mudah untuk memulai dengan yang satu ini: (menggunakan notasi yang berbeda di sini)
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 denganb
di akhir) dan berharap itu akan bertahan: (and
mendistribusikan lebihor
)Cukup dekat sekarang, cukup terapkan DeMorgan untuk mengubah tengah itu
or
menjadiand
:Dan itu saja.
sumber
Saya pikir Anda meminta bukti ini:
Meskipun ternyata ada 5
NAND
s yang digunakan dalam persamaan yang dihasilkan, tetapi duplikat!(AB)
akan digunakan hanya sekali ketika Anda mendesain rangkaiannya.sumber
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 sebagaiNAND(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
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 BA B 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 diinginkanXOR(A,B)=AB¯¯¯¯+BA¯¯¯¯ .
Jadi kita bisa mencoba menebak input seperti apa ke gerbang ini yang akan menghasilkan output yang diinginkan.
Kita tahu bahwaNAND(X,Y)=XY¯¯¯¯¯¯¯¯=X¯¯¯¯+Y¯¯¯¯
Menyatukan formula terakhir ini dengan hasil yang harus kami dapatkan, kami memperoleh:
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.
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.
Mudah untuk memeriksanya
Maka kita dapat menyusun empat gerbang ini untuk mendapatkan hasil yang diinginkan, yaitu fungsi XOR.
sumber
Saya mengambil input( 0 , 0 ) sebagai contoh.
UntukXOR , output yang diinginkan adalah 0. Namun, NAND ( 0 , 0 ) = 1 .
Karena satu-satunya cara untuk mendapatkan 0 menggunakanNAND adalah (pada lapisan terakhir) NAND ( 1 , 1 ) = 0 , Anda harus terlebih dahulu menghasilkan dua 1.
Hanya empatNAND S 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.
sumber
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!
sumber
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).
sumber
* 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} **
sumber