Anda di halaman 1dari 4

PERCOBAAN 6

CYCLIC CODE DECODING

1.1 TUJUAN
Decoding messages untuk system yang diberikan cyclic polynomial code dan
memverifikasinya melalui simulasi.

1.2 DASAR TEORI


Kode siklik adalah subclass dari linear block codes dengan struktur siklik untuk implementasi
yang lebih praktis. Block code yang digunakan dalam forward error correction system
biasanya menggunakan kode siklik. Dalam coding siklik, data dikirim dengan checksum.
Ketika tiba, checksum dihitung. Ini harus sesuai dengan yang dikirim. Untuk
menggambarkan kode siklik, kita mengekspresikan arbitrary n-bit vector dalam bentuk
X = (xn-1 xn-2 x1 x0)
Sekarang anggaplah bahwa X telah dimuat ke dalam shift register dengan koneksi feedback
dari stage pertama ke stage terakhir. Pergeseran semua bit satu posisi ke kiri menghasilkan
pergeseran siklik dari X, ditulis sebagai
X' = (xn-2 xn-3 x1 x0 xn-1)
Pergeseran kedua menghasilkan
X = (xn-3 x1 x0 xn-1 xn-2) dan seterusnya
Sebuah kode linier adalah siklik jika setiap pergeseran siklik dari kode vektor X adalah vektor
lain dalam kode tersebut. Ketika kode siklik adalah linear block code (LBC), semua sifat-sifat
LBC berlaku untuk kode siklik. Kode siklik digunakan dalam aplikasi di mana terjadi burst
error. Burst error adalah sebuah error di mana sekelompok bit yang berdekatan dipengaruhi.
Decoding Cyclic code:
Jika T(x) dan E(x) merupakan code polynomial dari systematic cyclic code dan error
polynomial dengan pangkat n-1 atau kurang. Sebuah error sama ketika menambahkan

beberapa E(x) ke T(x) missal menambahkan 1010011000001110000 akan merubah bit pada
lokasi dimana 1 adalah error bit. Ketika T(x) muncul, T(x)
Sehingga R(x) = T(x)

+ E(x) datang.

E(x)

Secara umum, setiap 1 bit dalam E(x) berhubungan dengan sebuah bit yang dibalik dalam
message.
Jika terdapat k 1 bit dalam E(x), terjadi k single-bit errors. Sebuah burst error seperti 1....1
Pada ujung receiver T(x) + E(x) = R(x). T(x) adalah kelipatan G(x) (sisa zero). Oleh karena tu
ketika dibagi (T(x)

+ E(x)) dengan G(x)=sisa ketika membagi E(x) dengan G(x). Sebagai

contoh, sisa ketika membagi (1000+n) dengan 10 = sisa ketika membagi n dengan 10. Disini
sisa E(x) / G(x) disebut dengan syndrome vector yang disimbolkan dengan S(x). Jika sisa
ketika membagi E(x) dengan G(x) adalah nol, error tidak akan dideteksi.
Secara umum, jika E(x) adalah kelipatan G(x), error tidak akan bisa dideteksi. Selain
itu, bisa dideteksi. Semua pola error akan diketahui.
1.3 ALAT DAN BAHAN
PC yang terinstall software MATLAB.
1.4 LANGKAH KERJA
1) Decode
Function: Block decoder Syntax msg = decode (code, n ,k,
'cyclic/fmt', genpoly, trt)
[msg, err] = decode (...) [msg, err,
ccode] = decode (...)
Description
Fungsi decode men-decode code cyclic code dan mencoba memperbaiki error menggunaka
tabel decoding trt, dimana trt adalah matrik 2^(n-k)-by-n. genpoly vector baris yang
memberikan koefisien, dalam bentuk pangkat yang semakin besar dari binary generator
polynomial code. Nilai default genpoly adalah cyclpoly (n, k). Secara definisi, generator
polynomial untuk [n, k] cyclic code harus mempunyai pangkat n-k dan harus membagi xn-1.
2) Cyclpoly
Fungsi: Menghasilkan generator polynomials untuk cyclic code.
Syntax
pol = cyclpoly (n, k)

Description
Dalam MATLAB sebuah polynomial ditunjukkan sebagai baris yang berisi koefisien dalam
bentuk pangkat yang meningkat. Hasil yang didapat akan berupa koefisien yang meningkat
sementara dalam perhitungan manual akan menurun. Fungsi cyclpoly membalik vector baris
mewakili satu nontrivial generator polynomial untuk cyclic code yang mempunyai panjang
codeword n dan panjang message k.
3) conv
Fungsi: Convolution dan perkalian polynomial
Syntax:
w = conv (u,v)
Description:
Fungsi conv mengkonvolusi vektor u dan v. Secara aljabar, konvolusi merupakan operasi
yang sama dengan perkalian polynomial yang koefisiennya adalah elemen u dan v.
4) deconv
Function: Deconvolution dan pembagian polynomial.
Syntax:
[q,r] = deconv (v,u)
Description:
Fungsi Deconv men-deconvolves vector u dari vector v, menggunakan long division. Hasil
bagi dikembalikan ke vector q dan sisa dalam vector r,
v = conv (u,q)+r.
jika u dan v adalah vector

koefisien polynomial, meng-convolve mereka sama dengan

mengalikan dua polynomial dan deconvolution adalah pembagian polynomial. Hasil


pembagian v oleh u adalah hasil bagi q dan sisa r.
1.5 LATIHAN
L.7.1 Misalkan cyclic (7, 4) cyclic code dibangkitkan oleh G(x) = x3 + x + 1.
a) Gunakan long division untuk menghitung check bit polynomial C(x)ketika M = (1 1 0 0).
Tuliskan juga complete code polynomial.
b) Tuliskan kode MATLAB untuk melakukan fungsi diatas. Gunakan fungsi decode dan
kemudian fungsi conv/deconv.
L.7.2 Generator polynomial (7, 4) cyclic codes diberikan oleh G(x) = 1 + x2 + x3. Cari V
dengan pendekatan sistematik jika M(x) = (1 0 0 1). Misal word yang diterima [1 1 1 0 0
1 1]. Cari syndrome vector.

a)
b)
c)

a)
b)
c)
d)
e)

L.7.3 Misal cyclic (7, 4) hamming code dibangkitkan oleh G(x) = x3 + x + 1.


Gunakan pendekatan sistematik untuk mengecek bit polynomial C(x) ketika M = (1 1 0 1).
Juga tuliskan code polynomial komplit.
Tuliskan kode MATLAB untuk mengimplementasikan fungsi bagian (a).
Find the syndrome vectors for the following erroneous received words.
i. 1010101 ii.
1000001
L.7.4 Misal (6, 3) cyclic code. Buat kode MATLAB untuk melakukan perintah berikut.
Bangkitkan generator polynomial.
Tuliskan semua codeword yang mungkin dan encode menggunakan fungsi encode.
Gunakan fungsi decode untuk men-decode semua encoded word.
Munculkan single error pada semua encoded word dan kemudian decode.
Catat semua output yang didapat.

Anda mungkin juga menyukai