0% found this document useful (0 votes)
964 views5 pages

OFDM System Simulation and BER Analysis

The document summarizes an OFDM simulation that was run. It describes key parameters of the simulation including: - 64 carriers were used with convolutional coding and 16-QAM modulation. - Pilot signals were inserted at 4 locations in the data. - Cyclic prefix was added that was 25% of the symbol length. - White Gaussian noise was added and BER was calculated for SNR from 0-50 dB. - The receiver performed synchronization, demodulation, decoding and error calculation to determine BER.
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
964 views5 pages

OFDM System Simulation and BER Analysis

The document summarizes an OFDM simulation that was run. It describes key parameters of the simulation including: - 64 carriers were used with convolutional coding and 16-QAM modulation. - Pilot signals were inserted at 4 locations in the data. - Cyclic prefix was added that was 25% of the symbol length. - White Gaussian noise was added and BER was calculated for SNR from 0-50 dB. - The receiver performed synchronization, demodulation, decoding and error calculation to determine BER.
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 5

% % % % % % % % % % %

OFDM Code

No.of Carriers: 64 coding used: Convolutional coding Single frame size: 96 bits Total no. of Frames: 100 Modulation: 16-QAM No. of Pilots: 4 Cylic Extension: 25%(16)

close all clear all clc %% % Generating and coding data t_data=randint(9600,1)'; x=1; si=1; %for BER rows %% for d=1:100; data=t_data(x:x+95); x=x+96; k=3; n=6; s1=size(data,2); % Size of input matrix j=s1/k; %% % Convolutionally encoding data constlen=7; codegen = [171 133]; % Polynomial trellis = poly2trellis(constlen, codegen); codedata = convenc(data, trellis);

%% %Interleaving coded data s2=size(codedata,2); j=s2/4; matrix=reshape(codedata,j,4); intlvddata = matintrlv(matrix',2,2)'; % Interleave. intlvddata=intlvddata'; %% % Binary to decimal conversion dec=bi2de(intlvddata','left-msb'); %% %16-QAM Modulation

M=16; y = qammod(dec,M); % scatterplot(y); %% % Pilot insertion lendata=length(y); pilt=3+3j; nofpits=4; k=1; for i=(1:13:52) pilt_data1(i)=pilt; for j=(i+1:i+12); pilt_data1(j)=y(k); k=k+1; end end pilt_data1=pilt_data1'; % size of pilt_data =52 pilt_data(1:52)=pilt_data1(1:52); % upsizing to 64 pilt_data(13:64)=pilt_data1(1:52); % upsizing to 64 for i=1:52 pilt_data(i+6)=pilt_data1(i); end %% % IFFT ifft_sig=ifft(pilt_data',64); %% % Adding Cyclic Extension cext_data=zeros(80,1); cext_data(1:16)=ifft_sig(49:64); for i=1:64 cext_data(i+16)=ifft_sig(i); end %% % Channel % SNR o=1; for snr=0:2:50

ofdm_sig=awgn(cext_data,snr,'measured'); % Adding white Gaussian Noise % figure; % index=1:80; % plot(index,cext_data,'b',index,ofdm_sig,'r'); %plot both signals % legend('Original Signal to be Transmitted','Signal with AWGN'); %% % RECEIVER %% %Removing Cyclic Extension for i=1:64 rxed_sig(i)=ofdm_sig(i+16); end %% % FFT ff_sig=fft(rxed_sig,64); %% % Pilot Synch%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% for i=1:52 synched_sig1(i)=ff_sig(i+6); end k=1; for i=(1:13:52) for j=(i+1:i+12); synched_sig(k)=synched_sig1(j); k=k+1; end end % scatterplot(synched_sig) %% % Demodulation dem_data= qamdemod(synched_sig,16); %% % Decimal to binary conversion bin=de2bi(dem_data','left-msb'); bin=bin';

%% % De-Interleaving deintlvddata = matdeintrlv(bin,2,2); % De-Interleave deintlvddata=deintlvddata'; deintlvddata=deintlvddata(:)';

%% %Decoding data n=6; k=3; decodedata =vitdec(deintlvddata,trellis,5,'trunc','hard'); % decoding datausing veterbi decoder rxed_data=decodedata; %% % Calculating BER rxed_data=rxed_data(:)'; errors=0; c=xor(data,rxed_data); errors=nnz(c); % for i=1:length(data) % % % if rxed_data(i)~=data(i); % errors=errors+1; % % end % end BER(si,o)=errors/length(data); o=o+1; end % SNR loop ends here si=si+1; end % main data loop %% % Time averaging for optimum results for col=1:25; ber(1,col)=0; for row=1:100; %%%change if SNR loop Changed

ber(1,col)=ber(1,col)+BER(row,col); end end ber=ber./100; %% figure

i=0:2:48; semilogy(i,ber); title('BER vs SNR'); ylabel('BER'); xlabel('SNR (dB)'); grid on

You might also like