DSPRelated.com
Forums

OFDM and CFO EStimation

Started by JALEX August 3, 2007
Hi

I am trying to  generate a OFDM signal with CFO, of which i am trying to
plot a BER Vs the CFO for various SNR....

I started by transmitting a signal and receiving it over a flat fading
channel, using cyclic prefix, and zero padding the data....
which I was successful

But when i tried it over the CFO .....i am not getting it...
The following is the section of the CFO which I use in the channel.

            f = 11.424*(10^6);         %Sampling frequency
            F = f/Sub;                %Sub Carrier Spacing
            t = 1:0.1:11.79;
            Constant=rand();
            CFO = Constant*exp(2*pi*j*F.*t);   %carrier frequency offset
            [a,b]=size(CFO);
           while(s~=b)
           TX_SIG = TX_SIG1.*CFO(1,s);
Could someone help me on this and let me know where i am wrong.

regards


> CFO = Constant*exp(2*pi*j*F.*t); %carrier frequency offset
Why are you multiplying your vector of complex exponentials by the random number? Phil
JALEX wrote:
> Hi > > I am trying to generate a OFDM signal with CFO, of which i am trying to > plot a BER Vs the CFO for various SNR.... > > I started by transmitting a signal and receiving it over a flat fading > channel, using cyclic prefix, and zero padding the data.... > which I was successful > > But when i tried it over the CFO .....i am not getting it... > The following is the section of the CFO which I use in the channel. > > f = 11.424*(10^6); %Sampling frequency > F = f/Sub; %Sub Carrier Spacing > t = 1:0.1:11.79; > Constant=rand(); > CFO = Constant*exp(2*pi*j*F.*t); %carrier frequency offset > [a,b]=size(CFO); > while(s~=b) > TX_SIG = TX_SIG1.*CFO(1,s); > Could someone help me on this and let me know where i am wrong. > > regards > >
CFO should be a unit-amplitude complex exponential rotating at the desired offset frequency (zero Hz == no offset). John
>> CFO = Constant*exp(2*pi*j*F.*t); %carrier frequency
offset
> >Why are you multiplying your vector of complex exponentials by the >random number? > >Phil > >
Hi Phil thanks for replying.... I put up constant value to normalise the CFO that has to be multiplied to the signal.
>JALEX wrote: >> Hi >> >> I am trying to generate a OFDM signal with CFO, of which i am trying
to
>> plot a BER Vs the CFO for various SNR.... >> >> I started by transmitting a signal and receiving it over a flat fading >> channel, using cyclic prefix, and zero padding the data.... >> which I was successful >> >> But when i tried it over the CFO .....i am not getting it... >> The following is the section of the CFO which I use in the channel. >> >> f = 11.424*(10^6); %Sampling frequency >> F = f/Sub; %Sub Carrier Spacing >> t = 1:0.1:11.79; >> Constant=rand(); >> CFO = Constant*exp(2*pi*j*F.*t); %carrier frequency
offset
>> [a,b]=size(CFO); >> while(s~=b) >> TX_SIG = TX_SIG1.*CFO(1,s); >> Could someone help me on this and let me know where i am wrong. >> >> regards >> >> > >CFO should be a unit-amplitude complex exponential rotating at the >desired offset frequency (zero Hz == no offset). > >John >
Hi John .....Thanks for replying So by putting the value of 'Constant' as unity.....is it the way to achieve the CFO on the tranmitted signal.
On Aug 4, 9:18 am, "JALEX" <joginale...@yahoo.co.in> wrote:
> >JALEX wrote: > >> Hi > > >> I am trying to generate a OFDM signal with CFO, of which i am trying > to > >> plot a BER Vs the CFO for various SNR.... > > >> I started by transmitting a signal and receiving it over a flat fading > >> channel, using cyclic prefix, and zero padding the data.... > >> which I was successful > > >> But when i tried it over the CFO .....i am not getting it... > >> The following is the section of the CFO which I use in the channel. > > >> f = 11.424*(10^6); %Sampling frequency > >> F = f/Sub; %Sub Carrier Spacing > >> t = 1:0.1:11.79; > >> Constant=rand(); > >> CFO = Constant*exp(2*pi*j*F.*t); %carrier frequency > offset > >> [a,b]=size(CFO); > >> while(s~=b) > >> TX_SIG = TX_SIG1.*CFO(1,s); > >> Could someone help me on this and let me know where i am wrong. > > >> regards > > >CFO should be a unit-amplitude complex exponential rotating at the > >desired offset frequency (zero Hz == no offset). > > >John > > Hi John .....Thanks for replying > > So by putting the value of 'Constant' as unity.....is it the way to > achieve the CFO on the tranmitted signal.
Help me out here Vladimir. John
On Aug 3, 6:27 am, "JALEX" <joginale...@yahoo.co.in> wrote:
> Hi > > I am trying to generate a OFDM signal with CFO, of which i am trying to > plot a BER Vs the CFO for various SNR.... > > I started by transmitting a signal and receiving it over a flat fading > channel, using cyclic prefix, and zero padding the data.... > which I was successful > > But when i tried it over the CFO .....i am not getting it... > The following is the section of the CFO which I use in the channel. > > f = 11.424*(10^6); %Sampling frequency > F = f/Sub; %Sub Carrier Spacing > t = 1:0.1:11.79; > Constant=rand(); > CFO = Constant*exp(2*pi*j*F.*t); %carrier frequency offset > [a,b]=size(CFO); > while(s~=b) > TX_SIG = TX_SIG1.*CFO(1,s); > Could someone help me on this and let me know where i am wrong. > > regards
I'm not going to debug your Matlab code for you, but I suspect it's a programming error in the way you try to apply this mysterious "CFO" (what is CFO anyway?) to both frequency bins and different time indices at the same time. Julius
>On Aug 3, 6:27 am, "JALEX" <joginale...@yahoo.co.in> wrote: >> Hi >> >> I am trying to generate a OFDM signal with CFO, of which i am trying
to
>> plot a BER Vs the CFO for various SNR.... >> >> I started by transmitting a signal and receiving it over a flat fading >> channel, using cyclic prefix, and zero padding the data.... >> which I was successful >> >> But when i tried it over the CFO .....i am not getting it... >> The following is the section of the CFO which I use in the channel. >> >> f = 11.424*(10^6); %Sampling frequency >> F = f/Sub; %Sub Carrier Spacing >> t = 1:0.1:11.79; >> Constant=rand(); >> CFO = Constant*exp(2*pi*j*F.*t); %carrier frequency
offset
>> [a,b]=size(CFO); >> while(s~=b) >> TX_SIG = TX_SIG1.*CFO(1,s); >> Could someone help me on this and let me know where i am wrong. >> >> regards > >I'm not going to debug your Matlab code for you, but >I suspect it's a programming error in the way you try >to apply this mysterious "CFO" (what is CFO anyway?) >to both frequency bins and different time indices at >the same time. > >Julius >
Hi Julius Well i have changed the format of the Carrier frequency Offset.... Basically i am trying to plot BER/CFO ans I ran the program for theta=0:30; CFO(n) = exp(j*theta(n)); %carrier frequency offset TX_SIG = TX_SIG1.*CFO(n);
>Where the TX_SIG is the transmitted data after IFFT and adding of cyclic
prefix. But when i run the program for varoius iterration for a particular SNR=30..i am not getting any graph...rather the BER is showing to be zero.. i would like to know whether my CFO is right or else how should I multiply the Frequency offset to the signal
On Aug 3, 4:27 am, "JALEX" <joginale...@yahoo.co.in> wrote:
> Hi > > I am trying to generate aOFDMsignal withCFO, of which i am trying to > plot a BER Vs theCFOfor various SNR.... > > I started by transmitting a signal and receiving it over a flat fading > channel, using cyclic prefix, and zero padding the data.... > which I was successful > > But when i tried it over theCFO.....i am not getting it... > The following is the section of theCFOwhich I use in the channel. > > f = 11.424*(10^6); %Sampling frequency > F = f/Sub; %Sub Carrier Spacing > t = 1:0.1:11.79; > Constant=rand(); > CFO= Constant*exp(2*pi*j*F.*t); %carrier frequency offset > [a,b]=size(CFO); > while(s~=b) > TX_SIG = TX_SIG1.*CFO(1,s); > Could someone help me on this and let me know where i am wrong. > > regards
I'm assuming CFO means carrier frequency offset, and you're simulating at complex baseband. Also, that the CFO remains constant over a given time period i.e. for the entire BER trial since that is what you are attempting to compare. If you have alternative definitions/ assumptions then make them clear. tx_sig represents your transmitted signal with samples spaced by Ts seconds N is the number of samples in a given time period n = ([0:N-1]*Ts); F = 1; % freq offset in Hz CFO = exp(j*2*pi*F*n); % unit amplitude complex exponential rx_sig = tx_sig .* CFO; what's your problem? col
cb...@hotmail.com wrote:
> On Aug 3, 4:27 am, "JALEX" <joginale...@yahoo.co.in> wrote: > > Hi > > > > I am trying to generate aOFDMsignal withCFO, of which i am trying to > > plot a BER Vs theCFOfor various SNR.... > > > > I started by transmitting a signal and receiving it over a flat fading > > channel, using cyclic prefix, and zero padding the data.... > > which I was successful > > > > But when i tried it over theCFO.....i am not getting it... > > The following is the section of theCFOwhich I use in the channel. > > > > f = 11.424*(10^6); %Sampling frequency > > F = f/Sub; %Sub Carrier Spacing > > t = 1:0.1:11.79; > > Constant=rand(); > > CFO= Constant*exp(2*pi*j*F.*t); %carrier frequency offset > > [a,b]=size(CFO); > > while(s~=b) > > TX_SIG = TX_SIG1.*CFO(1,s); > > Could someone help me on this and let me know where i am wrong. > > > > regards > > > I'm assuming CFO means carrier frequency offset, and you're simulating > at complex baseband. Also, that the CFO remains constant over a given > time period i.e. for the entire BER trial since that is what you are > attempting to compare. If you have alternative definitions/ > assumptions then make them clear. > > tx_sig represents your transmitted signal with samples spaced by Ts > seconds > > N is the number of samples in a given time period > > n = ([0:N-1]*Ts); > F = 1; % freq offset in Hz > CFO = exp(j*2*pi*F*n); % unit amplitude complex exponential > > rx_sig = tx_sig .* CFO; > > what's your problem? > > col
One problem that I wanted him to figure out was that the way he created his code, he was applying a constant CFO equal to one subcarrier spacing using a randomly scaled complex exponential series. Based on these obvious errors, he seemed as though he needed practice in problem solving as well as in systematic debugging process. He may also need to learn his theory a little better. Phil P.S. I assume that the originator was a 'he'.