Sebuah bit-penghitungan pembanding (BCC) adalah rangkaian logika yang mengambil beberapa jumlah input penghitungan A1, A2, A3, ..., An
serta masukan B1, B2, B4, B8, ...
yang mewakili angka. Kemudian kembali 1
jika jumlah A
input yang ada di lebih besar dari angka diwakili dalam biner dengan B
input (misalnya B1
, B2
dan B8
akan membuat nomor 11
), dan 0
sebaliknya.
Sebagai contoh, untuk sedikit penghitungan pembanding yang mengambil 5
input, yang A2
, A4
, A5
, dan B2
ditetapkan untuk 1
, akan kembali 1
karena ada 3 A
input yang ada di, yang lebih besar dari 2
(nomor diwakili oleh hanya B2
berada di).
Tugas Anda adalah membuat komparator penghitungan bit yang mengambil total 16 A
input dan 4 B
input (mewakili bit dari 1
hingga 8
), hanya menggunakan dua gerbang input NAND, dan menggunakan sesedikit mungkin gerbang NAND. Untuk menyederhanakan banyak hal, Anda dapat menggunakan gerbang AND, OR, NOT, dan XOR dalam diagram Anda, dengan skor terkait berikut:
NOT: 1
AND: 2
OR: 3
XOR: 4
Masing-masing skor ini sesuai dengan jumlah gerbang NAND yang diperlukan untuk membangun gerbang yang sesuai.
Sirkuit logika yang menggunakan gerbang NAND paling sedikit untuk menghasilkan konstruksi yang benar menang.
sumber
AND
== duaNAND
Jawaban:
169 nands
Menambahkan A untuk mendapatkan A {1,2,4,8,16}. Kemudian melakukan perbandingan biner dengan Bs.
Saya menggunakan beberapa blok bangunan lagi:
Setengah dan penuh adders memiliki 2 output - mereka dibedakan dengan r untuk hasil dan c untuk dibawa.
A {1,2,4,8,16} adalah output dari setengah adders.
sumber
751 gerbang nand
Ini belum sepenuhnya golf. Saya memberikan jawabannya di Verilog karena dengan cara ini, saya dapat menulis sebuah program untuk menampilkan setiap bagian. Jika wajib menjawab dengan diagram, beri tahu saya. Mereka setara.
&
adalah dan,~
tidak, dan|
atau.Strategi saya:
A
dan letakkan semua1
s ke angka rendah, simpan diis
. (ini adalah sebagian besar program)B
dan membukanya menjadi 16 bit (saya menyebutnyaeB
diperluasB
)sumber