Anda di halaman 1dari 25

Nama : Lailatul Faizah

NRP : 1210171022
Kelas : 3 D4 Teknik Telekomunikasi A
PERCOBAAN III
ENCODER DAN DECODER KODE KONVOLUSI
A. Masukan=Pesan=Informasi

B. Proses pengkodean (Encoder)


a. Struktur trellis (3,[6 7])
Coba ubahlah sturktur trellis berturut – turut : (3,5) , (3,[5 9]) , ([3 3],[7 4]) , dan ([3 3],[7
3 1;2 5 4]). Sebutkan struktur trellis yang mana yang berhasil dan mana yang tidak
berhasil? Jelaskan secara teoritis mengapa hal itu bisa terjadi.

b. Struktur trellis (3,5)

c. Struktur trellis (3, [5 9])


d. Struktur trellis ([3 3],[7 4])

e. Struktur trellis ([3 3],[7 3 1;2 5 4])

Analisa :
Pada proses pengkodean, menggunakan metode trellis. Pengaturan pertama,
pencarian trellis disimbolkan dengan “t” dan fungsi yang digunakan pada matlab yakni
“poly2trellis(x,[y])”. Fungsi yang dituliskan yakni t=poly2trellis(3,[6 7]), dimana angka 3
merupakan constraint length ( jumlah shift register ditambah 1), sedangkan [6 7]
menyatakan polynomial generator yang terdiri dari 6 polinomial generator bagian atas
dan 7 polinomial generator bagian bawah.
Pada percobaan diatas, dilakukan pengubahan struktur trellis. Pada saat percobaan
pengubahan Struktur trellis (3,5) adalah berhasil, dikarenakan batas maksimal
polinommial generator pada saat pengaturan adalah 7, dan pada struktur ini masih
kurang dari batas maksimal.
Untuk struktur trellis (3, [5 9]) percobaannya berhasil, dikarenakan batas maksimal
polynomial nya ialah 7 dan terdapat polynomial bagian bawah = 9 yang melebihi batas
maksimal, sehingga untuk struktur trellis ini tidak berhasil.
Untuk struktur trellis ([3 3],[7 4]) memiliki 2 input, sedangkan pada bagian polynomial
generator yang diatur diawal hanya 1 input saja, sehingga struktur trellis ini tidak berhasil
karena melebihi batas inputnya.
Untuk struktur trellis ([3 3],[7 3 1;2 5 4]) memiliki rate 2/3 yaitu terdiri dari 2
input dan 3 output. Trellis ini berhasil, karena polinomial atas dan bawah sesuai dengan
jalur trellis rate 2/3 sehingga trellis tetap bisa dijalankan.

TUGAS A

1. Mengulangi langkah pertama dengan mengganti pesan sejumlah 10 bit, 15 bit dan 20 bit.
Lalu mengkodekan masing-masing pesan 10 bit, 15 bit dan 20 bit tersebut, menggunakan
metode trellis dengan encoder seperti gambar 6.
a. Pesan 10 bit
b. Pesan 15 bit
c. Pesan 20 bit

C. Pengkodean Kembali (Dekoder)


a. Decoder pesan 8 bit
b. Decoder 10 bit
c. Decoder 15 bit
d. Decoder 20 bit
TUGAS B
1. Ulangi langkah 3, dengan mengubah – ubah nilai tb = 4, 7, 9, dan 10
a. Nilai tb = 4

b. Nilai tb = 7
c. Nilai tb = 9
d. Nilai tb = 10
2. Jelaskan secara teoritis, apa yang terjadi dengan perubahan nilai tb?
Jawab : Secara teori, nilai tb merupakan jumlah iterasi. Jumlah iterasi tidak boleh lebih
besar dari keseluruhan jumlah bit yang dikirimkan. Jumlah bit yang dikirimkan adalah
sebanyak 8 bit, sehingga ketika nilai tb lebih dari jumlah bit yang dikirimkan, terjadi error
( pesan tidak dapat dikirimkan )

D. KEMAMPUAN KOREKSI KESALAHAN ( ERROR CONTROL CODING)


Setelah dilakukan encoding tampilkan pesan yang dikirim dan pesan yang diterima
setelah diberi error, amati secara teliti apakah pesan yang dikirim sama dengan pesan
terima? Jelaskan apa yang terjadi pada kode convolusional ?

Jawab :
Pesan yang dikirim sama dengan pesan yang diterima. Noise yang dibankitkan
terjadi tidak secara random, melainkan diberikan penambahan bit error pada
urutan bit tertentu. Pada praktikum diberikan bit error pada urutan bit ke 3 dan
ke 5. Hasil codeword berbeda dengan modul, perbedaannya terletak pada
pemberian noise pada bit-nya, karena bit 3 dan 5 diberi noise bernilai 1, pulse
codeword pada bit 3 dan 5 menjadi 0 ( karena masuk pada XOR ). Setelah diberi
noise maka pesan tersebut diconvolusikan pada variabel pesan_terima_bernois.
dimana akan dimuat pada suatu matriks

a. Penambahan bit error pada pesan 10 bit


b. Penambahan bit error pada pesan 15 bit
c. Penambahan bit error pada pesan 20 bit
PROGRAM KESELURUHAN
%MASUKAN=PESAN=INFORMASI
figure(1);
pesan_kirim=[1 0 1 1 0 1 0 0]
stem(pesan_kirim, 'm');
xlabel('Jumlah Bit Pesan');
ylabel('Amplitudo Bit');
title('Bit Pesan Yang Dikirim');

%ENCODER
%pengkodean poly2trellis (3,[6 7])
figure(2);
t=poly2trellis(3,[6 7]);
codeword=convenc(pesan_kirim,t);
stem(codeword, 'g');
ylabel('Amplitude Codeword');
xlabel('Jumlah Bit Codeword');
title('Bit Hasil pengkodean (3,[6 7])');

%poly2trellis(3,[5]);
figure(3);
t1=poly2trellis(3,[5]);
codeword1=convenc(pesan_kirim,t1)'
stem(codeword1);
xlabel('Amplitude Codeword');
ylabel('Jumlah Bit Codeword');
title('Bit Hasil Pengkodean(3,[5])');

%poly2trellis(3,[5 9]);
%figure(4);
%t2=poly2trellis(3,[5 9]);
%codeword2=convenc(pesan_kirim,t2)'
%stem(codeword2);
%xlabel('Amplitude Codeword');
%ylabel('Jumlah Bit Codeword');
%title('Bit Hasil Pengkodean(3,[5 9])');

%poly2trellis([3 3],[7 4]);


%figure(5);
%t3=poly2trellis([3 3],[7 4]);
%codeword3=convenc(pesan_kirim,t3)'
%stem(codeword3);
%xlabel('Amplitude Codeword');
%ylabel('Jumlah Bit Codeword');
%title('Bit Hasil Pengkodean([3 3],[7 4])');
%poly2trellis([3 3],[7 3 1;2 5 4]);
figure(6);
t4=poly2trellis([3 3],[7 3 1;2 5 4]);
codeword4=convenc(pesan_kirim,t4)'
stem(codeword4);
xlabel('Amplitude Codeword');
ylabel('Jumlah Bit Codeword');
title('Bit Hasil Pengkodean([3 3],[7 3 1;2 5 4])');

%MENGGUNAKAN TRELLIS (4,[11 15])


%pesan 10 bit
figure(7);
subplot(211);
pesan10=[1 0 1 1 0 1 1 0 0 1];
stem(pesan10);
xlabel('Jumlah 10 bit pesan');
ylabel('Amplitudo bit');
title('Bit pesan yang dikirim (stem)');
subplot (212);
t10=poly2trellis(4,[11 15]);
codeword10=convenc(pesan10,t10);
stem(codeword10, 'r');
ylabel('Amplitude Codeword');
xlabel ('Jumlah Bit Codeword');
title ('Bit Hasil Pengkodean');

%pesan 15 bit
figure(8);
subplot(211);
pesan15=[1 0 1 1 0 1 1 0 0 1 1 1 0 1 0];
stem(pesan15);
xlabel('Jumlah 15 bit pesan');
ylabel('Amplitudo bit');
title('Bit pesan yang dikirim (stem)');
subplot (212);
t15=poly2trellis(4,[11 15]);
codeword15=convenc(pesan15,t15);
stem(codeword15, 'r');
ylabel('Amplitude Codeword');
xlabel ('Jumlah Bit Codeword');
title ('Bit Hasil Pengkodean');

%pesan 20 bit
figure(9);
subplot(211);
pesan20=[1 0 1 1 0 1 1 0 0 1 1 1 0 1 0 1 1 1 0 0];
stem(pesan20);
xlabel('Jumlah 20 bit pesan');
ylabel('Amplitudo bit');
title('Bit pesan yang dikirim (stem)');
subplot (212);
t20=poly2trellis(4,[11 15]);
codeword20=convenc(pesan20,t20);
stem(codeword20, 'r');
ylabel('Amplitude Codeword');
xlabel ('Jumlah Bit Codeword');
title ('Bit Hasil Pengkodean');

%DECODER
%decode pesan 8 bit
figure(10);
tb=2;
pesan_terima=vitdec(codeword,t,tb,'trunc','hard');
cek=[pesan_kirim, pesan_terima];
subplot(3,1,1);
stem(pesan_kirim);
title('Bit Pesan Yang Dikirim');
subplot(3,1,2);
stem(codeword);
ylabel('Codeword');
subplot(3,1,3)
stem(pesan_terima);
xlabel('Bit Pesan Terima');

%decode pesan 10 bit


figure(11);
tb=2;
pesanterima10=vitdec(codeword10,t10,tb,'trunc','hard');
cek2=[pesan10, pesanterima10];
[jml_biterr,ratio_biterr]=biterr(pesan10,pesanterima10)
subplot(311)
stem(pesan10);
title('Bit Pesan Yang Dikirim');
subplot(312)
stem(codeword10);
ylabel('Codeword');
subplot(313)
stem(pesanterima10);
xlabel('Bit Pesan Terima');

%decode pesan 15 bit


figure(12);
tb=2;
pesanterima15=vitdec(codeword15,t15,tb,'trunc','hard');
cek3=[pesan15, pesanterima15];
[jml_biterr,ratio_biterr]=biterr(pesan15,pesanterima15)
subplot(311)
stem(pesan15);
title('Bit Pesan Yang Dikirim');
subplot(312)
stem(codeword15);
ylabel('Codeword');
subplot(313)
stem(pesanterima15);
xlabel('Bit Pesan Terima');

%decode pesan 20 bit


figure(13);
tb=2;
pesanterima20=vitdec(codeword20,t20,tb,'trunc','hard');
cek3=[pesan20, pesanterima20];
[jml_biterr,ratio_biterr]=biterr(pesan20,pesanterima20)
subplot(311)
stem(pesan20);
title('Bit Pesan Yang Dikirim');
subplot(312)
stem(codeword15);
ylabel('Codeword');
subplot(313)
stem(pesanterima20);
xlabel('Bit Pesan Terima');

%TUGAS B, mengubah-ubah tb
%tb=4
figure(14);
tb4=4;
pesan_terima1=vitdec(codeword,t,tb4,'trunc','hard');
cek4=[pesan_kirim, pesan_terima1];
[jml_biterr,ratio_biterr]=biterr(pesan_kirim,pesan_terima1)
subplot(311)
stem(pesan_kirim);
title('Bit Pesan Yang Dikirim');
subplot(312)
stem(codeword);
ylabel('Codeword');
subplot(313)
stem(pesan_terima1);
xlabel('Bit Pesan Terima');
%tb=7
figure(15);
tb7=7;
pesan_terima2=vitdec(codeword,t,tb7,'trunc','hard');
cek4=[pesan_kirim, pesan_terima2];
[jml_biterr,ratio_biterr]=biterr(pesan_kirim,pesan_terima2)
subplot(311)
stem(pesan_kirim);
title('Bit Pesan Yang Dikirim');
subplot(312)
stem(codeword);
ylabel('Codeword');
subplot(313)
stem(pesan_terima2);
xlabel('Bit Pesan Terima');

%tb=9
%figure(16);
%tb9=9;
%pesan_terima3=vitdec(codeword,t,tb9,'trunc','hard');
%cek5=[pesan_kirim, pesan_terima3];
%[jml_biterr,ratio_biterr]=biterr(pesan_kirim,pesan_terima3)
%subplot(311)
%stem(pesan_kirim);
%title('Bit Pesan Yang Dikirim');
%subplot(312)
%stem(codeword);
%ylabel('Codeword');
%subplot(313)
%stem(pesan_terima3);
%xlabel('Bit Pesan Terima');

%tb=10
%figure(17);
%tb10=10;
%pesan_terima4=vitdec(codeword,t,tb10,'trunc','hard');
%cek6=[pesan_kirim, pesan_terima4];
%[jml_biterr,ratio_biterr]=biterr(pesan_kirim,pesan_terima4)
%subplot(311)
%stem(pesan_kirim);
%title('Bit Pesan Yang Dikirim');
%subplot(312)
%stem(codeword);
%ylabel('Codeword');
%subplot(313)
%stem(pesan_terima4);
%xlabel('Bit Pesan Terima');

%KEMAMPUAN KOREKDI KESALAHAN


%(error control coding)
figure(18);
pesan_kirim = [1 0 1 1 0 1 0 0];
ta=poly2trellis(3,[6 7]);
codeworda=convenc(pesan_kirim,ta);
N=length(codeworda);
noise=zeros(N,1);
noise([3,5],1)=1;
ncoden=xor(codeworda',noise);
noisecode=fix(ncoden);
tb=2;
pesan_terima_bernoise=vitdec(noisecode,t,tb,'trunc','hard');
[jml_bitter,ratio_bitter]=biterr(pesan_terima_bernoise',pesan_kirim);

subplot(311);
stem(pesan_kirim);
title('Bit Pesan yang dikirim');
subplot(312);
stem(noisecode);
ylabel('codeword dengan noise');
subplot(313);
stem(pesan_terima_bernoise);
xlabel('Bit Pesan yang diterima');

%Menambahkan error pada masing - masing codeword


%pesan 10bit
figure (19);
ta=poly2trellis(4,[11 15]);
codeworderr1=convenc(pesan10,ta);
N1=length(codeworderr1);
noise1=zeros(N1,1);
noise1([4,7,8],1)=1;
ncoden1=xor(codeworderr1',noise1);
noisecode1=fix(ncoden1);
tb=2;
pesan_terima_bernoise1=vitdec(noisecode1,ta,tb,'trunc','hard');
[jml_bitter1, ratio_bitter1] = biterr(pesan_terima_bernoise1', pesan10)

subplot(3,1,1);
stem(pesan10, 'r');
title('10 Bit Pesan yang dikirim');
subplot(3,1,2);
stem(noisecode1, 'y');
title('Codeword dengan noise');
subplot(3,1,3);
stem(pesan_terima_bernoise1, 'g');
title('10 Bit Pesan yang diterima');

%Pesan 15 bit
figure (20);
ta2=poly2trellis(4,[11 15]);
codeworderr2=convenc(pesan15,ta2);
N2=length(codeworderr2);
noise2=zeros(N2,1);
noise2([2,5,9],1)=1,0;
ncoden2=xor(codeworderr2',noise2);
noisecode2=fix(ncoden2);
tb=2;
pesan_terima_bernoise2=vitdec(noisecode2,ta2,tb,'trunc','hard');
[jml_bitter2, ratio_bitter2] = biterr(pesan_terima_bernoise2', pesan15)

subplot(3,1,1);
stem(pesan15, 'r');
title('15 Bit Pesan yang dikirim');
subplot(3,1,2);
stem(noisecode2, 'y');
title('Codeword dengan noise');
subplot(3,1,3);
stem(pesan_terima_bernoise2, 'g');
title('15 Bit Pesan yang diterima');

%Pesan 20bit
figure (21);
ta3=poly2trellis(4,[11 15]);
codeworderr3=convenc(pesan20,ta3);
N3=length(codeworderr3);
noise3=zeros(N3,1);
noise3([2,4,7],1)=1,0;
ncoden3=xor(codeworderr3',noise3);
noisecode3=fix(ncoden3);
tb=2;
pesan_terima_bernoise3=vitdec(noisecode3,ta3,tb,'trunc','hard');
[jml_bitter3, ratio_bitter3] = biterr(pesan_terima_bernoise3', pesan20)

subplot(3,1,1);
stem(pesan20, 'g');
title('20 Bit Pesan yang dikirim');
subplot(3,1,2);
stem(noisecode3, 'r');
title('Codeword dengan noise');
subplot(3,1,3);
stem(pesan_terima_bernoise3);
title('20 Bit Pesan yang diterima');

Anda mungkin juga menyukai