• Tidak ada hasil yang ditemukan

LAMPIRAN 1. Flowchart Algoritma Simulasi Kinerja OFCDM

N/A
N/A
Protected

Academic year: 2021

Membagikan "LAMPIRAN 1. Flowchart Algoritma Simulasi Kinerja OFCDM"

Copied!
45
0
0

Teks penuh

(1)

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

E

YA TIDAK

Untuk eb/No = 1 sampai 15 Untuk s = 1 sampai 2

TIDAK TIDAK

(2)

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;

(3)

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);

(4)

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

(5)

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

(6)

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 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

(7)
(8)

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

(9)

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

(10)

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

(11)

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

(12)

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

(13)

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

(14)

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);

(15)

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;

(16)

[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;

(17)

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

(18)

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

(19)

%****************** 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 ********************

(20)

[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))));

(21)

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');

(22)

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;

(23)

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);

(24)

%********************* 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

(25)

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

(26)

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

(27)

%****************** 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 ***********************

(28)

[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);

(29)

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

(30)

% 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);

(31)

%******************** 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

(32)

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

(33)

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

(34)

fd=150; % Frekuensi Doppler maksimum

flat=0; % Flat atau tidak

itnd0=nd*(fftlen+gilen)*10; % Jumlah counter fading untuk melompat %---Inisialisasi Gelombang Interferensi---ci=10:10:100; % Perbandingan C/I

ml2=2; % Level modulasi itau2=[0]; dlvl2=[0]; n02=[6]; th2=[0.0]; itnd2=[1000+floor(rand(1)*10)*1000]; now2=1; fd2=fd; flat2=0;

itnd02=nd*(fftlen+gilen)*300; % Jumlah counter fading untuk

melompat

%%Penyimpanan semua parameter di dalam satu matrik "fadingpara" fadingpara=zeros(8, length(itau2)); fadingpara(1,:)=itau2; fadingpara(2,:)=dlvl2; fadingpara(3,:)=n02; fadingpara(4,:)=th2; fadingpara(5,:)=itnd2; fadingpara(6,:)=now2; fadingpara(7,:)=fd2; fadingpara(8,:)=flat2;

%********************** Bagian Main Loop ************************** nloop=100; % Jumlah loop simulasi

noe=0; % Jumlah data error

nod=0; % Jumlah data yang ditransmisikan

%*********************** Transmitter ******************************* for c = 1:10 for iii=1:nloop seldata=rand(1,para*nd*ml) > 0.5; paradata=reshape(seldata,para,nd*ml); % Ukuran(51*nd*ml) %--- Modulasi ml [ich,qch]=qpskmod(paradata,para,nd,ml); kmod=1/sqrt(2);

ich=ich.*kmod*sr*8; % proses spreading

(35)

%Pembangkitan data CE kndata=zeros(1,fftlen); kndata0=2.*(rand(1,52) < 0.5)-1; kndata(2:27)=kndata0(1:26); kndata(39:64)=kndata0(27:52); ceich=kndata; % CE:BPSK ceqch=zeros(1,64); %--- Pemetaan Data (DC=0) [ich1,qch1]=crmapping(ich,qch,fftlen,nd);

ich2=[ceich', ich1]; % Data transmisi I-channel qch2=[ceqch', qch1]; % Data transmisi Q-channel

%IFFT- x=ich2+qch2.*i; y=ifft(x); ich3=real(y); qch3=imag(y);

%--- Penyisipan Guard Interval - fftlen2=fftlen+gilen; [ich4,qch4]=giins(ich3,qch3,fftlen,gilen,nd+1); %- Kalkulasi Atenuasi spow=sum(ich4.^2+qch4.^2)/nd./52; attn=0.5*spow*sr/br*10.^(ebno/10); attn=sqrt(attn); %*************************** Kanal Fading *************************** [ifade,qfade,ramp,rcos,rsin]=sefade2(ich4,qch4,itau,dlvll,th1,n0,itn d1,... now1,length(ich4),tstp,fd,flat);

itnd1 = itnd1+itnd0; %Updata fading counter ich4=ifade;

qch4=qfade;

%%%Penambahan gelombang interferensi %interferensi

[iintw,qintw]=interwave(ci(c),spow,ml2,length(ich4),tstp,fadingpara) ;

(36)

fadingpara(5,:)=itnd2; ich4=ich4+iintw; qch4=qch4+qintw; %***************************Receiver******************************** ** %-- Penambahan AWGN [ich5,qch5]=comb(ich4,qch4,attn);

%--- Kompensasi Fading Yang Perfect Untuk Satu Jalur fading -

---%ifade2=1./ramp.*(rcos(1,:).*ich5+rsin(1,:).*qch5); %qfade2=1./ramp.*(rsin(1,:).*ich5+rcos(1,:).*qch5); %ich5=ifade2;

%qch5=qfade2;

%--- Pengeluaran Guard Interval [ich6,qch6]=girem(ich5,qch5,fftlen2,gilen,nd+1); %FFT- rx=ich6+qch6.*i; ry=fft(rx); ich7=real(ry); qch7=imag(ry);

%--- Kompensasi Fading Oleh Simbol CE --

---%Persiapan data CE ce=1;

ice0=ich2(:,ce); qce0=qch2(:,ce);

%Pengambilan data CE data diluar data yang diterima ice1=ich7(:,ce);

qce1=qch7(:,ce); %Perhitungan rotasi reverse

iv=real((1./(ice1.^2+qce1.^2)).*(ice0+j.*qce0).*(ice1-j.*qce1));

qv=imag((1./(ice1.^2+qce1.^2)).*(ice0+j.*qce0).*(ice1-j.*qce1));

%Matrik untuk rotasi reverse

ieqvl=[iv iv iv iv iv iv iv]; qeqvl=[qv qv qv qv qv qv qv];

(37)

%rotasi reverse icompen=real((ich7+j.*qch7).*(ieqvl+j.*qeqvl)); qcompen=imag((ich7+j.*qch7).*(ieqvl+j.*qeqvl)); ich7=icompen; qch7=qcompen; % Pengeluaran Simbol CE - ich8=ich7(:,knd+1:nd+1); qch8=qch7(:,knd+1:nd+1);

%--- Pengeluaran Data DC dan Data Pilot - [ich9,qch9]=crdemapping (ich8,qch8,fftlen,nd); %--- Demodulasi -- ich10=ich9./kmod; qch10=qch9./kmod; [demodata]=qpskdemod(ich10,qch10,para,nd,ml); %-- Perhitungan Error - demodata1=reshape(demodata,1,para*nd*ml); noe2=sum(abs(demodata1-seldata)); nod2=length(seldata); %Perhitungan BER noe=noe+noe2; nod=nod+nod2;

fprintf('Ber C/I ke %3.0f percobaan ke %3.0f adalah %1.5f\n\n',ci(c),iii,noe2/nod2); end ber(c)=noe/nod; end %************************* Hasil Keluaran **************************** fprintf('|---|\n'); fprintf('| C/I | BER |\n'); fprintf('|---|\n'); for u = 1:10

fprintf('| %3.0f | %1.5f |\n',ci(u),ber(u)); % fprintf : dibangun di dalam simulasi

end

fprintf('|---|\n\n\n'); plot(ci,ber);

(38)

grid on;

%********************** Akhir Dari File ****************************

7.

Function File giins.m

% giins.m

% Fungsi untuk menyisipkan guard interval ke sinyal tranmisi function [iout,qout]=giins(idata,qdata,fftlen,gilen,nd) %********************** variables ********************* % idata : Masukan data Ich

% qdata : Masukan data Qch % iout : Keluaran data Ich % qout : Keluaran data Qch % fftlen : Panjang FFT (points)

% gilen : Panjang guard interval (points)

% ***************************************************** idata1=reshape(idata,fftlen,nd); qdata1=reshape(qdata,fftlen,nd); idata2=[idata1(fftlen-gilen+1:fftlen,:); idata1]; qdata2=[qdata1(fftlen-gilen+1:fftlen,:); qdata1]; iout=reshape(idata2,1,(fftlen+gilen)*nd); qout=reshape(qdata2,1,(fftlen+gilen)*nd);

%******************** Akhir Dari File *********************

8.

Function File girem.m

% girem.m

% Fungsi untuk mengeluarkan guard interval dari sinyal yang diterima function [iout,qout]= girem(idata,qdata,fftlen2,gilen,nd)

%********************** variables ********************* % idata : Masukan data Ich

% qdata : Masukan data Qch % iout : Keluaran data Ich % qout : Keluaran data Qch % fftlen : Panjang FFT (points)

% gilen : Panjang guard interval (points) % nd : Jumlah simbol OFCDM

% ***************************************************** idata2=reshape(idata,fftlen2,nd);

(39)

qdata2=reshape(qdata,fftlen2,nd); iout=idata2(gilen+1:fftlen2,:); qout=qdata2(gilen+1:fftlen2,:);

%***************** Akhir Dari File ********************

9.

Function File qpskmod.m

%%%%%%%%% Fungsi Untuk Menunjukkan Modulasi QPSK %%%%%% function[iout,qout]=qpskmod(paradata,para,nd,ml) m2=ml./2; paradata2=paradata.*2-1; count2=0; for jj=1:nd isi=zeros(para,1); isq=zeros(para,1); for ii=1:m2 isi=isi+2.^(m2-ii).*paradata2((1:para),ii+count2); isq=isq+2.^(m2-ii).*paradata2((1:para),ii+count2); end iout((1:para),jj)=isi; qout((1:para),jj)=isq; count2=count2+ml; end

10.

Function File qpskdemod.m

function [demodata]=qpskdemod(idata,qdata,para,nd,ml) 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;

11.

Function File comb.m

function [iout,qout]=comb(idata,qdata,attn) iout=randn(1,length(idata)).*attn;

qout=randn(1,length(qdata)).*attn; iout=iout+idata(1:length(idata)); qout=qout+qdata(1:length(qdata));

12.

Function File delay.m

% delay.m

(40)

function [iout,qout] = delay(idata,qdata,nsamp,idel ) %********************** variables ********************* % idata : Masukan data Ich

% qdata : Masukan data Qch % iout : Keluaran data Ich % qout : Keluaran data Qch

% nsamp : Jumlah sampel yang disimulasikan % idel : Jumlah sampel yang tertunda

%****************************************************** iout=zeros(1,nsamp); qout=zeros(1,nsamp); if idel ~= 0 iout(1:idel) = zeros(1,idel); qout(1:idel) = zeros(1,idel); end iout(idel+1:nsamp) = idata(1:nsamp-idel); qout(idel+1:nsamp) = qdata(1:nsamp-idel);

%******************** Akhir Dari File *********************

13.

Function File fade.m

% fade.m

% Fungsi pembangkitan Fading Rayleigh

function [iout,qout,ramp,rcos,rsin]=fade(idata,qdata,... nsamp,tstp,fd,no,counter,flat)

%********************** variables ********************* % idata : Masukan data Ich

% qdata : Masukan data Qch % iout : Keluaran data Ich % qout : Keluaran data Qch

% ramp : Amplitudo yang dikontaminasi oleh fading % rcos : Nilai Cosine yang dikontaminasi oleh fading % rsin : Nilai Cosine yang dikontaminasi oleh fading % nsamp : Jumlah sampel yang disimulasi

% tstp : Resolusi waktu minimum % fd : Frekuensi Doopler maksimum

% no : Jumlah gelombang untuk pembangkitan fading % counter : counter fading

% flat : fading flat atau tidak

%****************************************************** if fd ~= 0.0

ac0 = sqrt(1.0 ./ (2.0.*(no + 1))); % Daya yang ternormalisasi konstan(ich) as0 = sqrt(1.0 ./ (2.0.*no));

% Daya yang ternormalisasi konstan(qch) ic0 = counter;

(41)

pai = 3.14159265; wm = 2.0.*pai.*fd; n = 4.*no + 2; ts = tstp; wmts = wm.*ts; paino = pai./no; xc=zeros(1,nsamp); xs=zeros(1,nsamp); ic=[1:nsamp]+ic0; for nn = 1: no cwn = cos( cos(2.0.*pai.*nn./n).*ic.*wmts ); xc = xc + cos(paino.*nn).*cwn; end cwmt = sqrt(2.0).*cos(ic.*wmts); xc = (2.0.*xc + cwmt).*ac0; xs = 2.0.*xs.*as0; ramp=sqrt(xc.^2+xs.^2); rcos=xc./ramp; rsin=xs./ramp; if flat ==1 iout = sqrt(xc.^2+xs.^2).*idata(1:nsamp); % sinyal keluaran (ich)

qout = sqrt(xc.^2+xs.^2).*qdata(1:nsamp); % sinyal keluaran (qch)

else

iout = xc.*idata(1:nsamp) - xs.*qdata(1:nsamp); % sinyal keluaran (ich)

qout = xs.*idata(1:nsamp) + xc.*qdata(1:nsamp); % sinyal keluaran (qch) end else iout=idata; qout=qdata; end

%********************* Akhir Dari File ********************

14.

Function File sefade.m

function[iout,qout,ramp,rcos,rsin]=sefade2(idata,qdata,itau,dlvl,th, n0,itn,n1,nsamp,tstp,fd,flat) iout = zeros(1,nsamp); qout = zeros(1,nsamp); total_attn = sum(10 .^( -1.0 .* dlvl ./ 10.0)); for k=1:n1 atts = 10.^( -0.05 .* dlvl(k)); if dlvl(k) == 40.0

(42)

atts = 0.0; end

theta = th(k) .* pi ./ 180.0;

[itmp,qtmp] = delay (idata,qdata,nsamp,itau(k)); [itmp3,qtmp3,ramp,rcos,rsin] = fade (itmp,qtmp,... nsamp,tstp,fd,n0(k),itn(k),flat);

iout = iout + atts .* itmp3 ./ sqrt(total_attn); qout = qout + atts .* qtmp3 ./ sqrt(total_attn); end

15.

Function File crmapping.m

%crmapping.m

%Fungsi untuk menyusun data pada subcarrier %(DC=0)

function[iout,qout]=crmapping(idata,qdata,fftlen,nd); %*******************variables*********************** %idata : Masukan data Ich

%qdata : Masukan data Qch %iout : Keluaran data Ich %qout : Keluaran data Qch %fftlen : Panjang FFT (points) %nd : Jumlah simbol OFCDM

%************************************************** iout=zeros(fftlen,nd); qout=zeros(fftlen,nd); iout(2:27,:)=idata(1:26,:); qout(2:27,:)=qdata(1:26,:); iout(39:64,:)=idata(27:52,:); qout(39:64,:)=qdata(27:52,:);

%******************** Akhir dari file*******************

16.

Function File crdemapping.m

function [iout,qout]=crdemapping(idata,qdata,fftlen,nd) iout(1:26,:)=idata(2:27,:);

qout(1:26,:)=qdata(2:27,:); iout(27:52,:)=idata(39:64,:); qout(27:52,:)=qdata(39:64,:);

(43)

17.

Function File interwave.m

%interwave.m

%Fungsi untuk menambah gelombang interferensi

function [iout,qout]=interwave(ci,spow,ml,nsamp,tstp,fadingpara) %*************************variables****************************** %ci : Perbandingan carrier to interference

%spow : Daya sinyal yang diharapkan %ml : Level modulasi

%nsamp : Jumlah sampel %tstp : Resolusi waktu %fadingpara : Parameter fading %iout : Sinyal Keluaran Ich %qout : Sinyal Keluaran Qch

%***************************************************************** itau=fadingpara(1,:); dlvll=fadingpara(2,:); n0=fadingpara(3,:); th1=fadingpara(4,:); itnd1=fadingpara(5,:); now1=fadingpara(6,:); fd=fadingpara(7,:); flat=fadingpara(8,:); if ci > 40 %%%%%%%%%%%%%%%%%%%%%% Bagian Persiapan %%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%format frame para=52; fftlen=64;

noc=53; % jumlah carrier

nd=6; % jumlah simbol informasi knd=1; % jumlah simbol data sr=250000; % symbol rate

br=sr.*ml; % bit rate per carrier gilen=16; % panjang guard interval %%%Penyusunan beban data CE

kndata=zeros(1,fftlen); kndata0=2.*(rand(1,52)>0.5)-1; kndata(2:27)=kndata0(1:26); kndata(39:64)=kndata0(27:52); %%% Memulai simulasi %%% Inisialisasi fading

(44)

%%%%%%%%%%%%%%%%%%%%% Transmitter %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% seridata=rand(1,para*nd*ml) > 0.5; % DC=0 paradata=reshape(seridata,para,nd*ml); %ukuran(51 * nd*ml) %%% modulasi ml [ich,qch]=qpskmod(paradata,para,nd,ml); kmod=1/sqrt(2); ich=ich.*kmod; qch=qch.*kmod; % modulasi CE ceich=kndata; % CE:BPSK ceqch=zeros(1,64); %%% pemetaan data (DC=0) [ich2,qch2]=crmapping(ich,qch,fftlen,nd); % penambahan carrier pilot dan simbol CE

ich22=[ceich.' ich2]; % Data transmisi kanal-I qch22=[ceqch.' qch2]; % Data transmisi kanal-Q %%%IFFT x=ich22+qch22.*i; y=ifft(x); ich3=real(y); qch3=imag(y);

%%%Penyisipan Guard Interval %Penyisipan Guard Interval

[ich5,qch5]=giins(ich3,qch3,fftlen,gilen,nd+1); %%%Kalkulasi fading [ifade2,qfade2,ramp,rcos,rsin]=sefade2(ich5,qch5,itau,... dlvll,th1,n0,itnd1,now1,length(ich5),tstp,fd,flat); %%%Reduksi C/I spowintw=sum(ich5.^2+qch5.^2)/(nd)/52; rint=spow/spowintw*10^(ci/10); iout=ifade2.*sqrt(rint); qout=qfade2.*sqrt(rint); else

(45)

iout = zeros(1,nsamp); qout = zeros(1,nsamp); end

%**************************** Akhir Dari File ********************************

Referensi

Dokumen terkait

Menurut Arikunto dalam Iskandar dan Narsim (2015, hlm.48) tes yaitu “serentetan pertanyaaan atau latihan serta alat lain yang digunakan untuk mengukur keterampilan

Persepsi ibu-ibu tersebut tentang penyakit yang dapat dicegah dengan imunisasi dasar adalah juga berbahaya bagi balita. cara pencegahannya tidak harus

Berdasarkan perhitungan kekuatan dari desain rangka bosch pump tipe In-line di dapat sebagai berikut : beban yang diterima 5,62 N/mm sedangkan kekuatan rangka 62,5 N/mm, maka

HIERARKI ANALISIS AHP Strategi Pengembangan Industri Andalan di Kabupaten Bojonegoro Sektor Industri Pertambangan dan Penggalian Sektor Industri Pengolahan Sektor Perdagangan

Dalam konsep ini proses-proses terdistribusi memetakan struktur data globalnya ke dalam dual-port memory yang terletak pada setiap node SCRAMNet sehingga setiap saat suatu

Di satu pihak mereka adalah warga yang mungkin mempunyai hambatan dalam mengakses layanan pendidikan, kesehatan ataupun ekonomi, di pihak lain mereka juga adalah relawan

Dari ketiga metode peramalan yang digunakan maka metode yang lebih baik digunakan untuk meramalkan permintaan pedialyte pada tahun 2008 adalah metode pemulusan eksponensial

Namun kebijakan yang telah dipayungi oleh regulasi tersebut masih belum berjalan dan diperlukan peraturan pelaksanaan dari sisi pengelolaan keuangan negara khususnya untuk