Desain rangkaian digital tingkat tinggi biasanya menggunakan sekumpulan gerbang yang dikemas dalam bentuk komponen bukan gerbang logika tunggal. Hal ini mengakibatkan bahwa kompleksitas rangkaian dapat dikurangi dan pemodelannya menjadi sederhana. Beberapa komponen dibahas dalam bagian berikut.
1. Level Integrasi
Sampai saat ini kita membahas desain unit logika kombinasional. Karena kita bekerja dengan gerbang tunggal, maka kita bekerja pada level integrasi skala kecil (small scale integration (SSI), yang meliputi chip dengan isi 10 - 100 komponen. Pengertian komponen di sini berbeda dengan komponen sebelumnya, yaitu mengacu pada transitor dan elemen diskrit lain. Dalam integrasi skala menengah atau mediam scale integration (MSI), isi chip berkisar antara 100-1000 komponen. Integrasi skala besar atau large scale integration (LSI) mengacu pada chip yang berisi 1000-10.000 komponen, dan integrasi skala sangat besar atau very large scale integration (VLSI) berisi komponen yang lebih banyak lagi.
2. Multiplekser
Multiplekser atau MUX (mutiplexer) adalah komponen yang mempunyai banyak masukan dan 1 keluaran. Diagram blok dan table kebenaran dari MUX 4-ke-1 ditunjukkan oleh Gambar 2.21. Keluaran F adalah sama dengan masukan pada jalur yang dipilih oleh kendali masukan A dan B. Misalnya, jika AB = 00, maka keluaran F adalah nilai pada masukan D0 (baik 0 maupun 1). Rangkaian yang sesuai untuk MUX ini terlihat pada Gambar.

Gambar 2.21: Blok diagram dan tabel kebenaran untuk MUX 4-ke-1
Saat kita mendesain rangkaian dengan MUX, biasanya kita menggunakan bentuk kotak seperti Gambar 2.21, bukan bentuk terperinci seperti Gambar 2.22. Dengan cara ini, gambar rangkaian menjadi lebih mudah dipahami.
Multiplekser juga dapat digunakan untuk implemtasi fungsi Boolean. Gambar 2.23 menunjukkan penggunaan MUX sebagai fungsi mayoritas. Data masukan diambil langsung dari tabel kebenaran fungsi mayoritas, dan masukan kendali dihubungkan langsung ke variabel A,B, dan C. Implementsai fungsi menggunakan MUX adalah dengan memasang 1 pada jalur masukan yang merupakan minterm dan mengisi 0 untuk lainnya. Walaupun sebagian masukan tidak digunakan namun penggunakan MUX untuk implementasi fungsi Boolean namun banyak juga fungsi Boolean yang menggunakannya, sebab proses desainnya dan implementasinya menjadi lebih sederhana.

Gambar 2.22: Implementasi MUX 4-ke-1 dengan AND-OR

Gambar 2.23: Implementasi MUX 8-ke-1 untuk fungsi mayoritas
Kasus lain penggunakan MUX 4-ke-1 untuk fungsi dengan 3 variabel ditunjukkan pada Gambar 2.24. Data msukan diambil dari himpunan {0, 1, C, C^}
dan pengelompokannya dapat dilihat pada tabel kebenaran. Jika AB = 00 maka F = 0, apapun nilai C, sehingga kita isi 0 untuk jalur masukan 00 pada MUX. Jika AB = 01, maka F = 1 apapun nilai C, sehingga kita isi 1 pada jalur 01 pada MUX. Jika AB = 10 maka F = C, karena untuk C = 0 maka F = 0 dan untuk C = 1 maka F = 1, sehingga kita isi C pada jalur 10 pada MUX. Akhirnya untuk AB = 11, maka F=C^
dan kita isi jalur 11 pada MUX dengan C. Dengan cara ini, kita dapat mengimplementasikan fungsi 3 variabel dengan menggunakan MUX 2 variabel.

Gambar 2.24: Implementasi MUX 4-ke-1 untuk fungsi dengan 3 variabel
3. Demultiplekser
Demultiplekser atau DEMUX (demultiplexer) adalah kebalikan dari MUX. Diagram blok untuk DMUX 1-ke-4 dengan kendali masukan A dan B serta tabel kebenaran yang sesuai ditunjukkan oleh Gambar 2.25. DEMUX mengirim data masukan D ke salah satu jalur keluaran Fi yang ditentukan oleh kendali masukan. Rangkaian DEMUX 1-ke-4 ditunjukkan pada Gambar 2.26. Aplikasi DEMUX digunakan untuk mengirim data dari satu sumber ke salah satu dari sejumlah tujuan, seperti tombol pada elevator kepada wahana elevator terdekat. DEMUX tidak biasa digunakan pada implementasi fungsi Boolean umumnya, walaupun cara ini juga bisa dilakukan.
4 Dekoder
Dekoder menerjemahkan secara logika kode menjadi artinya. Pada satu saat tepat hanya satu keluaran yang bernilai 1, yang ditentukan oleh kendali input. Diagram blok dan tabel kebenaran dari dekoder 2-ke-4 dengan kendali masukan A dan B tercantum pada Gambar 2.27. Rangkaian dekoder yang sesuai dengan itu terlihat pada Gambar 2.28. Dekoder dapat digunakan untuk mengendalikan rangkaian lain, dan menonaktifkan rangkaian lain. Karena alasan ini, kita tambahkan jalur Enable yang kan menghasilkan keluaran 0 semua jika Enable ini diisi 0, yang secara logika mirip dengan DEMUX dengan masukan 1

Gambar 2.25: Diagram blok dan tabel kebenaran untuk DEMUX 1-ke-4

Gambar 2.26: Rangkaian DEMUX 1-ke-4
Salah satu aplikasi dekoder adalah untuk menerjemahkan alamat memori menjadi lokasi fisis. Dekoder juga dapat digunakan untuk implementasi fungsi Boolean. Karena setiap jalur keluaran berkorespondensi dengan minterm yang berbeda, maka fungsi dapat diimplementasikan dengan operasi OR pada keluaran yang berkorespondensi dengan minterm yang bernilai benar. Contohnya Gambar 2.29 adalah implementasi fungsi mayoritas menggunakan dekoder 3-ke-8. Keluaran yang tidak digunakan dibiarkan tak terhubung.

Gambar 2.27: Diagram blok dan tabel kebenaran dekoder 2-ke-4

Gambar 2.28: Rangkaian dekoder 2-ke-4
5. Enkoder Prioritas
Enkoder menerjemahkan sekumpulan masukan menjadi kode biner, dan dapat dipahami sebagai kebalikan dari dekoder. Enkoder prioritas adalah salah satu bentuk enkoder yang memperhatikan urutan masukan. Diagram blok dan tabel kebenarannya ada pada Gambar 2.30. Prioritas dalam enkoder ini maksudnya adalah bahwa masukan Ai mempunyai prioritas lebih tinggi daripada Ai+1. Keluaran berupa nilai 00,01,10, atau 11 tergantung dari jalur masukan yang aktif dengan prioritas tertinggi. Jika tidak masukan yang aktif, keluaran menghasilkan nilai bawaan A0 (F1F0 = 00).
Enkoder prioritas digunakan untuk memilih dari sejumlah alat yang berkompetisi untuk menggunakan jalur yang sama, misalnya jika sejumlah pengguna secara serentak berusaha menggunakan sistem komputer yang sama. Rangkaian enkoder prioritas 4-ke-2 tampak pada Gambar 2.31.

Gambar 2.29: Implementasi fungsi mayoritas dengan dekoder 3-ke-8
6. PLA
Larik logika dapat diprogram atau programmable logic array (PLA) adalah komponen yang berisi matriks AND diikuti dengan matriks OR. PLA dengan 3 masukan dan 2 keluaran ditunjukkan oleh Gambar 2.32. Tiga masukan A,B, dan C dan komplemennya tersedia sebagai masukan untuk 8 gerbang AND yang menghasilkan 8 suku perkalian. Keluaran dari gerbang AND dihubungkan ke masukan semua gerbang OR yang menghasilkan keluaran fungsi F0 dan F1. Sekering yang dapat diprogram diletakkan pada setiap persilangan pada matriks AND dan OR. PLA diprogram untuk fungsi tertentu dengan memutus sekering pada matriks. Pada saat sekering diputus pada gerbang AND, maka masukan tersebut terhubung ke nilai logika 1. Demikian juga jika sekering diputus pada gerbang OR, maka masukan terhubung ke logika 0.
Sebagai contoh bagaiamana penggunaan PLA, kita lihat implementasi fungsi mayoritas dengan memakai PLA 3 × 2 (fungsi dengan 3 masukan variabel × 2 keluaran). Untuk keperluan penyederhanaan ilustrasi, bentuk seperti Gambar 2.33 yang dipergunakan, bukan 2.32. Dengan catatan bahwa jalura tunggal pada masukan gerbang AND mewakili 6 jalur masukan, dan jalur tunggal pada setiap gerbang OR mewakili 8 jalur masukan. Tanda bulatan kecil pada persimpangan menunjukkan tempat koneksi dibuat. Dalam Gambar 2.32 fungsi mayoritas hanya menggunakan setengah dari PLA, dan sisanya dapat dipergunakan untuk fungsi lain.
PLA adalah komponen yang banyak gunanya sebagai rangkaian digital umum. Keunggulan dari penggunaan PLA adalah karena hanya ada sedikit masukan dan keluaran, dan ada banyak gerbang logika di antara masukan dan keluaran. Proses minimisasi jumlah koneksi dalam rangkaian menjadi penting untuk modularisasi sistem menjadi komponen. PLA sangat ideal untuk keperluan ini, dan banyak program otomatisasi desain PLA untuk fungsi-fungsi tertentu. Untuk menjaga konsep modularitas sering PLA dinyatakan sebagai kotak hitam seperti pada Gambar 2.34, dan diasumsikan bahwa isi PLA dengan mudah dapat dibuat menggunakan program secara otomatis.

Gambar 2.30: Diagram blok dan tabel kebenaran enkoder prioritas 4-ke-2
7. Penggunaan PLA untuk Penjumlah Ripple-carry
Sebagai contoh lain implementasi PLA dalam rangkaian digital, kita akan mendesain rangkaian untuk menjumlah 2 bilangan. Penjumlahan secara biner mirip dengan penjumlah desimal menggunakan tangan. Bilangan biner yang dijumlahkan dari kanan ke kiri, menghasilkan hasil dan sisa (carry) di setiap bit. Dua bit dan sisa sebelumnya dijumlahkan pada setiap posisi bit, sehingga kemungkinan masing-masing nilai serta hasil jumlahan dan sisanya dapat disusun seperti pada Gambar 2.35.
Tabel kebenaran pada Gambar 2.35 menjelaskan mengenai elemen yang disebut sebagai penjumlah penuh (full adder ), dan gambar simbolnya ada disebelahnya. Penjumlah setengah (half adder ), dapat digunakan pada bagian penjumlah paling kanan yang menjumlahkan 2 bit dan menghasilkan jumlah dan sisa. Penjumlah penuh di lain pihak menjumlah 2 bit beserta sisa pada proses sebelumnya dan juga menghasilkan jumlah dan sisa. Penjumlah setengah tidak digunakan pada kasus ini untuk meminimumkan macam komponen. Dengan 4 penjumlah penuh yang dipasang berjenjang dapat dihasilkan penjumlah biner 4 bit, seperti nampak pada Gambar 2.36. Penjumlah paling tetap menggunakan penjumlah penuh dengan menghubungkan masukan c0 dengan 0.

Gambar 2.31: Rangkaian enkoder prioritas 4-ke-2
Perlu diperhatikan bahwa nilai jumlah belum dapat dihitung sampai sisa dari penjumlah penuh sebelumnya dihitung. Rangkaian disebut penjumlah ripple carry karena nilai yang benar seperti bergeser dari kanan ke kiri. Walaupun gambar yang diperlihatkan nampak seperti paralel, namun sebenarnya penjumlahan bit dilakukan secara serial dari kanan ke kiri. Hal inilah yang merupakan kelemahan dari rangkaian ini. Pendekatan desain penjumlah penuh menggunakan PLA, nampak pada Gambar 2.37.
Pendekatan desan dengan cara PLA adalah hal yang umum, dan alat bantu desain menggunakan komputer untuk VLSI biasanya lebih suka menggunakan PLA daripada MUX atau yang lain karena PLA berbentuk keseragamannya.

Gambar 2.32: PLA 3 masukan 2 keluaran

Gambar 2.33: Penyederhanaan PLA

Gambar 2.34: PLA dalam bentuk kotak hitam

Gambar 2.35: PLA dalam bentuk kotak hitam

Gambar 2.36: Implementasi penjumlah 4 bit menggunakan penjumlah penuh berjenjang

Gambar 2.37: Penjumlah penuh menggunakan PLA