NRP : 1210171022
Kelas : 3 D4 Teknik Telekomunikasi A
PERCOBAAN III
ENCODER DAN DECODER KODE KONVOLUSI
A. Masukan=Pesan=Informasi
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
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 )
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
%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])');
%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');
%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');
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');
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');