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 http://home.earthlink.net/~yatescr
Choice of Oversampling Ratio in Comm Simulations
Started by ●April 1, 2006
Reply by ●April 1, 20062006-04-01
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 diefor Beethoven.> %% Fuquay-Varina, NC % She love the way Puccini lays down atune, and> %%% 919-577-9882 % Verdi's always creepin' from her room." > %%%% <yates@ieee.org> % "Rockaria", *A New World Record*, ELO > http://home.earthlink.net/~yatescr
Reply by ●April 1, 20062006-04-01
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
Reply by ●April 1, 20062006-04-01
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 http://home.earthlink.net/~yatescr
Reply by ●April 1, 20062006-04-01
"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. > > -ClarkWhat 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 http://home.earthlink.net/~yatescr
Reply by ●April 1, 20062006-04-01
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. �����������������������������������������������������������������������
Reply by ●April 1, 20062006-04-01
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 phasesand> >> 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 outthe> >> 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 itthrough> >> the data twice or throw away the first portion of the simulationresult.> >> > >> -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 > http://home.earthlink.net/~yatescr
Reply by ●April 1, 20062006-04-01
"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 phasesand> > 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 outthe> > 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 itthrough> > 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> http://home.earthlink.net/~yatescrYes, 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
Reply by ●April 1, 20062006-04-01
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 http://home.earthlink.net/~yatescr
Reply by ●April 1, 20062006-04-01
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. �����������������������������������������������������������������������