BAB V PENUTUP
5.2 Saran
Untuk mendapatkan hasil simulasi yang lebih baik dan mencerminkan sistem yang sebenarnya di lapangan, perlu penambahan parameter-parameter yang dilibatkan dalam simulasi antara lain:
1. Penggunaan pengkodean kanal (channel coding/decoding) untuk mendapatkan nilai BER yang minimum.
2. Penganalisisan dilakukan tidak hanya pada bit-bit sebagai data input masukan tetapi gambar/trafik atau suara.
DAFTAR PUSTAKA
1. Y. Zhou, Tung-Sang, J. Wang, K. Higuchi dan M. Sawahashi. 2008. Jurnal IEEE.
OFCDM : A Promising Broadband Wireless Access Technique. 12 : 38–49.
2. Hara, Shinsuke dan Prasad, Ramjee. 2003. Multicarrier Techniques for 4G
Mobile Communications. London : The Artech House Universal Personal
Communication Series.
3. Srihartanti, Endang. 2008. Analisa Penurunan PAPR Menggunakan Kombinasi
Carrier Interferometry Codes dan Metode Iterative Processing pada OFDM.
Surabaya : Tugas Akhir, Jurusan Teknik Elektro, Institut Teknologi Sepuluh Nopember.
4. Harada, Hiroshi dan Prasad, Ramjee. 2003. Simulation and Software Radio for
Mobile Communications. London : The Artech House Universal Personal
Communication Series.
5. Ilyas, Tito. 2008. Paper-OFDM. OFDM Pada Komunikasi Digital Pita Lebar. 5 : 1-5.
6. Usman, U.K. 2008. Modul : 02, PT3733 Teknologi Jaringan Nirkabel,
Konsep Dasar Sistem Cellular. Bandung : Program Studi D3 Teknik Switching
dan Jaringan, Jurusan Teknik Elektro – Institut Teknologi Telkom.
7. H. Suzuki dan K. Fukawa. 2006. Final Report of Telecommunication
Engineering Training. Lecture Note Developing on Simulation Programming
8. Y. Huang, C. Tsai dan K. Liu. 2007. Jurnal IEEE. Performance of Multiuser
Detection for 2-D Spreading Coded OFCDM Communication Systems Over Frequency and Time Selective Fading Channels. 4 : 271-274.
9. M. Inamori, N. Haruki dan Y. Sanada. 2008. Jurnal IEEE. Fractional Sampling
OFCDM with Alternative Spreading Code. 5 : 1394-1398.
10. Y. Zhou, J. Wang dan Tung-Sang. 2007. Jurnal IEEE. Two Dimensionally
Spread OFCDM Systems for 4G Mobile Communications. 4 : 1-4.
11. Kuncoro. 15/1/2009. “OFCDM”
12. Garg, Vijay K. 2001. Wireless Network Evolution 2G to 3G. Edisi Kedua. Chicago : Prentice Hall PTR.
13. Suryana, Joko. 19/5/2009. ”Reduksi Interferensi”.
LAMPIRAN 1
Flowchart Algoritma Simulasi Kinerja OFCDM
1. Additive White Gaussian Noise (AWGN)
MULAI
DEFINISI PARAMETER SIMULASI para = 256; fftlen = 256; noc = 256; nd = 6; ml = 2; sr =
25000; br =sr.*ml; gilen = 48; ebno = 3;
DEFINISI PARAMETER PENGULANGAN Nloop = 100; noe =0; nod = 0; eop = 0; nop = 0;
Untuk iii = 1 sampai loop
DATA DIBANGKITKAN Seldata = rand (1,para*nd*ml)>0.5;
KONVERSI DATA SERIAL KE PARAREL Paradata = reshape (seldata, para, nd*ml);
Input data Para;fftlen;
PROSES DI TRANSMITTER
FUNGSI qpskmod DIJALANKAN
A
E
YA TIDAK
Untuk eb/No = 1 sampai 15 Untuk s = 1 sampai 2
TIDAK TIDAK
A PROSES MODULASI QPSK M2 = ml/2; Paradata = paradata.*2-1; Count 2 =0; untuk jj = 1 sampai nd
Isi = zeros (para,1); Isq = zeros (para,1);
untuk ii = 1 sampai m2 Isi = isi+2.^(m2-ii).*paradata2((1:para),ii+count2);; Isq = isq+2.^(m2-ii).*paradata2((1:para),ii+count2);; Iout((1:para),jj) = isi; Qout((1:para),jj) = isq; Count2 = count2 + ml B YA TIDAK YA TIDAK PROSES SPREADING 2D Ich1 = ich.*kmod*sr*8; qch1 = qch.*kmod*sr*8;
B
PENYISIPAN GUARD INTERVAL
FUNGSI giins DIJALANKAN
Fftlen2 = fftlen + gilen;
PERHITUNGAN ATENUASI DIJALANKAN
Spow = sum (ich3.^2 + qch3.^2)/nd./para; Attn = 0.5*spow*sr/br*10.^(-ebn0/10);
Attn = sqrt (attn);
C
PROSES PENYISIPAN GUARD INTERVAL
Idata1 = reshape (idata,fftlen,nd); Qdata1 = resahpe (qdata,fftlen, nd); Idata2 = [idata1 (fftlen-gilen+1 : fftlen,;); idata1]; Qdata = [qdata1(fftlen-gilen+1:fftlen,:); qdata1]; Iout = reshape (idata2, 1, (fftlen + gilen)*nd); Qout = reshape (qdata,1,(fftlen + gilen)*nd);
Kmod = 1/sqrt(2); Ich1 = ich.*kmod; Qch1 =qch.*kmod PROSES IFFT X = ich1 + qch1.*i; Y = ifft (x); Ich2 = real(y); Qch2 = imag(y);
C
PROSES FFT DIJALANKAN
Rx = ich5 + qch5.*i; Ry = fft (rx); Ich6 = real (ry); Qch6 = imag (ry);
PROSES DEMODULASI QPSK
Ich7 = ich6./kmod; Qch7 = qch6./kmod;
PROSES PELEPASAN GUARD INTERVAL
Idata2 = reshape (idata,fftlen2,nd); Qdata2 = resahpe (qdata,fftlen2, nd);
Iout = idata2(gilen+1:fftlen2,;); Qout = qdata2(gilen+1:fftlen2,;);
FUNGSI girem DIJALANKAN
FUNGSI qpskdemod DIJALANKAN FUNGSI comb DIJALANKAN
PENAMBAHAN AWGN PADA SIMULASI
Iout = randn (1,length (idata)).*attn; Qout = randn (1,length (qdata)).*attn;
Iout = iout + idata (1:le ngth(idata)); Qout = qout + qdata (1:length (qdata))
D
PROSES DI RECEIVER
PROSES KONVERSI DATA PARAREL KE SERIAL
Demodata1 = reshape (demodata,1,para*nd*ml);
PROSES PERHITUNGAN BER
Noe2 = sum (abs(demodata1 – seldata)); Nod2 = length (seldata);
Noe = noe + noe2; Nod = nod + nod2;
Ber=noe/nod;
NILAI BER DITAMPILKAN PROSES DEMODULASI QPSK Demodata = zeros(para,ml*nd); Demodata((1:para),(1:ml:ml*nd-1)) = idata((1:para),(1:nd))>=0; Demodata((1:para),(2:ml:ml*nd)) = qdata((1:para),(1:nd))>=0; D E
2. Fading Rayleigh
MULAI
DEFINISI PARAMETER SIMULASI para = 512; fftlen = 512; noc = 512; nd = 600;
ml = 2; sr = 25000; br =sr.*ml; gilen = 48; ebno = 24;
DEFINISI PARAMETER PENGULANGAN Nloop = 100; noe =0; nod = 0; eop = 0; nop = 0;
DATA DIBANGKITKAN Seldata = rand (1,para*nd*ml)>0.5;
Input data Ml
PROSES DI TRANSMITTER
F
PROSES INISIALISASI FADING
Tstp = 1/sr/(fftlen+gilen); Itau = [0]; dlvl = [0]; n0 = [6]; th1 = [0.0]; PENGHITUNG FADING Itnd0 = nd*(fftlen+gilen)*10; Itnd1 = [1000]; Now1 = 1; Frkuensi doplper Fd = 200; Flat = 1;
Untuk iii = 1 sampai loop E
YA TIDAK
Untuk eb/No = 1 sampai 15 Untuk s = 1 sampai 2 TIDAK
SELESAI
PROSES PENYISIPAN GUARD INTERVAL
FUNGSI giins DIJALANKAN
PROSES PENYISIPAN GUARD INTERVAL
Idata1 = reshape (idata,fftlen,nd); Qdata1 = resahpe (qdata,fftlen, nd); Idata2 = [idata1 (fftlen-gilen+1 : fftlen,;); idata1];
Qdata = [qdata1(fftlen-gilen+1:fftlen,:); qdata1]; Iout = reshape (idata2, 1, (fftlen + gilen)*nd);
Qout = reshape (qdata,1,(fftlen + gilen)*nd); PROSES IFFT X = ich1 + qch1.*i; Y = ifft (x); Ich2 = real(y); Qch2 = imag(y); B G
PERHITUNGAN ATENUASI DIJALANKAN
Spow = sum (ich3.^2 + qch3.^2)/nd./para; Attn = 0.5*spow*sr/br*10.^(-ebn0/10);
Attn = sqrt (attn); Fftlen2 = fftlen + gilen;
G
FUNGSI sefade DIJALANKAN
H
PROSES MEMBANGKITKAN FREKUENSI SELEKTIF FADING
Iout = zeros (1,nsamp); Qout = zeros (1,nsamp); Total_attn = sum (10.^(-1.0.*dlvl./10.0));
Untuk k = 1 sampai n1;
Theta = th(k).*pi./180.0; Jika dlvl (k) = 40.0
Atts = 0.0;
FUNGSI delay DIJALANKAN
I
J Atts = 10.^-0.05.*dlvl(k));
Iout = zeros (1,nsamp); Qout = zeros (1,nsamp); Total_attn = sum (10.^(-1.0.*dlvl./10.0)); C YA TIDAK YA TIDAK
I
J
PROSES PEMBERIAN DELAY
Iout = zeros (1,nsamp); Qout = zeros (1,nsamp);
Jika idel ~= 0
Iout (1:idel) = zeros (1,idel); Qout (1:idel) = zeros (1,idel);
Iout (idel+1:nsamp) = idata(1:nsamp-idel); Qout (idel+1:nsamp) = qdata(1:nsamp-idel);
YA TIDAK
C
PROSES FFT DIJALANKAN
Rx = ich5 + qch5.*i; Ry = fft (rx); Ich6 = real (ry); Qch6 = imag (ry);
PROSES DEMODULASI QPSK
Ich7 = ich6./kmod; Qch7 = qch6./kmod;
PROSES PELEPASAN GUARD INTERVAL
Idata2 = reshape (idata,fftlen2,nd); Qdata2 = resahpe (qdata,fftlen2, nd);
Iout = idata2(gilen+1:fftlen2,;); Qout = qdata2(gilen+1:fftlen2,;);
FUNGSI girem DIJALANKAN
FUNGSI qpskdemod DIJALANKAN FUNGSI comb DIJALANKAN
PENAMBAHAN AWGN PADA SIMULASI
Iout = randn (1,length (idata)).*attn; Qout = randn (1,length (qdata)).*attn;
Iout = iout + idata (1:le ngth(idata)); Qout = qout + qdata (1:length (qdata))
PROSES DI RECEIVER
PROSES KONVERSI DATA PARAREL KE SERIAL
Demodata1 = reshape (demodata,1,para*nd*ml);
PROSES PERHITUNGAN BER
Noe2 = sum (abs(demodata1 – seldata)); Nod2 = length (seldata);
Noe = noe + noe2; Nod = nod + nod2;
Ber=noe/nod;
NILAI BER DITAMPILKAN PROSES DEMODULASI QPSK Demodata = zeros(para,ml*nd); Demodata((1:para),(1:ml:ml*nd-1)) = idata((1:para),(1:nd))>=0; Demodata((1:para),(2:ml:ml*nd)) = qdata((1:para),(1:nd))>=0; D E
LAMPIRAN 2 Program Simulasi
1. Script File ofcdm.m
% ofcdm.m
% Program simulasi untuk mendapatkan kinerja BER sistem OFCDM yang dipengaruhi
% kanal AWGN
%****************** Bagian Persiapan ****************** clear all;
clc;
para=128; % Jumlah kanal paralel yang ditransmisikan fftlen=128; % Panjang FFT
noc=128; % Jumlah carrier
nd=6; % Jumlah simbol OFCDM untuk satu loop ml=2; % Level modulasi : QPSK
sr=250000; % Symbol rate
br=sr.*ml; % Bit rate per carrier
gilen=32; % Panjang guard interval (points) ebn0=10:10:50; % Eb/N0
%******************** Bagian Main Loop ****************** nloop=100; % Jumlah loop simulasi
noe = 0; % Jumlah data error
nod = 0; % Jumlah data yang ditransmisikan for s = 1:2 for ss = 1:5 for iii=1:nloop %********************* Transmitter ********************** %****************** Pembangkitan Data ******************* seldata=rand(1,para*nd*ml) > 0.5;
% rand : dibangun di dalam fungsi
%********** Konversi Dari Serial Ke Parallel ************ paradata=reshape(seldata,para,nd*ml);
% reshape : dibangun di dalam fungsi
%******************* Modulasi QPSK ****************** [ich,qch]=qpskmod(paradata,para,nd,ml);
kmod=1/sqrt(2); % sqrt : dibangun di dalam fungsi if s == 1; ich1=ich.*kmod; qch1=qch.*kmod; elseif s == 2;
ich1=ich.*kmod*sr*8; % proses spreading qch1=qch.*kmod*sr*8; % proses spreading end
% [ich1,qch1]=crmapping(ich1,qch1,fftlen,nd);
%************************ IFFT ************************ x=ich1+qch1.*i;
y=ifft(x); % ifft : dibangun di dalam fungsi ich2=real(y); % real : dibangun di dalam fungsi qch2=imag(y); % imag : dibangun di dalam fungsi %************** Penyisipan Guard Interval ***************
[ich3,qch3]= giins(ich2,qch2,fftlen,gilen,nd); fftlen2=fftlen+gilen;
%****************** Kalkulasi Atenuasi ******************* spow=sum(ich3.^2+qch3.^2)/nd./para;
% sum : dibangun di dalam fungsi
attn=0.5*spow*sr/br*10.^(-ebn0(ss)/10); attn=sqrt(attn);
%************************ Receiver ************************ %********************* Penambahan AWGN ******************** [ich4,qch4]=comb(ich3,qch3,attn);
%**************** Pengeluaran Guard Interval ************** [ich5,qch5]= girem(ich4,qch4,fftlen2,gilen,nd); %************************* FFT *************************** rx=ich5+qch5.*i;
ry=fft(rx); % fft : dibangun di dalam fungsi
ich6=real(ry); % real : dibangun di dalam fungsi qch6=imag(ry); % imag : dibangun di dalam fungsi
%********************** Demodulasi ************************ %[ich6,qch6]=crdemapping (ich6,qch6,fftlen,nd); ich7=ich6./kmod;
qch7=qch6./kmod;
[demodata]=qpskdemod(ich7,qch7,para,nd,ml); %************** Konversi Dari Paralel Ke Serial ************ demodata1=reshape(demodata,1,para*nd*ml);
%****************** Bit Error Rate (BER) ******************* % Jumlah error yang muncul dan data
noe2=sum(abs(demodata1-seldata)); % sum : dibangun di dalam fungsi
nod2=length(seldata);
% length : dibangun di dalam fungsi
% Jumlah error kumulatif dan data pada noe dan nod noe=noe+noe2;
nod=nod+nod2;
fprintf ('Nilai BER untuk EbN0 %d percobaan ke %3.0f adalah %0.5f \n', ebn0(ss),iii,(noe2/nod2)); end %******************* Hasil Keluaran ******************** switch s case 1 berd(ss)=(noe/nod); case 2 berc(ss)=(noe/nod); end if s == 1 berteori(ss) = (1/2)*erfc(sqrt((ebn0(ss)))); end
%fprintf('Nilai BER rata-rata untuk 100 kali percoba%f\t%e\t%d\t\n',ebn0,ber,nloop);
%********************* Akhir Dari File ******************** end end disp (' '); disp (' '); for s = 1:3 switch s case 1 ber = berd;
fprintf('Nilai BER rata-rata untuk tiap EbN0 pada OFDM\n');
case 2
ber = berc;
fprintf('Nilai BER rata-rata untuk tiap EbN0 pada OFCDM\n');
case 3
ber = berteori;
fprintf('Nilai BER secara teori untuk tiap EbN0 pada OFCDM\n');
end
fprintf('|---|\n'); fprintf('| EbN0 | BER |\n'); fprintf('|---|\n'); for u = 1:5
fprintf('| %2.0f dB | %0.10f |\n',ebn0(u),ber(u)); % fprintf : built in function
end fprintf('|---|\n\n\n'); if s ==1; plot(ebn0,ber,'--b'); elseif s ==2; plot(ebn0,ber,'--r'); elseif s == 3; plot(ebn0,berteori,'--g'); end grid on;hold on end xlabel('EbN0 (dB)'); ylabel('BER');
title ('GRAFIK PERBANDINGAN BER TERHADAP Eb/N0 PADA KANAL AWGN'); legend('OFDM','OFCDM','BER OFDM Teori');
2. Script File ofcdm_fading.m
% ofcdm_fading.m
% Program simulasi untuk mendapatkan kinerja BER sistem OFCDM yang dipengaruhi
% kanal Fading Rayleigh % (dengan satu jalur fading)
%****************** Bagian Persiapan ****************** clear all;
clc;
para=128; % Jumlah kanal paralel yang ditransmisikan fftlen=128; % Panjang FFT
nd=6; % Jumlah simbol OFCDM untuk satu loop ml=2; % Level modulasi : QPSK
sr=250000; % Symbol rate
br=sr.*ml; % Bit rate per carrier
gilen=32; % Panjang guard interval (points) ebn0=10:10:50; % Eb/N0
%*************** Inisialisasi Fading ****************** % Resolusi waktu
tstp=1/sr/(fftlen+gilen);
% Waktu kedatangan untuk setiap multipath yang dinormalisasi oleh tstp
itau = [0];
% Daya rata-rata untuk setiap multipath yang dinormalisasi oleh gelombang
% langsung dlvl = [0];
% Jumlah gelombang yang membangkitkan fading pada setiap multipath n0=[6];
% Fasa awal gelombang yang tertunda th1=[0.0];
% Jumlah counter fading untuk melompat itnd0=nd*(fftlen+gilen)*10;
% Nilai awal counter fading itnd1=[1000];
% Jumlah gelombang langsung + jumlah gelombang yang tertunda now1=1;
% Frekuensi Doppler maksimum [Hz] fd=320;
% Flat variabel flat=1;
%******************* Bagian Main Loop ******************* nloop=100; % Jumlah loop simulasi
noe = 0; % Jumlah data error
nod = 0; % Jumlah data yang ditransmisikan for s = 1:2
for ss = 1:5
for iii=1:nloop
%****************** Pembangkitan Data ******************* seldata=rand(1,para*nd*ml) > 0.5;
% rand : dibangun di dalam fungsi
%*********** Konversi Dari Serial Ke Paralel ************ paradata=reshape(seldata,para,nd*ml);
% reshape : dibangun di dalam fungsi
%****************** Modulasi QPSK ********************** [ich,qch]=qpskmod(paradata,para,nd,ml);
kmod=1/sqrt(2); % sqrt : dibangun di dalam fungsi if s == 1;
ich1=ich.*kmod; qch1=qch.*kmod; elseif s == 2;
ich1=ich.*kmod*sr*8; % proses spreading qch1=qch.*kmod*sr*8; % proses spreading end
%************************ IFFT ************************* x=ich1+qch1.*i;
y=ifft(x); % ifft : dibangun di dalam fungsi ich2=real(y); % real : dibangun di dalam fungsi qch2=imag(y); % imag : dibangun di dalam fungsi %************** Penyisipan Guard Interval ************** [ich3,qch3]= giins(ich2,qch2,fftlen,gilen,nd); fftlen2=fftlen+gilen;
%***************** Kalkulasi Atenuasi ******************* spow=sum(ich3.^2+qch3.^2)/nd./para;
% sum : dibangun di dalam fungsi
attn=0.5*spow*sr/br*10.^(-ebn0(ss)/10); attn=sqrt(attn);
%********************* Kanal Fading ********************** % Data yang dibangkitkan dimasukkan kedalam simulator fading
[ifade,qfade]=sefade2(ich3,qch3,itau,dlvl,th1,n0,itnd1,... now1,length(ich3),tstp,fd,flat);
% Counter fading updata
itnd1 = itnd1+ itnd0;
%************************ Receiver ************************ %******************** Penambahan AWGN ********************
[ich4,qch4]=comb(ifade,qfade,attn);
%*************** Pengeluaran Guard Interval *************** [ich5,qch5]= girem(ich4,qch4,fftlen2,gilen,nd); %************************* FFT ***************************** rx=ich5+qch5.*i;
ry=fft(rx); % fft : dibangun di dalam fungsi ich6=real(ry); % real : dibangun di dalam fungsi qch6=imag(ry); % imag : dibangun di dalam fungsi %*********************** Demodulasi ************************* ich7=ich6./kmod;
qch7=qch6./kmod;
[demodata]=qpskdemod(ich7,qch7,para,nd,ml);
%************ Konversi Dari Paralel Ke Serial **************** demodata1=reshape(demodata,1,para*nd*ml);
%******************* Bit Error Rate (BER) ******************** % Jumlah error yang muncul dan data
noe2=sum(abs(demodata1-seldata)); % sum : dibangun di dalam fungsi
nod2=length(seldata);
% length : dibangun di dalam fungsi
% Jumlah error kumulatif dan data pada noe dan nod noe=noe+noe2;
nod=nod+nod2;
fprintf ('Nilai BER untuk EbN0 %d percobaan ke %3.0f adalah %0.5f \n', ebn0(ss),iii,noe2/nod2); end %********************* Hasil Keluaran *********************** switch s case 1 berd(ss)=noe/nod; case 2 berc(ss)=noe/nod; end if s == 1 bt=1+(1/(ebn0(ss))); berteori(ss) = 1/2*(1-(1/(sqrt(bt))));
end
%fprintf('Nilai BER rata-rata untuk 100 kali percoba%f\t%e\t%d\t\n',ebn0,ber,nloop);
%********************* Akhir Dari Data ******************** end end disp (' '); disp (' '); for s = 1:3 switch s case 1 ber = berd;
fprintf('Nilai BER rata-rata untuk tiap EbN0 pada OFDM\n');
case 2
ber = berc;
fprintf('Nilai BER rata-rata untuk tiap EbN0 pada OFCDM\n');
case 3
ber = berteori;
fprintf('Nilai BER secara teori untuk tiap EbN0 pada OFCDM\n');
end
fprintf('|---|\n'); fprintf('| EbN0 | BER |\n'); fprintf('|---|\n'); for u = 1:5
fprintf('| %2.0f dB | %0.5f |\n',ebn0(u),ber(u)); % fprintf : built in function
end fprintf('|---|\n\n\n'); if s ==1; plot(ebn0,ber,'--b'); elseif s ==2; plot(ebn0,ber,'--r'); elseif s == 3; plot(ebn0,berteori,'--g'); end grid on;hold on end xlabel('EbN0 (dB)'); ylabel('BER');
title ('GRAFIK PERBANDINGAN BER TERHADAP Eb/N0 PADA KANAL FADING RAYLEIGH');
3. Script File spreading.m
% spreading.m
% Program simulasi untuk mendapatkan kinerja BER sistem OFCDM yang dipengaruhi
% ukuran VSF
% (dengan satu jalur fading)
%****************** Bagian Persiapan ****************** clear all;
clc;
para=128; % Jumlah kanal paralel yang ditransmisikan fftlen=128; % Panjang FFT
noc=128; % Jumlah carrier
nd=6; % Jumlah simbol OFCDM untuk satu loop ml=2; % Level modulasi : QPSK
sr=250000; % Symbol rate
br=sr.*ml; % Bit rate per carrier
gilen=32; % Panjang guard interval (points) ebn0=10; % Eb/N0
vsf=[1 2 4 8 16 32 64 128 256 512 1024]; % Ukuran SF %*************** Inisialisasi Fading ****************** % Resolusi waktu
tstp=1/sr/(fftlen+gilen);
% Waktu kedatangan untuk setiap multipath yang dinormalisasi oleh tstp
itau = [0];
% Daya rata-rata untuk setiap multipath yang dinormalisasi oleh gelombang
% langsung dlvl = [0];
% Jumlah gelombang yang membangkitkan fading pada setiap multipath n0=[6];
% Fasa awal gelombang yang tertunda th1=[0.0];
% Jumlah counter fading untuk melompat itnd0=nd*(fftlen+gilen)*10;
% Nilai awal counter fading itnd1=[1000];
% Jumlah gelombang langsung + jumlah gelombang yang tertunda now1=1;
fd=320;
% Flat variabel flat=1;
%******************* Bagian Main Loop ******************* nloop=100; % Jumlah loop simulasi
noe = 0; % Jumlah data error
nod = 0; % Jumlah data yang ditransmisikan for s = 1:11 for iii=1:nloop %********************* Transmitter ********************** %****************** Pembangkitan Data ******************* seldata=rand(1,para*nd*ml) > 0.5;
% rand : dibangun di dalam fungsi
%********** Konversi Dari Serial Ke Paralel ************* paradata=reshape(seldata,para,nd*ml);
% reshape : dibangun di dalam fungsi
%******************** Modulasi QPSK ********************* [ich,qch]=qpskmod(paradata,para,nd,ml);
kmod=1/sqrt(2); % sqrt : dibangun di dalam fungsi
ich1=ich.*kmod*sr*vsf(s); % proses spreading qch1=qch.*kmod*sr*vsf(s); % proses spreading
%************************ IFFT ************************** x=ich1+qch1.*i;
y=ifft(x); % ifft : dibangun di dalam fungsi
ich2=real(y); % real : dibangun di dalam fungsi qch2=imag(y); % imag : dibangun di dalam fungsi
%**************** Penyisipan Guard Interval ************* [ich3,qch3]= giins(ich2,qch2,fftlen,gilen,nd); fftlen2=fftlen+gilen;
%***************** Kalkulasi Atenuasi ******************* spow=sum(ich3.^2+qch3.^2)/nd./para;
% sum : dibangun di dalam fungsi
attn=0.5*spow*sr/br*10.^(-ebn0/10); attn=sqrt(attn);
%********************* Kanal Fading ********************* % Data yang dibangkitkan dimasukkan kedalam simulator fading
[ifade,qfade]=sefade2(ich3,qch3,itau,dlvl,th1,n0,itnd1,... now1,length(ich3),tstp,fd,flat);
% Counter fading updata
itnd1 = itnd1+ itnd0;
%********************** Receiver ********************* %****************** Penambahan AWGN ***************** [ich4,qch4]=comb(ifade,qfade,attn);
%************* Pengeluaran Guard Interval ************ [ich5,qch5]= girem(ich4,qch4,fftlen2,gilen,nd); %*********************** FFT ************************* rx=ich5+qch5.*i;
ry=fft(rx); % fft : dibangun di dalam fungsi
ich6=real(ry); % real : dibangun di dalam fungsi qch6=imag(ry); % imag : dibangun di dalam fungsi
%*********************** Demodulasi ******************** ich7=ich6./kmod;
qch7=qch6./kmod;
[demodata]=qpskdemod(ich7,qch7,para,nd,ml); %********** Konversi Dari Paralel Ke Serial *********** demodata1=reshape(demodata,1,para*nd*ml); %**************** Bit Error Rate (BER) ***************** % Jumlah error yang muncul dan data
noe2=sum(abs(demodata1-seldata)); % sum : dibangun di dalam fungsi
nod2=length(seldata);
% length : dibangun di dalam fungsi
% Jumlah error kumulatif dan data pada noe dan nod noe=noe+noe2;
nod=nod+nod2;
fprintf ('Nilai BER untuk Spreading %d percobaan ke %3.0f adalah %0.2f \n', vsf(s),iii,noe2/nod2);
end
ber(s)=noe/nod;
%fprintf('Nilai BER rata-rata untuk 100 kali percobaan%f\t%e\t%d\t\n',ebn0,ber,nloop);
%******************** Akhir Dari File ****************** end
disp (' '); disp (' '); %figure(2);
fprintf('Nilai BER rata-rata untuk tiap Spreading\n'); fprintf('|---|\n'); fprintf('| VSF | BER |\n'); fprintf('|---|\n'); for u = 1:11 fprintf('| %2.0f dB | %0.5f |\n',vsf(u),ber(u)); % fprintf : dibangun di dalam fungsi
end fprintf('|---|\n\n\n'); plot(vsf,ber,'--b'); grid on; xlim('manual'); xlim([-10 1024]); xlabel('VSF'); ylabel('BER');
title ('GRAFIK PERBANDINGAN BER TERHADAP UKURAN VSF PADA SISTEM OFCDM');
%legend('OFDM','OFCDM');
4. Script File carrier.m
% carrier.m
% Program simulasi untuk mendapatkan kinerja BER sistem OFCDM yang dipengaruhi
% jumlah carrier
% (dengan satu jalur fading)
%****************** Bagian Persiapan ****************** clear all;
clc;
para=[128 256 512 1024 2048]; % Jumlah kanal paralel yang ditransmisikan
fftlen=para; % Panjang FFT noc=128; % Jumlah carrier
nd=6; % Jumlah simbol OFCDM untuk satu loop ml=2; % Level modulasi : QPSK
sr=250000; % Symbol rate
br=sr.*ml; % Bit rate per carrier
gilen=32; % Panjang guard interval (points) ebn0=10; % Eb/N0
%*************** Inisialisasi Fading ****************** % Resolusi waktu
tstp=1/sr./(fftlen+gilen);
% Waktu kedatangan untuk setiap multipath yang dinormalisasi oleh tstp
itau = [0];
% Daya rata-rata untuk setiap multipath yang dinormalisasi oleh gelombang
% langsung dlvl = [0];
% Jumlah gelombang yang membangkitkan fading pada setiap multipath n0=[6];
% Fasa awal gelombang yang tertunda th1=[0.0];
% Jumlah counter fading untuk melompat itnd0=nd*(fftlen+gilen)*10;
% Nilai awal counter fading itnd1=[1000];
% Jumlah gelombang langsung + jumlah gelombang yang tertunda now1=1;
% Frekuensi Doppler maksimum [Hz] fd=320;
% Flat variabel flat=1;
%******************* Bagian Main Loop ******************* nloop=100; % Jumlah loop simulasi
noe = 0; % Jumlah data error
nod = 0; % Jumlah data yang ditransmisikan for s = 1:5
for iii=1:nloop
%****************** Pembangkitan Data ******************* seldata=rand(1,para(s)*nd*ml) > 0.5;
% rand : dibangun di dalam fungsi
%************* Konversi Dari Serial Ke Paralel ********** paradata=reshape(seldata,para(s),nd*ml); % reshape : dibangun di dalam fungsi
%******************** Modulasi QPSK ********************* [ich,qch]=qpskmod(paradata,para(s),nd,ml);
kmod=1/sqrt(2); % sqrt : dibangun di dalam fungsi
ich1=ich.*kmod*sr*8; % proses spreading qch1=qch.*kmod*sr*8; % proses spreading
%************************ IFFT ************************** x=ich1+qch1.*i;
y=ifft(x); % ifft : dibangun di dalam fungsi ich2=real(y); % real : dibangun di dalam fungsi qch2=imag(y); % imag : dibangun di dalam fungsi %**************** Penyisipan Guard Interval *************** [ich3,qch3]= giins(ich2,qch2,fftlen(s),gilen,nd); fftlen2=fftlen(s)+gilen;
%********************* Kalkulasi Atenuasi ***************** spow=sum(ich3.^2+qch3.^2)/nd./para(s);
% sum : dibangun di dalam fungsi
attn=0.5*spow*sr/br*10.^(-ebn0/10); attn=sqrt(attn);
%************************ Kanal Fading ********************* % Data yang dibangkitkan dimasukkan kedalam simulator fading
[ifade,qfade]=sefade2(ich3,qch3,itau,dlvl,th1,n0,itnd1,... now1,length(ich3),tstp(s),fd,flat);
% Counter fading updata
itnd1 = itnd1+ itnd0(s);
%*********************** Receiver *************************** %******************** Penambahan AWGN ***********************
[ich4,qch4]=comb(ifade,qfade,attn);
%**************** Pengeluaran Guard Interval ***************** [ich5,qch5]= girem(ich4,qch4,fftlen2,gilen,nd); %************************** FFT ****************************** rx=ich5+qch5.*i;
ry=fft(rx); % fft : dibangun di dalam fungsi ich6=real(ry); % real : dibangun di dalam fungsi qch6=imag(ry); % imag : dibangun di dalam fungsi %************************** Demodulasi *********************** ich7=ich6./kmod;
qch7=qch6./kmod;
[demodata]=qpskdemod(ich7,qch7,para(s),nd,ml); %************** Konversi Paralel Ke Serial ******************** demodata1=reshape(demodata,1,para(s)*nd*ml);
%********************* Bit Error Rate (BER) ******************** % Jumlah error yang muncul dan data
noe2=sum(abs(demodata1-seldata)); % sum : dibangun di dalam fungsi
nod2=length(seldata);
% length : dibangun di dalam fungsi
% Jumlah error kumulatif dan data pada noe dan nod noe=noe+noe2;
nod=nod+nod2;
fprintf ('Nilai BER untuk Carrier %d percobaan ke %3.0f adalah %0.2f \n', para(s),iii,noe2/nod2);
end
%********************** Hasil Keluaran ************************ ber(s)=noe/nod;
%fprintf('Nilai BER rata-rata untuk 100 kali percoba%f\t%e\t%d\t\n',ebn0,ber,nloop);
%*********************** Akhir Dari File *********************** end
disp (' '); disp (' '); figure(2);
fprintf('Nilai BER rata-rata untuk tiap Carrier pada OFCDM\n');
fprintf('|---|\n'); fprintf('| Carrier | BER |\n'); fprintf('|---|\n'); for u = 1:5
fprintf('| %2.0f | %0.5f |\n',para(u),ber(u)); % fprintf : built in function
end fprintf('|---|\n\n\n'); plot(para,ber) grid on; xlabel('Jumlah Carrier'); ylabel('BER');
title ('GRAFIK PERBANDINGAN BER TERHADAP JUMLAH CARRIER PADA SISTEM OFCDM');
5. Script File bit_rate.m
% bit_rate.m
% Program simulasi untuk mendapatkan kinerja BER sistem OFCDM yang dipengaruhi
% bit rate
% (dengan satu jalur fading)
%****************** Bagian Persiapan ****************** clear all;
clc;
para=128; % Jumlah kanal paralel yang ditransmisikan fftlen=128; % Panjang FFT
noc=128; % Jumlah carrier
nd=6; % Jumlah simbol OFCDM untuk satu loop ml=2; % Level modulasi : QPSK
sr=50000:50000:500000; % Symbol rate
br=sr.*ml; % Bit rate per carrier
gilen=32; % Panjang guard interval (points) ebn0=10; % Eb/N0
%*************** Inisialisasi Fading ****************** % Resolusi waktu
% Waktu kedatangan untuk setiap multipath yang dinormalisasi oleh tstp
itau = [0];
% Daya rata-rata untuk setiap multipath yang dinormalisasi oleh gelombang
% langsung dlvl = [0];
% Jumlah gelombang yang membangkitkan fading pada setiap multipath n0=[6];
% Fasa awal gelombang yang tertunda th1=[0.0];
% Jumlah counter fading untuk melompat itnd0=nd*(fftlen+gilen)*10;
% Nilai awal counter fading itnd1=[1000];
% Jumlah gelombang langsung + jumlah gelombang yang tertunda now1=1;
% Frekuensi Doppler maksimum [Hz] fd=320;
% Flat variabel flat=1;
%******************* Bagian Main Loop ******************* nloop=100; % Jumlah loop simulasi
noe = 0; % Jumlah data error
nod = 0; % Jumlah data yang ditransmisikan for s = 1:10
for iii=1:nloop
%********************** Transmitter ********************* %*******************Pembangkitan Data ******************* seldata=rand(1,para*nd*ml) > 0.5;
% rand : dibangun di dalam fungsi
%************* Konversi Dari Serial Ke Paralel ************* paradata=reshape(seldata,para,nd*ml);
%******************** Modulasi QPSK ************************ [ich,qch]=qpskmod(paradata,para,nd,ml);
kmod=1/sqrt(2); % sqrt : dibangun di dalam fungsi
ich1=ich.*kmod*sr(s)*8; % proses spreading qch1=qch.*kmod*sr(s)*8; % proses spreading
%************************ IFFT ***************************** x=ich1+qch1.*i;
y=ifft(x); % ifft : dibangun di dalam fungsi ich2=real(y); % real : dibangun di dalam fungsi
qch2=imag(y); % imag : dibangun di dalam fungsi %***************** Penyisipan Guard Interval *************** [ich3,qch3]= giins(ich2,qch2,fftlen,gilen,nd); fftlen2=fftlen+gilen;
%******************* Kalkulasi Atenuasi ********************** spow=sum(ich3.^2+qch3.^2)/nd./para;
% sum : dibangun di dalam fungsi
attn=0.5*spow*sr(s)/br(s)*10.^(-ebn0/10); attn=sqrt(attn);
%*********************** Kanal Fading ************************ % Data yang dibangkitkan dimasukkan kedalam simulator fading
[ifade,qfade]=sefade2(ich3,qch3,itau,dlvl,th1,n0,itnd1,... now1,length(ich3),tstp(s),fd,flat);
% Counter fading updata
itnd1 = itnd1+ itnd0;
%************************** Receiver ************************** %*********************** Penambahan AWGN ********************** [ich4,qch4]=comb(ifade,qfade,attn);
%****************** Pengeluaran Guard Interval *************** [ich5,qch5]= girem(ich4,qch4,fftlen2,gilen,nd); %*************************** FFT ******************************* rx=ich5+qch5.*i;
ry=fft(rx); % fft : dibangun di dalam fungsi ich6=real(ry); % real : dibangun di dalam fungsi
qch6=imag(ry); % imag : dibangun di dalam fungsi %************************ Demodulasi ************************** ich7=ich6./kmod;
qch7=qch6./kmod;
[demodata]=qpskdemod(ich7,qch7,para,nd,ml);
%************* Konversi Dari Paralel Ke Serial ************** demodata1=reshape(demodata,1,para*nd*ml);
%****************** Bit Error Rate (BER) ******************** % Jumlah error yang muncul dan data
noe2=sum(abs(demodata1-seldata)); % sum : dibangun di dalam fungsi
nod2=length(seldata);
% length : dibangun di dalam fungsi
% Jumlah error kumulatif dan data pada noe dan nod noe=noe+noe2;
nod=nod+nod2;
fprintf ('Nilai BER untuk Data rate %d percobaan ke %3.0f adalah 0.2f \n', br(s),iii,noe2/nod2);
end
%*********************** Hasil Keluaran ********************* ber(s)=noe/nod;
%fprintf('Nilai BER rata-rata untuk 100 kali percoba%f\t%e\t%d\t\n',ebn0,ber,nloop);
%*********************** Akhir Dari Data ******************** end
disp (' '); disp (' '); %figure(2);
fprintf('Nilai BER rata-rata untuk tiap Spreading\n'); fprintf('|---|\n');
fprintf('| Data Rate | BER |\n'); fprintf('|---|\n'); for u = 1:10
fprintf('| %2.0f bps | %0.5f |\n',br(u),ber(u)); % fprintf : built in function
end fprintf('|---|\n\n\n'); plot(br,ber,'--b'); grid on; xlabel('BIT RATE'); ylabel('BER');
title ('GRAFIK PERBANDINGAN BER TERHADAP BIT RATE'); %legend('OFDM','OFCDM');
6. Script File interference.m
% interference.m
% Program simulasi untuk mendapatkan kinerja BER sistem OFCDM yang dipengaruhi
% interferensi
%********************** Bagian Persiapan ******************** clear;
para=52; % Jumlah kanal paralel yang ditransmisikan % points
fftlen=64; % Panjang FFT noc=53; % Jumlah carrier
nd=6; % Jumlah simbol OFCDM untuk satu loop knd=1; % Jumlah estimasi kanal
% (CE) simbol OFCDM ml=2; % Level modulasi : QPSK
sr=250000; % Symbol rate (250 ksymbol/s) br=sr.*ml; % Bit rate per carrier
gilen=16; % Panjang guard interval (points) ebno=1000; % Eb/N0
%--- Inisialisasi Fading ---tstp=1/sr/(fftlen+gilen); % Resolusi Waktu
itau=[0]; % Waktu kedatangan untuk setiap multipath yang % dinormalisasi oleh tstp
dlvll=[0]; % Daya rata-rata untuk setiap multipath yang
% dinormalisasi oleh gelombang langsung
n0=[6]; % Jumlah gelombang untuk membangkitkan fading
% n0(1),n0(2)
th1=[0,0]; % Fasa awal gelombang yang tertunda itnd1=[1000]; % Penyusunan counter fading
now1=1; % Jumlah gelombang langsung + jumlah gelombang
fd=150; % Frekuensi Doppler maksimum flat=0; % Flat atau tidak