Anda di halaman 1dari 15

LAPORAN SISTEM

KOMUNIKASI
BLUETOOTH
Dibuat Oleh:

Yogi Adi Chandra

(25012.55401.13.028)

ENCODER DAN DECODER KODE SIKLIK


1. Tujuan :
Setelah melakukan praktikum, diharapkan mahasiswa dapat:
Membangkitkan generator siklik dan bit informasi yang telah

ditentukan menggunakan matlab.


Menghasilkan codeword dari data informasi yang telah ditentukan

menggunakan generator polinomial tertentu(pengkodean data).


Melakukan proses decoding dari codeword yang diperoleh dari

proses sebelumnya.
Melakukan pengkodean tanpa dan dengan error correction.

2. 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(xn,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:
C=(_0,_1,...,_(n-k-1),d_0,d_1,,d_(k-1))
Dari persamaan diatas, informasi polynomial d(x) dan check polynomial _((x))
dapat dinyatakan sebagai berikut:
d(x)=d_0+d_1 x+ +d_(k-1) x^(k-1)
(x)=_0+_1 x+ +_(n-k-1) x^(n-k-1)

Dimana, _((x)) adalah sisa pembagian polynomial berderajat n-k-1 atau kurang,
yang diperoleh dari pembagian x^(n-k) d(x) dengan g(x).
x^(n-k) d_((x)):g(x)=q(x)=r(x)
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 codeword non-sistematik.
Perbedaan yang mendasar antara kode siklik sitematik dan non-sistematik
adalah codeword yang dihasilkan oleh encodernya. Pada kode sistematik dan nonsistematik adalah antara bit-bit informasi dengan bit-bit paritynya, sedankan pada
kode non-sistemarik tidak dapat dibedakan. Karena sifatnya tersebut, maka kode
siklik yang banyak digunakan adalah kode siklik yang sistematis.
Proses Encoding Kode Siklik
Secara blok diagram encoder dengan generator polynomial g(x) = 1+x+x3 dapat
digambarkan pada gambar 1.
Sebuah kode siklik (7,4) mempunyai:
Generator polynomial g(x)=1+x+x3
Urutan informasi yang dikirim d= (1100)
Informasi polynomial d(x)=1+x
Karena n-k=3, maka didapatkan x3, d(x)=x3+x4

Gambar 1. Encoder kode siklik dengan g(x)=1+x+x3


Pembagian x3+x4 dengan g(x)=1+x+x3, menghasilkan sisa polinomial :
(x)=1+x^2
Jadi code polynomial yang didapat adalah:
c(x)=1+x^2+x^3+x^4
sehingga codeword (data yang telah dikodekan) c=(1011100) atau dapat
dinyatakan bahwa:
c(x)=d(x).g(x)=(1+x)(1+x+x^3 )=1+x^2+x^3+x^4
sehingga 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
syndrome.
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.
3. Perangkat Yang Digunakan :
a. PC yang berisi program aplikasi matlab
b. Flash disk, memory card

4. Langkah-langkah Percobaan :
A. Polinomial, matriks generator, dan matriks parity kode siklik
A.1 Membangkitkan polinomial kode siklik (7,4) dengan MATLAB

>> p=cyclpoly(7,4)

Fungsi cyclpoly yaitu menghasilkan polinomial generator kode siklik dengan


menentukan nilai (n,k) dengan panjang codeword(n) dan panjang pesan(k).
1. Kode siklik (n,k) dibutuhkan generator dengan derajat polinomial tertinggi
(n-k). Untuk kode siklik (7,4) derajat polinomial generator tertinggi yang
diperoleh dari percobaan adalah 3. Berdasarkan teori derajat polinomial
tertinggi dapat diperoleh dengan (n-k), sehingga pada percobaan nilai
generator tertinggi bernilai 3, sesuai seperti teori yang telah ada.
A.2 Membangkitkan matrik parity dan matrik generator kode siklik (7,4)
dengan MATLAB
>> [h,g]=cyclgen(7,p)

Fungsi cyclgen yaitu menghasilkan parity-check dan matrik generator kode


siklik.
2. Mengulangi langkah A.2 dengan polinomial p yang lain
>> p1=[1 0 1 1 0]

>> [h1,g1]=cyclgen(7,p1)

Pada polinomial p1, nilai h1 dan g1 dapat diketahui hasilnya dengan fungsi
cyclgen karena nilai polinomial p1 masih memenuhi syarat polinomial generator
pada kode siklik yang memiliki derajat (n-k).
>> p2=[1 1 0 1 1 0]

>> [h2,g2]=cyclgen(7,p2)

Pada polinomial p2 dan polinomial p3 terjadi error pada saat pemanggilan


fungsi cyclgen, hal ini terjadi karena nilai yang dibangkitkan melebihi batas
syarat n-k.
>> p3=[1 0 1 1 1 0]

>> [h3,g3]=cyclgen(7,p3)

Berdasarkan teori yang ada, nilai p adalah nilai polinomial generator, h dan g
merupakan sebuah matrik yang didalamnya terdapat matrik generator polinomial
dan matrik parity.
B. Enkoding dan dekoding kode siklik (tanpa error)
B.1 Mengamati hasil pengkodean (encoding) kode siklik
>> p=cyclpoly(7,4)

Fungsi cyclpoly yaitu menghasilkan polinomial generator kode siklik dengan


menentukan nilai (n,k) dengan panjang codeword(n) dan panjang pesan(k).

>> [h,g]=cyclgen(7,p)

Fungsi cyclgen yaitu menghasilkan parity-check dan matrik generator kode


siklik.
>> pesan=[0 0 1 1]

>> codeword=encode(pesan,7,4,'cyclic')

Fungsi encode yaitu mengkodekan pesan menggunakan metode koreksi


kesalahan.
3. Pola dari hasil pengkodean yaitu bit parity ditambah dengan pesan
kaitannya dengan struktur kode siklik yaitu d(x).g(x) , dimana fungsi d(x)
adalah informasi polinomial dan g(x) adalah generator polinomial. Pada
percobaan diatas sudah memenuhi struktur kode siklik yaitu dengan 0011
adalah pesan dan 101 adalah parity.
4. Mengulangi langkah B.1 dengan mengganti pesan menjadi msg=[00111]
>> pesan1=[0 0 1 1 1]

>> codeword1=encode(pesan1,7,4,'cyclic')

Fungsi encode yaitu mengkodekan pesan menggunakan metode koreksi


kesalahan. Pengkodean dari pesan1 diatas berjumlah 5 bit, berbeda dari
percobaan sebelumnya yang berjumlah 4 bit. Berdasarkan teori, pesan1 tersebut
terdiri dari bit parity dan pesan informasi yang disampaiakan

B.2 Mengamati hasil pengkodean kembali (decoding) kode siklik


>> pesan_terima=decode(codeword,7,4,'cyclic')

Fungsi decode yaitu mengkodekan kembali pesan dengan teknik dan parameter
yang sesuai pada saat proses mengkodekan sinyal asli.

>> cek=[pesan pesan_terima]

>> cek=[pesan' pesan_terima']

>> [number,ratio]=biterr(pesan',pesan_terima')

% Mengeplot pesan tanda noise =

5. Mengecek hasil pesan yang dikirim dengan pesan yang diterima setelah
mengalami proses coding dan decoding, hasilnya yaitu pesan diterima
sama dengan pesan yang dikirim yang juga telah melalaui proses encode
dan decode. Hal tersebut terjadi karena pada saat decoding terjadi proses
deteksi dan koreksi tiap bit informasi , dimana sebelumnya pada proses
encoding terjadi penambahan parity dan pesan.
C. Enkoding dan dekoding kode siklik (Ditambah dengan error)
>> %untuk mempermudah pengamatan,codeword tanpa error diambil dari
percobaan sebelumnya
>> %tambahkan error pada bit ke 5 pada codeword sebelumnya
>> error=zeros(7,1);

>> error([5],1)=1

>> code_error=xor(error,codeword')

>> code_noise=fix(code_error)

>> cek=[codeword' code_noise]

6. Mengecek hasil code dan code terima , setelah ditambah dengan error,
hasilnya pada bit ke 5 terjadi perbedaan pada bagian codeword . Peristiwa
tidak samanya codeword ini disebabkan karena penambahan error

>> pesan_noise=decode(code_noise,7,4,'cyclic')

>> cek_pesan=[pesan' pesan_noise]

%mengeplot pesan_terima dengan noise

7. Mengecek pesan sebelum dikodekan maupun setelah dikodekan , hasil


perbandingan tersebut adalah pesan sebelum dan setelah dikodekan tidak
terpengaruh oleh bit error yang ditambahkan pada informasi yang
diterima. Hal tersebut terjadi karena pada proses decoding terdapat proses
koreksi kesalahan. Sehingga hasil yang dikirim dan yang diterima sama.

Anda mungkin juga menyukai