# Choice of Oversampling Ratio in Comm Simulations

Started by April 1, 2006
```Hi Folks,

When we simulate a communication system, say, QPSK with simple AWGN,
I've noticed that a high sample rate (N*Fsym Fsymthe symbol rate) is
used. Typically it seems N=8. Why is this done?
--
%  Randy Yates                  % "She's sweet on Wagner-I think she'd die for Beethoven.
%% Fuquay-Varina, NC            %  She love the way Puccini lays down a tune, and
%%% 919-577-9882                %  Verdi's always creepin' from her room."
%%%% <yates@ieee.org>           % "Rockaria", *A New World Record*, ELO
```
```I usually oversample by 4 just so I don't have to do any baud tracking. In
my simulations I just take the sum of the magnutide of the four phases and
then use the largest as the resampling phase for everything else, i.e.

for i=1:4
baud_phases(i) = sum(abs(xin(i:4:end)));
end
[y, best_phase] = max(baud_phases);

symbols = xin(best_phase:4:end)

The alternative is to run the signal through a non-linearity, pick out the
baud line, and track the sample phase with a PLL tied to the baud line. But
since the loop takes a while to converge you either have to run it through
the data twice or throw away the first portion of the simulation result.

-Clark

"Randy Yates" <yates@ieee.org> wrote in message
news:m3mzf5tp28.fsf@ieee.org...
> Hi Folks,
>
> When we simulate a communication system, say, QPSK with simple AWGN,
> I've noticed that a high sample rate (N*Fsym Fsymthe symbol rate) is
> used. Typically it seems N=8. Why is this done?
> --
> %  Randy Yates                  % "She's sweet on Wagner-I think she'd die
for Beethoven.
> %% Fuquay-Varina, NC            %  She love the way Puccini lays down a
tune, and
> %%% 919-577-9882                %  Verdi's always creepin' from her room."
> %%%% <yates@ieee.org>           % "Rockaria", *A New World Record*, ELO

```
```Anonymous wrote:
> I usually oversample by 4 just so I don't have to do any baud tracking. In
> my simulations I just take the sum of the magnutide of the four phases and
> then use the largest as the resampling phase for everything else, i.e.
>
> for i=1:4
>  baud_phases(i) = sum(abs(xin(i:4:end)));
> end
> [y, best_phase] = max(baud_phases);
>
> symbols = xin(best_phase:4:end)
>
> The alternative is to run the signal through a non-linearity, pick out the
> baud line, and track the sample phase with a PLL tied to the baud line. But
> since the loop takes a while to converge you either have to run it through
> the data twice or throw away the first portion of the simulation result.
>
> -Clark
>

An enhancement to this is to run a leaky integrator or boxcar on all
the baud phases over time, and choose the highest smoothed baud phase.
That performs better in low Eb/No situations.

John

```
```Thanks john and Anonymous. So the main reason is to aid in symbol timing?

By the way, if you are not oversampled and you do a nonlinearity (e.g.,
absolute value) as part of finding the baud line, then don't you run the
risk of reflecting the nonlinearity spurs back into the baseband? In
other words, even if we don't oversample the main data stream, don't
we need to oversample the nonlinearity function to avoid this?

--Randy

"john" <johns@xetron.com> writes:

> Anonymous wrote:
>> I usually oversample by 4 just so I don't have to do any baud tracking. In
>> my simulations I just take the sum of the magnutide of the four phases and
>> then use the largest as the resampling phase for everything else, i.e.
>>
>> for i=1:4
>>  baud_phases(i) = sum(abs(xin(i:4:end)));
>> end
>> [y, best_phase] = max(baud_phases);
>>
>> symbols = xin(best_phase:4:end)
>>
>> The alternative is to run the signal through a non-linearity, pick out the
>> baud line, and track the sample phase with a PLL tied to the baud line. But
>> since the loop takes a while to converge you either have to run it through
>> the data twice or throw away the first portion of the simulation result.
>>
>> -Clark
>>
>
> An enhancement to this is to run a leaky integrator or boxcar on all
> the baud phases over time, and choose the highest smoothed baud phase.
> That performs better in low Eb/No situations.
>
> John
>

--
%  Randy Yates                  % "Watching all the days go by...
%% Fuquay-Varina, NC            %  Who are you and who am I?"
%%% 919-577-9882                % 'Mission (A World Record)',
%%%% <yates@ieee.org>           % *A New World Record*, ELO
```
```"Anonymous" <someone@microsoft.com> writes:

> I usually oversample by 4 just so I don't have to do any baud tracking. In
> my simulations I just take the sum of the magnutide of the four phases and
> then use the largest as the resampling phase for everything else, i.e.
>
> for i=1:4
>  baud_phases(i) = sum(abs(xin(i:4:end)));
> end
> [y, best_phase] = max(baud_phases);
>
> symbols = xin(best_phase:4:end)
>
> The alternative is to run the signal through a non-linearity, pick out the
> baud line, and track the sample phase with a PLL tied to the baud line. But
> since the loop takes a while to converge you either have to run it through
> the data twice or throw away the first portion of the simulation result.
>
> -Clark

What if the ideal baud timing lies between samples?
--
%  Randy Yates                  % "Rollin' and riding and slippin' and
%% Fuquay-Varina, NC            %  sliding, it's magic."
%%% 919-577-9882                %
%%%% <yates@ieee.org>           % 'Living' Thing', *A New World Record*, ELO
```
```Randy Yates wrote:
> "Anonymous" <someone@microsoft.com> writes:
>
>
>>I usually oversample by 4 just so I don't have to do any baud tracking. In
>>my simulations I just take the sum of the magnutide of the four phases and
>>then use the largest as the resampling phase for everything else, i.e.
>>
>>for i=1:4
>> baud_phases(i) = sum(abs(xin(i:4:end)));
>>end
>>[y, best_phase] = max(baud_phases);
>>
>>symbols = xin(best_phase:4:end)
>>
>>The alternative is to run the signal through a non-linearity, pick out the
>>baud line, and track the sample phase with a PLL tied to the baud line. But
>>since the loop takes a while to converge you either have to run it through
>>the data twice or throw away the first portion of the simulation result.
>>
>>-Clark
>
>
> What if the ideal baud timing lies between samples?

Just a guess, but I think that's the whole point. If you're oversampled
by enough, the ideal time can't be too far from a sample.

Jerry
--
Engineering is the art of making what you want from things you can get.
&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;
```
```Sort of. Most baud tracking loops work on data that is 2x the baud rate. You
need the symbol peaks and the transition points to make it work. If you
sketch a bpsk signal, for example, sample it a 2 times per symbol, take the
absolute value,  it's easy to see that optimal alignment is when you
maximize the amplitude of the resulting signal that "looks like" a sinusoid
at Pi.

"Randy Yates" <yates@ieee.org> wrote in message
news:m3hd5dtlbp.fsf@ieee.org...
> Thanks john and Anonymous. So the main reason is to aid in symbol timing?
>
> By the way, if you are not oversampled and you do a nonlinearity (e.g.,
> absolute value) as part of finding the baud line, then don't you run the
> risk of reflecting the nonlinearity spurs back into the baseband? In
> other words, even if we don't oversample the main data stream, don't
> we need to oversample the nonlinearity function to avoid this?
>
> --Randy
>
>
> "john" <johns@xetron.com> writes:
>
> > Anonymous wrote:
> >> I usually oversample by 4 just so I don't have to do any baud tracking.
In
> >> my simulations I just take the sum of the magnutide of the four phases
and
> >> then use the largest as the resampling phase for everything else, i.e.
> >>
> >> for i=1:4
> >>  baud_phases(i) = sum(abs(xin(i:4:end)));
> >> end
> >> [y, best_phase] = max(baud_phases);
> >>
> >> symbols = xin(best_phase:4:end)
> >>
> >> The alternative is to run the signal through a non-linearity, pick out
the
> >> baud line, and track the sample phase with a PLL tied to the baud line.
But
> >> since the loop takes a while to converge you either have to run it
through
> >> the data twice or throw away the first portion of the simulation
result.
> >>
> >> -Clark
> >>
> >
> > An enhancement to this is to run a leaky integrator or boxcar on all
> > the baud phases over time, and choose the highest smoothed baud phase.
> > That performs better in low Eb/No situations.
> >
> > John
> >
>
> --
> %  Randy Yates                  % "Watching all the days go by...
> %% Fuquay-Varina, NC            %  Who are you and who am I?"
> %%% 919-577-9882                % 'Mission (A World Record)',
> %%%% <yates@ieee.org>           % *A New World Record*, ELO

```
```"Randy Yates" <yates@ieee.org> wrote in message
news:m3acb5tl7l.fsf@ieee.org...
> "Anonymous" <someone@microsoft.com> writes:
>
> > I usually oversample by 4 just so I don't have to do any baud tracking.
In
> > my simulations I just take the sum of the magnutide of the four phases
and
> > then use the largest as the resampling phase for everything else, i.e.
> >
> > for i=1:4
> >  baud_phases(i) = sum(abs(xin(i:4:end)));
> > end
> > [y, best_phase] = max(baud_phases);
> >
> > symbols = xin(best_phase:4:end)
> >
> > The alternative is to run the signal through a non-linearity, pick out
the
> > baud line, and track the sample phase with a PLL tied to the baud line.
But
> > since the loop takes a while to converge you either have to run it
through
> > the data twice or throw away the first portion of the simulation result.
> >
> > -Clark
>
> What if the ideal baud timing lies between samples?
> --
> %  Randy Yates                  % "Rollin' and riding and slippin' and
> %% Fuquay-Varina, NC            %  sliding, it's magic."
> %%% 919-577-9882                %
> %%%% <yates@ieee.org>           % 'Living' Thing', *A New World Record*,
ELO

Yes, this is only coarse accuracy. You can be off by as much as +/-.125 a
symbol period but its usually good enough especially if you follow it with
an equalizer.

-Clark

```
```Jerry Avins <jya@ieee.org> writes:

> Randy Yates wrote:
>> "Anonymous" <someone@microsoft.com> writes:
>>
>>>I usually oversample by 4 just so I don't have to do any baud tracking. In
>>>my simulations I just take the sum of the magnutide of the four phases and
>>>then use the largest as the resampling phase for everything else, i.e.
>>>
>>>for i=1:4
>>> baud_phases(i) = sum(abs(xin(i:4:end)));
>>>end
>>>[y, best_phase] = max(baud_phases);
>>>
>>>symbols = xin(best_phase:4:end)
>>>
>>>The alternative is to run the signal through a non-linearity, pick out the
>>>baud line, and track the sample phase with a PLL tied to the baud line. But
>>>since the loop takes a while to converge you either have to run it through
>>>the data twice or throw away the first portion of the simulation result.
>>>
>>>-Clark
>> What if the ideal baud timing lies between samples?
>
> Just a guess, but I think that's the whole point. If you're
> oversampled by enough, the ideal time can't be too far from a sample.

Maybe. I'm just thinking through this for the first time (obviously).

What I don't understand is, presuming the timing doesn't change throughout
the sequence, why don't we just find the timing once at the beginning and
then shift it to the proper sampling points at the baseband rate using
an all-pass filter? Then instead of running the entire simulation at N times
the symbol rate, you just run a small timing recovery piece at the beginning.
Seems like it'd save oodles of simulation time.
--
%  Randy Yates                  % "Watching all the days go by...
%% Fuquay-Varina, NC            %  Who are you and who am I?"
%%% 919-577-9882                % 'Mission (A World Record)',
%%%% <yates@ieee.org>           % *A New World Record*, ELO
```
```Randy Yates wrote:
> Jerry Avins <jya@ieee.org> writes:
>
>
>>Randy Yates wrote:

...

>>>What if the ideal baud timing lies between samples?
>>
>>Just a guess, but I think that's the whole point. If you're
>>oversampled by enough, the ideal time can't be too far from a sample.
>
>
> Maybe. I'm just thinking through this for the first time (obviously).
>
> What I don't understand is, presuming the timing doesn't change throughout
> the sequence, why don't we just find the timing once at the beginning and
> then shift it to the proper sampling points at the baseband rate using
> an all-pass filter? Then instead of running the entire simulation at N times
> the symbol rate, you just run a small timing recovery piece at the beginning.
> Seems like it'd save oodles of simulation time.

Not knowing the details, I can't answer intelligently. Maybe the final
system is to run oversampled, and the simulation reflects reality.

Jerry
--
Engineering is the art of making what you want from things you can get.
&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;&#2013266095;
```