Sign in

username:

password:



Not a member?

Search compdsp



Search tips

comp.dsp by Keywords

Adaptive Filter | ADPCM | ADSP | ADSP-2181 | Aliasing | AMR | Anti-Aliasing | ARMA | Autocorrelation | AutoCovariance | Beamforming | Bessel | Blackfin | Butterworth | C6713 | CCS | Chebyshev | CIC Filter | Circular Convolution | Code Composer Studio | Comb Filter | Compression | Convolution | Cross Correlation | DCT | Decimation | Deconvolution | Demodulation | DM642 | DSP Boards | DSP/BIOS | DTMF | Echo Cancellation | Equalization | Equalizer | ETSI | EZLITE (Ez-kit Lite) | FFT | FFTW | FIR Filter | Fixed Point | FSK | G.711 | G.723 | G.729 | Gaussian Noise | Goertzel | GPIO | Hilbert Transform | IFFT | IIR Filter | Interpolation | Invariance | JTAG | Kalman | Laplace Transform | Levinson | LPC | McBSP | MIPS | Modulation | MPEG | Multirate | Notch Filter | Nyquist | OFDM | Oversampling | Pink Noise | Pitch | PLL | Polyphase | QAM | QDMA | Quantization | Quantizer | Radar | Random Noise | Reed Solomon | Remez | Resampling | RTDX | Sampling | Sharc | TI C6711 | Undersampling | Viterbi | Wavelets | White Noise | Wiener Filter | Windowing | XDS510PP | Z Transform


Discussion Groups

Free Online Books

See Also

Embedded SystemsFPGAElectronics

Discussion Groups | Comp.DSP | T/2 -spaced FSE MMSE equalizer, with carrier offset

There are 11 messages in this thread.

You are currently looking at messages 0 to 10.


T/2 -spaced FSE MMSE equalizer, with carrier offset - jia - 2006-06-05 22:50:00

Hi, here

I am now doing a project about T/2 -spaced FSE MMSE equalizer based on
the stochastic gradient algorithm. I use training symbol method to
update the coefficient.

It seems working well in some channel distortion enviroment. However,
when carrier offset exists, i.e. (the constellation of QAM rotates),
this algorithm doesn't converge, even I force the update coefficient
steps very small.

Is the equalizer with this algorithm capable of comensating for the
carrier frequency offset. I searched some papers, and find someone
prefer to the CMA (constant modulus algorithm) method if carrier offset
exists.

The following is my matlab codes for adaptive equalizer, with
stochastic gradient algorithm. It doesn't converge when there is
carrier offset. Any idea?

% Ak,  we assume a known symbol sequence
% xn, a comples signal, modulated by QAM
% beta, coefficient update steps
% c, coeffiecient for equalizer

%      Carrier offset model
xn = xn.*exp(j*2*pi*delta_f*(0:length(xn)-1) );

%       Equalizer

beta = 0.0005;                        % step-size of the algorithm
eq_len = 33;                           % length of equalizer

c = zeros(eq_len,1);                % equalizer coefficients,
initializations
c((eq_len+1)/2) = 1;                 % the middle componet is 1

equalizer_in = xn(1: T*Fs/2 : end);                                 %
T/2 spaced input equlizer

for i = (eq_len+1)/2 : length(equalizer_in)-(eq_len-1)/2
    rk = flipud(equalizer_in(i-(eq_len-1)/2:i+(eq_len-1)/2).'); %
Received signal vector
    Ek(i) = Ak(i) - c.'*rk;
     % Error signal
    c = c + beta.*Ek(i).*conj(rk);
    eq_out(i-(eq_len-1)/2)=c.'*rk;
end

______________________________
New DSP Code Snippets Section now Live.   Learn more about the reward program for contributors here.

Re: T/2 -spaced FSE MMSE equalizer, with carrier offset - Steve Underwood - 2006-06-06 00:18:00



jia wrote:
> Hi, here
> 
> I am now doing a project about T/2 -spaced FSE MMSE equalizer based on
> the stochastic gradient algorithm. I use training symbol method to
> update the coefficient.
> 
> It seems working well in some channel distortion enviroment. However,
> when carrier offset exists, i.e. (the constellation of QAM rotates),
> this algorithm doesn't converge, even I force the update coefficient
> steps very small.

Of course it doesn't converge. You are trying to train against a moving 
target. You need to despin the constellation before you feed the data to 
an equalizer of that type.

> Is the equalizer with this algorithm capable of comensating for the
> carrier frequency offset. I searched some papers, and find someone
> prefer to the CMA (constant modulus algorithm) method if carrier offset
> exists.

CMA is usually used in blind equalizers. It converges more slowly than 
LMS, so it won't usually work with formal training sequences - they 
aren't long enough. Although you can use CMA to train the equalizer 
before you despin the constellation, you would normally need to despin 
before you can start decoding the bit stream.

> The following is my matlab codes for adaptive equalizer, with
> stochastic gradient algorithm. It doesn't converge when there is
> carrier offset. Any idea?

If the constellation spins rather slowly, and the equalizer adapts 
fairly quickly, you can actually track the constellation's spinning in 
the equalizer, and be able to decode the data. This is a *really* nasty 
botch, though, and you can't expect to demodulate high order QAM this 
way. You can kinda decode 16-QAM at high SNR - interesting for 
experimenting, but not much use in a system.

Steve
______________________________
New DSP Code Snippets Section now Live.   Learn more about the reward program for contributors here.

Re: T/2 -spaced FSE MMSE equalizer, with carrier offset - jia - 2006-06-06 03:11:00

Hi, Steve:

> If the constellation spins rather slowly, and the equalizer adapts
> fairly quickly, you can actually track the constellation's spinning in
> the equalizer, and be able to decode the data.

you mean the if the frequency offset is really small, and the equalizer
coefficient updates a little bigger. the equqlizer may track the
constellation's spinning?

> This is a *really* nasty botch, though, and you can't expect to demodulate
> high order QAM this way. You can kinda decode 16-QAM at high SNR - interesting for
> experimenting, but not much use in a system.

I rewrite the program in a noiseless channel, with 16-QAM modulation.
However, the equalizer also doesn't work. ^_^ , The |error] seems to be
increase to the time.

------------------------------------------------------

clear all
clc

% % % % % % % % % % % % % % % % % % % % % % % %
%       Parameters Initialization
% % % % % % % % % % % % % % % % % % % % % % % %
Fs = 8;                                % Sampling frequency 8Hz
Ts = 1/Fs;                            % Sampling interval [s]
T = 1;                                   % Symbol time interval [s]
Taps = 2^9;                           % Taps of RC shaping filter
alpha = 0.5;                           % Roll-off factor
num_bits = 1500;                    % Number of information bits

delta_f = 0.00000001;              % Carrier frequency offset

% % % % % % % % % % % % % % % % % % % % % % % %
% 16-QAM modulation
% % % % % % % % % % % % % % % % % % % % % % % %

M = 4;                      % M^2-QAM
temp_M = -(M-1):2:(M-1);    % Generate QAM Alphabet, one possibility
for i=1:M
    for k = 1:M
        QAM(i,k) = temp_M(i) + j*temp_M(k);
    end
end
QAM = QAM(:).';             % Alphabet vector
index = randint(1,num_bits,[1 M^2]);
sym = QAM(index);           % Random QAM symbol sequence

% % % % % % % % % % % % % % % % % % % % % % % %
% Discrete Time Overall Puse-Shaping Filter p
% % % % % % % % % % % % % % % % % % % % % % % %

t = -Ts*Taps/2: Ts : Ts*(Taps/2-1);         % Time vector (sampling
intervals)
t = t+0.00000001;                           % Otherwise, the
denominator would be zero at t=0
p = sinc(t/T).*(cos(alpha*pi*t/T)./(1-(2*alpha*t/T).^2));
                                            % Raised-Cosine FIR filter

% % % % % % % % % % % % % % % % % % % % % % % %
% Using the Designed Pulse-Shaping Filter
% % % % % % % % % % % % % % % % % % % % % % % %
N = length(sym);                            % Number of symbols
r = Fs*T;                                        % Oversampling factor
sym_over(1: r : r*N) = sym;
xn = filter(p,1,sym_over);                  % Pulse Shaping filtering
xn = xn(Taps/2+1:end);                      % delete filter delay
Ak = xn(1: T*Fs/2 : end);                   % Ak for T/2-spaced
Equalizer

% % % % % % % % % % % % % % % % % % % % % % % %
% Carrier offset model
% % % % % % % % % % % % % % % % % % % % % % % %

xn = xn.*exp(j*2*pi*delta_f*(0:length(xn)-1) );
scatterplot(xn(1: T*Fs : end))

% % % % % % % % % % % % % % % % % % % % % % % %
%       Equalizer
% % % % % % % % % % % % % % % % % % % % % % % %

beta = 0.001;            % step-size of the algorithm
eq_len = 33;            % length of equalizer
c = zeros(eq_len,1); % equalizer coefficients, initializations
c((eq_len+1)/2) = 1;

equalizer_in = xn(1: T*Fs/2 : end);     % T/2 spaced input equlizer

for i = (eq_len+1)/2 : length(equalizer_in)-(eq_len-1)/2
    rk = flipud(equalizer_in(i-(eq_len-1)/2:i+(eq_len-1)/2).'); %
Received signal vector
    Ek(i) = Ak(i) - c.'*rk;              % Error signal, we assume a
known symbol sequence
    c = c + beta.*Ek(i).*conj(rk);
end

figure; plot(abs(Ek).^2); % Convergence behaviour of the LMS-algorithm.

______________________________
New DSP Code Snippets Section now Live.   Learn more about the reward program for contributors here.

Re: T/2 -spaced FSE MMSE equalizer, with carrier offset - Anonymous - 2006-06-06 08:25:00

"Steve Underwood" <s...@dis.org> wrote in message
news:e62vni$gut$1...@home.itg.ti.com...
> jia wrote:
> > Hi, here
> >
> > I am now doing a project about T/2 -spaced FSE MMSE equalizer based on
> > the stochastic gradient algorithm. I use training symbol method to
> > update the coefficient.
> >
> > It seems working well in some channel distortion enviroment. However,
> > when carrier offset exists, i.e. (the constellation of QAM rotates),
> > this algorithm doesn't converge, even I force the update coefficient
> > steps very small.
>
> Of course it doesn't converge. You are trying to train against a moving
> target. You need to despin the constellation before you feed the data to
> an equalizer of that type.
>
> > Is the equalizer with this algorithm capable of comensating for the
> > carrier frequency offset. I searched some papers, and find someone
> > prefer to the CMA (constant modulus algorithm) method if carrier offset
> > exists.
>
> CMA is usually used in blind equalizers. It converges more slowly than
> LMS, so it won't usually work with formal training sequences - they
> aren't long enough. Although you can use CMA to train the equalizer
> before you despin the constellation, you would normally need to despin
> before you can start decoding the bit stream.
>
> > The following is my matlab codes for adaptive equalizer, with
> > stochastic gradient algorithm. It doesn't converge when there is
> > carrier offset. Any idea?
>
> If the constellation spins rather slowly, and the equalizer adapts
> fairly quickly, you can actually track the constellation's spinning in
> the equalizer, and be able to decode the data. This is a *really* nasty
> botch, though, and you can't expect to demodulate high order QAM this
> way. You can kinda decode 16-QAM at high SNR - interesting for
> experimenting, but not much use in a system.
>
> Steve

That's correct, you want to use CMA while the constellation is spinning.
Once CMA has adapted it's usually possible to obtain carrier lock so that
you can switch to decision directed adaptation.

In your case, since you have a training sequence you could still try to use
CMA since you know the radius of each symbol in the sequence and it should
adapt faster than blind. However, unless it is a differential QAM signal you
still need to recover the carrier very quickly to get good data, especially
if this is a packet and not a continuous signal.

-Clark


______________________________
New DSP Code Snippets Section now Live.   Learn more about the reward program for contributors here.

Re: T/2 -spaced FSE MMSE equalizer, with carrier offset - jia - 2006-06-06 10:52:00

I am still in the fog.

I have checked some paper about  CMA, and didn't find any clue why CMA
can compensate the carrier frequency offset.

What I learned is only that 'Adaptive Complex Gain Control' can
compensate the carrier phase offset. I understand what it really works.

Carrier frequency offset. Could it be 'killed' in the equalizer,
without other device?

Thanks.

______________________________
New DSP Code Snippets Section now Live.   Learn more about the reward program for contributors here.

Re: T/2 -spaced FSE MMSE equalizer, with carrier offset - Steve Underwood - 2006-06-06 23:58:00

jia wrote:
> I am still in the fog.
> 
> I have checked some paper about  CMA, and didn't find any clue why CMA
> can compensate the carrier frequency offset.

It can't what it can do is equalise even though the constellation is 
spinning. You still need to track the carrier and stop the constellation 
spinning. However, with CMA you can do this after the equalisation step. 
With most other equalisation adaption schemes you need to stop the 
spinning first.

> What I learned is only that 'Adaptive Complex Gain Control' can
> compensate the carrier phase offset. I understand what it really works.
> 
> Carrier frequency offset. Could it be 'killed' in the equalizer,
> without other device?

The equaliser can't kill the offset. You need to do that separately.

Perhaps you need to take a step back and try to understand the overall 
picture of what the various steps through the receiver are trying to 
achieve. It seems like you don't really grasp this right now, and 
nothing will make proper sense until you do.

Steve
______________________________
New DSP Code Snippets Section now Live.   Learn more about the reward program for contributors here.

Re: T/2 -spaced FSE MMSE equalizer, with carrier offset - jia - 2006-06-07 00:22:00

Thanks, steve.

Yes, I should review the basic knowledge of the receiver.

______________________________
New DSP Code Snippets Section now Live.   Learn more about the reward program for contributors here.

Re: T/2 -spaced FSE MMSE equalizer, with carrier offset - Phil - 2006-06-07 13:50:00

> spinning. You still need to track the carrier and stop the constellation
> spinning. However, with CMA you can do this after the equalisation step.
> With most other equalisation adaption schemes you need to stop the
> spinning first.

I agree with most of what Steve says here.  I just want to clarify that
when he says that you must "stop the spinning first" for other
adaptation schemes, the spinning is not necessarily stopped at the
input of the equalizer.  Basically, one can use the CMA to lock onto
the signal, then use carrier recovery (CR) following the equaliser.
Once the CR is locked, the CR output can be used to generate the error
signal to be fed back for use by a different adaptation scheme.  If I
remember correctly, you will want to get that error signal spinning the
same way as your equalizer input.  If not, things will go crazy.

I hope that this helps.

Phil

______________________________
New DSP Code Snippets Section now Live.   Learn more about the reward program for contributors here.

Re: T/2 -spaced FSE MMSE equalizer, with carrier offset - jia - 2006-06-08 02:17:00

Phil wrote:
> > spinning. You still need to track the carrier and stop the constellation
> > spinning. However, with CMA you can do this after the equalisation step.
> > With most other equalisation adaption schemes you need to stop the
> > spinning first.
>
> I agree with most of what Steve says here.  I just want to clarify that
> when he says that you must "stop the spinning first" for other
> adaptation schemes, the spinning is not necessarily stopped at the
> input of the equalizer.  Basically, one can use the CMA to lock onto
> the signal, then use carrier recovery (CR) following the equaliser.
> Once the CR is locked, the CR output can be used to generate the error
> signal to be fed back for use by a different adaptation scheme.  If I
> remember correctly, you will want to get that error signal spinning the
> same way as your equalizer input.  If not, things will go crazy.
>
> I hope that this helps.
>
> Phil

Hi, Phil

CMA is usually adopted in PSK moduation, for constant amplitude
constellation. However, it can also make sensen in QAM modulation.

So, Phil. If I didn't misunderstand your meaning. You means that
regarding CMA as a pre-equalizer, and get the frequency offset through
CMA.

Then the estimated frequency offset can be used to as a weighted factor
in the coefficient update formula of another equalizer, like SG MME
equalizer.

I don't think it is necessary.

______________________________
New DSP Code Snippets Section now Live.   Learn more about the reward program for contributors here.

Re: T/2 -spaced FSE MMSE equalizer, with carrier offset - Phil - 2006-06-08 08:06:00

> So, Phil. If I didn't misunderstand your meaning. You means that
> regarding CMA as a pre-equalizer, and get the frequency offset through
> CMA.
>
> Then the estimated frequency offset can be used to as a weighted factor
> in the coefficient update formula of another equalizer, like SG MME
> equalizer.
>
> I don't think it is necessary.

I've attempted to illustrate the system that I was describing.  I don't
know if it applies to your situation, but it seemed to follow earlier
posts.

The lineup is based on a system that I worked on a while back.  It
consists of timing recovery (TR), a dual mode LMS equalizer (CMA then
decision directed (DD)), CR and then the symbol demapper.  This was
meant for a continuous wave system, i.e., not packet based and no
unique words.  Our approach was the following:

1. acquire timing
2. pre-equalize (using your words) using CMA
3. freeze CMA once target error is achieved
3. acquire carrier offset
4. switch equalizer to DD mode.

                    err
           --<---<----<----<--
          \/                    |
TR--->EQ--->CR--->DEMAP

Since the CR follows EQ, in DD mode, the carrier offset must be applied
to the err signal.  I just remembered that the EQ that I am describing
was a T-spaced.  Perhaps this will not be as helpful to you as I had
originally thought.

______________________________
New DSP Code Snippets Section now Live.   Learn more about the reward program for contributors here.

| 1 | 2 | next