Anda mungkin menemukan berbagai algoritme aktif pencerahan Penghitungan Bit Cepat . Dua yang terakhir: Nifty Parallel Count dan MIT HAKMEM Count mungkin mudah dikonversi menjadi gerbang. Lihat halaman ini untuk penjelasan yang baik tentang cara kerjanya.
Anda bisa melakukan ini menggunakan perangkat keras gerbang. Gunakan empat adders 1-bit untuk menambahkan pasangan bit bersama-sama. Ini memberi Anda empat angka 3-bit. Tambahkan ini berpasangan menggunakan dua adders 3-bit. Ini memberi Anda dua angka 4-bit untuk ditambahkan menggunakan satu penambah 4-bit. Ini memberi Anda nilai 5-bit, tetapi Anda dapat mengabaikan bit teratas. Kemudian gunakan dua komparator 4-bit untuk menguji nilai 2 dan 3.
Untuk jumlah komponen minimal, mengapa tidak melakukannya Analog?
Buat pembagi tegangan dengan satu resistor di atas, dan 8 input Anda terhubung ke bawah dengan 8 resistor secara paralel. Kemudian cukup gunakan dua komparator yang diatur untuk mendeteksi level tegangan yang akan dihasilkan 2 atau 3 bit. Itu hanya 6 bagian:
Jaringan 8-resistor akan menghasilkan tegangan antara 0v (untuk set 0-bit) hingga 5v (untuk set 8 bit). 2 bit akan menghasilkan 0,5v. 3 bit akan menghasilkan 1.56v.
- Dengan 0 atau 1 bit, output akan menjadi 00.
- Dengan 2 atau 3 bit, output akan menjadi 01.
- Dengan 4 atau lebih bit, output akan menjadi 11.
Ditambahkan:
Terima kasih kepada DavidCary untuk saran yang bagus. Setelah banyak perhitungan, saya pikir saya telah menemukan serangkaian resistor yang berfungsi, tetapi Anda harus hati-hati memeriksa perhitungan saya terlebih dahulu. Di sini saya menggunakan komparator dengan output saluran terbuka dan saya pikir saya telah berhasil membuatnya memiliki output tunggal. Rendah berarti mati putaran berikutnya, Tinggi berarti putaran selanjutnya hidup.
Yang menyenangkan adalah bahwa sirkuit ini hanya memiliki dua komponen lebih banyak daripada sirkuit lainnya. Mereka semua adalah resistor seri E8, jadi harus dimungkinkan. Juga, R6 seharusnya menjadi nilai yang lebih tinggi, seperti 4.7k atau sesuatu.
Tabel pencarian juga hanya 1 bagian, dan lebih cepat dari mikrokontroler. Lupakan EEPROM paralel, harganya mahal. Gunakan Flash paralel selebar-byte . Yang ini 512 kByte, itu 2000 kali lebih banyak dari yang Anda butuhkan, tapi ini solusi termurah (1 dolar). Dan Anda dapat menambahkan 6 fungsi 1-bit lainnya dengan harga yang sama.
Anda juga dapat menggunakan CPLD . Tulis fungsi dalam VHDL atau Verilog sebagai satu pernyataan SOP (Jumlah Produk) yang panjang, dan biarkan synthesizer membuat logika.
The Register geser adalah OK jika Anda dapat menunggu hasilnya; ini adalah solusi paling lambat.
Akhirnya, Anda bisa melakukannya dengan gerbang logika , tetapi Anda akan menghabiskan banyak waktu untuk mengurangi SOP ke bentuk seminimal mungkin jika Anda ingin semua dasar. Rocketmagnet memiliki ide yang tepat menggunakan adders, tetapi jumlahnya tidak aktif: penambah 1 bit setengah memberikan 2 bit, bukan 3. Jadi menambahkan output dari setengah penambah dua demi dua memerlukan dua penambah setengah 2-bit, memberikan dua hasil bit. Gunakan setengah penambah 3-bit untuk mendapatkan hasil 4-bit. Menggunakan 1-bit full adders, Anda hanya perlu satu penambah 2-bit.
sumber
Sirkuit paralel-sekuensial hibrida cenderung jauh lebih kompak daripada sirkuit paralel murni. Misalnya, jika Anda menyesuaikan aturan sehingga kotak 3x3 akan mengubah sel di tengah mati jika ada kurang dari tiga sel hidup atau lebih dari empat, dan mengubahnya hidup jika ada tepat tiga sel hidup (perilaku di bawah ini aturan baru akan cocok dengan aslinya), seseorang dapat menyederhanakan logika dengan melakukan urutan dua langkah:
Array
tempVal[x,y]
memiliki dua bit per sel; operasi terakhir menjumlahkan tiga angka tersebut untuk menghasilkan nilai 0-9 (meskipun semua nilai melebihi empat adalah setara), yang kemudian dapat digunakan untuk menghitung status hidup / mati satu bit untuk generasi berikutnya.BTW, alternatif untuk melakukan penjumlahan aritmatika pada tahap kedua dan memeriksa nilainya adalah mengubah tempVal [x, y] menjadi representasi satu-panas, dan kemudian secara eksplisit memeriksa salah satu dari sembilan kombinasi nilai yang akan menghasilkan tiga sel, atau salah satu dari dua belas yang akan menghasilkan empat.
sumber