summaryrefslogtreecommitdiff
path: root/gr-digital/include
diff options
context:
space:
mode:
authorjapm48 <japm48@users.noreply.github.com>2020-10-20 07:54:59 +0200
committermormj <34754695+mormj@users.noreply.github.com>2020-10-28 14:15:25 -0400
commit1458b71d90310444e556f515ee86dde7c287ed79 (patch)
tree69ac890ede9ed5b5c9ebdf1e571d3d13ff5a0263 /gr-digital/include
parent15efb1ed8d089b3e5ef2aac7f55f483e36d4866d (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.h18
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 */