Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Need to reverse engineer an OFDM program

Status
Not open for further replies.

soso123

Newbie level 2
Joined
Apr 16, 2010
Messages
2
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Location
dubai
Activity points
1,329
OFDM project

Hi,
i have an OFDM project & i did not understand this code, can any one explain it to me especialy why we need to expand the bit stream

% Vinay Mohan Jonnakuti
% Wireless Communication:
% BPSK modulation and demodulation with increased bit rate
%BPSK simulation using a carrier cosine wave with increased bit rate
clc;
close all;
clear all;

% no of sub carrier channels
channels=6;
c=6;
% bits per channels
bits=54
% total no of bits to be transmitted
n=324;
for i=1:n
data(i)= 2*round(rand)-1;
end

% Converting the series into parallel for the channels
s = reshape(data,c,bits);
% BPSK modulation for a single channel
signal1 = s(1,:);
%first expand the bit stream
exdata1=[];
exdata2=[];
exdata3=[];
exdata4=[];
exdata5=[];
exdata6=[];
for i=1:length(signal1)
for rep=1:2
exdata1= [exdata1 signal1(i)];
end
end

signal2 = s(2,:);
%first expand the bit stream
exdata=[];
for i=1:length(signal2)
for rep=1:2
exdata2= [exdata2 signal2(i)];
end
end

signal3= s(3,:);
%first expand the bit stream
exdata=[];
for i=1:length(signal3)
for rep=1:2
exdata3= [exdata3 signal3(i)];
end
end

signal4= s(4,:);
%first expand the bit stream
exdata=[];
for i=1:length(signal4)
for rep=1:2
exdata4= [exdata4 signal4(i)];
end
end

signal5= s(5,:);
%first expand the bit stream
exdata=[];
for i=1:length(signal5)
for rep=1:2
exdata5= [exdata5 signal5(i)];
end
end

signal6= s(6,:);
%first expand the bit stream
exdata=[];
for i=1:length(signal6)
for rep=1:2
exdata6= [exdata6 signal6(i)];
end
end

% Bpsk modulation
m=10*n;
% Generating the carrier signal
ts=.1;
tp=1:ts:11.79;
carrier1=cos(2*pi*tp);
% Generating the modulated signal 1
bpsk_sig1=exdata1.*carrier1;
% Generating the modulated signal 2
carrier2=cos(4*pi*tp);
bpsk_sig2=exdata2.*carrier2;
% Generating the modulated signal 3
carrier3=cos(6*pi*tp);
bpsk_sig3=exdata3.*carrier3;
% Generating the modulated signal 4
carrier4=cos(8*pi*tp);
bpsk_sig4=exdata4.*carrier4;
% Generating the modulated signal 5
carrier5=cos(10*pi*tp);
bpsk_sig5=exdata5.*carrier5;
carrier6=cos(12*pi*tp);
% Generating the modulated signal
bpsk_sig6=exdata6.*carrier6;
% taking the iFFT of each of these signals
if_sig1=ifft(bpsk_sig1);
if_sig2=ifft(bpsk_sig2);
if_sig3=ifft(bpsk_sig3);
if_sig4=ifft(bpsk_sig4);
if_sig5=ifft(bpsk_sig5);
if_sig6=ifft(bpsk_sig6);

fin(1,:)=if_sig1;
fin(2,:)=if_sig2;
fin(3,:)=if_sig3;
fin(4,:)=if_sig4;
fin(5,:)=if_sig5;
fin(6,:)=if_sig6;

transmit=reshape(fin,1,648);


% generating the noise
% p=rand(1,800)*2*pi;
p=rand*2*pi;
snr=10;
r=sqrt(-1*(1/snr*log(1 - rand)));
% no = 5*(r.* exp(j*p));
no = (r.* exp(j*p));
% value of alpha
al=rand+j*rand;
%al=1;
% Spreading channel with the alpha as the variable

for k=2:2:646
for l = 1:2
%al=round(rand)+j*round(rand)
rec(k+l)=transmit(k+l)+al*transmit(k-2+l);
end
end

rxdata=rec+ no ;

% Converting from serial to parallel
myrec=reshape(rxdata,6,108)

rxdata1=fft(myrec(1,:));
rxdata2=fft(myrec(2,:));
rxdata3=fft(myrec(3,:));
rxdata4=fft(myrec(4,:));
rxdata5=fft(myrec(5,:));
rxdata6=fft(myrec(6,:));

% taking the FFT


%begin demodulation
%first multiply recieved bitstream by cosine wave with carrier frequency


uncarry1=rxdata1.*carrier1;
uncarry2=rxdata2.*carrier2;
uncarry3=rxdata3.*carrier3;
uncarry4=rxdata4.*carrier4;
uncarry5=rxdata5.*carrier5;
uncarry6=rxdata6.*carrier6;

%plot(uncarry)
%demodulate by integrating
dec1=[];
dec2=[];
dec3=[];
dec4=[];
dec5=[];
dec6=[];
for inc=1:2:length(uncarry1)
dec=trapz(inc:inc+1,uncarry1(inc:inc+1));
dec1=[dec1 dec];
end
%2
for inc=1:2:length(uncarry2)
dec=trapz(inc:inc+1,uncarry2(inc:inc+1));
dec2=[dec2 dec];
end
%3
for inc=1:2:length(uncarry3)
dec=trapz(inc:inc+1,uncarry3(inc:inc+1));
dec3=[dec3 dec];
end
%4
for inc=1:2:length(uncarry4)
dec=trapz(inc:inc+1,uncarry4(inc:inc+1));
dec4=[dec4 dec];
end
%5
for inc=1:2:length(uncarry5)
dec=trapz(inc:inc+1,uncarry5(inc:inc+1));
dec5=[dec5 dec];
end
%6
for inc=1:2:length(uncarry6)
dec=trapz(inc:inc+1,uncarry6(inc:inc+1));
dec6=[dec6 dec];
end
final_rec(1,:)=dec1;
final_rec(2,:)=dec2;
final_rec(3,:)=dec3;
final_rec(4,:)=dec4;
final_rec(5,:)=dec5;
final_rec(6,:)=dec6;

fin_rec_parallel=reshape(final_rec,1,324)
%make decision with a threshold of zero
demod=[];
for i=1:length(fin_rec_parallel)
if fin_rec_parallel(i)>0
demod=[demod 1];
else
demod=[demod -1];
end
end

%stem(demod)

%calculate errors
error=0;
for i=1:length(demod)
if data(i)~=demod(i)
error=error+1;
end
end
error;

ber=error/324
figure(3)
stem(data)
hold
stem(demod,'rx')
 

Re: OFDM project

how to contact him? i dnt have his email
 

OFDM project

where did you get this code?

google

Added after 1 hours 5 minutes:

Even if I google his name, I would not be sure if he is the same guy. So, I would not like to forward you emails of unwanted people.

Where did you get this program?

Anyway visit www.dsplog.com to find good and easily explain ofdm program. You can also find some code and explanation at yahoo groups ofdmandmatlab and telecom_research

Like Ramya Ravi used to say here,

"Happy Learning"
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top