Meskipun secara internal menghitung semua jawaban, dan kemudian menggunakan mux untuk memilih di antara mereka akan berhasil, itu tentu saja bukan desain yang minimal.
Pertimbangkan bahwa Anda dapat mengiris masalahnya; alih-alih satu blok logika dengan dua input 8 bit, Anda dapat mempartisi ini sebagai dua bagian 4-bit, selama Anda dapat menautkannya untuk mendapatkan hasil keseluruhan yang benar. Untungnya, menautkan irisan tidak lebih buruk dari satu bit, yang dalam kasus penambahan mewakili bit carry. Jadi setiap irisan 4-bit memiliki bit carry-in dan bit carry-out. (Perhatikan bahwa logika seperti AND dan NOR bahkan tidak akan membutuhkan ini, meskipun jika nanti Anda menerapkan shift kiri / kanan, bit ini dengan mudah bertujuan ulang).
Dibawa ke ekstrim Anda bisa menggunakan 8 iris masing-masing 1-bit. Sangat berguna untuk memikirkan irisan 1-bit, karena membuatnya lebih mudah untuk berpikir tentang pendekatan yang meningkatkan kembali ke irisan yang lebih besar. Jadi dengan irisan 1-bit, Anda hanya memiliki 7 input: kode fungsi 4 bit, sedikit dari input A, sedikit dari input B, dan bit carry-in. Anda juga hanya memiliki dua output: berfungsi, dan dijalankan. Jadi sekarang Anda dapat menulis dua fungsi output dalam hal hanya 7 input, yang berada dalam ranah kemampuan manusia untuk mengurangi secara wajar. Anda akan berakhir dengan segelintir gerbang yang tidak selalu selalu menghitung semua fungsi, tetapi tidak masalah apa yang terjadi di dalam slice, hanya saja ia menghasilkan hasil yang benar bila dilihat dari luar.
Sekarang Anda bisa melakukan beberapa cara. Salah satu caranya adalah dengan menggunakan 8 dari irisan 1-bit ini dan Anda selesai. Cara lain adalah dengan membuat irisan yang lebih besar dan kemudian menggunakannya. Pergi dari 1-bit ke 2-bit, persamaan pergi dari 7 input ke 9, dan 4-bit akan membutuhkan fungsi 13 input. Ini tidak selalu mudah, tetapi akan memberikan hasil yang lebih kompak daripada pendekatan compute-everything-then-mux. Selain itu, jika Anda melihat bagian dalam irisan ALU 74-bit 4-bit, Anda tidak akan melihat mux di sana.
Ya, Anda perlu lebih banyak kontrol logika.
Tugas Anda sebelumnya adalah murni aritmatika (apakah itu sebuah kata?), Sehingga Anda dapat menggunakan satu penambah dan memijat input menggunakan sinyal kontrol untuk membuat fungsi yang Anda inginkan
Fungsi baru Anda logis , jadi Anda perlu blok lain untuk melakukan operasi logis. Sinyal kontrol akan mengubah fungsi blok ini.
Kemudian di bagian bawah diagram Anda, Anda akan memerlukan multiplexer (kadang-kadang disebut 'mux') yang digerakkan oleh sinyal kontrol untuk memilih jawaban mana yang akan Anda output (satu dari penambah dan rangkaian "input memijat" atau yang dari operator logika).
Jika Anda dapat memilih penyandian baru untuk jalur kontrol ALU Anda, saya mungkin tergoda untuk menggunakan MSB sebagai "aritmatika / logika" pilih, dan yang lain untuk memilih "subfungsi" jika itu masuk akal, karena menyederhanakan decode untuk mux akhir.
sumber
Salah satu pendekatan yang bagus untuk menangani operasi logis adalah memiliki bit dari dua operan yang berfungsi sebagai input pemilih ke multiplexer 4-input, dan mengumpankan input "data" dari multiplexer pola empat-bit yang sesuai dengan operasi yang diinginkan (biasanya di 8-bit ALU, akan ada delapan multiplexer - satu untuk setiap bit - dan input "data" dari semua 8 multiplexer akan diikat menjadi satu).
sumber