PERCOBAANV METODE DETEKSI DAN KOREKSI PADA KODE SIKLIK 1. Tujuan : Setelah melakukan praktikum, diharapkan mahasiswa dapat :
Membangkitkan generator siklik dan bit informasi untuk kode CRC-12 menggunakan matlab.
Menghasilkan codeword dari data informasi yang telah ditentukan menggunakan generator polinomial CRC-12.
Melakukan proses decoding dari codeword yang diperoleh dari proses sebelumnya dengan menambahkan error pada codeword tsb.
Melakukanerror correctionpadaprosespengkodeansiklik.
2. TeoriPenunjang : 2.1 MetodeDeteksi Error Secaraumumdikenal 2 metodependeteksian error yang sederhana, yaitu : Vertical Redundancy Check (VCR) dan Longitudinal Redundancy Check (LCR), keduasisteminimenggunakan bit parity untukmendeteksikesalahan. 2.2 MetodeKoreksi Error Sistemperbaikanerror
atau
controladalahmengupayakan
yang
dikenaldenganistilaherror
agar
data
yang
telahberubahdalamtransmisidiperbaikisebelumdiproseslebihlanjut. Error dapatdikoreksidengan 2 prinsipmetode, yaitu :Sistem Automatic Repeat Request
(ARQ)
danSistem
Forward
Error
Correction
Padakodesiklikdigunakansistem
(FEC). FEC
dalammengoreksikesalahan.Sisteminiperbaikanakandilakukanoleh
decoder
tanpamelakukantransmisibalik, selainitujugaakanmenentukanlokasidanperbaikan
error
Dengansisteminidapatdicapaiefisiensikarenatidakterdapat sepertipadasistem
ARQ.
yang
terjadi. delay
Metodedeteksidankoreksipadakodesiklik,
akandilakukandengancaramenghitungsindrom, untukmengetahuiapakah word r (received word) yang diterimamerupakancodeword c yang sesuaiataubukan. Bilahasilperhitungansindromadalahnolmaka word r merupakancodeword yang dikirimkan.Sebaliknyajikahasilperhitungansindrombukannol, berarti word r mengandung error yang membutuhkan proses koreksi. 2.3 PerhitunganSindromKodeSiklik Perhitungansindromdapatdilakukandenganmenggunakanpersamaanpersamaanberikut : r ( x ) d ( x).g ( x) s ( x)......... .......... .......... .......... .......... .......... .......... ..(1)
dengan, r(x) adalah word r yang diterima. g(x) adalah generator matriks s(x) adalah sisa pembagian (merupaka sindrom s yang dicari) atau dapat dinyatakan dengan : s(x) = r(x) mod g(x) = s0+s1x+…+sn-k-1xn-k-1 ……………………………………......(2) Dari persamaan tersebut, nilai s(x)=0 apabila nilai r(x)=c(x) dan apabila nilai s(x) tidak sama dengan 0 maka r(x) bukan merupakan codeword c(x) yang diharapkan karena masih terdapat error e(x). r(x) = c(x) + e(x) ……………………………………………..….....(3) Contoh 1 : Sebuah kode siklik (7,4) mempunyai generator polinomial g(x) = 1+x+x3, maka matrik generator ditunjukkan seperti persamaan berikut : 1101000 0110100 G 0011010 1010001 Sedangkan parity check matriknyaadalah :
1001011 H 0101110 0010111
Apabila word yang diterimaadalah r = (1011011), makadapatdihitung :
s H * rT 1 0 1001011 1 0101110.1 (001) 0010111 0 1 1 Jadipolinomialsidrom s(x)=x2merupakansisapembagiandari r(x) dengan g(x) :
r ( x) (1 x 2 x 3 x 5 x 6 ) /(1 x x 3 ) ( x 3 x 2 x 1) g ( x) x 2 Contoh2 : Contoh proses decoding untukkodesiklikC(7,4) dengan generator polinimial g(x)= 1+x2+x3,
denganassumsibahwasi(x) menunjukkansindromdarixir(x).
Data/informasi awal d(x)= 1+x+x2, maka diperoleh codeword c(x) = 1+x+x5. Setelah codeword tersebut dikirimkan, ternyata yang diterima adalah word r(x)= 1+ x+x5+x6. Untuk mendeteksi dan mengoreksi error yang muncul maka dilakukan perhitungan : r(x)=(x3+1)g(x)+(x+x2) maka, s(x)= x+x2 Karena w(s(x)>1 (sindrom hasil siklik), maka dihitung sindrom s1(x) dengan cara : Word r(x) = (1100011) digeser secara siklik menjadi (1110001). r(x) = (1+ x+x2+x6)/( 1+x2+x3) = (x3+x2+x)g(x)+1 maka, s(x) = 1 Kemudian dicari nilai t (error trapping) dengan : deg s(x)=2=n-k-1, maka t = x.s(x)-sn-k-1.g(x) = x2+x3 –1(1+x2+x3) = 1 Sekarang w(s(x) 1, sehingga pola error dapat diketahui : e(x) = xn-1(si,0) = x7-1(si,0)
= x6(1000000) = (0000001) Jadi codeword yang benar dapat diperoleh dari : c(x) = r(x) – e(x) = (1100011) – (0000001) = (1100010)
3. CRC (Cyclic Redundancy Ceck)
4. TUGAS DALAM PRAKTIKUM : Buatlah program (m-file) kode siklikuntuk kode CRC-12 pada permasalahan dibawah ini : 1. Bangkitkan pesan secara random integer (banyak bit pesan sesuai dengan CRC-12). 2. Kodekan pesan tersebut menggunakan kode siklik dengan struktur sesuai dengan CRC-12. 3. Tambahkannoisedengan cara menambahkan2 bit(1) error, 3 bit(1) error dan 5 bit (1) error pada codeword 4. Kodekankembalicodeword yang sudahditambahdengannoise 5. Tampilkancodehasilencoding
dan
pesan
hasildecoding,
baiksebelumditambahnoisemaupunsetelahditambahdengannoise 2 bit, 3bit dan 5 bit error. 6. Deteksi error pada codeword yang telahditambahdengannoise pada point 3, dengan cara menghitungsindromsesuaipersamaan (2). 7. Berianalisatentangdeteksi error tersebutdiatas dan berapa bit error maksimum yang dapatdiperbaiki.
Contohpermasalahansindrom : Sebuah kode siklik (7,4) mempunyai generator polinomial g(x) = 1+x+x3. Jikadiketahui, Codeword :r = (1 0 1 1 0 1 1) r ( x) 1 x 2 x 3 x5 x 6 Tentukaninformasi yang dikirimdanapakahadasindrom (error) didalamcodeword r(x) tersebut.
Jawab : Codeword : r ( x ) d ( x).g ( x ) s ( x )
Listing Program p=cyclpoly(20,8) [h,g]=cyclgen(20,p) pesan=[1 1 0 0 1 0 1 0] codeword=encode(pesan,20,8,'cyclic') pesan_terima=decode(codeword,20,8,'cyclic'); n=length(codeword); error=zeros(n,1); %error([7],1)=1; error([1:5],1)=1; error' code_error=xor(error,codeword'); code_noise=fix(code_error); code_noise' cek=[codeword' code_noise] pesan_terima=decode(code_noise,20,8,'cyclic'); pesan_terima' sindrom=mod(code_noise,p) subplot(3,1,1) stem(pesan,'b') title('Pesan Yang Dikirim') subplot(3,1,2) stem(code_noise,'m') ylabel('Codeword Dengan 3 Bit Error') subplot(3,1,3) stem(pesan_terima,'r') xlabel('Pesan Yang Diterima')
Hasil Keluaran