LAMPIRAN I. Flowchart Algoritma Simulasi Kinerja OFDM pada DVB-T

Save this PDF as:
 WORD  PNG  TXT  JPG

Ukuran: px
Mulai penontonan dengan halaman:

Download "LAMPIRAN I. Flowchart Algoritma Simulasi Kinerja OFDM pada DVB-T"

Transkripsi

1 LAMPIRAN I Flowchart Algoritma Simulasi Kinerja OFDM pada DVB-T Mulai Set Parameter Para=2048, fftlen=2048, noc=1705, nd=68, ml=2, sr= , gilen=128, tau=0,0884, ebn0=10:10:50 Proses Transmitter Bangkit Data Random Seldata = rand (1,para*nd*ml)>0.5; B Proses LDPC Encoding H=dvbt2ldpc(½); L=fec.ldpcenc(H); Codeword=encode(l,seldata); Konversi Data Serial ke Paralel Paradata=reshape(codeword,para,nd*ml); Proses Modulasi QPSK Fungsi qpskmod dijalankan Kmod = 1/sqrt(2); ich1 = ich.*kmod; qch1 =qch.*kmod; Proses IFFT X = ich1 + qch1.*1i; Y = ifft (x); ich2 = real(y); qch2 = imag(y); Proses Penyisipan Guard Interval FUNGSI giins dijalankan 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); Fftlen2 = fftlen + gilen; Proses Clipping Noise FUNGSI Clipn dijalankan [ich4, qch4]=clipn(cr,ich3,qch3); Proses Penambahan Attenuasi Spow = sum (ich4.^2 + qch4.^2)/nd./ para; Attn = 0.5*spow*sr/br*10.^(-ebn0/10); Attn = sqrt (attn); A 57

2 A Proses Receiver Proses dikanal AWGN Fungsi comb dijalankan 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 Pengeluaran Guard Interval Fungsi girem dijalankan Idata2 = reshape (idata,fftlen2,nd); Qdata2 = resahpe (qdata,fftlen2, nd); Iout = idata2(gilen+1:fftlen2,;); Qout = qdata2(gilen+1:fftlen2,;); Proses FFT rx = ich6 + qch6.*1i; ry = fft (rx); ich7 = real (ry); qch7 = imag (ry); Proses Demodulasi QPSK Fungsi qpskdemod dijalankan ich8 = ich7./kmod; qch8 = qch7./kmod; Proses Konversi data paralel ke serial Demodata1=reshape(demodata,1,para*nd*ml); Proses LDPC Decoding hdec=fec.ldpcdec(h); Decodedmsg=decode(hdec, demodata1); Proses Perhitungan BER Noe2 = sum (abs(decodedmsg seldata)); Nod2 = length (seldata); Noe = noe + noe2; Nod = nod + nod2; Ber=noe/nod; BER rata-rata ditampilkan TIDAK Untuk iii=1 sampai nloop YA B 58

3 LAMPIRAN II Program Simulasi 1. Script File OFDM pada DVB-T 2K terhadap pengaruh Clipping Noise %****************** Bagian Persiapan ****************** clear all; clc; para=2048; % Jumlah kanal paralel yang ditransmisikan fftlen=2048; % Panjang FFT noc=1705; % Jumlah carrier nd=68; % Jumlah simbol OFDM untuk satu loop ml=2; % Level modulasi : QPSK sr= ; % Symbol rate br=sr.*ml; % Bit rate per carrier gilen=128; % Panjang guard interval (points) ebn0=10:10:50; % Eb/N0 tau=0.0884; % root mean square daya sinyal %******************** 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 59

4 ich1=ich.*kmod; qch1=qch.*kmod; %************************ IFFT ************************ x=ich1+qch1.*1i; 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; %************************* Clipping Noise ************* cr=0; [ich4,qch4]=clipn(cr,ich3,qch3); %****************** Kalkulasi Atenuasi ******************* spow=sum(ich4.^2+qch4.^2)/nd./para; % sum : dibangun di dalam fungsi attn=0.5*spow*sr/br*10.^(-ebn0(ss)/10); attn=sqrt(attn); %************************ Receiver ************************ %********************* Penambahan AWGN ******************** [ich5,qch5]=comb(ich4,qch4,attn); %**************** Pengeluaran Guard Interval ************** [ich6,qch6]= girem(ich5,qch5,fftlen2,gilen,nd); %************************* FFT *************************** rx=ich6+qch6.*1i; ry=fft(rx); % fft : dibangun di dalam fungsi ich7=real(ry); % real : dibangun di dalam fungsi qch7=imag(ry); % imag : dibangun di dalam fungsi %********************** Demodulasi ************************ ich8=ich7./kmod; 60

5 qch8=qch7./kmod; [demodata]=qpskdemod(ich8,qch8,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)); %******************* Hasil Keluaran ******************** switch s case 1 ber1(ss)=(noe/nod); case 2 ber1(ss)=(noe/nod); if s == 1 berteori(ss) = (1/2)*erfc(sqrt((ebn0(ss)))); %fprintf('nilai BER rata-rata untuk 100 kali percoba%f\t%e\t%d\t\n',ebn0,ber,nloop); %********************* Akhir Dari File ******************** disp (' '); 61

6 disp (' '); for s = 1:2 switch s case 1 ber = ber1; fprintf('nilai BER rata-rata untuk tiap EbN0 pada OFDM\n'); case 2 ber = berteori; fprintf('nilai BER secara teori untuk tiap EbN0 pada OFDM\n'); 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 fprintf(' \n\n\n'); if s ==1; plot(ebn0,ber,'--b'); elseif s ==2; plot(ebn0,berteori,'--g'); grid on;hold on xlabel('ebn0 (db)'); ylabel('ber'); title ('GRAFIK HUBUNGAN BER TERHADAP Eb/N0 pada Clipping Rasio 0 db PADA KANAL AWGN'); leg('ofdm Pada Saat Clipping Rasio 0 db','ber OFDM Teori'); 2. Script File OFDM pada DVB-T 2K teradap pengaruh Clipping Noise menggunakan LDPC %****************** Bagian Persiapan ****************** clear all; clc; para=2048; % Jumlah kanal paralel yang ditransmisikan 62

7 fftlen=2048; % Panjang IFFT/FFT noc=1705; % Jumlah carrier nd=68; % Jumlah simbol OFDM untuk satu loop ml=2; % Level modulasi : QPSK sr= ; % Symbol rate br=sr.*ml; % Bit rate per carrier gilen=128; % Panjang guard interval (points) ebn0=10:10:50; % Eb/N0 tau=0.0884; % root mean square daya sinyal %******************** 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([0 1],1,para*nd*ml); % rand : dibangun di dalam fungsi %*********************** LDPC *************************** H=dvbt2ldpc(1/2); % visualize the location of nonzero elements in H l= fec.ldpcenc(h); % Encode the message codeword = encode(l,seldata); %********** Konversi Dari Serial Ke Parallel ************ paradata=reshape(codeword,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; qch1=qch.*kmod; 63

8 %************************ IFFT ************************ x=ich1+qch1.*1i; 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; %************************** Clipping Noise **************** cr=0; [ich4,qch4]=clipn(cr,ich3,qch3); %****************** Kalkulasi Atenuasi ******************* spow=sum(ich4.^2+qch4.^2)/nd./para; % sum : dibangun di dalam fungsi attn=0.5*spow*sr/br*10.^(-ebn0(ss)/10); attn=sqrt(attn); %************************ Receiver ************************ %********************* Penambahan AWGN ******************** [ich5,qch5]=comb(ich4,qch4,attn); %**************** Pengeluaran Guard Interval ************** [ich6,qch6]= girem(ich5,qch5,fftlen2,gilen,nd); %************************* FFT *************************** rx=ich6+qch6.*1i; ry=fft(rx); % fft : dibangun di dalam fungsi ich7=real(ry); % real : dibangun di dalam fungsi qch7=imag(ry); % imag : dibangun di dalam fungsi %********************** Demodulasi ************************ ich8=ich7./kmod; qch8=qch7./kmod; [demodata]=qpskdemod(ich8,qch8,para,nd,ml); 64