Encoder Dan Decoder Kode Siklik
Tujuan: Setelah melakukan praktikum, diharapkan mahasiswa dapat: -.
Membangkitkan generator siklik dan bit informasi yang telah ditentukan menggunakan matlab.
-.
Menghasilkan code word dari data informasi yang telah ditentukan menggunakan generator polynomial tertentu(pengkodean tertentu(pengkodean data)
-.
Melakukan proses decoding dari codeword yang diperoleh dari proses sebelumnya
-.
Melakukan pengkodean tanpa dan dengan error correction. correcti on.
Dasar Teori Pengertian Kode Siklik
Menurut defenisinya, siklik berarti putaran. Jadi dikatakan kode siklik karena kode-kode vektornya merupakan versi putaran kode vector lainnya, misal: codeword(x n,x0,x1,,xn-1), maka jika diputar(x0,x1,.,xn-1,xn) juga merupakan codeword dari kode siklik. Kode siklik digambarkan sebagai deretan polynomial beserta koefisiennya. Koefisien polinomial inilah yang sangat membantu dalam pembuatan struktur kode siklik. Kode siklik dibagi menjadi 2 macam, yaitu kode siklik sistematik dan nin sistematik. Dan mempunyai struktur (n,k) dengan derajat polynomial tertinggi(n-1).
Kode Siklik Sistematik
Dengan generator polynomial g(x) dari sebuah kode siklik, codeword dapat dibentuk secara matematis dengan rumusan:
Dari persamaan diatas, informasi polynomial d(x) dan check polynomial dapat dinyatakan sebagai berikut:
Dimana, adalah sisa pembagian polynomial berderajat n-k-1 atau kurang, yang diperoleh dari pembagian dengan g(x).
4 Dengan, q(r) adalah hasil bagi r(x) adalah sisa pembagian
Kode Siklik Non Sistematik Pembentukan
kode siklik non sistematis lebih mudah dari pada pembentukan kode silkik
sistematik. Dari generator yang telah didapatkan, dikalikan dengan data informasi untuk mendapatkan mendapatkan codeword non-sistematik. Perbedaan
yang mendasar antara kode siklik sitematik dan non-sistematik adalah codeword
yang dihasilkan oleh encodernya. Pada kode sistematik dan non-sistematik adalah antara bit-bit informasi dengan bit-bit paritynya, sedankan pada kode non-sistemarik tidak dapat dibedakan.
LKarena
sifatnya tersebut, maka kode siklik yang banyak digunakan adalah kode siklik yang
sistematis. 3
Secara blok diagram encoder dengan generator polynomial g(x) = 1+x+x dapat digambarkan pada gambar 1. Sebuah kode siklik (7,4) mempunyai: Generator polynomial g(x)=1+x+x
3
Urutan informasi yang dikirim d= (1100) Informasi polynomial d(x)=1+x 3
3
4
Karena n-k=3, maka didapatkan x , d(x)=x +x
3
Gambar 1. Encoder kode siklik dengan g(x)=1+x+x
3
4
3
Pembagian x
+x dengan g(x)=1+x+x , menghasilkan sisa polynomial.
Jadi code polynomial yang didapat adalah:
sehingga codeword (data yang telah dikodekan) c=(1011100) atau dapat dinyatakan bahwa:
sehingga codeword( codeword( data yang telah dikodekan) c=(1011100)
Proses Decoding Kode Siklik
Secara umum decoder kode siklik dapat ditunjukkan dengan blok diagram seperti gambar 2. Secara prinsip prosedur koreksi kesalahan pada kode siklik( sesuai dengan blok diagram diatas) adalah sebagai berikut: a. Step 1. Vektor yang diterima digeser ke register buffer dan register syndeomw. b. Step 2. Setelah perhitungan syndrome dan semua bir digeser ke buffer, isi register syndrome dibaca oleh detector. Bila output detector=1, maka isi register syndrome berkaitan dengan pole error yang dapat dikoreksi dengan error terletak dibuffer paling kanan.
Gambar 2. Blok Diagram Dekoder Kode Siklik
c. Step3. Digit yang diterima pertama keluar, secara bersamaan isi register syndrome juga digeser keluar, bila bit pertama error output detector akan 1 yang akan digunakan untuk koreksi error pada bit pertama tersebut. Output detector juga digeser ke register syndrome untuk memodifikasi syndrome. Isi syndrome berkaitan dengan isi buffer berikutnya. d. Step4. Syndrome yang baru digunakan untuk mengecek apakah ada kesalahan pada bit kedia seperti hanya pada bit pertama, bika ada, dilakukan koreksi. e. Step5. Proses diatas berlangsung digit demi digit sampai semua vector digeser keluar buffer.
Peralatan Yang Digunakan a.
PC
yang berisi program aplikasi matlab
b. Flash disk, memory card
Data Percobaan 1.
Polinomial, Matrik Generator dan Matriks Parity kode siklik
>> p=cyclpoly(7,4) p=
1
0
1
1
>> [h,g]=cyclgen(7,p) h=
g=
1
0
0
1
1
1
0
0
1
0
0
1
1
1
0
0
1
1
1
0
1
1
0
1
1
0
0
0
1
1
1
0
1
0
0
1
1
0
0
0
1
0
0
1
1
0
0
0
1
2. Encoding dan Dekoding Kode Siklik >> p=cyclpoly(7,4) p=
1
0
1
1
>> [h,g]=cyclgen(7,p) h=
g=
1
0
0
1
1
1
0
0
1
0
0
1
1
1
0
0
1
1
1
0
1
1
0
1
1
0
0
0
1
1
1
0
1
0
0
1
1
0
0
0
1
0
0
1
1
0
0
0
1
>> pesan=[0 0 1 1] pesan =
0
0
1
1
>> codeword=encode(pesan,7,4,'cyclic') codeword=encode(pesan,7,4,'cyclic') codeword =
1 0 1 0
0 1 1
>> pesan_terima= decode(codeword,7,4,'cyclic') decode(codeword,7,4,'cyclic') pesan_terima = 0 0 1 1
>> cek=[pesan pesan_terima'] cek =
0
0
1
1
0
0
1
1
>> cek=[pesan' pesan_terima] cek = 0
0
0
0
1
1
1
1
>> [number,ratio]=biterr(pesan, [number,ratio]=biterr(pesan,pesan_terima') pesan_terima') number
=
0
ratio
=
0
>> subplot(3,1,1) >> stem(pesan,'b') >> title('Pesan Yang Dikirim') >> subplot(3,1,2) >> stem(codeword,'m') >> ylabel('Codeword Tanpa Error') >> subplot(3,1,3) >> stem(pesan_terima,'r') >> xlabel('Pesan Yang Diterima')
Gambar 1. Hasil dari Enkoding Dan Dekoding Kode Siklik (Tanpa Error)
3. Enkoding Dan Dekoding Kode Siklik (Ditambah Dengan Error) >> error=zeros(7,1) error = 0 0 0 0 0 0 0
>> error((5),1)=1 error = 0 0 0 0 1 0 0
>> code_error=xor(error,codeword) code_error =
1 0 1 0 1 1 1
>> code_noise=fix(code_error) code_noise=fix(code_error) code_noise = 1 0 1 0 1 1 1
>> cek=[codeword code_noise] cek = 1
1
0
0
1
1
0
0
0
1
1
1
1
1
>> pesan_terima=decode(c pesan_terima=decode(code_noise,7,4,'cyc ode_noise,7,4,'cyclic') lic') pesan_terima = 0 0 1 1
>> cek_pesan=[pesan' pesan_terima] cek_pesan = 0
0
0
0
1
1
1
1
>> subplot(3,1,1) >> stem(pesan,'b') >> title('Pesan Yang Dikirim') >> subplot(3,1,2) >> stem(pesan_terima,'m') >> stem(code_noise,'r') >> ylabel('Codeword Dengan 3 Bit Error')
>> subplot(3,1,3) >> stem(pesan_terima,'r') >> xlabel('Pesan Yang diterima'
Gambar 2. Hasil dari Enkoding Dan Dekoding Kode Siklik (Ditambah Dengan Error)
Analisa
1.
Polinomial, Matrik Generator dan Matriks Parity kode siklik
>> p=cyclpoly(7,4) p=cyclpoly(7,4)
: Membangkitkan Membangkitkan polynomial kode siklik (7,4) dengan MATLAB, Menunjukkan Menunjukkan bahwa polinomial yang diperoleh adalah p
>> [h,g]=cyclgen(7,p) : Membangkitkan Membangkitkan matrik parity dan matrik generator kode siklik (7,4) dengan MATLAB.
2.
Enkoding Dan Dekoding Kode Siklik (Tanpa Error) >> p=cyclpoly(7,4) p=cyclpoly(7,4)
: Mengamati hasil pengkodean(encoding) pengkodean(encoding) kode siklik
>> [h,g]=cyclgen(7,p) [h,g]=cyclgen(7,p) >> pesan=[0 0 1 1] >> codeword=encode(pe codeword=encode(pesan,7,4,'cyclic san,7,4,'cyclic') ') >> pesan_terima=decod pesan_terima=decode(codeword,7,4,'c e(codeword,7,4,'cyclic') yclic')
: Mengamati hasil pengkodean pengkodean kembali(decoding) kembali(decoding) kode siklik
>> cek=[pesan pesan_terima'] pesan_terima']
: Mengecek hasil pesan yang dikirim dengan pesan yang diterima setelah mengalami proses coding dan decoding.
>> cek=[pesan' pesan_terima] >> [number,ratio]=biterr(pesan, [number,ratio]=biterr(pesan,pesan_terim pesan_terima') a') >> subplot(3,1,1)
: Mengamati bit error dan rationya
: Mengeplot Mengeplot pesan tanda noise
>> stem(pesan,'b') stem(pesan,'b') >> title('Pesan Yang Dikirim') >> subplot(3,1,2 s ubplot(3,1,2)) >> stem(codeword,'m')
>> ylabel('Codeword Tanpa Error') >> subplot(3,1,3 s ubplot(3,1,3)) >> stem(pesan_terima,'r') stem(pesan_terima,'r') >> xlabel('Pesan Yang Diterima')
3. Enkoding Dan Dekoding Kode Siklik (Ditambah Dengan Error)
>> error=zeros(7,1) error=zeros(7,1)
: Menambahk Menambahkan an error pada pada bir bir ke 5 pada pada codeword codeword sebelumnya sebelumnya
>> error((5),1)=1 >> code_error=xor(error,cod code_error=xor(error,codeword) eword) : Menambahkan Menambahkan noise pada codeword >> code_noise=fix(code_error) >> cek=[codeword code_noise] >> pesan_terima=decode(code_ pesan_terima=decode(code_noise,7,4,'cyclic noise,7,4,'cyclic') ') : Mengecek hasil code dan code terima setelah ditambah dengan error >> cek_pesan=[pesan' pesan_terima] >> subplot(3,1,1) subplot(3, 1,1)
: Mengeplot pesan_terima dengan noise
>> stem(pesan,'b') stem(pesan,'b') >> title('Pesan Yang Dikirim') >> subplot(3,1,2 s ubplot(3,1,2)) >> stem(pesan_terima,'m') stem(pesan_terima,'m') >> stem(code_noise,'r') stem(code_noise,'r') >> ylabel('Codeword Dengan 3 Bit Error') >> subplot(3,1,3 s ubplot(3,1,3)) >> stem(pesan_terima,'r') stem(pesan_terima,'r') >> xlabel('Pesan Yang diterima'