discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Discuss-gnuradio] Simple Frame Detection


From: Aditya Dhananjay
Subject: Re: [Discuss-gnuradio] Simple Frame Detection
Date: Sun, 8 Feb 2015 11:01:30 -0500

Hello Daniel,

Are you using OFDM? If so, read on, otherwise disregard the rest of the email.

Please look at the Schmidl-Cox synchronization method (Robust Frequency and Timing
Synchronization for OFDM). In a nutshell, the frame detection works like this:

At the transmitter, the packet is created such that the first ODFM symbol has only the even numbered subcarriers filled up (with some random PN sequence) and the odd subcarriers are set to 0. When this sequence is passed through the IFFT block, the symbol (in the time domain) has its first half identical to the second half. For example, if the FFT size is 1024, then in the time domain, the symbol has its first 512 samples identical to the next 512 samples.

Therefore at the receiver, the detection becomes rather simple. The incoming stream (in the time domain) is correlated against a 512-sample delayed version of itself. A peak in this correlater output will indicate the boundary of the first symbol in the packet.

Hope this helps.



On Sun, Feb 8, 2015 at 10:21 AM, Richard Bell <address@hidden> wrote:
I'm very interested to learn the answer to this. I'm trying to do the same thing right now. 

Rich

On Feb 7, 2015, at 10:16 AM, Daniel Franch <address@hidden> wrote:

Hello,

I have been searching for a simple frame detection scheme for GNURadio 

for a while, but everything I've found either doesn't work or it is more 
complicated than I expected. 

What I needed was a block that would be searching for a predetermined 
sequence used by the transmitter. While it doesn't find this sequence, 
it should give no output. Once it is found, it should output everything 
that came after the sequence and discard the rest as "garbage". 

I tried using the simple framer and simple correlator. I created a 
simple example that just took a random source, created a frame, 
converted it to float, added some delay and then the correlator would 
try to find the sequence. But this didn't work. I got a constant zero 
signal as output. The documentation on these blocks is really poor and I 
couldn't find any good example to clarify its usage. 

On the other hand, I found plenty of examples of the header/payload 
demux. But it seems more complicated than what I need. I don't quite 
understand the tags and streams portion of GNURadio and I am not sure on 
what I should use as header data. 

I have been trying to create a block that will try to check for a known sequence in the incoming stream. Once it is detected, it will read the next L samples (L will be the message length defined by the user) and create a frame, which will be sent as a message. Everything before the detection of the known sequence will be ignored. The message will then be read by further blocks as the received frame. Unfortunately, creating a message passing block from scratch is turning out to be way harder than I expected. 

Is there any easier way to do this? 

Thanks in advance, 
Dan Franch
_______________________________________________
Discuss-gnuradio mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

_______________________________________________
Discuss-gnuradio mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio



reply via email to

[Prev in Thread] Current Thread [Next in Thread]