Reply by Eric Jacobsen March 10, 20132013-03-10
On Sun, 10 Mar 2013 06:59:41 -0500, "nahemoth" <59513@dsprelated>
wrote:

>>On Fri, 08 Mar 2013 01:33:29 -0600, "nahemoth" <59513@dsprelated> >>wrote: >> >>>Hi, >>> >>> I am working on a short packet transmission system which uses a QPSK >>>preamble (01 10 01 10 01 10 ...) for timing and frequency offset >recovery. >>>I am trying to design a preamble detector in order to enable the >estimators >>>when a packet is coming. >>> >>>I tried a very interesting algorithm based on the spectral properties of >>>the preamble: >>> >>>http://w3.ele.tue.nl/fileadmin/ele/MBS/SPS/Files/Posters/SPS30/SPSciacci.pdf >>> >>>It uses a notch filter to eliminate the spectral line of the preamble >and >>>compares the power of the received signal. When you receive the preamble >it >>>should cross a threshold. But at this stage there is no digital AGC, so >the >>>received signal amplitude can change, therefore the threshold also >>>changes. >>> >>>I also read about using correlation for preamble detection (not for sync >>>word detection), but I guess that this is more useful for detecting >>>boundaries of the preamble. >>> >>>Any suggestion for preamble detection? >>> >>>Thanks in advance. >> >>That's just a string of 180-degree transitions at each symbol >>boundary. That's a good sequence for joint symbol timing and >>frequency estimation, but it's not good for marking the beginning of >>the message. >> >>How long is the sequence? What is your maximum frequency >>uncertainty? How long can the acquisition process take? > >I use this preamble for timing (signal oversampled 4 times) and frequency >coarse acquisition, which uses 10 and 20 symbols, respectively. After the >preamble, it comes a UW to estimate the phase and mark the beginning of the >data. These algorithms are feed forward, and taking into account that the >payload is quite long, I use two closed loops for timing and phase tracking >in decision directed mode. > >>Sorting out a suitable preamble depends on a lot of variables and >>requirements that will affect the design the of the preamble. In >>some systems no preamble is required, in other systems just a Unique >>Word works well, in other systems the preamble contains multiple >>sequences to facilitate things like coarse and fine synchronization. >>You haven't given enough info to make any sort of determination about >>whether the sequence you have is suitable or something else (or >>nothing at all) would be better. > >I would like to use the preamble (180-degree transitions at each symbol >boundary) for packet detection. That is, the feed forward estimators are >disabled until the preamble detector wakes up the receiver. Is is possible >to discriminate the preamble from the data symbols and noise? It should >detect the preamble in less than 30 symbols.
You can correlate on that sequence in the time domain and set some thresholds for detection for whatever SNR range you intend to run in. High SNRs tend to need less time than low SNRs. Eric Jacobsen Anchor Hill Communications http://www.anchorhill.com
Reply by nahemoth March 10, 20132013-03-10
>On 3/8/13 7:22 AM, radams2000@gmail.com wrote: >> I would try taking the ratio of Pc/Pm instead of the difference. This
should make he decision independent of absolute level.
>> >> If doing a division is hard, you could also take the difference of the
log() of Pc and Pm. Fast log approximation is pretty easy, maybe easier and faster than doing a true divide.
>> > >dunno what Pc and Pm are (are they in that paper?) but comparing Pc/Pm >to some fixed threshold, a, should be the same as comparing Pc to a*Pm. > >no division or logs needed. maybe there is a numerical problem when >levels get very low, but i would think you would have that anyway with >the ratio. > >-- > >r b-j rbj@audioimagination.com > >"Imagination is more important than knowledge." > > >
Very good idea, it should work much better.
Reply by nahemoth March 10, 20132013-03-10
>On Fri, 08 Mar 2013 01:33:29 -0600, "nahemoth" <59513@dsprelated> >wrote: > >>Hi, >> >> I am working on a short packet transmission system which uses a QPSK >>preamble (01 10 01 10 01 10 ...) for timing and frequency offset
recovery.
>>I am trying to design a preamble detector in order to enable the
estimators
>>when a packet is coming. >> >>I tried a very interesting algorithm based on the spectral properties of >>the preamble: >> >>http://w3.ele.tue.nl/fileadmin/ele/MBS/SPS/Files/Posters/SPS30/SPSciacci.pdf >> >>It uses a notch filter to eliminate the spectral line of the preamble
and
>>compares the power of the received signal. When you receive the preamble
it
>>should cross a threshold. But at this stage there is no digital AGC, so
the
>>received signal amplitude can change, therefore the threshold also >>changes. >> >>I also read about using correlation for preamble detection (not for sync >>word detection), but I guess that this is more useful for detecting >>boundaries of the preamble. >> >>Any suggestion for preamble detection? >> >>Thanks in advance. > >That's just a string of 180-degree transitions at each symbol >boundary. That's a good sequence for joint symbol timing and >frequency estimation, but it's not good for marking the beginning of >the message. > >How long is the sequence? What is your maximum frequency >uncertainty? How long can the acquisition process take?
I use this preamble for timing (signal oversampled 4 times) and frequency coarse acquisition, which uses 10 and 20 symbols, respectively. After the preamble, it comes a UW to estimate the phase and mark the beginning of the data. These algorithms are feed forward, and taking into account that the payload is quite long, I use two closed loops for timing and phase tracking in decision directed mode.
>Sorting out a suitable preamble depends on a lot of variables and >requirements that will affect the design the of the preamble. In >some systems no preamble is required, in other systems just a Unique >Word works well, in other systems the preamble contains multiple >sequences to facilitate things like coarse and fine synchronization. >You haven't given enough info to make any sort of determination about >whether the sequence you have is suitable or something else (or >nothing at all) would be better.
I would like to use the preamble (180-degree transitions at each symbol boundary) for packet detection. That is, the feed forward estimators are disabled until the preamble detector wakes up the receiver. Is is possible to discriminate the preamble from the data symbols and noise? It should detect the preamble in less than 30 symbols.
> >Eric Jacobsen >Anchor Hill Communications >http://www.anchorhill.com >
Reply by mnentwig March 9, 20132013-03-09
How about a simple matched filter for your preamble?

In other words, use a complex-valued FIR filter with the reversed conjugate
of your preamble as coefficients. 
When a preamble has been received and sits centered in the FIR filter's
delay line, each preamble sample faces a coefficient with its conjugate
that rotates it back to a common phase. The filter then adds up all rotated
samples => peak at output.

If you need coarse frequency offset estimation, you can use many matched
filters in parallel with frequency-shifted versions of your preamble as
coefficient. 

Reply by Eric Jacobsen March 9, 20132013-03-09
On Fri, 08 Mar 2013 21:40:07 -0500, robert bristow-johnson
<rbj@audioimagination.com> wrote:

>On 3/8/13 3:33 PM, Eric Jacobsen wrote: >> On Fri, 08 Mar 2013 01:33:29 -0600, "nahemoth"<59513@dsprelated> >> wrote: >> >>> Hi, >>> >>> I am working on a short packet transmission system which uses a QPSK >>> preamble (01 10 01 10 01 10 ...) for timing and frequency offset recovery. >>> I am trying to design a preamble detector in order to enable the estimators >>> when a packet is coming. >>> >>> I tried a very interesting algorithm based on the spectral properties of >>> the preamble: >>> >>> http://w3.ele.tue.nl/fileadmin/ele/MBS/SPS/Files/Posters/SPS30/SPSciacci.pdf >>> >>> It uses a notch filter to eliminate the spectral line of the preamble and >>> compares the power of the received signal. When you receive the preamble it >>> should cross a threshold. But at this stage there is no digital AGC, so the >>> received signal amplitude can change, therefore the threshold also >>> changes. >>> >>> I also read about using correlation for preamble detection (not for sync >>> word detection), but I guess that this is more useful for detecting >>> boundaries of the preamble. >>> >>> Any suggestion for preamble detection? >>> >>> Thanks in advance. >> >> That's just a string of 180-degree transitions at each symbol >> boundary. That's a good sequence for joint symbol timing and >> frequency estimation, but it's not good for marking the beginning of >> the message. >> >> How long is the sequence? What is your maximum frequency >> uncertainty? How long can the acquisition process take? >> >> Sorting out a suitable preamble depends on a lot of variables and >> requirements that will affect the design the of the preamble. In >> some systems no preamble is required, in other systems just a Unique >> Word works well, > >what do you do if your data happens to come upon that Unique Word in the >data? do you stuff an extra bit into the stream to break it up so that >Unique Word never appears (except in the preamble)? isn't that how SDLC >used to do it?
In a frame structure the UWs occur periodically so that lock generally isn't indicated until N UWs have been detected at the expected period (or some other criterion has been satisfied). In a burst system the UW generally only appears at the beginning of the packet. There are exceptions to both cases, but for the most part the probability that the entire framing structure appears randomly in the data is vanishingly small.
>i dunno much about QPSK (except what wikipedia says and i can connect it >to what i remember with M-ary communication in grad school) and a few >months ago i was asking some fundamental questions about it. in Offset >QPSK, the 01 10 01 10 01 10 01 10 sequence generates a pure tone just >below the carrier (or just above, depending on how you line up the >constellation of the four symbols) and you could have a simple matched >filter detect that and generate a frame sync, which is what i think the >preamble is for. but a piece of data that are the same bits could do >the same thing, so i keep asking what they do about that?
A pure tone is a very poor selection of preamble since it doesn't contain any timing information, including symbol boundaries, and therefore doesn't provide any phase information, either. It also has the least white spectral structure, which some systems don't like due to a number of reasons. Once in a while somebody uses a small chunk of CW at the very beginning of a preamble since they're good for initial detection and frequency offset removal, but it's then followed by something that can provide timing and phase synch.
>does any Offset QPSK insert a contrary bit into the stream if the data >happens to match the preamble? like let's say the preamble is 16 bits: > > 0110011001100110
No, because a single bit or symbol is subject to error so that you miss the whole thing. A UW is often similar in structure to an ML sequence so that it has very favorable autocorrelation properties. This is for processing gain as well as timing information and phase information and robustness in the presence of errors.
>now, whenever there are these 15 bits: 011001100110011 occuring by >happenstance in the data, what the system should do is insert a phony >and extra "1" (since the preamble would put in a "0" there), no matter >what the following data bit is. and then the receiver should remove >that extra "1" if "0110011001100111" is ever received and hold on for >the next bit. and if "0110011001100110" is received, the receiver knows >it's a preamble and must re-sync, no matter what state it is in.
Again, using a single bit or symbol to distinguish synch info is not robust.
>otherwise, i dunno how to do it in a bullet-proof manner and be assured >of resyncing when the time comes.
You could read any one of the many texts or thousands of papers on the subject, or the specs for any number of standardized systems that do this (any of the DVB, IEEE 802, 3GPP or many other bodies have tons of examples).
>i was told that QPSK does not do that, and then i wonder if there is >ever a sync problem that you can't get out of. it seems to me that the >only bullet proof method to regain sync is to have a bit pattern that is >never, ever used except for the preamble. so what else can you do?
There are many, many methods.
>> in other systems the preamble contains multiple >> sequences to facilitate things like coarse and fine synchronization. > >could you have coarse sync be a function of the data that is contained >between preambles?
You want synch before the data shows up in a burst system. If it's a stream with a framing structure you don't care what's in the data until you've confirmed frame lock, and that takes more than one UW.
>> You haven't given enough info to make any sort of determination about >> whether the sequence you have is suitable or something else (or >> nothing at all) would be better. > >and i'm still trying to figure out what they do to be bullet proof. > > >-- > >r b-j rbj@audioimagination.com > >"Imagination is more important than knowledge." > >
Eric Jacobsen Anchor Hill Communications http://www.anchorhill.com
Reply by robert bristow-johnson March 8, 20132013-03-08
On 3/8/13 3:33 PM, Eric Jacobsen wrote:
> On Fri, 08 Mar 2013 01:33:29 -0600, "nahemoth"<59513@dsprelated> > wrote: > >> Hi, >> >> I am working on a short packet transmission system which uses a QPSK >> preamble (01 10 01 10 01 10 ...) for timing and frequency offset recovery. >> I am trying to design a preamble detector in order to enable the estimators >> when a packet is coming. >> >> I tried a very interesting algorithm based on the spectral properties of >> the preamble: >> >> http://w3.ele.tue.nl/fileadmin/ele/MBS/SPS/Files/Posters/SPS30/SPSciacci.pdf >> >> It uses a notch filter to eliminate the spectral line of the preamble and >> compares the power of the received signal. When you receive the preamble it >> should cross a threshold. But at this stage there is no digital AGC, so the >> received signal amplitude can change, therefore the threshold also >> changes. >> >> I also read about using correlation for preamble detection (not for sync >> word detection), but I guess that this is more useful for detecting >> boundaries of the preamble. >> >> Any suggestion for preamble detection? >> >> Thanks in advance. > > That's just a string of 180-degree transitions at each symbol > boundary. That's a good sequence for joint symbol timing and > frequency estimation, but it's not good for marking the beginning of > the message. > > How long is the sequence? What is your maximum frequency > uncertainty? How long can the acquisition process take? > > Sorting out a suitable preamble depends on a lot of variables and > requirements that will affect the design the of the preamble. In > some systems no preamble is required, in other systems just a Unique > Word works well,
what do you do if your data happens to come upon that Unique Word in the data? do you stuff an extra bit into the stream to break it up so that Unique Word never appears (except in the preamble)? isn't that how SDLC used to do it? i dunno much about QPSK (except what wikipedia says and i can connect it to what i remember with M-ary communication in grad school) and a few months ago i was asking some fundamental questions about it. in Offset QPSK, the 01 10 01 10 01 10 01 10 sequence generates a pure tone just below the carrier (or just above, depending on how you line up the constellation of the four symbols) and you could have a simple matched filter detect that and generate a frame sync, which is what i think the preamble is for. but a piece of data that are the same bits could do the same thing, so i keep asking what they do about that? does any Offset QPSK insert a contrary bit into the stream if the data happens to match the preamble? like let's say the preamble is 16 bits: 0110011001100110 now, whenever there are these 15 bits: 011001100110011 occuring by happenstance in the data, what the system should do is insert a phony and extra "1" (since the preamble would put in a "0" there), no matter what the following data bit is. and then the receiver should remove that extra "1" if "0110011001100111" is ever received and hold on for the next bit. and if "0110011001100110" is received, the receiver knows it's a preamble and must re-sync, no matter what state it is in. otherwise, i dunno how to do it in a bullet-proof manner and be assured of resyncing when the time comes. i was told that QPSK does not do that, and then i wonder if there is ever a sync problem that you can't get out of. it seems to me that the only bullet proof method to regain sync is to have a bit pattern that is never, ever used except for the preamble. so what else can you do?
> in other systems the preamble contains multiple > sequences to facilitate things like coarse and fine synchronization.
could you have coarse sync be a function of the data that is contained between preambles?
> You haven't given enough info to make any sort of determination about > whether the sequence you have is suitable or something else (or > nothing at all) would be better.
and i'm still trying to figure out what they do to be bullet proof. -- r b-j rbj@audioimagination.com "Imagination is more important than knowledge."
Reply by Eric Jacobsen March 8, 20132013-03-08
On Fri, 08 Mar 2013 01:33:29 -0600, "nahemoth" <59513@dsprelated>
wrote:

>Hi, > > I am working on a short packet transmission system which uses a QPSK >preamble (01 10 01 10 01 10 ...) for timing and frequency offset recovery. >I am trying to design a preamble detector in order to enable the estimators >when a packet is coming. > >I tried a very interesting algorithm based on the spectral properties of >the preamble: > >http://w3.ele.tue.nl/fileadmin/ele/MBS/SPS/Files/Posters/SPS30/SPSciacci.pdf > >It uses a notch filter to eliminate the spectral line of the preamble and >compares the power of the received signal. When you receive the preamble it >should cross a threshold. But at this stage there is no digital AGC, so the >received signal amplitude can change, therefore the threshold also >changes. > >I also read about using correlation for preamble detection (not for sync >word detection), but I guess that this is more useful for detecting >boundaries of the preamble. > >Any suggestion for preamble detection? > >Thanks in advance.
That's just a string of 180-degree transitions at each symbol boundary. That's a good sequence for joint symbol timing and frequency estimation, but it's not good for marking the beginning of the message. How long is the sequence? What is your maximum frequency uncertainty? How long can the acquisition process take? Sorting out a suitable preamble depends on a lot of variables and requirements that will affect the design the of the preamble. In some systems no preamble is required, in other systems just a Unique Word works well, in other systems the preamble contains multiple sequences to facilitate things like coarse and fine synchronization. You haven't given enough info to make any sort of determination about whether the sequence you have is suitable or something else (or nothing at all) would be better. Eric Jacobsen Anchor Hill Communications http://www.anchorhill.com
Reply by March 8, 20132013-03-08
Robert

You're right of course. I blame the raging snowstorm for shorting out my neurons. 

Bob
Reply by Vladimir Vassilevsky March 8, 20132013-03-08
On 3/8/2013 1:33 AM, nahemoth wrote:
> Hi, > > I am working on a short packet transmission system which uses a QPSK > preamble (01 10 01 10 01 10 ...) for timing and frequency offset recovery. > I am trying to design a preamble detector in order to enable the estimators > when a packet is coming.
What is wrong with classic Costas and Gardner algorithms?
> I tried a very interesting algorithm based on the spectral properties of > the preamble: > > http://w3.ele.tue.nl/fileadmin/ele/MBS/SPS/Files/Posters/SPS30/SPSciacci.pdf
Typical junk article; stupident crap; never mind.
> It uses a notch filter to eliminate the spectral line of the preamble and > compares the power of the received signal. When you receive the preamble it > should cross a threshold.
Just another way to implement frequency discriminator.
> But at this stage there is no digital AGC, so the > received signal amplitude can change, therefore the threshold also > changes.
Keep it simple; work on zero crossings. Signal strength doesn't matter.
> I also read about using correlation for preamble detection (not for sync > word detection), but I guess that this is more useful for detecting > boundaries of the preamble.
That depends on what, how and what is available.
> Any suggestion for preamble detection?
Get communication textbook such as Sklar.
> Thanks in advance.
STUPIDENT VLV
Reply by robert bristow-johnson March 8, 20132013-03-08
On 3/8/13 7:22 AM, radams2000@gmail.com wrote:
> I would try taking the ratio of Pc/Pm instead of the difference. This should make he decision independent of absolute level. > > If doing a division is hard, you could also take the difference of the log() of Pc and Pm. Fast log approximation is pretty easy, maybe easier and faster than doing a true divide. >
dunno what Pc and Pm are (are they in that paper?) but comparing Pc/Pm to some fixed threshold, a, should be the same as comparing Pc to a*Pm. no division or logs needed. maybe there is a numerical problem when levels get very low, but i would think you would have that anyway with the ratio. -- r b-j rbj@audioimagination.com "Imagination is more important than knowledge."