Simple decision feedback equalizer for OFDM. More...
#include <gnuradio/digital/ofdm_equalizer_simpledfe.h>
Public Types | |
typedef boost::shared_ptr < ofdm_equalizer_simpledfe > | sptr |
Public Types inherited from gr::digital::ofdm_equalizer_1d_pilots | |
typedef boost::shared_ptr < ofdm_equalizer_1d_pilots > | sptr |
Public Types inherited from gr::digital::ofdm_equalizer_base | |
typedef boost::shared_ptr < ofdm_equalizer_base > | sptr |
Public Member Functions | |
ofdm_equalizer_simpledfe (int fft_len, const gr::digital::constellation_sptr &constellation, const std::vector< std::vector< int > > &occupied_carriers=std::vector< std::vector< int > >(), const std::vector< std::vector< int > > &pilot_carriers=std::vector< std::vector< int > >(), const std::vector< std::vector< gr_complex > > &pilot_symbols=std::vector< std::vector< gr_complex > >(), int symbols_skipped=0, float alpha=0.1, bool input_is_shifted=true) | |
~ofdm_equalizer_simpledfe () | |
void | equalize (gr_complex *frame, int n_sym, const std::vector< gr_complex > &initial_taps=std::vector< gr_complex >(), const std::vector< tag_t > &tags=std::vector< tag_t >()) |
Run the actual equalization. More... | |
Public Member Functions inherited from gr::digital::ofdm_equalizer_1d_pilots | |
ofdm_equalizer_1d_pilots (int fft_len, const std::vector< std::vector< int > > &occupied_carriers, const std::vector< std::vector< int > > &pilot_carriers, const std::vector< std::vector< gr_complex > > &pilot_symbols, int symbols_skipped, bool input_is_shifted) | |
~ofdm_equalizer_1d_pilots () | |
void | reset () |
Reset the channel information state knowledge. More... | |
void | get_channel_state (std::vector< gr_complex > &taps) |
Return the current channel state. More... | |
Public Member Functions inherited from gr::digital::ofdm_equalizer_base | |
ofdm_equalizer_base (int fft_len) | |
virtual | ~ofdm_equalizer_base () |
int | fft_len () |
sptr | base () |
Static Public Member Functions | |
static sptr | make (int fft_len, const gr::digital::constellation_sptr &constellation, const std::vector< std::vector< int > > &occupied_carriers=std::vector< std::vector< int > >(), const std::vector< std::vector< int > > &pilot_carriers=std::vector< std::vector< int > >(), const std::vector< std::vector< gr_complex > > &pilot_symbols=std::vector< std::vector< gr_complex > >(), int symbols_skipped=0, float alpha=0.1, bool input_is_shifted=true) |
Additional Inherited Members | |
Protected Attributes inherited from gr::digital::ofdm_equalizer_1d_pilots | |
std::vector< bool > | d_occupied_carriers |
If d_occupied_carriers [k][l] is true, symbol k, carrier l is carrying data. More... | |
std::vector< std::vector< bool > > | d_pilot_carriers |
If d_pilot_carriers [k][l] is true, symbol k, carrier l is carrying data. More... | |
std::vector< std::vector < gr_complex > > | d_pilot_symbols |
If d_pilot_carriers [k][l] is true, d_pilot_symbols[k][l] is its tx'd value. More... | |
int | d_symbols_skipped |
In case the frame doesn't begin with OFDM symbol 0, this is the index of the first symbol. More... | |
int | d_pilot_carr_set |
The current position in the set of pilot symbols. More... | |
std::vector< gr_complex > | d_channel_state |
Vector of length d_fft_len saving the current channel state (on the occupied carriers) More... | |
Protected Attributes inherited from gr::digital::ofdm_equalizer_base | |
int | d_fft_len |
Simple decision feedback equalizer for OFDM.
Equalizes an OFDM signal symbol by symbol using knowledge of the complex modulations symbols. For every symbol, the following steps are performed:
This equalizer makes a lot of assumptions:
Note that the equalized symbols are exact points on the constellation. This means soft information of the modulation symbols is lost after the equalization, which is suboptimal for channel codes that use soft decision.
typedef boost::shared_ptr<ofdm_equalizer_simpledfe> gr::digital::ofdm_equalizer_simpledfe::sptr |
gr::digital::ofdm_equalizer_simpledfe::ofdm_equalizer_simpledfe | ( | int | fft_len, |
const gr::digital::constellation_sptr & | constellation, | ||
const std::vector< std::vector< int > > & | occupied_carriers = std::vector< std::vector< int > >() , |
||
const std::vector< std::vector< int > > & | pilot_carriers = std::vector< std::vector< int > >() , |
||
const std::vector< std::vector< gr_complex > > & | pilot_symbols = std::vector< std::vector< gr_complex > >() , |
||
int | symbols_skipped = 0 , |
||
float | alpha = 0.1 , |
||
bool | input_is_shifted = true |
||
) |
gr::digital::ofdm_equalizer_simpledfe::~ofdm_equalizer_simpledfe | ( | ) |
|
virtual |
Run the actual equalization.
Implements gr::digital::ofdm_equalizer_base.
|
static |