Simulasi Kinerja BER pada Kanal AWGN dan Kanal Fading

Semester kemarin saya mengambil mata kuliah ET4081 – Sistem Komunikasi Seluler dengan dosen Pak Adit Kurniawan. Pada akhir masa kuliah, kami diberi tugas akhir untuk men-simulasikan kinerja bit error rate (BER) pada kanal AWGN dan kanal fading. Tugas ini dikerjakan berkelompok (saya, Timor, Copi, Fadel).

So, begini permasalahannya:

Untuk verifikasi formula BER pada kanal AWGN, dibuat simulasi komputer dengan menggunakan perangkat lunak MATLAB untuk melihat kinerja BER tersebut pada komunikasi digital. Simulasi dilakukan untuk nilai-nilai Eb/No = 0, 2, 4, 6, dan 8 dB. Bit error dihitung secara Monte Carlo sebanyak 5 kali run simulasi untuk masing-masing nilai Eb/No tersebut. Kemudian, kurva BER vs Eb/No hasil simulasi Monte Carlo digambarkan dan dibandingkan dengan kurva teoritis.

Pertama-tama, kita lihat dulu kurva teoritis untuk menentukan jumlah bit dengan minimal 10 error. Kurva teoritis dapat ditampilkan di MATLAB dengan script berikut:

figure(1);
SNR = [0:2:10];
i = 1:length(SNR);
BER(i)= 0; t = [0:0.1:10];
Pe = 0.5*erfc(sqrt( 10.^(t./10)));      %BER teoritis
semilogy(t, Pe, ‘blue”);                           %Plot data secara logaritmik
grid on;
title(‘BER vs SNR (AWGN)’);
xlabel(‘SNR (dB)’);
ylabel(‘Bit Error Rate (BER)’);

(script ini diperoleh dari modifikasi script yang ada di bagian paling terakhir)

Kurva teoritis BER vs SNR untuk kanal AWGN

Pada posting ini, sebagai contoh akan dilakukan simulasi untuk SNR = 4dB saja. Dari kurva teoritis tersebut terlihat bahwa untuk SNR 4dB, BER teoritis adalah 0.0125, sehingga untuk minimal 10 error jumlah bit yang harus diuji adalah 1000 bit.

Simulasi dilakukan dengan menggunakan script berikut:

N = 1000;                                        %Jumlah bit = 1000
SNR = 4;                                           %SNR = 4 dB
signal = sign(randn(1, N));      %Generate sinyal random NRZ bipolar 1V
t=1:length(signal);
figure(1); plot(t, signal);           %Menampilkan sinyal yang dibangkitkan
noise = randn(1, N)./10^(SNR/20)./sqrt(2);      %Generate noise
figure(2); plot(t, noise);                                                %Menampilkan noise    
r = signal + noise;         %r = sinyal yang tercampur noise
figure(3); plot(t, r);      %Menampilkan sinyal yang tercampur noise
r = sign(r);               
err = sum(abs(signal-r)/2)      %Menghitung jumlah error

(script ini diperoleh dari penjelasan dosen di kelas)

Bit error dihitung secara Monte Carlo sebanyak 5 kali run simulasi. Proses Monte Carlo sebanyak 5 kali dilakukan karena proses ini bersifat acak, sehingga untuk memperoleh hasil yang akurat perlu diambil beberapa sampel. Simulasi memberikan hasil sebagai berikut:

Hasil simulasi untuk SNR 4dB pada kanal AWGN

Lima kali run simulasi memberikan hasil bit error sebanyak 8, 18, 12, 18, dan 11, sehingga rata-rata bit error adalah sebanyak 13,4 bit dari setiap 1000 bit sinyal yang dibangkitkan. Sehingga dari simulasi ini diperoleh BER = 0.0134, cukup dekat dengan BER teoritis.

Untuk membandingkan kurva teoritis dan kurva hasil simulasi, dapat dilakukan secara manual dengan membuat grafik setelah simulasi pada semua nilai SNR dilakukan. Namun, dapat juga dilakukan dengan menggunakan script seperti berikut:

figure(1);
clear; clf;
N = [1000 1000 1000 10000 100000 1000000];
%Jumlah bit untuk minimal 10 error
SNR = [0:2:10];                  %SNR = 0, 2, 4, 6, 8, dan 10 dB
for i = 1:length(SNR);      %Loop untuk 5 kondisi SNR
    BER(i) = 0;                        %Inisiasi nilai BER untuk kasus i (i = 1,2,3,4,5)
    N(i);
    for j = 1:5                           %Monte Carlo sebanyak 5 kali
        signal = sign(randn(1, N(i)));      %Generate sinyal random NRZ bipolar 1V
        noise = randn(1, N(i))./10^(SNR(i)/20)./sqrt(2);      %Noise AWGN
        r = signal + noise;      %Sinyal yang tercampur noise
        r = sign(r);
        err(i) = sum(abs(signal-r)/2);      %Hitung error kasus ke-i
        BER(i) = BER(i) + err(i);                   %Simpan nilai error kasus ke-i
    end
    BER(i) = BER(i)/(5*N(i));                    %Hitung rata-rata error
end
t = [0:0.1:10];
Pe = 0.5*erfc(sqrt( 10.^(t./10)));       %Nilai error teoritis
semilogy(t, Pe, ‘blue’, SNR, BER, ‘r-*’);      %Kurva teoritis dan hasil simulasi
grid on;
title(‘BER vs SNR (AWGN)’);
xlabel(‘SNR (dB)’);
ylabel(‘Bit Error Rate (BER)’);

(script ini diperoleh dari sini :) )

Perbandingan antara kurva teoritis (biru) dan kurva hasil simulasi kanal AWGN (merah)

Untuk yang kanal fading, begini permasalahannya:

Simulasi komputer dibuat untuk mensimulasikan kanal fading pada nilai Eb/No = 0, 5, 10, 15, 20, dan 25 dB. Simulasi dilakukan untuk Doppler shift fD = 30Hz, serta laju data = 10Kbps. Fading simulator telah diberikan dalam fungsi MATLAB oleh dosen.

Simulasi kedua ini serupa dengan yang sebelumnya. Namun, pada simulasi ini diberikan fading yang berupa fungsi dari jumlah bit, doppler shift, dan periode bit. Fading ini nantinya akan dikalikan pada sinyal yang di-generate. Jangan lupa untuk mengubah persamaan BER teoritis menjadi persamaan BER pada kanal fading. Kemudian, untuk menentukan jumlah bit, selain melihat kurva teoritis dilakukan pula perhitungan dengan persamaan:

selanjutnya jumlah bit yang digunakan adalah hasil yang terbesar antara kurva teoritis dan perhitungan di atas.

Yap, sekali-sekali deh posting hal yang berisi. :P

Sambil belajar, sambil inget-inget, sambil sharing juga.

Semoga berguna buat yang baca… :)

Review Semester VIII

My last semester has ended, yeay!!!

Semester ini saya mengambil 6 mata kuliah dengan 16 SKS.

  • EL3008 – Pengolahan Citra Digital (3 SKS)

Kuliahnya menarik, walaupun ini blunder terbesar saya semester ini. Maklum ga ngerti apa-apa tiba-tiba ambil kuliah kayak gini. Hahahaaa…

Selama perkuliahan nanti bakal dikasi sekitar 7 modul praktikum untuk dikerjakan setiap minggunya. Dari praktikum-praktikum mandiri itu akhirnya saya bisa menggunakan MATLAB untuk mengolah citra, merekonstruksi, meng-enhance, dan lain-lan. Seru deh pokoknya. Belajar photoshop pake MATLAB. Asal tahan aja dengan modul-modul praktikumnya. Berhubung udah lama ga praktikum dan buat laporan, ya jadi agak malas juga sih waktu itu.

UTS nya berupa tugas untuk membuat program untuk mengonvolusi matriks mxn dengan program selain MATLAB. Tidak mudah tapi tidak terlalu susah juga karena program serupa sudah banyak ada internet. Saya menggunakan bahasa C karena cuma itu yang saya ketahui.

UAS nya berkelompok dan memilih topik. Kelompok saya melakukan studi literatur pada metode Model-Based Iterative Reconstruction (MBIR) untuk aplikasi pengurangan dosis CT Scan.

Kuliah yang sangat membuka wawasan karena dari sini saya jadi tahu kalau pengolahan citra itu sangat luas dan banyak gunanya, mulai dari rekonstruksi citra, pengurangan dosis pada CT Scan, aplikasi medis, pemilahan bahan, hand-writing recognizer, dan lain-lain.

  • EL3010 – Arsitektur Sistem Komputer (3 SKS)

Kuliah yang super menarik banget. Yang dari nol ga ngerti apa-apa akhirnya saya mengerti sesuatu. Dosennya super baik dan menjelaskan materi dengan super clear. Andai kuliah ini diberikan sebelum kuliah Algoritma dan Struktur Data. :(

Di kuliah ini, saya belajar alokasi memori, floating point, cache memory, dan sebagainya. UTS dan UAS nya tidak terlalu susah asalkan rajin berlatih dari kuis dan latihan soal yang sudah diberikan oleh dosen.

  • EL4004 – Biomekanika (3 SKS)

Kuliah yang menarik. Lagi-lagi saya ambil kuliah biomedik di semester terakhir ini. Secara teori, di kuliah ini hanya dipelajari fisika kinematika dinamis dan statis. Cukup mudah seharusnya, tapi berhubung udah lama ga menyentuh fisika-fisikaan seperti ini, jadi harus di refresh lagi deh. Gaya, torsi, momen, dan sebagainya.

Kuliah ini diajar oleh 3 dosen: seorang dosen dari mesin mengajarkan tentang kinematika, seorang dosen dari farmasi dan seorang dokter lebih menjelaskan pada aplikasinya. Dari kuliah ini saya akhirnya tau bagaimana ilmu biomekanika sangat penting bagi manusia.

Misalnya: saya jadi tau kalau lari itu harus pake sepatu lari. Sepatu lari itu yang ringan dan tidak keras. Penggunaan alas kaki yang salah dalam lari dapat menyebabkan rusaknya sistem tubuh karena tulang punggung merupakan shock-breaker alami kita. Apabila kita berlari menggunakan alas yang keras dan berat, tentunya tulang punggung akan menerima gaya yang besar dan kemudian rusak.

Dan masih banyak lagi yang dibahas di kuliah ini. Jalan, renang, volley, sepakbola, basket. Nice banget deh! :)

  • ET4081 – Sistem Komunikasi Seluler (3 SKS)

Kuliah ultimate telkom nih. Semua ilmu yang udah dipelajari sekitar dua tahun di telkom tumplek plek plek plek di sini. Komdat, jartel, siskom, pengsin, probstat ada semua deh di sini. Bener-bener kuliah yang menarik dan banyak ilmunya.

Di kuliah ini saya mempelajari tentang konsep selular, fading dan multipath, multiple access, dan CDMA. Evaluasi dilakukan beberapa kali, terdapat empat kali kuis, satu UTS, satu UAS, dan satu tugas besar. Walaupun kuliahnya susah, tapi untuk kuis dan ujian dapat dipelajari dari latihan-latihan yang terdapat di slide dan buku acuan. Tugas besarnya dikerjakan berkelompok. Cukup mudah. Mengenai simulasi fading pada kanal AWGN dan kanal rayleigh. Nanti yaa dibahas kapan-kapan. :)

BTW, sampai saat ini, baru nilai kuliah ini saja yang keluar. Alhamdulillah dapet A. Sementara ini IP masih 4 deh, semoga gini terus ampe semua nilai keluar. (norak, blom pernah sih -_-)

  • ET4091 – Kerja Praktek

Kerja Praktek ini sebenernya sudah saya lakukan pertengahan tahun 2010, namun baru saya ambil SKS nya semester ini. Sayang sekali, dengan pergantian sistem yang baru saja diterapkan, akhirnya saya harus presentasi KP hari Kamis nanti. Udah lewat setahun, udah lupa mamaaa T__T

  • ET4096 – Tugas Akhir I

Baru ambil tugas akhir satu karena kredit SKS baru mencukupi di semester ini. Maklum semester-semester sebelumnya banyak ngulang pelajaran. TA I tergolong santai. Mencari pembimbing dan topik TA, membuat proposal, membuat progress report, dan seminar.

Sekian deh review semester 8. Saat ini saya sedang semester pendek dan mengambil Tugas Akhir II supaya bisa lulus Oktober. amin amin amin…