diff options
author | Martin Braun <martin.braun@kit.edu> | 2013-04-19 12:58:35 +0200 |
---|---|---|
committer | Martin Braun <martin.braun@kit.edu> | 2013-05-11 13:50:34 +0200 |
commit | 7be24afbf8857a5e827fb536a80d7a83e7b6aa31 (patch) | |
tree | c76cafea7b2d33b0f0de615242d2d48004bc4f79 /gr-digital/include/digital | |
parent | 728c6e2138d5eb4f0814dcd3d03c65e628746eab (diff) |
digital: OFDM passes all tests
Diffstat (limited to 'gr-digital/include/digital')
-rw-r--r-- | gr-digital/include/digital/ofdm_frame_equalizer_vcvc.h | 18 | ||||
-rw-r--r-- | gr-digital/include/digital/ofdm_serializer_vcc.h | 7 |
2 files changed, 22 insertions, 3 deletions
diff --git a/gr-digital/include/digital/ofdm_frame_equalizer_vcvc.h b/gr-digital/include/digital/ofdm_frame_equalizer_vcvc.h index 262a9b4302..cd1b943f47 100644 --- a/gr-digital/include/digital/ofdm_frame_equalizer_vcvc.h +++ b/gr-digital/include/digital/ofdm_frame_equalizer_vcvc.h @@ -34,9 +34,19 @@ namespace gr { * \brief OFDM frame equalizer * \ingroup ofdm_blk * - * Performs equalization in one or two dimensions on a tagged OFDM frame. + * This does two things: + * First, it removes the coarse carrier offset. If a tag is found on the first + * item with the key 'ofdm_sync_carr_offset', this is interpreted as the coarse + * frequency offset in number of carriers. + * Next, it performs equalization in one or two dimensions on a tagged OFDM frame. + * The actual equalization is done by a ofdm_frame_equalizer object, outside of + * the block. + * + * Note that the tag with the coarse carrier offset is not removed. Blocks + * downstream from this block must not attempt to also correct this offset. + * * Input: a tagged series of OFDM symbols. - * Output: The same as the input, but equalized. + * Output: The same as the input, but equalized and frequency-corrected. */ class DIGITAL_API ofdm_frame_equalizer_vcvc : virtual public gr_tagged_stream_block { @@ -45,6 +55,7 @@ namespace gr { /*! * \param equalizer The equalizer object that will do the actual work + * \param cp_len Length of the cyclic prefix in samples (required to correct the frequency offset) * \param len_tag_key Length tag key * \param propagate_channel_state If true, the channel state after the last symbol * will be added to the first symbol as a tag @@ -53,7 +64,8 @@ namespace gr { */ static sptr make( digital_ofdm_equalizer_base_sptr equalizer, - const std::string &len_tag_key = "frame_len", + int cp_len, + const std::string &len_tag_key="frame_len", bool propagate_channel_state=false, int fixed_frame_len=0 ); diff --git a/gr-digital/include/digital/ofdm_serializer_vcc.h b/gr-digital/include/digital/ofdm_serializer_vcc.h index 3893d6674e..fde2458b6b 100644 --- a/gr-digital/include/digital/ofdm_serializer_vcc.h +++ b/gr-digital/include/digital/ofdm_serializer_vcc.h @@ -45,6 +45,9 @@ namespace gr { * output items, and the frame length specifies the exact number of * consumed input items. * + * It is possible to correct a carrier offset in this function by passing + * another tag with said offset. + * * Input: Complex vectors of length \p fft_len * Output: Complex scalars, in the same order as specified in occupied_carriers. */ @@ -59,6 +62,7 @@ namespace gr { * \param len_tag_key The key of the tag identifying the length of the input frame in OFDM symbols. * \param packet_len_tag_key The key of the tag identifying the number of complex symbols in this packet. * \param symbols_skipped If the first symbol is not allocated as in \p occupied_carriers[0], set this + * \param carr_offset_key When this block should correct a carrier offset, specify the tag key of the offset here (not necessary if following an ofdm_frame_equalizer_vcvc) * \param input_is_shifted If the input has the DC carrier on index 0 (i.e. it is not FFT shifted), set this to false */ static sptr make( @@ -67,6 +71,7 @@ namespace gr { const std::string &len_tag_key="frame_len", const std::string &packet_len_tag_key="", int symbols_skipped=0, + const std::string &carr_offset_key="", bool input_is_shifted=true ); @@ -74,12 +79,14 @@ namespace gr { * \param allocator The carrier allocator block of which this shall be the inverse * \param packet_len_tag_key The key of the tag identifying the number of complex symbols in this packet. * \param symbols_skipped If the first symbol is not allocated as in \p occupied_carriers[0], set this + * \param carr_offset_key When this block should correct a carrier offset, specify the tag key of the offset here (not necessary if following an ofdm_frame_equalizer_vcvc) * \param input_is_shifted If the input has the DC carrier on index 0 (i.e. it is not FFT shifted), set this to false */ static sptr make( const digital_ofdm_carrier_allocator_cvc_sptr &allocator, const std::string &packet_len_tag_key="", int symbols_skipped=0, + const std::string &carr_offset_key="", bool input_is_shifted=true ); }; |