Priority Encoder atau pengkode prioritas adalah salah satu rangkaian logika kombinasi yang digunakan untuk mengubah beberapa sinyal input digital menjadi kode biner pada sejumlah jalur output yang lebih sedikit. Berbeda dengan encoder biasa, Priority Encoder memiliki sistem prioritas pada setiap input, sehingga rangkaian tetap dapat menentukan output yang benar ketika terdapat lebih dari satu input yang aktif secara bersamaan. Pada rangkaian digital, encoder digunakan ketika beberapa jalur input perlu direpresentasikan dalam bentuk kode biner yang lebih ringkas. Salah satu penerapannya adalah Priority Encoder, yang menentukan input mana yang harus diproses berdasarkan tingkat prioritas yang telah ditetapkan.
Apa Itu Priority Encoder?
Priority Encoder adalah rangkaian logika kombinasi yang mengubah beberapa jalur input biner menjadi sejumlah jalur output biner yang lebih sedikit, dengan memberikan tingkat prioritas yang berbeda pada setiap input. Dengan sistem tersebut, ketika hanya satu input yang aktif, encoder akan menghasilkan kode biner yang sesuai dengan input tersebut. Namun, apabila beberapa input aktif secara bersamaan, hanya input dengan prioritas tertinggi yang akan digunakan untuk menentukan kode output. Konsep prioritas ini menjadi pembeda utama antara Priority Encoder dan encoder biner biasa. Pada encoder biasa, rangkaian umumnya mengasumsikan bahwa hanya terdapat satu input yang aktif pada satu waktu.
Jika terdapat beberapa input aktif secara bersamaan, hasil pengkodean dapat menjadi tidak valid atau tidak sesuai dengan input yang sebenarnya. Sebagai contoh, sebuah Priority Encoder memiliki beberapa input dengan tingkat prioritas yang berbeda. Apabila input dengan prioritas rendah dan input dengan prioritas tinggi sama-sama berada pada kondisi logika HIGH, maka rangkaian akan mengabaikan input dengan prioritas rendah dan menghasilkan kode berdasarkan input dengan prioritas tinggi.
Perbedaan Encoder dan Multiplekser
Priority Encoder memiliki fungsi yang berbeda dengan multiplekser (multiplexer), meskipun keduanya sama-sama bekerja dengan beberapa jalur input. Multiplekser berfungsi memilih salah satu jalur input berdasarkan sinyal seleksi, kemudian meneruskan data dari input yang dipilih ke satu jalur output. Dengan kata lain, multiplekser bekerja sebagai pemilih data. Sedangkan encoder bekerja dengan cara membaca kondisi beberapa input dan menghasilkan kode biner yang mewakili input aktif tersebut. Perbedaannya dapat dilihat dari prinsip kerjanya:
- Multiplekser: memilih satu sumber data dan meneruskannya ke output.
- Encoder: mendeteksi input aktif dan mengubahnya menjadi kode biner.
- Priority Encoder: mendeteksi input aktif, kemudian memilih input dengan prioritas tertinggi apabila terdapat beberapa input aktif.
Oleh karena itu, Priority Encoder lebih tepat digunakan pada sistem digital yang memungkinkan beberapa sumber sinyal aktif pada waktu yang sama, tetapi hanya satu sumber dengan prioritas tertentu yang boleh diproses.
Pengertian Encoder Digital
Encoder digital, yang juga sering disebut binary encoder, merupakan rangkaian logika kombinasi yang mengubah informasi dari beberapa jalur input menjadi kode biner pada sejumlah jalur output yang lebih sedikit. Proses perubahan informasi dari input menjadi kode tertentu disebut encoding atau pengkodean. Secara umum, sebuah encoder memiliki jumlah jalur input yang lebih banyak dibandingkan jalur output. Hubungan antara jumlah input dan output dapat dinyatakan dengan persamaan:
Jumlah input = 2ⁿ
Sedangkan:
Jumlah output = n
Huruf n menunjukkan jumlah bit pada output encoder. Sebagai contoh, encoder dengan 4 input dan 2 output disebut encoder 4-to-2, karena empat kemungkinan input direpresentasikan menggunakan dua bit biner. Demikian pula, encoder 8-to-3 memiliki delapan jalur input dan tiga jalur output, sedangkan encoder 16-to-4 memiliki 16 jalur input dan empat jalur output. Konsep tersebut memungkinkan sejumlah besar jalur input direpresentasikan menggunakan jumlah jalur output yang lebih sedikit.
Jenis-jenis Encoder Logika Digital
Encoder digital dapat dibedakan berdasarkan jenis data yang dikonversi dan cara rangkaian menentukan outputnya. Beberapa jenis encoder yang umum digunakan antara lain sebagai berikut.
1. Binary Encoder
Binary Encoder mengubah kondisi input menjadi kode biner yang sesuai. Encoder jenis ini umumnya bekerja dengan asumsi bahwa hanya satu input yang aktif pada satu waktu. Contohnya adalah encoder 4-to-2, yang memiliki empat jalur input dan dua jalur output.
2. Priority Encoder
Priority Encoder merupakan pengembangan dari encoder biasa yang memiliki sistem prioritas pada setiap input. Jika hanya satu input yang aktif, output akan menunjukkan kode biner dari input tersebut. Namun, jika dua atau lebih input aktif secara bersamaan, rangkaian hanya akan menghasilkan kode untuk input dengan prioritas tertinggi. Karena kemampuan tersebut, Priority Encoder banyak digunakan pada sistem digital yang memiliki beberapa sumber permintaan atau sinyal yang dapat muncul secara bersamaan.
3. Decimal-to-BCD Encoder
Decimal-to-BCD Encoder digunakan untuk mengubah input desimal dari 0 sampai 9 menjadi kode Binary Coded Decimal (BCD) 4-bit. Setiap angka desimal direpresentasikan menggunakan empat bit biner. Sebagai contoh, angka desimal 5 direpresentasikan sebagai 0101 dalam format BCD.
Hubungan Jumlah Input dan Output pada Encoder
Secara umum, encoder digital menghasilkan output dengan jumlah bit yang lebih sedikit dibandingkan jumlah inputnya. Jika encoder memiliki n-bit output, maka jumlah kombinasi input yang dapat direpresentasikan adalah 2ⁿ. Contohnya:
| Konfigurasi Encoder | Jumlah Input | Jumlah Output |
|---|---|---|
| 4-to-2 | 4 | 2 bit |
| 8-to-3 | 8 | 3 bit |
| 16-to-4 | 16 | 4 bit |
Dengan demikian, encoder n-bit dapat memiliki hingga 2ⁿ jalur input. Pada encoder standar, setiap jalur input biasanya mewakili satu nilai atau posisi tertentu. Ketika salah satu input berada pada kondisi logika 1 (HIGH), rangkaian logika akan menghasilkan kode biner yang sesuai pada output. Dalam beberapa jenis encoder, output juga dapat digunakan untuk menghasilkan kode BCD (Binary Coded Decimal) atau bentuk kode digital lainnya sesuai dengan kebutuhan rangkaian.
Encoder Biner 4-to-2 Bit dan Tabel Kebenaran
Salah satu contoh dasar encoder digital adalah binary encoder 4-to-2. Rangkaian ini memiliki empat jalur input, yaitu D0, D1, D2, dan D3, serta dua jalur output yang dapat disebut sebagai Y1 dan Y0. Setiap input mewakili satu kombinasi kode biner. Ketika hanya satu input berada pada kondisi HIGH, output akan menghasilkan kode biner yang sesuai dengan posisi input tersebut. Sebagai contoh, ketika D0 aktif, output menunjukkan kode 00. Ketika D1 aktif, output berubah menjadi 01. Selanjutnya, D2 menghasilkan 10, sedangkan D3 menghasilkan 11. Namun, encoder biner standar memiliki keterbatasan penting, yaitu tidak dirancang untuk menangani beberapa input HIGH secara bersamaan.
Kelemahan Encoder Biner Standar
Salah satu kelemahan utama encoder digital standar adalah ketidakmampuannya dalam menentukan input yang harus diproses ketika lebih dari satu input aktif secara bersamaan. Encoder standar pada dasarnya mengasumsikan bahwa hanya terdapat satu input aktif pada suatu waktu. Jika terdapat beberapa input yang berada pada logika 1 (HIGH) secara bersamaan, rangkaian dapat menghasilkan kode output yang tidak sesuai dengan input yang diharapkan. Sebagai contoh, misalkan input D1 dan D2 sama-sama berada pada kondisi HIGH. Secara individual:
- D1 aktif → output 01
- D2 aktif → output 10
Namun, ketika D1 dan D2 aktif secara bersamaan, logika encoder dapat menghasilkan output 11. Masalahnya adalah kode 11 sebenarnya merepresentasikan input D3, bukan kombinasi D1 dan D2. Dengan demikian, output yang dihasilkan dapat menyebabkan sistem digital salah dalam menentukan sumber input yang sedang aktif. Kondisi lain juga dapat menimbulkan ambiguitas. Ketika seluruh input berada pada kondisi LOW, output dapat menghasilkan 00. Nilai tersebut sama dengan kode yang dihasilkan ketika D0 aktif pada encoder 4-to-2. Akibatnya, dari sisi output saja, rangkaian tidak selalu dapat membedakan apakah D0 benar-benar aktif atau tidak ada input yang aktif. Masalah inilah yang menjadi salah satu alasan penggunaan Priority Encoder.
Mengapa Encoder Membutuhkan Prioritas?
Salah satu cara untuk mengatasi kondisi ketika beberapa input aktif secara bersamaan adalah dengan memberikan tingkat prioritas pada setiap jalur input. Dengan adanya prioritas, rangkaian tidak perlu memproses semua input HIGH secara bersamaan. Rangkaian cukup menentukan input aktif yang memiliki prioritas paling tinggi, kemudian menghasilkan kode biner berdasarkan input tersebut. Konsep ini dapat digambarkan secara sederhana sebagai berikut:
Beberapa input aktif → Periksa prioritas → Pilih input dengan prioritas tertinggi → Hasilkan kode biner
Jenis encoder yang menggunakan mekanisme tersebut disebut Priority Encoder atau P-Encoder.
Cara Kerja Priority Encoder
Priority Encoder bekerja dengan menetapkan tingkat prioritas pada setiap input. Ketika beberapa input berada pada kondisi aktif secara bersamaan, rangkaian akan membandingkan kondisi tersebut berdasarkan urutan prioritas yang telah ditentukan. Input dengan prioritas paling tinggi akan diproses, sedangkan input aktif lainnya dengan prioritas lebih rendah akan diabaikan. Sebagai contoh, misalkan sebuah Priority Encoder memiliki empat input D0, D1, D2, dan D3 dan D3 memiliki prioritas tertinggi, sedangkan D0 memiliki prioritas terendah.Jika hanya D1 yang aktif, maka output akan menunjukkan kode untuk D1. Namun, jika D1 dan D3 aktif secara bersamaan, Priority Encoder tidak akan menghasilkan kode berdasarkan kedua input tersebut. Rangkaian akan memilih D3 karena memiliki tingkat prioritas lebih tinggi. Dengan demikian, prinsip kerja Priority Encoder dapat diringkas sebagai:
Input aktif → Tentukan input dengan prioritas tertinggi → Abaikan input berprioritas lebih rendah → Encode menjadi kode biner
Mekanisme tersebut membuat Priority Encoder lebih sesuai digunakan pada sistem digital yang memiliki banyak sumber input dan memungkinkan terjadinya beberapa permintaan secara bersamaan.
Priority Encoder 8 Input
Priority Encoder tersedia dalam berbagai konfigurasi jumlah input. Salah satu konfigurasi yang umum digunakan adalah 8-input Priority Encoder. Pada konfigurasi ini terdapat delapan jalur input yang dapat diberi nama D0 hingga D7. Setiap input memiliki tingkat prioritas tertentu. Umumnya, salah satu ujung urutan input ditetapkan sebagai prioritas tertinggi, sedangkan input lainnya memiliki prioritas yang semakin rendah. Ketika tidak ada input yang aktif, output berada pada kondisi tertentu yang menunjukkan bahwa tidak terdapat input valid. Ketika satu input aktif, encoder menghasilkan kode biner yang sesuai dengan nomor input tersebut. Jika beberapa input aktif secara bersamaan, rangkaian akan memilih input dengan prioritas tertinggi dan mengabaikan input lainnya. Contoh konfigurasi Priority Encoder 8 input beserta tabel kebenarannya dapat dilihat pada gambar berikut.
Gambar
Pengkode Prioritas 8-ke-3 Bit
Priority Encoder 8-to-3 merupakan salah satu konfigurasi pengkode prioritas yang memiliki delapan jalur input dan tiga jalur output. Konfigurasi ini mampu merepresentasikan delapan kemungkinan input menggunakan kode biner 3-bit.
Priority Encoder juga tersedia dalam bentuk IC (Integrated Circuit) siap pakai. Salah satu contohnya adalah IC TTL 74LS148, yang merupakan 8-to-3 line priority encoder. IC ini memiliki delapan input yang bekerja dengan logika aktif-LOW, sehingga suatu input dianggap aktif ketika berada pada kondisi logika 0. Pada 74LS148, setiap input memiliki tingkat prioritas. Input dengan nomor yang lebih tinggi memiliki prioritas lebih tinggi. Dengan demikian, apabila beberapa input aktif secara bersamaan, IC akan menghasilkan kode yang mewakili input aktif dengan prioritas tertinggi. Sebagai contoh, apabila input D2, D3, dan D5 aktif secara bersamaan, maka input yang dipilih adalah D5 karena memiliki prioritas paling tinggi di antara ketiganya. Kode biner untuk D5 adalah 101. Jika input D5 kemudian tidak lagi aktif, sedangkan D3 dan D2 masih aktif, maka prioritas berpindah ke D3. Output kemudian menghasilkan kode 011. Prinsip tersebut dapat digambarkan sebagai berikut:
D2 + D3 + D5 aktif → D5 dipilih → Output = 101
Kemudian:
D2 + D3 aktif → D3 dipilih → Output = 011
Dengan mekanisme ini, Priority Encoder dapat menangani kondisi ketika beberapa input aktif secara bersamaan tanpa menghasilkan kode yang ambigu seperti pada encoder biner biasa.
Tabel Kebenaran Priority Encoder 8-ke-3 Bit
Tabel kebenaran digunakan untuk menunjukkan hubungan antara kondisi setiap input dengan kode yang dihasilkan pada output. Pada Priority Encoder 8-ke-3, input D7 memiliki prioritas tertinggi, sedangkan D0 memiliki prioritas terendah. Oleh karena itu, apabila D7 aktif, kondisi input dengan prioritas lebih rendah tidak lagi memengaruhi kode output.
Tabel Kebenaran Pengkode Prioritas 8-ke-3 bit
| Input Digital | Keluaran Biner | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | Pertanyaan 2 | Pertanyaan 1 | Q0 |
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
| 0 | 0 | 0 | 0 | 0 | 0 | 1 | X | 0 | 0 | 1 |
| 0 | 0 | 0 | 0 | 0 | 1 | X | X | 0 | 1 | 0 |
| 0 | 0 | 0 | 0 | 1 | X | X | X | 0 | 1 | 1 |
| 0 | 0 | 0 | 1 | X | X | X | X | 1 | 0 | 0 |
| 0 | 0 | 1 | X | X | X | X | X | 1 | 0 | 1 |
| 0 | 1 | X | X | X | X | X | X | 1 | 1 | 0 |
| 1 | X | X | X | X | X | X | X | 1 | 1 | 1 |
Pada tabel kebenaran Priority Encoder, simbol X digunakan untuk menunjukkan kondisi don't care atau "tidak peduli". Artinya, kondisi input tersebut dapat berupa logika 0 maupun 1 dan tidak memengaruhi hasil output selama terdapat input lain yang memiliki prioritas lebih tinggi dan sedang aktif. Sebagai contoh, ketika D5 aktif, kondisi D0 sampai D4 tidak perlu diperhatikan untuk menentukan output. Bahkan jika salah satu atau beberapa input tersebut berubah antara LOW dan HIGH, output tetap menunjukkan kode untuk D5 selama tidak ada input dengan prioritas lebih tinggi, yaitu D6 atau D7, yang aktif. Konsep don't care tersebut merupakan bagian penting dari prinsip kerja Priority Encoder karena memungkinkan rangkaian mengabaikan input yang memiliki prioritas lebih rendah.
Menentukan Kode Output Berdasarkan Prioritas Input
Untuk memahami tabel kebenaran tersebut, perhatikan urutan prioritas input mulai dari yang tertinggi:
D7 > D6 > D5 > D4 > D3 > D2 > D1 > D0
Artinya, D7 akan selalu dipilih jika aktif. Jika D7 tidak aktif, rangkaian akan memeriksa D6. Jika D6 juga tidak aktif, rangkaian akan memeriksa D5, dan seterusnya hingga D0. Sebagai contoh, jika D7 dan D3 aktif secara bersamaan, maka D7 tetap dipilih karena memiliki prioritas lebih tinggi. Output yang dihasilkan adalah kode biner 111. Jika D7 tidak aktif tetapi D6 dan D2 aktif, maka D6 yang dipilih dan output menjadi 110. Dengan demikian, rangkaian tidak sekadar menerjemahkan input yang aktif, tetapi juga harus menentukan input aktif dengan prioritas tertinggi sebelum menghasilkan kode biner.
Ekspresi Boolean untuk Setiap Bit Keluaran
Selain menggunakan tabel kebenaran, cara kerja Priority Encoder dapat dianalisis menggunakan aljabar Boolean. Setiap bit output dibentuk dari kombinasi logika input yang sesuai dengan aturan prioritas. Untuk Priority Encoder 8-ke-3 dengan input D0 hingga D7 dan output Q2, Q1, dan Q0, persamaan Boolean harus memperhitungkan kondisi input dengan prioritas lebih tinggi. Dalam pembahasan berikut, digunakan konvensi bahwa input aktif bernilai HIGH (1) dan D7 memiliki prioritas tertinggi. Tanda apostrof (') menunjukkan operasi NOT atau komplemen.
Persamaan Boolean Output Q0
Output Q0 merupakan bit paling rendah dari kode biner. Nilai Q0 akan bernilai HIGH ketika input yang terpilih memiliki nomor ganjil, yaitu D1, D3, D5, atau D7. Karena terdapat sistem prioritas, input dengan nomor yang lebih rendah hanya boleh memengaruhi output jika semua input dengan prioritas lebih tinggi tidak aktif. Persamaan Boolean-nya dapat dituliskan sebagai:
Persamaan tersebut menunjukkan bahwa D1 hanya dapat menghasilkan Q0 = 1 jika semua input dengan prioritas lebih tinggi, yaitu D2 sampai D7, berada pada kondisi tidak aktif.
Persamaan Boolean Output Q1
Output Q1 merupakan bit tengah dari kode biner. Nilai Q1 akan bernilai HIGH ketika input yang terpilih adalah D2, D3, D6, atau D7. Dengan memperhatikan urutan prioritas, persamaannya dapat dituliskan sebagai:
Pada persamaan tersebut, D2 hanya dapat memengaruhi Q1 jika seluruh input dengan prioritas lebih tinggi, yaitu D3 hingga D7, tidak aktif.
Persamaan Boolean Output Q2
Output Q2 merupakan bit paling tinggi. Untuk kode 3-bit, nilai Q2 akan bernilai HIGH ketika input yang dipilih adalah D4, D5, D6, atau D7. Persamaannya dapat dituliskan sebagai:
Persamaan ini lebih sederhana karena keempat input tersebut berada pada kelompok kode biner yang memiliki bit paling signifikan bernilai 1.
Persamaan Boolean Lengkap Priority Encoder
Dari ketiga persamaan tersebut dapat diketahui bahwa logika prioritas harus diperhitungkan dalam setiap bit output. Input dengan prioritas rendah tidak boleh langsung memengaruhi output ketika terdapat input dengan prioritas lebih tinggi yang sedang aktif. Secara keseluruhan, persamaan output Priority Encoder 8-ke-3 dapat dituliskan sebagai:
Persamaan tersebut berlaku untuk Priority Encoder dengan input aktif-HIGH. Pada IC seperti 74LS148, terdapat perbedaan konvensi logika karena input dan outputnya menggunakan active-LOW. Oleh karena itu, persamaan logika untuk implementasi langsung menggunakan 74LS148 harus disesuaikan dengan polaritas sinyal pada IC tersebut.
Implementasi Priority Encoder Menggunakan Gerbang Logika
Secara prinsip, sebuah Priority Encoder dapat dibangun dari kombinasi beberapa gerbang logika, seperti AND, OR, dan NOT. Persamaan Boolean yang telah diperoleh sebelumnya dapat diterjemahkan menjadi rangkaian logika. Gerbang NOT digunakan untuk menghasilkan kondisi komplemen dari input yang memiliki prioritas lebih tinggi, sedangkan gerbang AND digunakan untuk memastikan bahwa input tertentu hanya dipilih ketika input dengan prioritas lebih tinggi tidak aktif. Hasil dari beberapa kondisi tersebut kemudian digabungkan menggunakan gerbang OR. Dengan cara tersebut, rangkaian dapat menentukan input aktif dengan prioritas tertinggi dan menghasilkan kode biner pada output.
Encoder Digital menggunakan Gerbang Logika
Pada implementasi perangkat keras, membuat Priority Encoder dari banyak gerbang logika dapat menghasilkan rangkaian yang cukup kompleks, terutama ketika jumlah input semakin besar. Karena itu, penggunaan IC Priority Encoder seperti 74LS148 dapat menyederhanakan perancangan rangkaian digital.
Priority Encoder dan Kondisi Input Tidak Aktif
Selain menentukan input dengan prioritas tertinggi, sebuah Priority Encoder juga perlu memberikan informasi mengenai apakah terdapat input yang aktif atau tidak. Hal ini penting karena kode output saja belum tentu cukup untuk membedakan antara kondisi tidak ada input aktif dan kondisi ketika input tertentu menghasilkan kode yang sama. Sebagai contoh, pada encoder 8-ke-3, kode 000 dapat mewakili input D0. Namun, jika seluruh input tidak aktif, output juga berpotensi berada pada kondisi 000 tergantung konfigurasi logika encoder. Untuk mengatasi ambiguitas tersebut, Priority Encoder umumnya dilengkapi dengan sinyal valid atau enable/status output. Sinyal ini digunakan untuk menunjukkan apakah terdapat input yang sedang aktif dan menghasilkan kode yang valid. Pada IC Priority Encoder tertentu, fungsi tersebut dapat diwujudkan melalui pin tambahan yang memberikan informasi mengenai kondisi input maupun status proses encoding. Dengan demikian, sistem digital yang menggunakan Priority Encoder tidak hanya dapat membaca kode biner output, tetapi juga dapat mengetahui apakah kode tersebut berasal dari input yang benar-benar aktif.
Penggunaan IC Priority Encoder
Penggunaan IC Priority Encoder lebih praktis dibandingkan membangun seluruh rangkaian menggunakan gerbang logika secara terpisah. IC telah mengintegrasikan rangkaian logika yang diperlukan sehingga perancang cukup menghubungkan input, output, catu daya, dan sinyal kontrol sesuai dengan konfigurasi IC. Salah satu contoh yang sering digunakan adalah 74LS148, yaitu IC TTL yang berfungsi sebagai 8-to-3 line priority encoder dengan input aktif-LOW. Dalam penggunaannya, perlu diperhatikan bahwa istilah active-LOW berarti sinyal dianggap aktif ketika berada pada logika 0, bukan logika 1. Hal ini berbeda dengan contoh Priority Encoder aktif-HIGH yang digunakan dalam penjelasan persamaan Boolean sebelumnya. Pemahaman terhadap polaritas input dan output sangat penting ketika menghubungkan Priority Encoder dengan rangkaian digital lainnya agar interpretasi sinyal tidak terbalik.
Aplikasi Encoder Digital
Encoder digital digunakan ketika sejumlah besar input perlu direpresentasikan menjadi kode digital dengan jumlah jalur yang lebih sedikit. Dengan prinsip tersebut, encoder dapat membantu mengurangi jumlah jalur sinyal atau kabel yang harus dihubungkan ke rangkaian pengolah data. Sedangkan Priority Encoder memiliki kemampuan tambahan berupa penentuan prioritas ketika terdapat lebih dari satu input yang aktif. Kemampuan ini membuat Priority Encoder dapat digunakan pada berbagai sistem digital, terutama sistem yang memiliki banyak sumber input atau permintaan yang harus ditangani berdasarkan tingkat kepentingannya. Beberapa contoh penerapan encoder digital dan Priority Encoder antara lain keyboard encoder, pengkode posisi, serta sistem permintaan interupsi.
Penggunaan Encoder pada Papan Ketik
Salah satu penerapan encoder digital yang mudah ditemui adalah pada keyboard atau keypad. Bayangkan sebuah komputer harus membaca 104 tombol pada keyboard. Jika setiap tombol dihubungkan langsung ke satu input komputer, maka dibutuhkan sejumlah besar jalur sinyal. Cara tersebut tentu kurang efisien karena membutuhkan banyak pin input dan jalur kabel. Untuk mengurangi jumlah jalur yang digunakan, tombol-tombol tersebut dapat disusun dalam bentuk matriks keyboard dan kemudian diproses menggunakan keyboard encoder. Pada prinsipnya, encoder akan mendeteksi tombol yang ditekan dan mengubah posisi tombol tersebut menjadi kode biner. Kode tersebut kemudian dapat dibaca oleh sistem digital atau mikroprosesor.
Perlu dibedakan antara kode keluaran encoder dan kode karakter ASCII. ASCII menggunakan 7 bit untuk merepresentasikan karakter, tetapi keyboard encoder tidak selalu langsung menghasilkan kode ASCII. Encoder biasanya menghasilkan kode yang mewakili posisi tombol, kemudian mikrokontroler atau rangkaian pengolah lainnya dapat menerjemahkan kode tersebut menjadi karakter atau perintah tertentu. Dengan demikian, alur pengolahan data keyboard dapat digambarkan secara sederhana:
Tombol ditekan → Keyboard Matrix → Keyboard Encoder → Kode Biner → Prosesor → Karakter/Perintah
Salah satu contoh IC yang dirancang untuk aplikasi keyboard atau keypad adalah 74C923, yang merupakan 20-key encoder. IC ini dirancang untuk membaca matriks hingga 20 tombol dan menyediakan fungsi seperti scanning, penyimpanan kode tombol, serta key debounce untuk mengurangi pengaruh bouncing pada kontak mekanis tombol. Dengan menggunakan encoder, sistem tidak perlu menyediakan satu jalur input khusus untuk setiap tombol. Informasi mengenai tombol yang ditekan cukup direpresentasikan dalam bentuk kode digital yang lebih ringkas.
Keuntungan Encoder pada Keyboard
- Mengurangi jumlah jalur sinyal yang diperlukan.
- Mengurangi jumlah input yang harus disediakan oleh sistem pengolah.
- Mempermudah penghubungan keyboard dengan mikrokontroler atau mikroprosesor.
- Memungkinkan penggunaan keyboard matrix untuk menangani banyak tombol.
- Beberapa IC keyboard encoder juga memiliki fungsi debouncing untuk mengatasi perubahan sinyal akibat kontak mekanis tombol.
Oleh karena itu, konsep encoder sangat penting dalam perancangan perangkat input digital yang memiliki banyak tombol atau sakelar.
Penggunaan Encoder untuk Pengkode Posisi
Encoder juga dapat digunakan untuk mengetahui posisi suatu objek dan mengubah posisi tersebut menjadi kode digital. Salah satu contoh sederhananya adalah sistem pengukuran posisi sudut. Posisi sebuah poros, sakelar, atau objek yang bergerak dapat diubah menjadi beberapa kondisi logika. Setiap kondisi kemudian direpresentasikan menggunakan kode biner. Pada sistem kontrol posisi, sensor atau sakelar dapat ditempatkan pada beberapa titik tertentu. Ketika objek berada pada salah satu posisi, sensor yang sesuai akan menghasilkan sinyal input. Encoder kemudian mengubah sinyal tersebut menjadi kode digital. Konsep tersebut dapat digunakan pada berbagai sistem, misalnya sistem navigasi, pengukuran posisi poros, kontrol mekanis, dan robotika.
Contoh Pengkode Posisi pada Kompas
Salah satu contoh sederhana adalah sistem pengkode posisi kompas menggunakan delapan posisi sudut. Pada sistem tersebut, posisi jarum kompas dibagi menjadi delapan kemungkinan posisi. Setiap posisi dihubungkan dengan sebuah sensor atau sakelar. Ketika jarum berada pada posisi tertentu, sensor yang sesuai akan aktif. Delapan kemungkinan posisi tersebut kemudian dapat dikonversi menjadi kode 3-bit menggunakan encoder 8-to-3. Jika sistem menggunakan mekanisme prioritas, rangkaian dapat menentukan sensor mana yang dianggap aktif apabila terdapat lebih dari satu sinyal yang terdeteksi.
Contoh Navigasi Kompas Pengkode Prioritas
| Arah Kompas | Keluaran Biner | ||
|---|---|---|---|
| Q0 | Pertanyaan 1 | Pertanyaan 2 | |
| Utara | 0 | 0 | 0 |
| Timur laut | 0 | 0 | 1 |
| Timur | 0 | 1 | 0 |
| Tenggara | 0 | 1 | 1 |
| Selatan | 1 | 0 | 0 |
| Barat daya | 1 | 0 | 1 |
| Barat | 1 | 1 | 0 |
| Barat laut | 1 | 1 | 1 |
Pada contoh sederhana ini, magnet permanen dapat digunakan untuk menghasilkan medan magnet yang mengaktifkan reed switch pada posisi tertentu. Ketika jarum atau bagian mekanis yang membawa magnet berada di dekat reed switch, kontak sakelar berubah keadaan dan menghasilkan sinyal logika.
Sinyal dari beberapa reed switch tersebut kemudian dapat diberikan ke encoder untuk menghasilkan kode digital yang menunjukkan posisi sudut. Sebagai contoh, jika terdapat delapan posisi, maka kode digital yang dibutuhkan cukup 3 bit, karena 2³ = 8. Artinya, delapan posisi berbeda dapat direpresentasikan menggunakan kombinasi tiga bit. Konsep ini menunjukkan bagaimana encoder dapat mengubah informasi posisi fisik menjadi data digital yang dapat diproses oleh mikrokontroler, mikroprosesor, atau rangkaian logika digital lainnya.
Priority Encoder pada Sistem Permintaan Interupsi
Salah satu aplikasi penting Priority Encoder adalah pada sistem interrupt atau interupsi dalam komputer dan sistem berbasis mikroprosesor. Dalam sebuah sistem komputer, terdapat banyak perangkat yang dapat membutuhkan perhatian prosesor. Perangkat tersebut dapat berupa keyboard, mouse, penyimpanan, komunikasi, timer, atau perangkat I/O lainnya. Perangkat dapat mengirimkan sinyal Interrupt Request (IRQ) untuk memberitahukan prosesor bahwa perangkat tersebut membutuhkan layanan. Masalahnya, beberapa perangkat dapat mengajukan permintaan interupsi pada waktu yang hampir bersamaan. Sementara itu, prosesor perlu menentukan interupsi mana yang harus dilayani terlebih dahulu. Di sinilah konsep prioritas digunakan. Jika terdapat beberapa IRQ aktif secara bersamaan, sistem harus menentukan IRQ yang memiliki tingkat prioritas paling tinggi. Sinyal dengan prioritas lebih rendah dapat menunggu hingga prosesor selesai menangani permintaan yang lebih penting. Secara sederhana, prosesnya dapat digambarkan sebagai:
Beberapa perangkat → Beberapa IRQ aktif → Penentuan prioritas → Pilih IRQ tertinggi → Prosesor melayani interupsi
Dengan demikian, fungsi Priority Encoder pada sistem seperti ini bukan sekadar mengubah input menjadi kode biner, tetapi juga membantu menentukan sumber permintaan yang harus diproses terlebih dahulu.
Contoh Prioritas pada Permintaan Interupsi
Misalnya terdapat delapan sumber interupsi yang diberi nomor IRQ0 hingga IRQ7. Setiap IRQ memiliki tingkat prioritas tertentu. Jika hanya IRQ3 yang aktif, sistem akan memilih IRQ3.
Namun, jika IRQ3 dan IRQ6 aktif secara bersamaan, sistem harus menentukan mana yang memiliki prioritas lebih tinggi. Jika IRQ6 memiliki prioritas lebih tinggi, maka permintaan IRQ6 akan diproses terlebih dahulu. Setelah permintaan dengan prioritas tertinggi selesai ditangani, permintaan lain yang masih aktif dapat diproses berikutnya sesuai dengan aturan prioritas yang digunakan. Urutan prioritas tersebut dapat ditentukan oleh rancangan perangkat keras maupun oleh pengaturan pada interrupt controller.
Priority Encoder pada Interrupt Controller
Pada sistem mikroprosesor, pengelolaan interupsi biasanya dilakukan oleh sebuah Interrupt Controller. Salah satu contoh klasik adalah Intel 8259 Programmable Interrupt Controller (PIC).
IC 8259 dirancang untuk menangani beberapa sumber interupsi dan menentukan permintaan mana yang harus mendapatkan layanan terlebih dahulu berdasarkan mekanisme prioritas yang digunakan.
Karena itu, 8259 tidak hanya dapat dianggap sebagai Priority Encoder sederhana.
Di dalam interrupt controller terdapat fungsi tambahan untuk menerima permintaan interupsi, menentukan prioritas, menyimpan status interupsi, dan mengelola proses pengakuan interupsi oleh prosesor. Dengan adanya interrupt controller, prosesor tidak perlu menangani seluruh logika prioritas interupsi secara langsung. Controller dapat membantu mengatur beberapa sumber IRQ sebelum permintaan tersebut diteruskan kepada prosesor.
| Nomor IRQ | Penggunaan Umum | Keterangan |
|---|---|---|
| IRQ 0 | Pengatur waktu sistem | Pengatur Waktu Sistem Internal. |
| IRQ 1 | Keyboard | Pengontrol Keyboard. |
| IRQ 3 | COM2 & COM4 | Port Serial Kedua dan Keempat. |
| IRQ 4 | COM1 & COM3 | Port Serial Pertama dan Ketiga. |
| IRQ 5 | Suara | Kartu Suara. |
| IRQ 6 | Disket | Pengontrol Floppy Disk. |
| IRQ 7 | Port paralel | Printer Paralel. |
| IRQ 12 | Mouse | Mouse PS/2. |
| IRQ 14 | IDE Utama | Pengontrol Hard Disk Utama. |
| IRQ 15 | IDE Sekunder | Pengontrol Hard Disk Sekunder. |
Pada sistem yang memiliki banyak sumber interupsi, penggunaan rangkaian pengelola prioritas seperti ini membuat proses penanganan interupsi menjadi lebih terstruktur. Perangkat dengan prioritas lebih tinggi dapat dilayani terlebih dahulu, sedangkan permintaan dengan prioritas lebih rendah dapat menunggu giliran.
Pentingnya Priority Encoder dalam Sistem Digital
Dari berbagai contoh tersebut, dapat dilihat bahwa Priority Encoder memiliki fungsi penting ketika sebuah sistem harus menangani banyak input dengan kemungkinan aktif secara bersamaan.
Pada keyboard atau keypad, encoder membantu mengubah informasi tombol menjadi kode digital yang lebih ringkas. Pada sistem pengukuran posisi, encoder mengubah posisi fisik menjadi kode digital. Sedangkan pada sistem interupsi, Priority Encoder membantu menentukan input mana yang harus mendapatkan perhatian terlebih dahulu berdasarkan tingkat prioritasnya. Secara umum, prinsip tersebut dapat dirangkum menjadi:
Banyak input → Identifikasi input aktif → Tentukan prioritas → Hasilkan kode digital → Proses oleh sistem berikutnya
Karena itulah encoder dan Priority Encoder banyak digunakan sebagai bagian dari rangkaian logika digital, sistem kontrol, perangkat input, sistem komputer, dan sistem berbasis mikroprosesor.
Baca juga: Rangkaian Logika Kombinasional: Pengertian, Cara Kerja dan Contohnya
Siap Untuk Membuat Proyek Impianmu Menjadi Kenyataan?
Klik di sini untuk chat langsung via WhatsApp dan dapatkan dukungan langsung dari tim ahli kami!









No comments:
Post a Comment