Setiap sinyal yang dikirimkan melalui saluran transmisi (kabel dan nir kabel)
selalu mengalami gangguan. Gangguan ini bisa menyebabkan perubahan
amplitudo, frekuensi, fase dan sebagainya. Akibatnya informasi yang
ditumpangkan pada sinyal tersebut tidak akan diterima dengan baik. Dalam
komunikasi digital, hal ini berarti bahwa bit-bit informasi yang dikirmkan tidak
dapat dideteksi dengan benar (terjadi bit error). Namun demikian ada banyak
sekali teknik yang dapat digunakan untuk mendeteksi dan membetulkan bit
error yang terjadi. Teknik ini sering disebut dengan Channel coding atau Line
coding atau Error control coding.
Channel coding merupakan cabang ilmu yang sangat luas. Berbeda dengan
Source Coding (kompresi data) yang berusaha merepresentasikan data
dengan jumlah bit sesedikit mungkin, channel coding justru menambahkan
beberapa bit pada data untuk mendeteksi dan/atau mengkoreksi bit error.
Secara umum channel coding dapat diklasifikasikan menjadi 2 bagian besar
yaitu Block coding dan Convolutional coding. Pada modul ini kita akan fokus
mempelajari block coding mulai dari prinsip kerjanya, jenisnya, dan
performansinya.
BLOCK CODING
Prinsip kerja dari Block coding ini digambarkan oleh diagram blok berikut ini.
1 1 0 1 0 0 0
0 1 1 0 1 0 0
G =
1 1 1 0 0 1 0
1 0 1 0 0 0 1
Hamming Code
Salah satu bentuk LBC yang paling banyak digunakan adalah Hamming
Code. Hamming code mempunyai karakteristik sebagai berikut:
- panjang codeword: n = 2m - 1
- panjang pesan: k = 2m - m – 1
- panjang parity check: m = n – k , m 3
- LBC yang dijelaskan di atas sebenarnya adalah Hamming Code
dengan m = 3.
- Kemampuan koreksi error = 1; kemampuan deteksi error = 2; d* = 3.
Cyclic Code
Salah satu bentuk unik dari LBC adalah Cyclic Code. Sebuah (n,k) cyclic
code mempunyai karakteristik sebagai berikut:
- Setiap cyclic shift dari sebuah codeword adalah codeword yang lain.
Tetapi ini tidak berarti bahwa seluruh codeword bisa didapatkan hanya
dengan menggeser bit saja.
Contoh:
- Proses decoding pada cyclic code sama dengan pada LBC. Untuk
pengkodean sistematik, bagi codeword yang diterima dengan
generator polinomial g(x). Jika hasilnya 0, berarti tidak ada error (ingat
semua codeword habis dibagi g(x)). Jika hasilnya tidak sama dengan
0, maka sisa hasil pembagian tersebut menjadi syndrome vector yang
akan digunakan untuk menentukan bit mana yang salah.
1011 1001111
1011
1011
BCH Code
BCH code adalah generalisasi dari Hamming Cyclic Code. BCH(n,k) code
mempunyai karakteristik sebagai berikut:
- panjang codeword: n = 2m – 1,
- panjang pesan: k < n
- panjang parity check: mt n – k , m 3 dan t 2m - 1
- Kemampuan koreksi error = t; d* 2t + 1.
Tabel pasangan (n,k) dan t yang mungkin untuk BCH encoder dapat dilihat di
buku-buku tentang error control coding atau di penjelasan dari perintah
bchenc di Matlab Help.