GNU Radio 3.7.1-24 C++ API
ofdm_frame_acquisition.h
Go to the documentation of this file.
1
/* -*- c++ -*- */
2
/*
3
* Copyright 2006,2007,2011,2012 Free Software Foundation, Inc.
4
*
5
* This file is part of GNU Radio
6
*
7
* GNU Radio is free software; you can redistribute it and/or modify
8
* it under the terms of the GNU General Public License as published by
9
* the Free Software Foundation; either version 3, or (at your option)
10
* any later version.
11
*
12
* GNU Radio is distributed in the hope that it will be useful,
13
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
* GNU General Public License for more details.
16
*
17
* You should have received a copy of the GNU General Public License
18
* along with GNU Radio; see the file COPYING. If not, write to
19
* the Free Software Foundation, Inc., 51 Franklin Street,
20
* Boston, MA 02110-1301, USA.
21
*/
22
23
#ifndef INCLUDED_DIGITAL_OFDM_FRAME_ACQUISITION_H
24
#define INCLUDED_DIGITAL_OFDM_FRAME_ACQUISITION_H
25
26
#include <
gnuradio/digital/api.h
>
27
#include <
gnuradio/block.h
>
28
#include <vector>
29
30
namespace
gr {
31
namespace
digital {
32
33
/*!
34
* \brief take a vector of complex constellation points in from an
35
* FFT and performs a correlation and equalization.
36
* \ingroup ofdm_blk
37
*
38
* \details
39
* This block takes the output of an FFT of a received OFDM symbol
40
* and finds the start of a frame based on two known symbols. It
41
* also looks at the surrounding bins in the FFT output for the
42
* correlation in case there is a large frequency shift in the
43
* data. This block assumes that the fine frequency shift has
44
* already been corrected and that the samples fall in the middle
45
* of one FFT bin.
46
*
47
* It then uses one of those known symbols to estimate the channel
48
* response over all subcarriers and does a simple 1-tap
49
* equalization on all subcarriers. This corrects for the phase
50
* and amplitude distortion caused by the channel.
51
*/
52
class
DIGITAL_API
ofdm_frame_acquisition
:
virtual
public
block
53
{
54
public
:
55
// gr::digital::ofdm_frame_acquisition::sptr
56
typedef
boost::shared_ptr<ofdm_frame_acquisition>
sptr
;
57
58
/*!
59
* Make an OFDM correlator and equalizer.
60
*
61
* \param occupied_carriers The number of subcarriers with data in the received symbol
62
* \param fft_length The size of the FFT vector (occupied_carriers + unused carriers)
63
* \param cplen The length of the cycle prefix
64
* \param known_symbol A vector of complex numbers representing a known symbol at the
65
* start of a frame (usually a BPSK PN sequence)
66
* \param max_fft_shift_len Set's the maximum distance you can look between bins for correlation
67
*/
68
static
sptr
make(
unsigned
int
occupied_carriers,
unsigned
int
fft_length,
69
unsigned
int
cplen,
70
const
std::vector<gr_complex> &known_symbol,
71
unsigned
int
max_fft_shift_len=4);
72
73
/*!
74
* \brief Return an estimate of the SNR of the channel
75
*/
76
virtual
float
snr() = 0;
77
};
78
79
}
/* namespace digital */
80
}
/* namespace gr */
81
82
#endif
/* INCLUDED_DIGITAL_OFDM_FRAME_ACQUISITION_H */
gnuradio
gr-digital
include
gnuradio
digital
ofdm_frame_acquisition.h
Generated by
1.8.1.1