diff options
author | japm48 <japm48@users.noreply.github.com> | 2020-10-20 07:54:59 +0200 |
---|---|---|
committer | mormj <34754695+mormj@users.noreply.github.com> | 2020-10-28 14:15:25 -0400 |
commit | 1458b71d90310444e556f515ee86dde7c287ed79 (patch) | |
tree | 69ac890ede9ed5b5c9ebdf1e571d3d13ff5a0263 /gr-digital/include | |
parent | 15efb1ed8d089b3e5ef2aac7f55f483e36d4866d (diff) |
digital: ofdm_equalizer_simpledfe: add enable_soft_output option
Enable outputting equalized symbols that are not exactly constellation
symbols. This is useful for OFDM soft decoding/demodulation (e.g.
optimal turbo or LDPC decoding).
For compatibility, this new behaviour has to be enabled by setting the
new option "enable_soft_output" to true (false by default).
Diffstat (limited to 'gr-digital/include')
-rw-r--r-- | gr-digital/include/gnuradio/digital/ofdm_equalizer_simpledfe.h | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/gr-digital/include/gnuradio/digital/ofdm_equalizer_simpledfe.h b/gr-digital/include/gnuradio/digital/ofdm_equalizer_simpledfe.h index 54c9c43fea..725ef7c6c8 100644 --- a/gr-digital/include/gnuradio/digital/ofdm_equalizer_simpledfe.h +++ b/gr-digital/include/gnuradio/digital/ofdm_equalizer_simpledfe.h @@ -44,9 +44,12 @@ namespace digital { * channel state is estimated incorrectly during equalization; after that, * all subsequent symbols will be completely wrong. * - * Note that the equalized symbols are *exact points* on the constellation. - * This means soft information of the modulation symbols is lost after the + * Note that, by default, the equalized symbols are *exact points* on the + * constellation. + * This means that soft information of the modulation symbols is lost after the * equalization, which is suboptimal for channel codes that use soft decision. + * If this behaviour is not desired, set the `enable_soft_output` parameter to + * true. * */ class DIGITAL_API ofdm_equalizer_simpledfe : public ofdm_equalizer_1d_pilots @@ -64,7 +67,8 @@ public: std::vector<std::vector<gr_complex>>(), int symbols_skipped = 0, float alpha = 0.1, - bool input_is_shifted = true); + bool input_is_shifted = true, + bool enable_soft_output = false); ~ofdm_equalizer_simpledfe(); @@ -97,6 +101,9 @@ public: * the first input items is on the DC carrier. * Note that a lot of the OFDM receiver blocks operate on * shifted signals! + * \param enable_soft_output Output noisy equalized symbols instead of exact + * constellation symbols. + * This is useful for soft demodulation and decoding. */ static sptr make(int fft_len, const gr::digital::constellation_sptr& constellation, @@ -108,12 +115,15 @@ public: std::vector<std::vector<gr_complex>>(), int symbols_skipped = 0, float alpha = 0.1, - bool input_is_shifted = true); + bool input_is_shifted = true, + bool enable_soft_output = false); private: gr::digital::constellation_sptr d_constellation; //! Averaging coefficient float d_alpha; + //! Do not output exact constellation symbols + bool d_enable_soft_output; }; } /* namespace digital */ |