Dekoder merupakan suatu bentuk rangkaian logika yang berfungsi untuk menyederhanakan input yang masuk (berupa biner) supaya lebih mudah dipahami outputnya (dalam bentuk desimal).
Dekoder adalah rangkaian logika multi-input dan multi-output yang mengubah input berkode menjadi output berkode, di mana kode input dan output berbeda; misalnya dekoder BCD n-ke-2n. Input aktif harus aktif agar dekoder dapat berfungsi, jika tidak, outputnya akan mengasumsikan satu kata kode output “nonaktif”.
Dekoder diperlukan dalam aplikasi seperti multiplexing data, tampilan 7 segmen, dan dekoder alamat memori. Gambar di bawah menunjukkan blok semu dekoder.

Basic Binary Decoder
Gerbang AND dapat digunakan sebagai elemen decoding dasar, karena outputnya HIGH hanya jika semua inputnya HIGH. Misalnya, jika bilangan biner input adalah 0110, maka, untuk membuat semua input ke gerbang AND HIGH, dua bit terluar harus dibalik menggunakan dua inverter seperti yang ditunjukkan pada gambar di bawah ini.

Binary n-to-2n Decoders
Dekoder biner memiliki n masukan dan 2n keluaran. Hanya satu keluaran yang aktif pada satu waktu, yang sesuai dengan nilai masukan. Gambar di bawah ini menunjukkan representasi dekoder biner n-ke-2n.

Example – 2-to-4 Binary Decoder
Dekoder 2 to 4 terdiri dari dua masukan dan empat keluaran, tabel kebenaran dan simbolnya ditunjukkan di bawah ini.
Truth Table
| X | Y | F0 | F1 | F2 | F3 |
| 0 | 0 | 1 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 | 0 | 0 |
| 1 | 0 | 0 | 0 | 1 | 0 |
| 1 | 1 | 0 | 0 | 0 | 1 |
Symbol

Untuk meminimalkan tabel kebenaran di atas, kita dapat menggunakan kmap, tetapi dengan melakukannya Anda akan menyadari bahwa itu hanya membuang-buang waktu. Kita dapat langsung menuliskan fungsi untuk setiap keluaran. Dengan demikian, kita dapat menggambar rangkaian seperti yang ditunjukkan pada gambar di bawah ini.
Catatan: Setiap keluaran adalah minterm 2 variabel (X’Y’, X’Y, XY’, XY)
Circuit

Contoh 3-8 binary decoder
Dekoder 3 to 8 terdiri dari tiga masukan dan delapan keluaran, tabel kebenaran dan simbolnya ditunjukkan di bawah ini.
Truth Table
| X | Y | Z | F0 | F1 | F2 | F3 | F4 | F5 | F6 | F7 |
| 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
| 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
| 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
| 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
| 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
Symbol

Dari tabel kebenaran kita dapat menggambar diagram rangkaian seperti yang ditunjukkan pada gambar di bawah.
Circuit

Mengimplementasikan Fungsi Menggunakan Decoder
- Fungsi logika n-variabel apa pun, dalam bentuk jumlah minterm kanonik dapat diimplementasikan menggunakan dekoder n-ke-2n tunggal untuk menghasilkan minterm, dan gerbang OR untuk membentuk jumlah.
- Garis keluaran dekoder yang sesuai dengan minterm fungsi digunakan sebagai masukan ke gerbang OR.
- Rangkaian kombinasional apa pun dengan n masukan dan m keluaran dapat diimplementasikan dengan dekoder n-ke-2n dengan m gerbang OR.
- Cocok ketika rangkaian memiliki banyak keluaran, dan setiap fungsi keluaran dinyatakan dengan beberapa minterm.
Example – Full adder

Truth Table
| X | Y | Z | C | S |
| 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 0 | 1 |
| 0 | 1 | 0 | 0 | 1 |
| 0 | 1 | 1 | 1 | 0 |
| 1 | 0 | 0 | 0 | 1 |
| 1 | 0 | 1 | 1 | 0 |
| 1 | 1 | 0 | 1 | 0 |
| 1 | 1 | 1 | 1 | 1 |
Dari tabel kebenaran kita mengetahui nilai-nilai yang jumlah (s)-nya aktif dan juga carry (c)-nya aktif. Jadi kita memiliki persamaan seperti yang ditunjukkan di atas dan rangkaian dapat digambar seperti yang ditunjukkan di bawah ini dari persamaan yang diturunkan.
Circuit

Encoder adalah rangkaian kombinasional yang melakukan operasi kebalikan dari decoder. Jika kode keluaran perangkat memiliki bit lebih sedikit daripada kode masukan, perangkat tersebut biasanya disebut encoder. Misalnya, encoder prioritas 2n-ke-n.
Encoder yang paling sederhana adalah encoder biner 2n-ke-n, yang hanya memiliki satu dari 2n masukan = 1 dan keluarannya adalah bilangan biner n-bit yang sesuai dengan masukan aktif.

Example – Octal-to-Binary Encoder
Oktal-ke-Biner mengambil 8 masukan dan menyediakan 3 keluaran, sehingga melakukan kebalikan dari apa yang dilakukan dekoder 3-ke-8. Pada satu waktu, hanya satu jalur masukan yang memiliki nilai 1. Gambar di bawah ini menunjukkan tabel kebenaran dari encoder Oktal-ke-biner.
Truth Table
| I0 | I1 | I2 | I3 | I4 | I5 | I6 | I7 | Y2 | Y1 | Y0 |
| 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
| 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
| 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
| 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 |
| 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 1 |
| 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 |
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 |
Untuk encoder biner 8-ke-3 dengan input I0-I7, ekspresi logika dari output Y0-Y2 adalah:
Y0 = I1 + I3 + I5 + I7
Y1= I2 + I3 + I6 + I7
Y2 = I4 + I5 + I6 +I7
Berdasarkan persamaan di atas, kita dapat menggambar rangkaian seperti gambar di bawah ini
Circuit

Example – Decimal-to-Binary Encoder
Desimal-ke-Biner mengambil 10 masukan dan menyediakan 4 keluaran, sehingga melakukan kebalikan dari apa yang dilakukan dekoder 4-ke-10. Pada satu waktu, hanya satu jalur masukan yang memiliki nilai 1. Gambar di bawah ini menunjukkan tabel kebenaran dari encoder Desimal-ke-biner.
Truth Table
| I0 | I1 | I2 | I3 | I4 | I5 | I6 | I7 | I8 | I9 | Y3 | Y2 | Y1 | Y0 |
| 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
| 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
| 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
| 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
| 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 |
| 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 |
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 1 |
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 |
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 |
Dari tabel kebenaran di atas, kita dapat memperoleh fungsi Y3, Y2, Y1, dan Y0 seperti yang diberikan di bawah ini.
Y3 = I8 + I9
Y2 = I4 + I5 + I6 + I7
Y1 = I2 + I3 + I6 + I7
Y0 = I1 + I3 + I5 + I7 + I9
Priority Encoder
Jika kita cermati rangkaian Encoder yang kita dapatkan, kita akan melihat keterbatasan berikut. Jika lebih dari dua input aktif secara bersamaan, output tidak dapat diprediksi atau lebih tepatnya tidak seperti yang kita harapkan.
Ketidakjelasan ini dapat diatasi jika prioritas ditetapkan sehingga hanya satu input yang dikodekan, tidak peduli berapa banyak input yang aktif pada suatu titik waktu tertentu.
Encoder prioritas mencakup fungsi prioritas. Pengoperasian encoder prioritas sedemikian rupa sehingga jika dua atau lebih input aktif pada saat yang sama, input yang memiliki prioritas tertinggi akan diutamakan.
Example – 4to3 Priority Encoder
Tabel kebenaran encoder prioritas 4-input seperti yang ditunjukkan di bawah ini. Input D3 memiliki prioritas tertinggi, D2 memiliki prioritas tertinggi berikutnya, D0 memiliki prioritas terendah. Ini berarti output Y2 dan Y1 bernilai 0 hanya jika tidak ada input D1, D2, D3 yang tinggi dan hanya D0 yang tinggi.
Encoder 4 hingga 3 terdiri dari empat input dan tiga output, tabel kebenaran dan simbolnya ditunjukkan di bawah ini.
Truth Table
| D3 | D2 | D1 | D0 | Y2 | Y1 | Y0 |
| 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 0 | 1 | 0 | 0 | 1 |
| 0 | 0 | 1 | x | 0 | 1 | 0 |
| 0 | 1 | x | x | 0 | 1 | 1 |
| 1 | x | x | x | 1 | 0 | 0 |
Sekarang setelah kita memiliki tabel kebenaran, kita dapat menggambar Kmap seperti yang ditunjukkan di bawah ini.
Kmaps

Dari Kmap kita dapat menggambar rangkaian seperti yang ditunjukkan di bawah ini. Untuk Y2, kita hubungkan langsung ke D3.

Kita dapat menerapkan logika yang sama untuk mendapatkan enkoder dengan prioritas tingkat lebih tinggi.