• Tidak ada hasil yang ditemukan

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

Dokumen terkait