LAMPIRAN I Flowchart Algoritma Simulasi Kinerja OFDM pada DVB-T MULAI Set Parameter Bangkitkan data random Ubah data masukan menjadi bit data Ubah bit-bit data ke dalam bentuk paralel Memodulasi tiap-tiap bit paralel pada subcarrier yang berbeda Alirkan sinyal hasil modulasi ke dalam IFFT Tambahkan cyclic prefix YA TIDAK Tampilkan prefis di data Diproses di kanal dengan pengaruh AWGN A
A Buang cyclic prefix Alirkan sinyal ke FFT Demodulasi tiap-tiap sinyal Ubah sinyal ke bentuk serial Hitung bit error rate Tampilkan Grafik Selesai
LAMPIRAN II Program Simulasi 1. Script File OFDM pada DVB-T 2K pengaruh E b /N0 clear all; clc; %****************** Bagian Persiapan ****************** para=4096; fftlen=4096; noc=1705; nd=188; ml=2; sr=6750000; br=sr.*ml; gilen=128; ebn0=1:15; % Jumlah Kanal parallel yang ditransmisikan % panjang FFT % Jumlah carrier % Jumlah simbol OFDM untuk satu loop % Level Modulasi : QPSK % Symbol rate % Bit rate per carrier % Panjang guard interval (points) % Eb/N0 %******************** Bagian loop utama ****************** nloop=100; % Jumlah loop simulasi noe = 0; % Jumlah data error nod = 0; % Jumlah data ditransmisiskan for s = 1:2 for ss=1:15 for iii=1:nloop %******************** transmitter ********************* %****************** Pembangkitan Data ******************* seldata=rand(1,para*nd*ml) > 0.5 ; %*********** Konversi seri ke paralel ************ paradata=reshape(seldata,para,nd*ml); % reshape : built in function %******************* Modulasi QPSK ******************
[ich,qch]=qpskmod(paradata,para,nd,ml); kmod=1/sqrt(2); % sqrt : built in function if s == 1; ich1=ich.*kmod; qch1=qch.*kmod; %************************ IFFT ************************ x=ich1+qch1.*1i; y=ifft(x); % ifft : built in function ich2=real(y); % real : built in function qch2=imag(y); % imag : built in function %************** Penyisipan Guard interval ************** [ich3,qch3]= giins(ich2,qch2,fftlen,gilen,nd); fftlen2=fftlen+gilen; %**************** Perhitungan attenuasi ************* spow=sum(ich3.^2+qch3.^2)/nd./para; % sum : built in function attn=0.5*spow*sr/br*10.^(-ebn0(ss)/10); attn=sqrt(attn); %********************* Receiver ********************* %******************** Penambahan AWGN ******************* [ich4,qch4]=comb(ich3,qch3,attn); %***************** Penghilangan Guard interval ************* %m2 [ich5,qch5]= girem(ich4,qch4,fftlen2,gilen,nd); %*********************** FFT ************************ rx=ich5+qch5.*1i; ry=fft(rx); ich6=real(ry); qch6=imag(ry); % fft : built in function % real : built in function % imag : built in function %********************* demodulasi ******************* ich7=ich6./kmod; qch7=qch6./kmod; [demodata]=qpskdemod(ich7,qch7,para,nd,ml);
%*********** Konversi parallel ke seri ************ demodata1=reshape(demodata,1,para*nd*ml); %**************** Bit Error Rate (BER) **************** % Jumlah error yang muncul dan data noe2=sum(abs(demodata1-seldata)); % sum : built in function nod2=length(seldata); % length : built in function % 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.9f \n', ebn0(ss),iii,noe2/nod2); %******************* Hasil Keluaran ******************** switch s case 1 berd(ss)=(noe/nod); case 2 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 ******************** for s = 1:2 switch s case 1 ber = berd; fprintf('nilai BER rata-rata untuk tiap EbN0 pada OFDM\n'); case 2 ber = berteori; fprintf('nilai BER teori rata-rata untuk tiap EbN0 pada OFDM\n'); fprintf(' ---------------------- \n');
fprintf(' EbN0 BER \n'); fprintf(' ---------------------- \n'); for u = 1:15 fprintf(' %2.0f db %0.9f \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,'--r'); grid on;hold on xlabel('ebn0 (db)'); ylabel('ber'); title ('Grafik Perbandingan BER terhadapa EbN0 pada kanal AWGN'); leg('ofdm','ber OFDM Teori'); 2. Script File OFDM pada DVB-T 8K pengaruh E b /N0 clear all; clc; %****************** Bagian Persiapan ****************** para=16384; fftlen=16384; noc=6817; nd=188; ml=2; sr=6750000; br=sr.*ml; gilen=512; ebn0=1:15; % Jumlah kanal parallel yang ditransmisikan % Panjang FFT % Jumlah carrier % Jumlah simbol OFDM dalam satu loop % level Modulasi : QPSK % Symbol rate % Bit rate per carrier % Panjang guard interval (points) % Eb/N0 %******************** Bagian loop utama ****************** nloop=100; % jumlah loop simulasi noe = 0; % Jumlah data error nod = 0; % Jumlah data yang ditransmisikan for s = 1:2 for ss=1:15
for iii=1:nloop %******************** transmitter ********************* %****************** Pembangkitan data ******************* seldata=rand(1,para*nd*ml) > 0.5 ; %*********** Konversi seri e paralel ************ paradata=reshape(seldata,para,nd*ml); % reshape : built in function %******************* modulasi QPSK ****************** [ich,qch]=qpskmod(paradata,para,nd,ml); kmod=1/sqrt(2); % sqrt : built in function if s == 1; ich1=ich.*kmod; qch1=qch.*kmod; %************************ IFFT ************************ x=ich1+qch1.*1i; y=ifft(x); % ifft : built in function ich2=real(y); % real : built in function qch2=imag(y); % imag : built in function %************** Penyisipan Guard interval ************** [ich3,qch3]= giins(ich2,qch2,fftlen,gilen,nd); fftlen2=fftlen+gilen; %**************** Perhitungan Attenuation ************* spow=sum(ich3.^2+qch3.^2)/nd./para; % sum : built in function attn=0.5*spow*sr/br*10.^(-ebn0(ss)/10); attn=sqrt(attn); %********************* Receiver ********************* %******************** Penambahan AWGN ******************* [ich4,qch4]=comb(ich3,qch3,attn); %***************** Penghilangan Guard interval ************* %m2
[ich5,qch5]= girem(ich4,qch4,fftlen2,gilen,nd); %*********************** FFT ************************ rx=ich5+qch5.*1i; ry=fft(rx); ich6=real(ry); qch6=imag(ry); % fft : built in function % real : built in function % imag : built in function %********************* demodulasi ******************* ich7=ich6./kmod; qch7=qch6./kmod; [demodata]=qpskdemod(ich7,qch7,para,nd,ml); %*********** Konversi parallel ke seri ************ demodata1=reshape(demodata,1,para*nd*ml); %**************** Bit Error Rate (BER) **************** % Jumlah error yang muncul dan data noe2=sum(abs(demodata1-seldata)); % sum : built in function nod2=length(seldata); % length : built in function % 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.9f \n', ebn0(ss),iii,noe2/nod2); %******************* Hasil keluaran ******************** switch s case 1 berd(ss)=(noe/nod); case 2 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 ********************
for s = 1:2 switch s case 1 ber = berd; fprintf('nilai BER rata-rata untuk tiap EbN0 pada OFDM\n'); case 2 ber = berteori; fprintf('nilai BER teori rata-rata untuk tiap EbN0 pada OFDM\n'); fprintf(' ---------------------- \n'); fprintf(' EbN0 BER \n'); fprintf(' ---------------------- \n'); for u = 1:15 fprintf(' %2.0f db %0.9f \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,'--r'); grid on;hold on xlabel('ebn0 (db)'); ylabel('ber'); title ('Grafik Perbandingan BER terhadapa EbN0 pada kanal AWGN'); leg('ofdm','ber OFDM Teori'); 3. Script File OFDM pada DVB-T 2K pengaruh Bit Rate %****************** Bagian Persiapan ****************** clear all; clc;
para=4096; % Jumlah kanal paralel yang ditransmisikan fftlen=4096; % Panjang FFT noc=1705; % Jumlah carrier nd=188; % Jumlah simbol OFDM untuk satu loop ml=2; % Level modulasi : QPSK sr=3000000:3000000:24000000; % Symbol rate br=sr.*ml; % Bit rate per carrier gilen=128; % Panjang guard interval (points) ebn0=10; % Eb/N0 %******************* Bagian Main Loop ******************* nloop=100; % Jumlah loop simulasi noe = 0; nod = 0; % Jumlah data error % Jumlah data yang ditransmisikan for s = 1:8 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 %************************ IFFT ***************************** x=ich+qch.*i; y=ifft(x); ich2=real(y); qch2=imag(y); % ifft : dibangun di dalam fungsi % real : dibangun di dalam fungsi % 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); %************************** 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 ************************** 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 bit rate %d percobaan ke %3.0f adalah 0.2f \n', br,iii,noe2/nod2); %*********************** 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 ******************** %figure(2); fprintf('nilai BER rata-rata untuk Bit Rate\n'); fprintf(' -------------------------- \n'); fprintf(' Data Rate BER \n'); fprintf(' -------------------------- \n'); for u = 1:8 fprintf(' %2.0f bps %0.9f \n',br(u),ber(u)); % fprintf : built in function fprintf(' -------------------------- \n\n\n'); plot(br,ber,'--b'); grid on; xlabel('bit RATE'); ylabel('ber'); title ('GRAFIK PERBANDINGAN BER TERHADAP BIT RATE'); 4. Script File OFDM pada DVB-T 8K pengaruh Bit Rate %****************** Bagian Persiapan ****************** clear all;
clc; para=16384; % Jumlah kanal paralel yang %ditransmisikan fftlen=16384; % Panjang FFT noc=6817; % Jumlah carrier nd=188; % Jumlah simbol OFDM untuk satu loop ml=2; % Level modulasi : QPSK sr=3000000:3000000:24000000; % Symbol rate br=sr.*ml; % Bit rate per carrier gilen=512; % Panjang guard interval (points) ebn0=10; % Eb/N0 %******************* Bagian Main Loop ******************* nloop=100; % Jumlah loop simulasi noe = 0; nod = 0; % Jumlah data error % Jumlah data yang ditransmisikan for s = 1:8 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 %************************ IFFT ***************************** x=ich+qch.*i; y=ifft(x); ich2=real(y); qch2=imag(y); % ifft : dibangun di dalam fungsi % real : dibangun di dalam fungsi % 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); %************************** 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 ************************** 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 bit rate %d percobaan ke %3.0f adalah 0.2f \n', br,iii,noe2/nod2); %*********************** 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 ******************** %figure(2); fprintf('nilai BER rata-rata untuk Bit Rate\n'); fprintf(' -------------------------- \n'); fprintf(' Data Rate BER \n'); fprintf(' -------------------------- \n'); for u = 1:8 fprintf(' %2.0f bps %0.9f \n',br(u),ber(u)); % fprintf : built in function fprintf(' -------------------------- \n\n\n'); plot(br,ber,'--b'); grid on; xlabel('bit RATE'); ylabel('ber'); title ('GRAFIK PERBANDINGAN BER TERHADAP BIT RATE');