├── .gitignore ├── AUTHORS ├── CMakeLists.txt ├── COPYING ├── MANIFEST.md ├── README.md ├── apps ├── CMakeLists.txt ├── CMakeLists.txt~ ├── benchmark_mimo ├── benchmark_mimo21 ├── benchmark_mrrc ├── benchmark_ofdm ├── benchmarking │ ├── README │ ├── benchmarking.py │ ├── bm_scripts │ │ ├── __init__.py │ │ ├── bm_coding.py │ │ ├── bm_decoding.py │ │ ├── bm_demodulator.py │ │ ├── bm_fir_filters.py │ │ ├── bm_modulator.py │ │ ├── bm_noise.py │ │ ├── bm_pskdemod.py │ │ ├── bm_pskmod.py │ │ ├── bm_receiver_fbmc.py │ │ ├── bm_receiver_usrp.py │ │ ├── bm_sig_source.py │ │ ├── bm_transmitter_fbmc.py │ │ └── bm_transmitter_usrp.py │ ├── gr_profiler.json │ ├── gr_profiler.py │ ├── plot_results.py │ ├── plot_results_transceiver.py │ ├── plot_results_two_machines.py │ ├── plot_results_two_machines_coding.py │ ├── run_coding.json │ ├── run_decoding.json │ ├── run_demodulator.json │ ├── run_examples.json │ ├── run_filters.json │ ├── run_modulator.json │ ├── run_psk.json │ ├── run_receiver.json │ ├── run_receiver_fbmc.json │ ├── run_transmitter.json │ └── run_transmitter_fbmc.json ├── cfg │ ├── benchmark_standard.conf │ ├── rx1M.conf │ ├── rx2M.conf │ ├── rx2M_imgxfer.conf │ ├── tx1M.conf │ ├── tx2M.conf │ └── tx2M_imgxfer.conf ├── data │ └── CMakeLists.txt ├── environment_debug ├── environment_lab ├── environment_release ├── grc │ ├── demo.grc │ ├── demo_1tap.grc │ ├── demo_1zero.grc │ ├── demo_1zero_rep.grc │ ├── demo_1zero_rep_1tap.grc │ ├── demo_2zero.grc │ ├── demo_3tap.grc │ ├── demo_onlyawgn.grc │ ├── fbmc_inner_receiver.grc │ ├── fbmc_main.grc │ ├── fbmc_main.grc~ │ ├── fbmc_main_coding.grc │ ├── fbmc_main_masking_after_fft.grc │ ├── fbmc_multiuser_debug.grc │ ├── fbmc_multiuser_scenario.grc │ ├── fbmc_snr_estimator.grc │ ├── fbmc_with_extended_fft.grc │ ├── fbmc_with_hier_blocks.grc │ ├── paper_tigr_fbmc_inner_receiver.grc │ ├── paper_tigr_fbmc_inner_receiver2.grc │ ├── paper_tigr_fbmc_uncoded_transceiver.grc │ ├── paper_tigr_ofdm_inner_receiver.grc │ ├── paper_tigr_ofdm_uncoded_transceiver.grc │ ├── scfdma_receiver_chain.grc │ ├── scfdma_transmitter_chain.grc │ ├── scfdma_with_hier_blocks.grc │ ├── sync_simple.grc │ ├── test1.grc │ ├── tigr_ber_measurement.grc │ ├── tigr_fbmc_coded_transceiver.grc │ ├── tigr_fbmc_coded_usrp_rx.grc │ ├── tigr_fbmc_inner_receiver.grc │ ├── tigr_fbmc_snr_estimator.grc │ ├── tigr_fbmc_transceiver.grc │ ├── tigr_fbmc_uncoded_transceiver.grc │ ├── tigr_fbmc_uncoded_usrp_rx.grc │ ├── tigr_fbmc_usrp_tx.grc │ ├── tigr_ofdm_coded_transceiver.grc │ ├── tigr_ofdm_coded_usrp_rx.grc │ ├── tigr_ofdm_inner_receiver.grc │ ├── tigr_ofdm_snr_estimator.grc │ ├── tigr_ofdm_uncoded_transceiver.grc │ ├── tigr_ofdm_uncoded_usrp_rx.grc │ ├── tigr_ofdm_usrp_tx.grc │ ├── tigr_scatterplot.grc │ ├── tigr_test_demapper.grc │ ├── tigr_transmit_control.grc │ ├── top_block.py │ └── transmit_control.grc ├── gui │ ├── fixui4py.sh │ ├── ofdm_mimo_rx_gui.py │ ├── ofdm_mimo_rx_gui_window.ui │ ├── ofdm_mrrc_rx_gui.py │ ├── ofdm_mrrc_rx_gui_window.ui │ ├── ofdm_rx_gui.py │ ├── ofdm_rx_gui_window.ui │ ├── ofdm_tx_gui.py │ └── ofdm_tx_gui_window.ui ├── run_benchmark.sh ├── run_benchmark_fbmc.sh ├── run_benchmark_fbmc_gui.sh ├── run_benchmark_gui.sh ├── run_benchmark_mimo21.sh ├── run_benchmark_mrrc_gui.sh ├── run_benchmarking.sh ├── run_grc.sh ├── run_gui.sh ├── run_plot_benchmarking.sh ├── run_qa_fbmc_asymmetrical_vector_mask_vcvc.sh ├── run_qa_fbmc_asymmetrical_vector_padding_vcvc.sh ├── run_qa_fbmc_insert_preamble_mu_vcvc.sh ├── run_qa_fbmc_subchannel_processing_mu_vcvc.sh ├── run_qa_scfdma_subcarrier_demapper_vcvc.sh ├── run_qa_scfdma_subcarrier_mapper_vcvc.sh ├── run_test_demapper.sh ├── run_test_demapper_fbmc.sh ├── run_test_demapper_fbmc_multiuser.sh ├── run_usrp_rx.sh ├── run_usrp_rx_gui.sh ├── run_usrp_rx_gui.sh~ ├── run_usrp_rx_mrrc_gui.sh ├── run_usrp_tx.sh └── run_usrp_tx_gui.sh ├── cmake ├── Modules │ ├── CMakeParseArgumentsCopy.cmake │ ├── FindCppUnit.cmake │ ├── FindGnuradioCore.cmake │ ├── FindGnuradioFFT.cmake │ ├── FindGnuradioRuntime.cmake │ ├── FindGruel.cmake │ ├── FindITPP.cmake │ ├── FindITPP.cmake~ │ ├── FindNumPy.cmake │ ├── FindQwt.cmake │ ├── FindZeroMQ.cmake │ ├── GrMiscUtils.cmake │ ├── GrPlatform.cmake │ ├── GrPython.cmake │ ├── GrSetupQt4.cmake │ ├── GrSwig.cmake │ └── GrTest.cmake └── cmake_uninstall.cmake.in ├── docs ├── CMakeLists.txt ├── README.ofdm └── doxygen │ ├── CMakeLists.txt │ ├── Doxyfile.in │ ├── Doxyfile.swig_doc.in │ ├── doxyxml │ ├── __init__.py │ ├── base.py │ ├── doxyindex.py │ ├── generated │ │ ├── __init__.py │ │ ├── compound.py │ │ ├── compoundsuper.py │ │ ├── index.py │ │ └── indexsuper.py │ └── text.py │ ├── other │ ├── group_defs.dox │ └── main_page.dox │ └── swig_doc.py ├── grc ├── CMakeLists.txt ├── ofdm_CTF_MSE_enhancer.xml ├── ofdm_accumulator_cc.xml ├── ofdm_accumulator_ff.xml ├── ofdm_add_vcc.xml ├── ofdm_allocation_buffer.xml ├── ofdm_allocation_src.xml ├── ofdm_autocorrelator.xml ├── ofdm_autocorrelator0.xml ├── ofdm_autocorrelator_stage1.xml ├── ofdm_autocorrelator_stage2.xml ├── ofdm_ber_measurement.xml ├── ofdm_ber_reference_source.xml ├── ofdm_bernoulli_bit_src.xml ├── ofdm_bit_position_dependent_ber.xml ├── ofdm_calc_metric.xml ├── ofdm_channel_equalizer.xml ├── ofdm_channel_equalizer_mimo.xml ├── ofdm_channel_equalizer_mimo_2.xml ├── ofdm_channel_equalizer_mimo_3.xml ├── ofdm_channel_estimator_01.xml ├── ofdm_channel_estimator_02.xml ├── ofdm_coded_bpsk_soft_decoder.xml ├── ofdm_compat_read_ber_from_imgxfer.xml ├── ofdm_complex_to_arg.xml ├── ofdm_complex_white_noise.xml ├── ofdm_constellation_sample_filter.xml ├── ofdm_cyclic_prefixer.xml ├── ofdm_depuncture_bb.xml ├── ofdm_depuncture_ff.xml ├── ofdm_divide_frame_fc.xml ├── ofdm_dummy_ff.xml ├── ofdm_dynamic_trigger_ib.xml ├── ofdm_encoder_bb.xml ├── ofdm_extract_block_from_frame.xml ├── ofdm_fbmc_asymmetrical_vector_mask_vcvc.xml ├── ofdm_fbmc_asymmetrical_vector_padding_vcvc.xml ├── ofdm_fbmc_beta_multiplier_vcvc.xml ├── ofdm_fbmc_channel_hier_cc.xml ├── ofdm_fbmc_frame_sampler.xml ├── ofdm_fbmc_insert_preamble_mu_vcvc.xml ├── ofdm_fbmc_insert_preamble_vcvc.xml ├── ofdm_fbmc_junction_vcvc.xml ├── ofdm_fbmc_oqam_postprocessing_vcvc.xml ├── ofdm_fbmc_oqam_preprocessing_vcvc.xml ├── ofdm_fbmc_overlapping_parallel_to_serial_vcc.xml ├── ofdm_fbmc_overlapping_serial_to_parallel_cvc.xml ├── ofdm_fbmc_pilot_block_filter.xml ├── ofdm_fbmc_pilot_block_inserter.xml ├── ofdm_fbmc_polyphase_network_vcvc.xml ├── ofdm_fbmc_postprocess_CTF_estimate.xml ├── ofdm_fbmc_receiver_demo.xml ├── ofdm_fbmc_receiver_hier_cb.xml ├── ofdm_fbmc_receiver_multiuser_cb.xml ├── ofdm_fbmc_remove_preamble_vcvc.xml ├── ofdm_fbmc_rms_amplifier.xml ├── ofdm_fbmc_separate_vcvc.xml ├── ofdm_fbmc_snr_estimator.xml ├── ofdm_fbmc_snr_filter.xml ├── ofdm_fbmc_subchannel_processing_mu_vcvc.xml ├── ofdm_fbmc_subchannel_processing_vcvc.xml ├── ofdm_fbmc_symbol_creation_bvc.xml ├── ofdm_fbmc_symbol_estimation_vcb.xml ├── ofdm_fbmc_transmitter_demo.xml ├── ofdm_fbmc_transmitter_hier_bc.xml ├── ofdm_fbmc_transmitter_multiuser_bc.xml ├── ofdm_fbmc_vector_copy_vcvc.xml ├── ofdm_fbmc_vector_reshape_vcvc.xml ├── ofdm_fbmc_weighted_despreading_vcvc.xml ├── ofdm_fbmc_weighted_spreading_vcvc.xml ├── ofdm_feedback_sink_vf.xml ├── ofdm_find_cir_shift.xml ├── ofdm_frame_mux.xml ├── ofdm_frame_sampler.xml ├── ofdm_frequency_shift_vcc.xml ├── ofdm_fsm.xml ├── ofdm_gate_ff.xml ├── ofdm_generic_demapper_vcb.xml ├── ofdm_generic_mapper_bcv.xml ├── ofdm_generic_mapper_mimo_bcv.xml ├── ofdm_generic_softdemapper_vcf.xml ├── ofdm_imgtransfer_sink.xml ├── ofdm_imgtransfer_src.xml ├── ofdm_imgtransfer_testkanal.xml ├── ofdm_int_skip.xml ├── ofdm_interp_cir_set_noncir_to_zero.xml ├── ofdm_itpp_tdl_channel.xml ├── ofdm_limit_vff.xml ├── ofdm_lms_fir_ff.xml ├── ofdm_lms_phase_tracking.xml ├── ofdm_lms_phase_tracking_02.xml ├── ofdm_lms_phase_tracking_03.xml ├── ofdm_lms_phase_tracking_dc_null.xml ├── ofdm_ls_estimator_straight_slope.xml ├── ofdm_mean_squared_error.xml ├── ofdm_midamble_insert.xml ├── ofdm_mm_frequency_estimator.xml ├── ofdm_moms_cc.xml ├── ofdm_moms_ff.xml ├── ofdm_multiply_const_ccf.xml ├── ofdm_multiply_const_ii.xml ├── ofdm_multiply_const_vcc.xml ├── ofdm_multiply_frame_fc.xml ├── ofdm_noise_nulling.xml ├── ofdm_normalize_vcc.xml ├── ofdm_ofdm_pilot_block_inserter.xml ├── ofdm_ofdm_rms_amplifier.xml ├── ofdm_peak_detector_02_fb.xml ├── ofdm_peak_resync_bb.xml ├── ofdm_pilot_block_filter.xml ├── ofdm_pilot_subcarrier_filter.xml ├── ofdm_pilot_subcarrier_inserter.xml ├── ofdm_postprocess_CTF_estimate.xml ├── ofdm_puncture_bb.xml ├── ofdm_reassemble_ofdm_frame.xml ├── ofdm_recursive_timing_metric.xml ├── ofdm_reference_data_source_02_ib.xml ├── ofdm_reference_data_source_ib.xml ├── ofdm_reference_data_source_mimo_ib.xml ├── ofdm_repetition_decoder_bs.xml ├── ofdm_repetition_encoder_sb.xml ├── ofdm_rpc_manager.xml ├── ofdm_rx_rpc_manager.xml ├── ofdm_scatterplot_sink.xml ├── ofdm_scatterplot_subcarrier_filter.xml ├── ofdm_scfdma_receiver_cb.xml ├── ofdm_scfdma_subcarrier_demapper_vcvc.xml ├── ofdm_scfdma_subcarrier_mapper_vcvc.xml ├── ofdm_scfdma_transmitter_bc.xml ├── ofdm_schmidl_cfo_estimator.xml ├── ofdm_schmidl_tm_rec_stage1.xml ├── ofdm_schmidl_tm_rec_stage2.xml ├── ofdm_sinr_estimator.xml ├── ofdm_sinr_estimator_02.xml ├── ofdm_sinr_interpolator.xml ├── ofdm_skip.xml ├── ofdm_snr_estimator.xml ├── ofdm_snr_estimator_dc_null.xml ├── ofdm_snr_filter.xml ├── ofdm_sqrt_vff.xml ├── ofdm_static_mux_c.xml ├── ofdm_static_mux_v.xml ├── ofdm_stc_decoder_rx0.xml ├── ofdm_stc_decoder_rx1.xml ├── ofdm_stc_encoder.xml ├── ofdm_stream_controlled_mux.xml ├── ofdm_stream_controlled_mux_b.xml ├── ofdm_subc_snr_estimator.xml ├── ofdm_suppress_erasure_decision.xml ├── ofdm_symbol_random_src.xml ├── ofdm_template_ff.xml ├── ofdm_throughput_measure.xml ├── ofdm_time_sync.xml ├── ofdm_trigger_surveillance.xml ├── ofdm_tx_mux_ctrl.xml ├── ofdm_tx_rpc_manager.xml ├── ofdm_uhd_receiver.xml ├── ofdm_uhd_transmitter.xml ├── ofdm_vector_element.xml ├── ofdm_vector_element_vff.xml ├── ofdm_vector_mask.xml ├── ofdm_vector_mask_dc_null.xml ├── ofdm_vector_padding.xml ├── ofdm_vector_padding_dc_null.xml ├── ofdm_vector_sampler.xml ├── ofdm_vector_sum_vcc.xml ├── ofdm_vector_sum_vff.xml └── ofdm_viterbi_combined_fb.xml ├── include └── ofdm │ ├── CMakeLists.txt │ ├── CTF_MSE_enhancer.h │ ├── accumulator_cc.h │ ├── accumulator_ff.h │ ├── add_vcc.h │ ├── allocation_buffer.h │ ├── allocation_src.h │ ├── api.h │ ├── autocorrelator0.h │ ├── autocorrelator_stage1.h │ ├── autocorrelator_stage2.h │ ├── base.h │ ├── ber_measurement.h │ ├── bernoulli_bit_src.h │ ├── bit_position_dependent_ber.h │ ├── calc_metric.h │ ├── channel_equalizer.h │ ├── channel_equalizer_mimo.h │ ├── channel_equalizer_mimo_12.h │ ├── channel_equalizer_mimo_2.h │ ├── channel_equalizer_mimo_3.h │ ├── channel_estimator_01.h │ ├── channel_estimator_02.h │ ├── coded_bpsk_soft_decoder.h │ ├── compat_read_ber_from_imgxfer.h │ ├── complex_to_arg.h │ ├── complex_white_noise.h │ ├── constellation_sample_filter.h │ ├── cyclic_prefixer.h │ ├── depuncture_bb.h │ ├── depuncture_ff.h │ ├── divide_frame_fc.h │ ├── dynamic_trigger_ib.h │ ├── encoder_bb.h │ ├── extract_block_from_frame.h │ ├── fbmc_asymmetrical_vector_mask_vcvc.h │ ├── fbmc_asymmetrical_vector_padding_vcvc.h │ ├── fbmc_beta_multiplier_vcvc.h │ ├── fbmc_junction_vcvc.h │ ├── fbmc_oqam_postprocessing_vcvc.h │ ├── fbmc_oqam_preprocessing_vcvc.h │ ├── fbmc_polyphase_network_vcvc.h │ ├── fbmc_postprocess_CTF_estimate.h │ ├── fbmc_separate_vcvc.h │ ├── fbmc_snr_estimator.h │ ├── fbmc_subchannel_processing_mu_vcvc.h │ ├── fbmc_subchannel_processing_vcvc.h │ ├── fbmc_vector_copy_vcvc.h │ ├── fbmc_weighted_despreading_vcvc.h │ ├── fbmc_weighted_spreading_vcvc.h │ ├── feedback_sink_vf.h │ ├── find_cir_shift.h │ ├── frame_mux.h │ ├── frequency_shift_vcc.h │ ├── fsm.h │ ├── gate_ff.h │ ├── generic_demapper_vcb.h │ ├── generic_mapper_bcv.h │ ├── generic_mapper_mimo_bcv.h │ ├── generic_softdemapper_vcf.h │ ├── imgtransfer_sink.h │ ├── imgtransfer_src.h │ ├── imgtransfer_testkanal.h │ ├── int_skip.h │ ├── interp_cir_set_noncir_to_zero.h │ ├── itpp_tdl_channel.h │ ├── limit_vff.h │ ├── lms_fir_ff.h │ ├── lms_phase_tracking.h │ ├── lms_phase_tracking_02.h │ ├── lms_phase_tracking_03.h │ ├── lms_phase_tracking_dc_null.h │ ├── ls_estimator_straight_slope.h │ ├── mean_squared_error.h │ ├── midamble_insert.h │ ├── mm_frequency_estimator.h │ ├── moms_cc.h │ ├── moms_ff.h │ ├── multiply_const_ccf.h │ ├── multiply_const_ii.h │ ├── multiply_const_vcc.h │ ├── multiply_frame_fc.h │ ├── noise_nulling.h │ ├── normalize_vcc.h │ ├── ofdm_metric_type.h │ ├── ofdmi_fast_math.h │ ├── ofdmi_mod.h │ ├── ofdmi_shared_generator.h │ ├── peak_detector_02_fb.h │ ├── peak_resync_bb.h │ ├── pilot_subcarrier_inserter.h │ ├── postprocess_CTF_estimate.h │ ├── puncture_bb.h │ ├── pushconsumer_i.hpp │ ├── reassemble_ofdm_frame.h │ ├── reference_data_source_02_ib.h │ ├── reference_data_source_ib.h │ ├── reference_data_source_mimo_ib.h │ ├── repetition_decoder_bs.h │ ├── repetition_encoder_sb.h │ ├── scatterplot_sink.h │ ├── scfdma_subcarrier_demapper_vcvc.h │ ├── scfdma_subcarrier_mapper_vcvc.h │ ├── schmidl_cfo_estimator.h │ ├── schmidl_tm_rec_stage1.h │ ├── schmidl_tm_rec_stage2.h │ ├── sinr_estimator.h │ ├── sinr_estimator_02.h │ ├── sinr_interpolator.h │ ├── skip.h │ ├── snr_estimator.h │ ├── snr_estimator_dc_null.h │ ├── sqrt_vff.h │ ├── static_mux_c.h │ ├── static_mux_v.h │ ├── stc_decoder_rx0.h │ ├── stc_decoder_rx1.h │ ├── stc_encoder.h │ ├── stream_controlled_mux.h │ ├── stream_controlled_mux_b.h │ ├── subc_snr_estimator.h │ ├── suppress_erasure_decision.h │ ├── symbol_random_src.h │ ├── throughput_measure.h │ ├── time_sync.h │ ├── time_sync2.h │ ├── trigger_surveillance.h │ ├── tx_mux_ctrl.h │ ├── util_bmp.h │ ├── util_endian.h │ ├── util_ipc.h │ ├── util_random.h │ ├── vector_element.h │ ├── vector_element_vff.h │ ├── vector_mask.h │ ├── vector_mask_dc_null.h │ ├── vector_padding.h │ ├── vector_padding_dc_null.h │ ├── vector_sampler.h │ ├── vector_sum_vcc.h │ ├── vector_sum_vff.h │ └── viterbi_combined_fb.h ├── lab_exercise └── home │ ├── .bashrc │ ├── .config │ └── gtk-3.0 │ │ └── gtk.css │ ├── .icons │ ├── matlab-icon.png │ └── ti-icon.png │ ├── .profile │ ├── .ti_wallpaper.jpg │ ├── .uhd │ └── cal │ │ ├── rx_iq_cal_v0.2_F59193.csv │ │ ├── rx_iq_cal_v0.2_F591A4.csv │ │ ├── rx_iq_cal_v0.2_F591C5.csv │ │ ├── rx_iq_cal_v0.2_F591CE.csv │ │ ├── rx_iq_cal_v0.2_F592D9.csv │ │ ├── rx_iq_cal_v0.2_F592F1.csv │ │ ├── rx_iq_cal_v0.2_F592F9.csv │ │ ├── rx_iq_cal_v0.2_F5942E.csv │ │ ├── tx_dc_cal_v0.2_F59193.csv │ │ ├── tx_dc_cal_v0.2_F591A4.csv │ │ ├── tx_dc_cal_v0.2_F591C5.csv │ │ ├── tx_dc_cal_v0.2_F591CE.csv │ │ ├── tx_dc_cal_v0.2_F592D9.csv │ │ ├── tx_dc_cal_v0.2_F592F1.csv │ │ ├── tx_dc_cal_v0.2_F592F9.csv │ │ ├── tx_dc_cal_v0.2_F5942E.csv │ │ ├── tx_iq_cal_v0.2_F59193.csv │ │ ├── tx_iq_cal_v0.2_F591A4.csv │ │ ├── tx_iq_cal_v0.2_F591C5.csv │ │ ├── tx_iq_cal_v0.2_F591CE.csv │ │ ├── tx_iq_cal_v0.2_F592D9.csv │ │ ├── tx_iq_cal_v0.2_F592F1.csv │ │ ├── tx_iq_cal_v0.2_F592F9.csv │ │ └── tx_iq_cal_v0.2_F5942E.csv │ ├── Desktop │ ├── gnome-terminal.desktop │ ├── hostnameinfo.desktop │ ├── matlab.desktop │ ├── print_results.desktop │ ├── task_1_usrp_rx.desktop │ ├── task_1_usrp_tx.desktop │ ├── task_2_results.xls │ ├── task_2_usrp_rx.desktop │ ├── task_2_usrp_tx.desktop │ ├── task_3_results.xls │ ├── task_3_system_simulation_case_1.desktop │ ├── task_3_system_simulation_case_2.desktop │ ├── task_4_system_simulation.desktop │ ├── task_5_results.xls │ ├── task_5_system_simulation.desktop │ └── usrp_fft.desktop │ ├── latex │ ├── RWTHAachenUniversity.eps │ ├── csi.eps │ ├── results.aux │ ├── results.dvi │ ├── results.log │ ├── results.tex │ ├── ti_veclogo.eps │ ├── titlepage.aux │ └── titlepage.tex │ ├── matlab │ ├── fnf.m │ ├── task_2_plot_results.m │ ├── task_3_plot_results.m │ └── task_5_plot_results.m │ └── shell_scripts │ ├── chooser.sh │ ├── lab_env.sh │ ├── print_results.sh │ ├── reset_ofdm.sh │ ├── start_matlab.sh │ ├── usrp_rx.sh │ └── usrp_tx.sh ├── lib ├── CMakeLists.txt ├── CTF_MSE_enhancer_impl.cc ├── CTF_MSE_enhancer_impl.h ├── accumulator_cc_impl.cc ├── accumulator_cc_impl.h ├── accumulator_ff_impl.cc ├── accumulator_ff_impl.h ├── add_vcc_impl.cc ├── add_vcc_impl.h ├── allocation_buffer_impl.cc ├── allocation_buffer_impl.h ├── allocation_src_impl.cc ├── allocation_src_impl.h ├── autocorrelator0_impl.cc ├── autocorrelator0_impl.h ├── autocorrelator_stage1_impl.cc ├── autocorrelator_stage1_impl.h ├── autocorrelator_stage2_impl.cc ├── autocorrelator_stage2_impl.h ├── base.cc ├── ber_measurement_impl.cc ├── ber_measurement_impl.h ├── bernoulli_bit_src_impl.cc ├── bernoulli_bit_src_impl.h ├── bit_position_dependent_ber_impl.cc ├── bit_position_dependent_ber_impl.h ├── calc_metric.cc ├── channel_equalizer_impl.cc ├── channel_equalizer_impl.h ├── channel_equalizer_mimo_12_impl.cc ├── channel_equalizer_mimo_12_impl.h ├── channel_equalizer_mimo_2_impl.cc ├── channel_equalizer_mimo_2_impl.h ├── channel_equalizer_mimo_3_impl.cc ├── channel_equalizer_mimo_3_impl.h ├── channel_equalizer_mimo_impl.cc ├── channel_equalizer_mimo_impl.h ├── channel_estimator_01_impl.cc ├── channel_estimator_01_impl.h ├── channel_estimator_02_impl.cc ├── channel_estimator_02_impl.h ├── coded_bpsk_soft_decoder_impl.cc ├── coded_bpsk_soft_decoder_impl.h ├── compat_read_ber_from_imgxfer_impl.cc ├── compat_read_ber_from_imgxfer_impl.h ├── complex_to_arg_impl.cc ├── complex_to_arg_impl.h ├── complex_white_noise_impl.cc ├── complex_white_noise_impl.h ├── constellation_sample_filter_impl.cc ├── constellation_sample_filter_impl.h ├── cyclic_prefixer_impl.cc ├── cyclic_prefixer_impl.h ├── depuncture_bb_impl.cc ├── depuncture_bb_impl.h ├── depuncture_ff_impl.cc ├── depuncture_ff_impl.h ├── divide_frame_fc_impl.cc ├── divide_frame_fc_impl.h ├── dynamic_trigger_ib_impl.cc ├── dynamic_trigger_ib_impl.h ├── encoder_bb_impl.cc ├── encoder_bb_impl.h ├── extract_block_from_frame_impl.cc ├── extract_block_from_frame_impl.h ├── fbmc_asymmetrical_vector_mask_vcvc_impl.cc ├── fbmc_asymmetrical_vector_mask_vcvc_impl.h ├── fbmc_asymmetrical_vector_padding_vcvc_impl.cc ├── fbmc_asymmetrical_vector_padding_vcvc_impl.h ├── fbmc_beta_multiplier_vcvc_impl.cc ├── fbmc_beta_multiplier_vcvc_impl.h ├── fbmc_junction_vcvc_impl.cc ├── fbmc_junction_vcvc_impl.h ├── fbmc_oqam_postprocessing_vcvc_impl.cc ├── fbmc_oqam_postprocessing_vcvc_impl.h ├── fbmc_oqam_preprocessing_vcvc_impl.cc ├── fbmc_oqam_preprocessing_vcvc_impl.h ├── fbmc_polyphase_network_vcvc_impl.cc ├── fbmc_polyphase_network_vcvc_impl.h ├── fbmc_postprocess_CTF_estimate_impl.cc ├── fbmc_postprocess_CTF_estimate_impl.h ├── fbmc_separate_vcvc_impl.cc ├── fbmc_separate_vcvc_impl.h ├── fbmc_snr_estimator_impl.cc ├── fbmc_snr_estimator_impl.h ├── fbmc_subchannel_processing_mu_vcvc_impl.cc ├── fbmc_subchannel_processing_mu_vcvc_impl.h ├── fbmc_subchannel_processing_vcvc_impl.cc ├── fbmc_subchannel_processing_vcvc_impl.h ├── fbmc_vector_copy_vcvc_impl.cc ├── fbmc_vector_copy_vcvc_impl.h ├── fbmc_weighted_despreading_vcvc_impl.cc ├── fbmc_weighted_despreading_vcvc_impl.h ├── fbmc_weighted_spreading_vcvc_impl.cc ├── fbmc_weighted_spreading_vcvc_impl.h ├── feedback_sink_vf_impl.cc ├── feedback_sink_vf_impl.h ├── find_cir_shift_impl.cc ├── find_cir_shift_impl.h ├── frame_mux_impl.cc ├── frame_mux_impl.h ├── frequency_shift_vcc_impl.cc ├── frequency_shift_vcc_impl.h ├── fsm.cc ├── gate_ff_impl.cc ├── gate_ff_impl.h ├── generic_demapper_vcb_impl.cc ├── generic_demapper_vcb_impl.h ├── generic_mapper_bcv_impl.cc ├── generic_mapper_bcv_impl.h ├── generic_mapper_mimo_bcv_impl.cc ├── generic_mapper_mimo_bcv_impl.h ├── generic_softdemapper_vcf_impl.cc ├── generic_softdemapper_vcf_impl.h ├── imgtransfer_sink_impl.cc ├── imgtransfer_sink_impl.h ├── imgtransfer_src_impl.cc ├── imgtransfer_src_impl.h ├── imgtransfer_testkanal_impl.cc ├── imgtransfer_testkanal_impl.h ├── int_skip_impl.cc ├── int_skip_impl.h ├── interp_cir_set_noncir_to_zero_impl.cc ├── interp_cir_set_noncir_to_zero_impl.h ├── itpp_tdl_channel_impl.cc ├── itpp_tdl_channel_impl.h ├── limit_vff_impl.cc ├── limit_vff_impl.h ├── lms_fir_ff_impl.cc ├── lms_fir_ff_impl.h ├── lms_phase_tracking_02_impl.cc ├── lms_phase_tracking_02_impl.h ├── lms_phase_tracking_03_impl.cc ├── lms_phase_tracking_03_impl.h ├── lms_phase_tracking_dc_null_impl.cc ├── lms_phase_tracking_dc_null_impl.h ├── lms_phase_tracking_impl.cc ├── lms_phase_tracking_impl.h ├── ls_estimator_straight_slope_impl.cc ├── ls_estimator_straight_slope_impl.h ├── malloc16.c ├── malloc16.h ├── mean_squared_error_impl.cc ├── mean_squared_error_impl.h ├── midamble_insert_impl.cc ├── midamble_insert_impl.h ├── mm_frequency_estimator_impl.cc ├── mm_frequency_estimator_impl.h ├── moms_cc_impl.cc ├── moms_cc_impl.h ├── moms_ff_impl.cc ├── moms_ff_impl.h ├── multiply_const_ccf_impl.cc ├── multiply_const_ccf_impl.h ├── multiply_const_ii_impl.cc ├── multiply_const_ii_impl.h ├── multiply_const_vcc_impl.cc ├── multiply_const_vcc_impl.h ├── multiply_frame_fc_impl.cc ├── multiply_frame_fc_impl.h ├── noise_nulling_impl.cc ├── noise_nulling_impl.h ├── normalize_vcc_impl.cc ├── normalize_vcc_impl.h ├── ofdmi_mod.cc ├── ofdmi_shared_generator.cc ├── peak_detector_02_fb_impl.cc ├── peak_detector_02_fb_impl.h ├── peak_resync_bb_impl.cc ├── peak_resync_bb_impl.h ├── pilot_subcarrier_inserter_impl.cc ├── pilot_subcarrier_inserter_impl.h ├── postprocess_CTF_estimate_impl.cc ├── postprocess_CTF_estimate_impl.h ├── puncture_bb_impl.cc ├── puncture_bb_impl.h ├── qa_ofdm.cc ├── qa_ofdm.h ├── reassemble_ofdm_frame_impl.cc ├── reassemble_ofdm_frame_impl.h ├── reference_data_source_02_ib_impl.cc ├── reference_data_source_02_ib_impl.h ├── reference_data_source_ib_impl.cc ├── reference_data_source_ib_impl.h ├── reference_data_source_mimo_ib_impl.cc ├── reference_data_source_mimo_ib_impl.h ├── repetition_decoder_bs_impl.cc ├── repetition_decoder_bs_impl.h ├── repetition_encoder_sb_impl.cc ├── repetition_encoder_sb_impl.h ├── scatterplot_sink_impl.cc ├── scatterplot_sink_impl.h ├── scfdma_subcarrier_demapper_vcvc_impl.cc ├── scfdma_subcarrier_demapper_vcvc_impl.h ├── scfdma_subcarrier_mapper_vcvc_impl.cc ├── scfdma_subcarrier_mapper_vcvc_impl.h ├── schmidl_cfo_estimator_impl.cc ├── schmidl_cfo_estimator_impl.h ├── schmidl_tm_rec_stage1_impl.cc ├── schmidl_tm_rec_stage1_impl.h ├── schmidl_tm_rec_stage2_impl.cc ├── schmidl_tm_rec_stage2_impl.h ├── sinr_estimator_02_impl.cc ├── sinr_estimator_02_impl.h ├── sinr_estimator_impl.cc ├── sinr_estimator_impl.h ├── sinr_interpolator_impl.cc ├── sinr_interpolator_impl.h ├── skip_impl.cc ├── skip_impl.h ├── snr_estimator_dc_null_impl.cc ├── snr_estimator_dc_null_impl.h ├── snr_estimator_impl.cc ├── snr_estimator_impl.h ├── sqrt_vff_impl.cc ├── sqrt_vff_impl.h ├── static_mux_c_impl.cc ├── static_mux_c_impl.h ├── static_mux_v_impl.cc ├── static_mux_v_impl.h ├── stc_decoder_rx0_impl.cc ├── stc_decoder_rx0_impl.h ├── stc_decoder_rx1_impl.cc ├── stc_decoder_rx1_impl.h ├── stc_encoder_impl.cc ├── stc_encoder_impl.h ├── stream_controlled_mux_b_impl.cc ├── stream_controlled_mux_b_impl.h ├── stream_controlled_mux_impl.cc ├── stream_controlled_mux_impl.h ├── subc_snr_estimator_impl.cc ├── subc_snr_estimator_impl.h ├── suppress_erasure_decision_impl.cc ├── suppress_erasure_decision_impl.h ├── symbol_random_src_impl.cc ├── symbol_random_src_impl.h ├── test_ofdm.cc ├── throughput_measure_impl.cc ├── throughput_measure_impl.h ├── time_sync2_impl.cc ├── time_sync2_impl.h ├── time_sync_impl.cc ├── time_sync_impl.h ├── trigger_surveillance_impl.cc ├── trigger_surveillance_impl.h ├── tx_mux_ctrl_impl.cc ├── tx_mux_ctrl_impl.h ├── util_bmp.cc ├── util_endian.cc ├── util_ipc.cc ├── util_random.cc ├── vector_element_impl.cc ├── vector_element_impl.h ├── vector_element_vff_impl.cc ├── vector_element_vff_impl.h ├── vector_mask_dc_null_impl.cc ├── vector_mask_dc_null_impl.h ├── vector_mask_impl.cc ├── vector_mask_impl.h ├── vector_padding_dc_null_impl.cc ├── vector_padding_dc_null_impl.h ├── vector_padding_impl.cc ├── vector_padding_impl.h ├── vector_sampler_impl.cc ├── vector_sampler_impl.h ├── vector_sum_vcc_impl.cc ├── vector_sum_vcc_impl.h ├── vector_sum_vff_impl.cc ├── vector_sum_vff_impl.h ├── viterbi_combined_fb_impl.cc └── viterbi_combined_fb_impl.h ├── matlab ├── compare.m ├── copy.sh ├── data_generator_for_qa_scp.m ├── eq_coef_check.m ├── output_cpp_block.txt ├── read_char_binary.m ├── read_complex_binary.m ├── read_cshort_binary.m ├── read_float_binary.m ├── read_int_binary.m ├── read_short_binary.m ├── sp_cpp_output.txt ├── sp_equ_cpp_output.txt ├── sp_est_cpp_output.txt ├── sp_python_output.txt ├── stopcheck.m ├── tapdata.txt └── taps.txt ├── python ├── ofdm │ ├── CMakeLists.txt │ ├── __init__.py │ ├── __init__.py~ │ ├── autocorrelator.py │ ├── benchmark_fbmc.py │ ├── benchmark_mimo.py │ ├── benchmark_mimo21.py │ ├── benchmark_mrrc.py │ ├── benchmark_ofdm.py │ ├── ber_reference_source_grc.py │ ├── channel.py │ ├── common_options.py │ ├── configparse.py │ ├── delaylines.py │ ├── fbmc_channel_hier_cc.py │ ├── fbmc_frame_sampler_grc.py │ ├── fbmc_insert_preamble_mu_vcvc.py │ ├── fbmc_insert_preamble_vcvc.py │ ├── fbmc_overlapping_parallel_to_serial_vcc.py │ ├── fbmc_overlapping_serial_to_parallel_cvc.py │ ├── fbmc_receive_path.py │ ├── fbmc_receiver.py │ ├── fbmc_receiver_demo.py │ ├── fbmc_receiver_hier_cb.py │ ├── fbmc_receiver_multiuser_cb.py │ ├── fbmc_remove_preamble_vcvc.py │ ├── fbmc_rms_amplifier_grc.py │ ├── fbmc_symbol_creation_bvc.py │ ├── fbmc_symbol_estimation_vcb.py │ ├── fbmc_transmit_path.py │ ├── fbmc_transmitter_demo.py │ ├── fbmc_transmitter_hier_bc.py │ ├── fbmc_transmitter_multiuser_bc.py │ ├── fbmc_vector_reshape_vcvc.py │ ├── file_psd.py │ ├── fusb_options.py │ ├── gr_tools.py │ ├── moms.py │ ├── moms_general.py │ ├── morelli.py │ ├── ofdm_frame_sampler_grc.py │ ├── ofdm_receiver.py │ ├── ofdm_receiver2.py │ ├── ofdm_receiver21.py │ ├── ofdm_receiver22_neu.py │ ├── ofdm_rms_amplifier_grc.py │ ├── preambles.py │ ├── preambles_grc.py │ ├── qa_CTF_MSE_enhancer.py │ ├── qa_LMS_phase_tracking2.py │ ├── qa_accumulator_cc.py │ ├── qa_accumulator_ff.py │ ├── qa_add_vcc.py │ ├── qa_allocation_buffer.py │ ├── qa_allocation_src.py │ ├── qa_autocorrelator.py │ ├── qa_autocorrelator0.py │ ├── qa_autocorrelator_stage1.py │ ├── qa_autocorrelator_stage2.py │ ├── qa_ber_measurement.py │ ├── qa_bernoulli_bit_src.py │ ├── qa_bit_position_dependent_BER.py │ ├── qa_bit_position_dependent_ber.py │ ├── qa_cfo_estimator.py │ ├── qa_channel_equalizer.py │ ├── qa_channel_equalizer_mimo.py │ ├── qa_channel_equalizer_mimo_2.py │ ├── qa_channel_equalizer_mimo_3.py │ ├── qa_channel_estimator_01.py │ ├── qa_channel_estimator_02.py │ ├── qa_channel_model.py │ ├── qa_coded_bpsk_soft_decoder.py │ ├── qa_compat_read_ber_from_imgxfer.py │ ├── qa_complex_to_arg.py │ ├── qa_complex_white_noise.py │ ├── qa_constellation_sample_filter.py │ ├── qa_cyclic_prefixer.py │ ├── qa_demapper.py │ ├── qa_depuncture_bb.py │ ├── qa_depuncture_ff.py │ ├── qa_divide_frame_fc.py │ ├── qa_dynamic_trigger.py │ ├── qa_dynamic_trigger_ib.py │ ├── qa_extract_block_from_frame.py │ ├── qa_fbmc_asymmetrical_vector_mask_vcvc.py │ ├── qa_fbmc_asymmetrical_vector_padding_vcvc.py │ ├── qa_fbmc_asymmetrical_vector_padding_vcvc.py~ │ ├── qa_fbmc_beta_multiplier_vcvc.py │ ├── qa_fbmc_channel_hier_cc.py │ ├── qa_fbmc_insert_preamble_mu_vcvc.py │ ├── qa_fbmc_insert_preamble_vcvc.py │ ├── qa_fbmc_junction_vcvc.py │ ├── qa_fbmc_oqam_postprocessing_vcvc.py │ ├── qa_fbmc_oqam_postprocessing_vcvc.py~ │ ├── qa_fbmc_oqam_preprocessing_vcvc.py │ ├── qa_fbmc_overlapping_parallel_to_serial_vcc.py │ ├── qa_fbmc_overlapping_serial_to_parallel_cvc.py │ ├── qa_fbmc_polyphase_network_vcvc.py │ ├── qa_fbmc_receiver_demo.py │ ├── qa_fbmc_receiver_hier_cb.py │ ├── qa_fbmc_receiver_multiuser_cb.py │ ├── qa_fbmc_remove_preamble_vcvc.py │ ├── qa_fbmc_separate_vcvc.py │ ├── qa_fbmc_subchannel_processing_mu_vcvc.py │ ├── qa_fbmc_subchannel_processing_vcvc.py │ ├── qa_fbmc_symbol_creation_bvc.py │ ├── qa_fbmc_symbol_estimation_vcb.py │ ├── qa_fbmc_transmitter_demo.py │ ├── qa_fbmc_transmitter_hier_bc.py │ ├── qa_fbmc_transmitter_multiuser_bc.py │ ├── qa_fbmc_vector_copy_vcvc.py │ ├── qa_fbmc_vector_reshape_vcvc.py │ ├── qa_fbmc_weighted_despreading_vcvc.py │ ├── qa_fbmc_weighted_spreading_vcvc.py │ ├── qa_feedback_sink.py │ ├── qa_feedback_sink_vf.py │ ├── qa_find_cir_shift.py │ ├── qa_frame_mux.py │ ├── qa_freqshift.py │ ├── qa_frequency_shift_vcc.py │ ├── qa_gate_ff.py │ ├── qa_generic_demapper_vcb.py │ ├── qa_generic_mapper_bcv.py │ ├── qa_generic_mapper_mimo_bcv.py │ ├── qa_generic_softdemapper_vcf.py │ ├── qa_imgtransfer.py │ ├── qa_imgtransfer_easy.py │ ├── qa_imgtransfer_sink.py │ ├── qa_imgtransfer_src.py │ ├── qa_int_skip.py │ ├── qa_interp_cir_set_noncir_to_zero.py │ ├── qa_limit_vff.py │ ├── qa_lms_fir_ff.py │ ├── qa_lms_phase_tracking.py │ ├── qa_lms_phase_tracking_02.py │ ├── qa_lms_phase_tracking_03.py │ ├── qa_lms_phase_tracking_dc_null.py │ ├── qa_ls_estimator_straight_slope.py │ ├── qa_mean_squared_error.py │ ├── qa_midamble_insert.py │ ├── qa_mm_frequency_estimator.py │ ├── qa_modulation.py │ ├── qa_moms.py │ ├── qa_moms_cc.py │ ├── qa_moms_ff.py │ ├── qa_multiply_const_ccf.py │ ├── qa_multiply_const_ii.py │ ├── qa_multiply_const_vcc.py │ ├── qa_multiply_frame_fc.py │ ├── qa_noise_nulling.py │ ├── qa_normalize_vcc.py │ ├── qa_ofdm.py │ ├── qa_peak_detector_02_fb.py │ ├── qa_peak_resync_bb.py │ ├── qa_peakdetector.py │ ├── qa_pilot_subcarrier_filter.py │ ├── qa_pilot_subcarrier_inserter.py │ ├── qa_postprocess_CTF_estimate.py │ ├── qa_puncture_bb.py │ ├── qa_reassemble_ofdm_frame.py │ ├── qa_reference_data_source_02_ib.py │ ├── qa_reference_data_source_ib.py │ ├── qa_reference_data_source_mimo_ib.py │ ├── qa_repetition_decoder_bs.py │ ├── qa_repetition_encoder_decoder.py │ ├── qa_repetition_encoder_sb.py │ ├── qa_sampler.py │ ├── qa_scatterplot_sink.py │ ├── qa_scfdma_receiver_cb.py │ ├── qa_scfdma_subcarrier_demapper_vcvc.py │ ├── qa_scfdma_subcarrier_mapper_vcvc.py │ ├── qa_scfdma_transmitter_bc.py │ ├── qa_schmidl_cfo_estimator.py │ ├── qa_schmidl_coarse_frequency_offset_estimator.py │ ├── qa_schmidl_tm_rec_stage1.py │ ├── qa_schmidl_tm_rec_stage2.py │ ├── qa_sinr_estimator.py │ ├── qa_sinr_estimator_02.py │ ├── qa_sinr_interpolator.py │ ├── qa_skip.py │ ├── qa_snr_estimator.py │ ├── qa_snr_estimator_dc_null.py │ ├── qa_sqrt_vff.py │ ├── qa_static_mux.py │ ├── qa_static_mux_c.py │ ├── qa_static_mux_v.py │ ├── qa_stc_decoder_rx0.py │ ├── qa_stc_decoder_rx1.py │ ├── qa_stc_encoder.py │ ├── qa_stream_controlled_mux.py │ ├── qa_stream_controlled_mux_b.py │ ├── qa_subc_snr_estimator.py │ ├── qa_suppress_erasure_decision.py │ ├── qa_symbol_random_src.py │ ├── qa_template_ff.py │ ├── qa_time_sync.py │ ├── qa_trigger_surveillance.py │ ├── qa_tx_mux_ctrl.py │ ├── qa_vector_element.py │ ├── qa_vector_element_vff.py │ ├── qa_vector_mask.py │ ├── qa_vector_mask_dc_null.py │ ├── qa_vector_padding.py │ ├── qa_vector_padding_dc_null.py │ ├── qa_vector_sampler.py │ ├── qa_vector_sum.py │ ├── qa_vector_sum_vcc.py │ ├── qa_vector_sum_vff.py │ ├── qa_viterbi_combined_fb.py │ ├── receive_path.py │ ├── receive_path12.py │ ├── receive_path21.py │ ├── receive_path22_neu.py │ ├── resource_manager.py │ ├── resource_manager_base.py │ ├── resource_manager_base_lab.py │ ├── resource_manager_base_mimo.py │ ├── resource_manager_template.py │ ├── rm_ber_measurement.py │ ├── rm_calibrate.py │ ├── rm_exercise_1_1.py │ ├── rm_exercise_1_2.py │ ├── rm_exercise_2_1.py │ ├── rm_exercise_2_2.py │ ├── rm_exercise_2_3.py │ ├── rm_exercise_3_1.py │ ├── rm_exercise_3_2.py │ ├── rm_lab.py │ ├── rm_singleuser_waterfilling.py │ ├── rm_singleuser_waterfilling2.py │ ├── rm_singleuser_waterfilling3.py │ ├── rm_singleuser_waterfilling4.py │ ├── rm_singleuser_waterfilling4_mimo.py │ ├── rm_singleuser_waterfilling_sinr.py │ ├── rm_snrgap_measurement.py │ ├── rx.py │ ├── rx_mimo.py │ ├── rx_rpc_manager_grc.py │ ├── scfdma_receiver_cb.py │ ├── scfdma_transmitter_bc.py │ ├── schmidl.py │ ├── snr_estimator.py │ ├── station_configuration.py │ ├── test_channel_estimator.py │ ├── test_demapper.py │ ├── test_demapper_fbmc.py │ ├── test_demapper_fbmc_multiuser.py │ ├── transmit_path.py │ ├── transmit_path2.py │ ├── tx.py │ ├── tx_mimo.py │ ├── tx_n.py │ ├── tx_rpc_manager_grc.py │ ├── uhd_interface.py │ └── vector_equalizer.py ├── test_demapper.py ├── test_demapper_fbmc.py └── test_demapper_fbmc_multiuser.py ├── screenshot_rx_gui.png ├── swig ├── CMakeLists.txt └── ofdm_swig.i └── usrp └── images └── std_1rxhb_1txhb.rbf /.gitignore: -------------------------------------------------------------------------------- 1 | *.swp 2 | *.pyc 3 | build/ 4 | .unittests/ 5 | apps/data/ 6 | benchmark_ofdm.dot 7 | benchmark_ofdm.dot.pdf 8 | -------------------------------------------------------------------------------- /AUTHORS: -------------------------------------------------------------------------------- 1 | Milan Zivkovic 2 | Johannes Schmitz 3 | Dominik Auras 4 | Florian Budianto 5 | John Camilo Solano Arenas 6 | Jan Willem Jansen 7 | Jonas Börner 8 | Christian Rohlfing 9 | Martin Harries 10 | Benedikt Koppers 11 | -------------------------------------------------------------------------------- /apps/benchmark_mimo: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | ./run_app.sh ../python/benchmark_mimo.py $* -------------------------------------------------------------------------------- /apps/benchmark_mimo21: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | ./run_app.sh ../python/benchmark_mimo21.py $* -------------------------------------------------------------------------------- /apps/benchmark_mrrc: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | ./run_app.sh ../python/benchmark_mrrc.py $* -------------------------------------------------------------------------------- /apps/benchmark_ofdm: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | ./run_app.sh ../python/benchmark_ofdm.py $* -------------------------------------------------------------------------------- /apps/benchmarking/README: -------------------------------------------------------------------------------- 1 | 2 | gr-benchmark 3 | a performance measurement tool for GNU Radio 4 | 5 | * Requirements 6 | gr-benchmark is intended to be used with GNU Radio 3.7.2.1 or later 7 | volk_profile output must match the new-style formatting 8 | 9 | * Downloading 10 | git clone https://github.com/osh/gr-benchmark.git 11 | or 12 | ./pybombs install gr-benchmark 13 | 14 | * Running the benchmark 15 | cd gr-benchmark 16 | ./gr_profiler.py 17 | or 18 | ./gr_profiler.py -s #(to submit results to stats.gnuradio.org) 19 | 20 | # Results/Analysis 21 | Compare results at 22 | http://stats.gnuradio.org 23 | 24 | -------------------------------------------------------------------------------- /apps/benchmarking/bm_scripts/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rwth-ti/gr-ofdm/ae1861bc84c849062d959fd68eccf9b9d975ee51/apps/benchmarking/bm_scripts/__init__.py -------------------------------------------------------------------------------- /apps/benchmarking/gr_profiler.json: -------------------------------------------------------------------------------- 1 | { "tests": [ 2 | { 3 | "module": "bm_pskmod", 4 | "testname": "bm_pskmod", 5 | "nitems": 100000, 6 | "iters": 10 7 | }, 8 | 9 | {"module": "bm_pskdemod", 10 | "testname": "bm_pskdemod", 11 | "nitems": 100000, 12 | "iters": 10 13 | }, 14 | 15 | {"module": "bm_noise", 16 | "testname": "bm_noise", 17 | "nitems": 10000, 18 | "iters": 100 19 | }, 20 | 21 | { 22 | "module": "bm_fir_filters", 23 | "testname": "fir_filters_equal", 24 | "nitems": 100000, 25 | "iters": 5, 26 | "kwargs": { 27 | "mfirs": 8, 28 | "ntaps": 10000 29 | } 30 | }, 31 | 32 | { 33 | "module": "bm_fir_filters", 34 | "testname": "fir_filters_nonequal", 35 | "nitems": 100000, 36 | "iters": 5, 37 | "kwargs": { 38 | "mfirs": 8, 39 | "ntaps": 10000, 40 | "mult": 10 41 | } 42 | } 43 | ] 44 | } 45 | 46 | -------------------------------------------------------------------------------- /apps/benchmarking/run_coding.json: -------------------------------------------------------------------------------- 1 | { 2 | "directory": "bm_scripts", 3 | "tests": [ 4 | { 5 | "module": "bm_coding", 6 | "testname": "bm_coding", 7 | "nitems": 5000, 8 | "iters": 100 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /apps/benchmarking/run_decoding.json: -------------------------------------------------------------------------------- 1 | { 2 | "directory": "bm_scripts", 3 | "tests": [ 4 | { 5 | "module": "bm_decoding", 6 | "testname": "bm_decoding", 7 | "nitems": 5000, 8 | "iters": 100 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /apps/benchmarking/run_demodulator.json: -------------------------------------------------------------------------------- 1 | { 2 | "directory": "bm_scripts", 3 | "tests": [ 4 | { 5 | "module": "bm_demodulator", 6 | "testname": "bm_demodulator", 7 | "nitems": 5000, 8 | "iters": 100 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /apps/benchmarking/run_examples.json: -------------------------------------------------------------------------------- 1 | { "tests": [ 2 | { 3 | "module": "bm_pskmod", 4 | "testname": "bm_pskmod", 5 | "nitems": 100000, 6 | "iters": 10 7 | }, 8 | 9 | {"module": "bm_pskdemod", 10 | "testname": "bm_pskdemod", 11 | "nitems": 100000, 12 | "iters": 10 13 | }, 14 | 15 | {"module": "bm_noise", 16 | "testname": "bm_noise", 17 | "nitems": 10000, 18 | "iters": 100 19 | }, 20 | 21 | {"module": "bm_sig_source", 22 | "testname": "bm_sig_source", 23 | "nitems": 1000000, 24 | "iters": 100 25 | } 26 | ] 27 | } 28 | -------------------------------------------------------------------------------- /apps/benchmarking/run_filters.json: -------------------------------------------------------------------------------- 1 | { 2 | "directory": "bm_scripts", 3 | "tests": [ 4 | { 5 | "module": "bm_fir_filters", 6 | "testname": "fir_filters_equal", 7 | "nitems": 100000, 8 | "iters": 50, 9 | "kwargs": { 10 | "mfirs": 8, 11 | "ntaps": 10000 12 | } 13 | }, 14 | { 15 | "module": "bm_fir_filters", 16 | "testname": "fir_filters_nonequal", 17 | "nitems": 100000, 18 | "iters": 50, 19 | "kwargs": { 20 | "mfirs": 8, 21 | "ntaps": 10000, 22 | "mult": 10 23 | } 24 | } 25 | ] 26 | } -------------------------------------------------------------------------------- /apps/benchmarking/run_modulator.json: -------------------------------------------------------------------------------- 1 | { 2 | "directory": "bm_scripts", 3 | "tests": [ 4 | { 5 | "module": "bm_modulator", 6 | "testname": "bm_modulator", 7 | "nitems": 5000, 8 | "iters": 100 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /apps/benchmarking/run_psk.json: -------------------------------------------------------------------------------- 1 | { 2 | "directory": "bm_scripts", 3 | "tests": [ 4 | { 5 | "module": "bm_pskmod", 6 | "testname": "bm_pskmod", 7 | "nitems": 100000, 8 | "iters": 100 9 | }, 10 | {"module": "bm_pskdemod", 11 | "testname": "bm_pskdemod", 12 | "nitems": 100000, 13 | "iters": 100 14 | } 15 | ] 16 | } -------------------------------------------------------------------------------- /apps/benchmarking/run_receiver.json: -------------------------------------------------------------------------------- 1 | { 2 | "directory": "bm_scripts", 3 | "tests": [ 4 | { 5 | "module": "bm_receiver_usrp", 6 | "testname": "bm_receiver_usrp", 7 | "nitems": 25000, 8 | "iters": 1, 9 | "kwargs": { 10 | "data_blocks": 10 11 | } 12 | } 13 | 14 | ] 15 | } -------------------------------------------------------------------------------- /apps/benchmarking/run_receiver_fbmc.json: -------------------------------------------------------------------------------- 1 | { 2 | "directory": "bm_scripts", 3 | "tests": [ 4 | { 5 | "module": "bm_receiver_fbmc", 6 | "testname": "bm_receiver_fbmc", 7 | "nitems": 25000, 8 | "iters": 1, 9 | "kwargs": { 10 | "data_blocks": 10 11 | } 12 | } 13 | 14 | ] 15 | } -------------------------------------------------------------------------------- /apps/benchmarking/run_transmitter.json: -------------------------------------------------------------------------------- 1 | { 2 | "directory": "bm_scripts", 3 | "tests": [ 4 | { 5 | "module": "bm_transmitter_usrp", 6 | "testname": "bm_transmitter_usrp", 7 | "nitems": 208000000, 8 | "iters": 1, 9 | "kwargs": { 10 | "data_blocks": 10 11 | } 12 | } 13 | 14 | ] 15 | } -------------------------------------------------------------------------------- /apps/benchmarking/run_transmitter_fbmc.json: -------------------------------------------------------------------------------- 1 | { 2 | "directory": "bm_scripts", 3 | "tests": [ 4 | { 5 | "module": "bm_transmitter_fbmc", 6 | "testname": "bm_transmitter_fbmc", 7 | "nitems": 208000000, 8 | "iters": 1, 9 | "kwargs": { 10 | "data_blocks": 10 11 | } 12 | } 13 | 14 | ] 15 | } -------------------------------------------------------------------------------- /apps/cfg/benchmark_standard.conf: -------------------------------------------------------------------------------- 1 | bandwidth = 2M 2 | fft_length = 256 3 | subcarriers = 200 4 | snr = 10 5 | -------------------------------------------------------------------------------- /apps/cfg/rx1M.conf: -------------------------------------------------------------------------------- 1 | bandwidth = 1M 2 | subcarriers = 200 3 | fft_length = 312 4 | rx_gain = 30 5 | rx_freq = 2.45G 6 | disable_ctf_enhancer = True 7 | -------------------------------------------------------------------------------- /apps/cfg/rx2M.conf: -------------------------------------------------------------------------------- 1 | bandwidth = 2M 2 | nameservice_ip = tabur 3 | subcarriers = 200 4 | station_id = 1 5 | fft_length = 312 6 | rx_gain = 30 7 | rx_freq = 2.45G 8 | event_rxbaseband = False 9 | disable_ctf_enhancer = True 10 | -------------------------------------------------------------------------------- /apps/cfg/rx2M_imgxfer.conf: -------------------------------------------------------------------------------- 1 | bandwidth = 2M 2 | filter_timingmetric = True 3 | nameservice_ip = tabur 4 | subcarriers = 200 5 | station_id = 1 6 | fft_length = 256 7 | rx_gain = 30 8 | rx_freq = 2.44998G 9 | imgxfer = True 10 | img = ratatouille.bmp 11 | -------------------------------------------------------------------------------- /apps/cfg/tx1M.conf: -------------------------------------------------------------------------------- 1 | bandwidth = 1M 2 | #nameservice_ip = tabur 3 | subcarriers = 200 4 | #station_id = 100 5 | fft_length = 312 6 | #tx_freq = 2.45G 7 | rms_amplitude = 0.2 8 | tx_gain = 20 9 | -------------------------------------------------------------------------------- /apps/cfg/tx2M.conf: -------------------------------------------------------------------------------- 1 | bandwidth = 2M 2 | nameservice_ip = tabur 3 | subcarriers = 200 4 | station_id = 100 5 | fft_length = 312 6 | tx_freq = 2.45G 7 | rms_amplitude = 8000 8 | -------------------------------------------------------------------------------- /apps/cfg/tx2M_imgxfer.conf: -------------------------------------------------------------------------------- 1 | bandwidth = 2M 2 | nameservice_ip = tabur 3 | subcarriers = 200 4 | station_id = 100 5 | fft_length = 256 6 | tx_freq = 2.45G 7 | rms_amplitude = 8000 8 | imgxfer = True 9 | img = ratatouille.bmp 10 | -------------------------------------------------------------------------------- /apps/data/CMakeLists.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rwth-ti/gr-ofdm/ae1861bc84c849062d959fd68eccf9b9d975ee51/apps/data/CMakeLists.txt -------------------------------------------------------------------------------- /apps/environment_debug: -------------------------------------------------------------------------------- 1 | if ! grep -q "grc" $HOME/.gnuradio/config.conf ; then 2 | echo "[grc] 3 | local_blocks_path=$PWD/../grc/" >> $HOME/.gnuradio/config.conf 4 | fi 5 | export LD_LIBRARY_PATH=":$PWD/../build/lib:$LD_LIBRARY_PATH" 6 | export PYTHONPATH="$PWD/../build/swig:$PWD/../python:$PYTHONPATH" 7 | export PATH="$PWD/gui:$PWD/../python/ofdm:$PATH" 8 | -------------------------------------------------------------------------------- /apps/environment_lab: -------------------------------------------------------------------------------- 1 | #Gnuradio 2 | export GNURADIO_DIR=/opt/gnuradio-3.7.7/ 3 | export UHD_DIR=/opt/gnuradio-3.7.7/uhd_030901/ 4 | export GROFDM_DIR=/opt/gr-ofdm/ 5 | 6 | export PATH=$GROFDM_DIR/bin/:$UHD_DIR/bin:$GNURADIO_DIR/bin:$PATH 7 | export LD_LIBRARY_PATH=$GROFDM_DIR/lib/:$UHD_DIR/lib/:$GNURADIO_DIR/lib:$LD_LIBRARY_PATH 8 | export PYTHONPATH=$GROFDM_DIR/lib/python2.7/dist-packages/:$GNURADIO_DIR/lib/python2.7/dist-packages/:$PYTHONPATH 9 | export PKG_CONFIG_PATH=$GNURADIO_DIR/lib/pkgconfig:$PKG_CONFIG_PATH 10 | 11 | 12 | -------------------------------------------------------------------------------- /apps/environment_release: -------------------------------------------------------------------------------- 1 | export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:"$PWD/../lib" 2 | export PYTHONPATH=$PYTHONPATH:"$PWD/../lib/python2.7/dist-packages:$PWD/../lib/python2.7/dist-packages/ofdm" 3 | export PATH=$PATH:"$PWD" 4 | -------------------------------------------------------------------------------- /apps/gui/fixui4py.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | sed -i 's/qwt_plot.h/PyQt4.Qwt5.Qwt/' $1 3 | -------------------------------------------------------------------------------- /apps/run_benchmark.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | cd $(dirname $0) 4 | 5 | if [ -d "$PWD/../build" ]; then 6 | . $PWD/environment_debug 7 | else 8 | . $PWD/environment_release 9 | fi 10 | 11 | benchmark_ofdm.py --snr=10 --scatterplot --ber-window=50000 --disable-ctf-enhancer --freqoff=0 --fft-length=256 --subcarriers=200 $1 $2 $3 12 | -------------------------------------------------------------------------------- /apps/run_benchmark_fbmc.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | cd $(dirname $0) 4 | 5 | if [ -d "$PWD/../build" ]; then 6 | . $PWD/environment_debug 7 | else 8 | . $PWD/environment_release 9 | fi 10 | 11 | benchmark_fbmc.py --snr=10 --scatterplot --ber-window=100000 --disable-ctf-enhancer --freqoff=0 --fft-length=256 --subcarriers=208 --disable-freq-sync $1 $2 $3 12 | -------------------------------------------------------------------------------- /apps/run_benchmark_fbmc_gui.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | cd $(dirname $0) 4 | 5 | if [ -d "$PWD/../build" ]; then 6 | . $PWD/environment_debug 7 | else 8 | . $PWD/environment_release 9 | fi 10 | 11 | ofdm_tx_gui.py & 12 | ofdm_rx_gui.py & 13 | benchmark_fbmc.py --snr=10 --scatterplot --ber-window=50000 --disable-ctf-enhancer --freqoff=0 --fft-length=256 --subcarriers=208 --cp-length=0 $1 $2 $3 $4 $5 $6 $7 $8 $9 $10 14 | 15 | -------------------------------------------------------------------------------- /apps/run_benchmark_gui.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | cd $(dirname $0) 4 | 5 | if [ -d "$PWD/../build" ]; then 6 | . $PWD/environment_debug 7 | else 8 | . $PWD/environment_release 9 | fi 10 | 11 | ofdm_tx_gui.py & 12 | ofdm_rx_gui.py & 13 | benchmark_ofdm.py --snr=10 --scatterplot --ber-window=50000 --disable-ctf-enhancer --freqoff=0 --fft-length=256 --subcarriers=200 $1 $2 $3 $4 $5 $6 $7 $8 $9 $10 14 | 15 | -------------------------------------------------------------------------------- /apps/run_benchmark_mimo21.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | cd $(dirname $0) 4 | 5 | if [ -d "$PWD/../build" ]; then 6 | . $PWD/environment_debug 7 | else 8 | . $PWD/environment_release 9 | fi 10 | 11 | ofdm_tx_gui.py & 12 | ofdm_mimo_rx_gui.py & 13 | benchmark_mimo21.py --snr=10 --scatterplot --ber-window=50000 --disable-ctf-enhancer --freqoff=0 --fft-length=256 --subcarriers=200 $1 $2 $3 $4 $5 $6 $7 $8 $9 $10 $11 $12 14 | 15 | -------------------------------------------------------------------------------- /apps/run_benchmark_mrrc_gui.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | cd $(dirname $0) 4 | 5 | if [ -d "$PWD/../build" ]; then 6 | . $PWD/environment_debug 7 | else 8 | . $PWD/environment_release 9 | fi 10 | 11 | ofdm_tx_gui.py & 12 | ofdm_mimo_rx_gui.py & 13 | benchmark_mrrc.py --snr=10 --scatterplot --ber-window=50000 --disable-ctf-enhancer --freqoff=0 --fft-length=256 --subcarriers=200 $1 $2 $3 $4 $5 $6 $7 $8 $9 $10 $11 $12 14 | 15 | -------------------------------------------------------------------------------- /apps/run_benchmarking.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | cd $(dirname $0) 4 | 5 | if [ -d "$PWD/../build" ]; then 6 | . $PWD/environment_debug 7 | else 8 | . $PWD/environment_release 9 | fi 10 | 11 | #./benchmarking/benchmarking.py -F benchmarking/run_receiver_fbmc.json -o transmitter_fbmc.pkl $1 $2 $3 $4 $5 $6 $7 $8 $9 $10 12 | ./benchmarking/benchmarking.py -F benchmarking/run_transmitter_fbmc.json -o transmitter_fbmc.pkl $1 $2 $3 $4 $5 $6 $7 $8 $9 $10 13 | #./benchmarking/benchmarking.py -F benchmarking/run_transmitter.json -o transmitter.pkl $1 $2 $3 $4 $5 $6 $7 $8 $9 $10 14 | 15 | -------------------------------------------------------------------------------- /apps/run_grc.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | cd $(dirname $0) 4 | 5 | if [ -d "$PWD/../build" ]; then 6 | . $PWD/environment_debug 7 | # . $PWD/environment_release 8 | else 9 | . $PWD/environment_release 10 | # . $PWD/environment_debug 11 | fi 12 | 13 | gnuradio-companion 14 | -------------------------------------------------------------------------------- /apps/run_gui.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | cd $(dirname $0) 4 | 5 | if [ -d "$PWD/../build" ]; then 6 | . $PWD/environment_debug 7 | else 8 | . $PWD/environment_release 9 | fi 10 | 11 | ofdm_tx_gui.py $1 & 12 | ofdm_rx_gui.py $1 13 | 14 | -------------------------------------------------------------------------------- /apps/run_plot_benchmarking.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | cd $(dirname $0) 4 | 5 | if [ -d "$PWD/../build" ]; then 6 | . $PWD/environment_debug 7 | else 8 | . $PWD/environment_release 9 | fi 10 | 11 | ./benchmarking/plot_results_transceiver.py $1 $2 $3 $4 $5 $6 $7 $8 $9 $10 12 | 13 | -------------------------------------------------------------------------------- /apps/run_qa_fbmc_asymmetrical_vector_mask_vcvc.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | cd $(dirname $0) 4 | 5 | if [ -d "$PWD/../build" ]; then 6 | . $PWD/environment_debug 7 | else 8 | . $PWD/environment_release 9 | fi 10 | 11 | ../python/ofdm/qa_fbmc_asymmetrical_vector_mask_vcvc.py 12 | -------------------------------------------------------------------------------- /apps/run_qa_fbmc_asymmetrical_vector_padding_vcvc.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | cd $(dirname $0) 4 | 5 | if [ -d "$PWD/../build" ]; then 6 | . $PWD/environment_debug 7 | else 8 | . $PWD/environment_release 9 | fi 10 | 11 | ../python/ofdm/qa_fbmc_asymmetrical_vector_padding_vcvc.py 12 | -------------------------------------------------------------------------------- /apps/run_qa_fbmc_insert_preamble_mu_vcvc.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | cd $(dirname $0) 4 | 5 | if [ -d "$PWD/../build" ]; then 6 | . $PWD/environment_debug 7 | else 8 | . $PWD/environment_release 9 | fi 10 | 11 | ../python/ofdm/qa_fbmc_insert_preamble_mu_vcvc.py 12 | -------------------------------------------------------------------------------- /apps/run_qa_fbmc_subchannel_processing_mu_vcvc.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | cd $(dirname $0) 4 | 5 | if [ -d "$PWD/../build" ]; then 6 | . $PWD/environment_debug 7 | else 8 | . $PWD/environment_release 9 | fi 10 | 11 | ../python/ofdm/qa_fbmc_subchannel_processing_mu_vcvc.py 12 | -------------------------------------------------------------------------------- /apps/run_qa_scfdma_subcarrier_demapper_vcvc.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | cd $(dirname $0) 4 | 5 | if [ -d "$PWD/../build" ]; then 6 | . $PWD/environment_debug 7 | else 8 | . $PWD/environment_release 9 | fi 10 | 11 | ../python/ofdm/qa_scfdma_subcarrier_demapper_vcvc.py 12 | -------------------------------------------------------------------------------- /apps/run_qa_scfdma_subcarrier_mapper_vcvc.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | cd $(dirname $0) 4 | 5 | if [ -d "$PWD/../build" ]; then 6 | . $PWD/environment_debug 7 | else 8 | . $PWD/environment_release 9 | fi 10 | 11 | ../python/ofdm/qa_scfdma_subcarrier_mapper_vcvc.py 12 | -------------------------------------------------------------------------------- /apps/run_test_demapper.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | cd $(dirname $0) 4 | 5 | if [ -d "$PWD/../build" ]; then 6 | . $PWD/environment_debug 7 | else 8 | . $PWD/environment_release 9 | fi 10 | 11 | ../python/test_demapper.py 12 | -------------------------------------------------------------------------------- /apps/run_test_demapper_fbmc.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | cd $(dirname $0) 4 | 5 | if [ -d "$PWD/../build" ]; then 6 | . $PWD/environment_debug 7 | else 8 | . $PWD/environment_release 9 | fi 10 | 11 | ../python/ofdm/test_demapper_fbmc.py -------------------------------------------------------------------------------- /apps/run_test_demapper_fbmc_multiuser.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | cd $(dirname $0) 4 | 5 | if [ -d "$PWD/../build" ]; then 6 | . $PWD/environment_debug 7 | else 8 | . $PWD/environment_release 9 | fi 10 | 11 | ../python/ofdm/test_demapper_fbmc_multiuser.py -------------------------------------------------------------------------------- /apps/run_usrp_rx.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | cd $(dirname $0) 4 | 5 | if [ -d "$PWD/../build" ]; then 6 | . $PWD/environment_debug 7 | else 8 | . $PWD/environment_release 9 | fi 10 | 11 | rx.py -f 2.45G --disable-ctf-enhancer --bandwidth=1M --subcarriers=200 --fft-length=256 --scatterplot --ber-window=50000 $1 $2 $3 $4 12 | -------------------------------------------------------------------------------- /apps/run_usrp_rx_gui.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | cd $(dirname $0) 4 | 5 | if [ -d "$PWD/../build" ]; then 6 | . $PWD/environment_debug 7 | else 8 | . $PWD/environment_release 9 | fi 10 | 11 | # check for --tx-hostname argument 12 | for ARG in "$@" 13 | do 14 | if [[ $ARG = "--tx-hostname="* ]] 15 | then 16 | TXHOSTNAME=$ARG 17 | fi 18 | done 19 | echo $TXHOSTNAME 20 | 21 | ofdm_rx_gui.py $TXHOSTNAME & 22 | 23 | rx.py --disable-ctf-enhancer --bandwidth=1M --subcarriers=200 --fft-length=256 --scatterplot --ber-window=50000 --freq=2.45G --lo-offset=4M $* 24 | -------------------------------------------------------------------------------- /apps/run_usrp_rx_gui.sh~: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | cd $(dirname $0) 4 | 5 | if [ -d "$PWD/../build" ]; then 6 | . $PWD/environment_debug 7 | else 8 | . $PWD/environment_release 9 | fi 10 | 11 | ofdm_rx_gui.py & 12 | 13 | rx.py -f 2.45G --disable-ctf-enhancer --bandwidth=1M --subcarriers=200 --fft-length=256 --scatterplot --ber-window=50000 $1 $2 $3 $4 14 | -------------------------------------------------------------------------------- /apps/run_usrp_rx_mrrc_gui.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | cd $(dirname $0) 4 | 5 | if [ -d "$PWD/../build" ]; then 6 | . $PWD/environment_debug 7 | else 8 | . $PWD/environment_release 9 | fi 10 | 11 | ofdm_mimo_rx_gui.py $1 & 12 | 13 | rx.py -f 2.45G --disable-ctf-enhancer --bandwidth=1M --subcarriers=200 --fft-length=256 --scatterplot --ber-window=50000 --rx-ant=2 $1 $2 $3 $4 $5 $6 $7 $8 $9 $10 $11 $12 $13 $14 $15 $16 14 | -------------------------------------------------------------------------------- /apps/run_usrp_tx.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | cd $(dirname $0) 4 | 5 | echo "$*" 6 | 7 | if [ -d "$PWD/../build" ]; then 8 | . $PWD/environment_debug 9 | else 10 | . $PWD/environment_release 11 | fi 12 | 13 | tx.py -f 2.45G --bandwidth=1M --fft-length=256 --subcarriers=200 $* 14 | 15 | -------------------------------------------------------------------------------- /apps/run_usrp_tx_gui.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | cd $(dirname $0) 4 | 5 | if [ -d "$PWD/../build" ]; then 6 | . $PWD/environment_debug 7 | else 8 | . $PWD/environment_release 9 | fi 10 | 11 | ofdm_tx_gui.py & 12 | 13 | tx.py --freq=2.45G --bandwidth=1M --fft-length=256 --subcarriers=200 --lo-offset=4M $* 14 | 15 | -------------------------------------------------------------------------------- /cmake/Modules/FindCppUnit.cmake: -------------------------------------------------------------------------------- 1 | # http://www.cmake.org/pipermail/cmake/2006-October/011446.html 2 | # Modified to use pkg config and use standard var names 3 | 4 | # 5 | # Find the CppUnit includes and library 6 | # 7 | # This module defines 8 | # CPPUNIT_INCLUDE_DIR, where to find tiff.h, etc. 9 | # CPPUNIT_LIBRARIES, the libraries to link against to use CppUnit. 10 | # CPPUNIT_FOUND, If false, do not try to use CppUnit. 11 | 12 | INCLUDE(FindPkgConfig) 13 | PKG_CHECK_MODULES(PC_CPPUNIT "cppunit") 14 | 15 | FIND_PATH(CPPUNIT_INCLUDE_DIRS 16 | NAMES cppunit/TestCase.h 17 | HINTS ${PC_CPPUNIT_INCLUDE_DIR} 18 | PATHS 19 | /usr/local/include 20 | /usr/include 21 | ) 22 | 23 | FIND_LIBRARY(CPPUNIT_LIBRARIES 24 | NAMES cppunit 25 | HINTS ${PC_CPPUNIT_LIBDIR} 26 | PATHS 27 | ${CPPUNIT_INCLUDE_DIRS}/../lib 28 | /usr/local/lib 29 | /usr/lib 30 | ) 31 | 32 | LIST(APPEND CPPUNIT_LIBRARIES ${CMAKE_DL_LIBS}) 33 | 34 | INCLUDE(FindPackageHandleStandardArgs) 35 | FIND_PACKAGE_HANDLE_STANDARD_ARGS(CPPUNIT DEFAULT_MSG CPPUNIT_LIBRARIES CPPUNIT_INCLUDE_DIRS) 36 | MARK_AS_ADVANCED(CPPUNIT_LIBRARIES CPPUNIT_INCLUDE_DIRS) 37 | -------------------------------------------------------------------------------- /cmake/Modules/FindGnuradioCore.cmake: -------------------------------------------------------------------------------- 1 | INCLUDE(FindPkgConfig) 2 | PKG_CHECK_MODULES(PC_GNURADIO_RUNTIME gnuradio-runtime) 3 | 4 | FIND_PATH( 5 | GNURADIO_RUNTIME_INCLUDE_DIRS 6 | NAMES gr_random.h 7 | HINTS $ENV{GNURADIO_RUNTIME_DIR}/include/gnuradio 8 | ${PC_GNURADIO_RUNTIME_INCLUDEDIR} 9 | PATHS /usr/local/include/gnuradio 10 | /usr/include/gnuradio 11 | ) 12 | 13 | FIND_LIBRARY( 14 | GNURADIO_RUNTIME_LIBRARIES 15 | NAMES gnuradio-runtime 16 | HINTS $ENV{GNURADIO_RUNTIME_DIR}/lib 17 | ${PC_GNURADIO_RUNTIME_LIBDIR} 18 | PATHS /usr/local/lib 19 | /usr/local/lib64 20 | /usr/lib 21 | /usr/lib64 22 | ) 23 | 24 | INCLUDE(FindPackageHandleStandardArgs) 25 | FIND_PACKAGE_HANDLE_STANDARD_ARGS(GNURADIO_RUNTIME DEFAULT_MSG GNURADIO_RUNTIME_LIBRARIES GNURADIO_RUNTIME_INCLUDE_DIRS) 26 | MARK_AS_ADVANCED(GNURADIO_RUNTIME_LIBRARIES GNURADIO_RUNTIME_INCLUDE_DIRS) 27 | -------------------------------------------------------------------------------- /cmake/Modules/FindGnuradioFFT.cmake: -------------------------------------------------------------------------------- 1 | INCLUDE(FindPkgConfig) 2 | PKG_CHECK_MODULES(GNURADIO_FFT gnuradio-fft) 3 | 4 | INCLUDE(FindPackageHandleStandardArgs) 5 | FIND_PACKAGE_HANDLE_STANDARD_ARGS(GNURADIO_FFT DEFAULT_MSG GNURADIO_FFT_LIBRARIES GNURADIO_FFT_INCLUDE_DIRS) 6 | MARK_AS_ADVANCED(GNURADIO_FFT_LIBRARIES GNURADIO_FFT_INCLUDE_DIRS) 7 | 8 | INCLUDE(FindPkgConfig) 9 | PKG_CHECK_MODULES(GNURADIO_BLOCKS gnuradio-blocks) 10 | 11 | INCLUDE(FindPackageHandleStandardArgs) 12 | FIND_PACKAGE_HANDLE_STANDARD_ARGS(GNURADIO_BLOCKS DEFAULT_MSG GNURADIO_BLOCKS_LIBRARIES GNURADIO_BLOCKS_INCLUDE_DIRS) 13 | MARK_AS_ADVANCED(GNURADIO_BLOCKS_LIBRARIES GNURADIO_BLOCKS_INCLUDE_DIRS) 14 | -------------------------------------------------------------------------------- /cmake/Modules/FindGnuradioRuntime.cmake: -------------------------------------------------------------------------------- 1 | INCLUDE(FindPkgConfig) 2 | PKG_CHECK_MODULES(GNURADIO_RUNTIME gnuradio-runtime) 3 | 4 | INCLUDE(FindPackageHandleStandardArgs) 5 | FIND_PACKAGE_HANDLE_STANDARD_ARGS(GNURADIO_RUNTIME DEFAULT_MSG GNURADIO_RUNTIME_LIBRARIES GNURADIO_RUNTIME_INCLUDE_DIRS) 6 | MARK_AS_ADVANCED(GNURADIO_RUNTIME_LIBRARIES GNURADIO_RUNTIME_INCLUDE_DIRS) 7 | -------------------------------------------------------------------------------- /cmake/Modules/FindGruel.cmake: -------------------------------------------------------------------------------- 1 | INCLUDE(FindPkgConfig) 2 | PKG_CHECK_MODULES(PC_GRUEL gruel) 3 | 4 | FIND_PATH( 5 | GRUEL_INCLUDE_DIRS 6 | NAMES gruel/attributes.h 7 | HINTS $ENV{GRUEL_DIR}/include 8 | ${PC_GRUEL_INCLUDEDIR} 9 | PATHS /usr/local/include 10 | /usr/include 11 | ) 12 | 13 | FIND_LIBRARY( 14 | GRUEL_LIBRARIES 15 | NAMES gruel 16 | HINTS $ENV{GRUEL_DIR}/lib 17 | ${PC_GRUEL_LIBDIR} 18 | PATHS /usr/local/lib 19 | /usr/local/lib64 20 | /usr/lib 21 | /usr/lib64 22 | ) 23 | 24 | INCLUDE(FindPackageHandleStandardArgs) 25 | FIND_PACKAGE_HANDLE_STANDARD_ARGS(GRUEL DEFAULT_MSG GRUEL_LIBRARIES GRUEL_INCLUDE_DIRS) 26 | MARK_AS_ADVANCED(GRUEL_LIBRARIES GRUEL_INCLUDE_DIRS) 27 | -------------------------------------------------------------------------------- /cmake/Modules/FindQwt.cmake: -------------------------------------------------------------------------------- 1 | # - try to find Qwt libraries and include files 2 | # QWT_INCLUDE_DIR where to find qwt_plot.h, etc. 3 | # QWT_LIBRARIES libraries to link against 4 | # QWT_FOUND If false, do not try to use Qwt 5 | 6 | find_path (QWT_INCLUDE_DIRS 7 | NAMES qwt_plot.h 8 | PATHS 9 | /usr/local/include/qwt-qt4 10 | /usr/local/include/qwt 11 | /usr/include/qwt-qt4 12 | /usr/include/qwt 13 | /opt/local/include/qwt 14 | /opt/local/lib/qwt.framework/Headers 15 | /sw/include/qwt 16 | ) 17 | 18 | find_library (QWT_LIBRARIES 19 | NAMES qwt-qt4 qwt 20 | PATHS 21 | /usr/local/lib 22 | /usr/lib 23 | /opt/local/lib 24 | /opt/local/lib/qwt.framework 25 | /sw/lib 26 | ) 27 | 28 | # handle the QUIETLY and REQUIRED arguments and set QWT_FOUND to TRUE if 29 | # all listed variables are TRUE 30 | include ( FindPackageHandleStandardArgs ) 31 | find_package_handle_standard_args( Qwt DEFAULT_MSG QWT_LIBRARIES QWT_INCLUDE_DIRS ) 32 | MARK_AS_ADVANCED(QWT_LIBRARIES QWT_INCLUDE_DIRS) 33 | -------------------------------------------------------------------------------- /cmake/Modules/FindZeroMQ.cmake: -------------------------------------------------------------------------------- 1 | INCLUDE(FindPkgConfig) 2 | PKG_CHECK_MODULES(PC_ZEROMQ "libzmq") 3 | 4 | FIND_PATH(ZEROMQ_INCLUDE_DIRS 5 | NAMES zmq.hpp 6 | HINTS ${PC_ZEROMQ_INCLUDE_DIR} 7 | ${CMAKE_INSTALL_PREFIX}/include 8 | PATHS 9 | /usr/local/include 10 | /usr/include 11 | ) 12 | 13 | FIND_LIBRARY(ZEROMQ_LIBRARIES 14 | NAMES zmq libzmq 15 | HINTS ${PC_ZEROMQ_LIBDIR} 16 | ${CMAKE_INSTALL_PREFIX}/lib 17 | ${CMAKE_INSTALL_PREFIX}/lib64 18 | PATHS 19 | ${ZEROMQ_INCLUDE_DIRS}/../lib 20 | /usr/local/lib 21 | /usr/lib 22 | ) 23 | 24 | INCLUDE(FindPackageHandleStandardArgs) 25 | FIND_PACKAGE_HANDLE_STANDARD_ARGS(ZEROMQ DEFAULT_MSG ZEROMQ_LIBRARIES ZEROMQ_INCLUDE_DIRS) 26 | MARK_AS_ADVANCED(ZEROMQ_LIBRARIES ZEROMQ_INCLUDE_DIRS) 27 | 28 | -------------------------------------------------------------------------------- /docs/README.ofdm: -------------------------------------------------------------------------------- 1 | This is the ofdm-write-a-block package meant as a guide to building 2 | out-of-tree packages. To use the ofdm blocks, the Python namespaces 3 | is in 'ofdm', which is imported as: 4 | 5 | import ofdm 6 | 7 | See the Doxygen documentation for details about the blocks available 8 | in this package. A quick listing of the details can be found in Python 9 | after importing by using: 10 | 11 | help(ofdm) 12 | -------------------------------------------------------------------------------- /docs/doxygen/doxyxml/generated/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | Contains generated files produced by generateDS.py. 3 | 4 | These do the real work of parsing the doxygen xml files but the 5 | resultant classes are not very friendly to navigate so the rest of the 6 | doxyxml module processes them further. 7 | """ 8 | -------------------------------------------------------------------------------- /docs/doxygen/other/group_defs.dox: -------------------------------------------------------------------------------- 1 | /*! 2 | * \defgroup block GNU Radio OFDM C++ Signal Processing Blocks 3 | * \brief All C++ blocks that can be used from the OFDM GNU Radio 4 | * module are listed here or in the subcategories below. 5 | * 6 | */ 7 | 8 | -------------------------------------------------------------------------------- /docs/doxygen/other/main_page.dox: -------------------------------------------------------------------------------- 1 | /*! \mainpage 2 | 3 | Welcome to the GNU Radio OFDM Block 4 | 5 | This is the intro page for the Doxygen manual generated for the OFDM 6 | block (docs/doxygen/other/main_page.dox). Edit it to add more detailed 7 | documentation about the new GNU Radio modules contained in this 8 | project. 9 | 10 | */ 11 | -------------------------------------------------------------------------------- /grc/ofdm_CTF_MSE_enhancer.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | CTF_MSE_enhancer 4 | ofdm_CTF_MSE_enhancer 5 | ofdm 6 | import ofdm 7 | ofdm.CTF_MSE_enhancer($vlen, $cir_len) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_accumulator_cc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | accumulator_cc 4 | ofdm_accumulator_cc 5 | ofdm 6 | import ofdm 7 | ofdm.accumulator_cc($) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_accumulator_ff.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | OFDM Accumulator Float 4 | ofdm_accumulator_ff 5 | ofdm 6 | import ofdm 7 | ofdm.accumulator_ff() 8 | 13 | 14 | 19 | 20 | in 21 | float 22 | 23 | 24 | 29 | 30 | out 31 | float 32 | 33 | 34 | -------------------------------------------------------------------------------- /grc/ofdm_add_vcc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | add_vcc 4 | ofdm_add_vcc 5 | ofdm 6 | import ofdm 7 | ofdm.add_vcc($vlen) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_autocorrelator.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | OFDM Autocorrelator 4 | ofdm_autocorrelator 5 | ofdm 6 | from ofdm.autocorrelator import autocorrelator 7 | autocorrelator($lag, $n_samples) 8 | 13 | 14 | Lag 15 | lag 16 | int 17 | 18 | 19 | Number of Samples 20 | n_samples 21 | int 22 | 23 | 24 | 29 | 30 | in 31 | complex 32 | 33 | 34 | 39 | 40 | out 41 | float 42 | 43 | 44 | -------------------------------------------------------------------------------- /grc/ofdm_autocorrelator0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | autocorrelator0 4 | ofdm_autocorrelator0 5 | ofdm 6 | import ofdm 7 | ofdm.autocorrelator0($lag, $n_samples) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_autocorrelator_stage1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | autocorrelator_stage1 4 | ofdm_autocorrelator_stage1 5 | ofdm 6 | import ofdm 7 | ofdm.autocorrelator_stage1($lag) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_autocorrelator_stage2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | autocorrelator_stage2 4 | ofdm_autocorrelator_stage2 5 | ofdm 6 | import ofdm 7 | ofdm.autocorrelator_stage2($n_samples) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_ber_measurement.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | BER Measurement 4 | ofdm_ber_measurement 5 | ofdm 6 | import ofdm 7 | ofdm.ber_measurement($sliding_window_length) 8 | 13 | 14 | Sliding Window Length 15 | sliding_window_length 16 | int 17 | 18 | 19 | 24 | 25 | in 26 | byte 27 | 2 28 | 29 | 30 | 35 | 36 | out 37 | float 38 | 39 | 40 | -------------------------------------------------------------------------------- /grc/ofdm_ber_reference_source.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | OFDM BER Reference Source 9 | ofdm_ber_reference_source 10 | ofdm 11 | import ofdm 12 | ofdm.ber_reference_source_grc($subcarriers, $data_blocks) 13 | 14 | Subcarriers 15 | subcarriers 16 | 1 17 | int 18 | 19 | 20 | Data Blocks 21 | data_blocks 22 | 1 23 | int 24 | 25 | 26 | in 27 | short 28 | 29 | 30 | in 31 | int 32 | 33 | 34 | out 35 | byte 36 | 37 | OFDM BER Reference Source 38 | Wrapper Block 39 | 40 | -------------------------------------------------------------------------------- /grc/ofdm_bernoulli_bit_src.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | bernoulli_bit_src 4 | ofdm_bernoulli_bit_src 5 | ofdm 6 | import ofdm 7 | ofdm.bernoulli_bit_src($p) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_bit_position_dependent_ber.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Bit Position Dependent BER 4 | ofdm_bit_position_dependent_ber 5 | ofdm 6 | import ofdm 7 | ofdm.bit_position_dependent_ber($filename_prefix) 8 | 13 | 14 | Filename Prefix 15 | filename_prefix 16 | string 17 | 18 | 19 | 24 | 25 | data 26 | char 27 | 28 | 29 | ref 30 | char 31 | 32 | 33 | bitcount 34 | int 35 | 36 | 37 | 42 | 43 | -------------------------------------------------------------------------------- /grc/ofdm_calc_metric.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | calc_metric 4 | ofdm_calc_metric 5 | ofdm 6 | import ofdm 7 | ofdm.calc_metric($0) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_channel_equalizer_mimo.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | channel_equalizer_mimo 4 | ofdm_channel_equalizer_mimo 5 | ofdm 6 | import ofdm 7 | ofdm.channel_equalizer_mimo($vlen) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_channel_equalizer_mimo_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | channel_equalizer_mimo_2 4 | ofdm_channel_equalizer_mimo_2 5 | ofdm 6 | import ofdm 7 | ofdm.channel_equalizer_mimo_2($vlen) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_channel_equalizer_mimo_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | channel_equalizer_mimo_3 4 | ofdm_channel_equalizer_mimo_3 5 | ofdm 6 | import ofdm 7 | ofdm.channel_equalizer_mimo_3($vlen) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_channel_estimator_01.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | channel_estimator_01 4 | ofdm_channel_estimator_01 5 | ofdm 6 | import ofdm 7 | ofdm.channel_estimator_01($vlen) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_channel_estimator_02.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | channel_estimator_02 4 | ofdm_channel_estimator_02 5 | ofdm 6 | import ofdm 7 | ofdm.channel_estimator_02($vlen, $&pilot_tones, $&nondata_block) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_compat_read_ber_from_imgxfer.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | compat_read_ber_from_imgxfer 4 | ofdm_compat_read_ber_from_imgxfer 5 | ofdm 6 | import ofdm 7 | ofdm.compat_read_ber_from_imgxfer($xfersink) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_complex_to_arg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | complex_to_arg 4 | ofdm_complex_to_arg 5 | ofdm 6 | import ofdm 7 | ofdm.complex_to_arg($vlen) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_complex_white_noise.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | complex_white_noise 4 | ofdm_complex_white_noise 5 | ofdm 6 | import ofdm 7 | ofdm.complex_white_noise($mean, $sigma) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_constellation_sample_filter.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | constellation_sample_filter 4 | ofdm_constellation_sample_filter 5 | ofdm 6 | import ofdm 7 | ofdm.constellation_sample_filter($arity, $vlen) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_cyclic_prefixer.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Cyclic Prefixer 4 | ofdm_cyclic_prefixer 5 | ofdm 6 | import ofdm 7 | ofdm.cyclic_prefixer($input_size, $output_size) 8 | 13 | 14 | Input Size 15 | input_size 16 | raw 17 | 18 | 19 | Output Size 20 | output_size 21 | raw 22 | 23 | 24 | 29 | 30 | in 31 | complex 32 | $input_size 33 | 34 | 35 | 40 | 41 | out 42 | complex 43 | 1 44 | 45 | 46 | -------------------------------------------------------------------------------- /grc/ofdm_depuncture_bb.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | depuncture_bb 4 | ofdm_depuncture_bb 5 | ofdm 6 | import ofdm 7 | ofdm.depuncture_bb($vlen, $fillval) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_dummy_ff.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | dummy_ff 4 | ofdm_dummy_ff 5 | ofdm 6 | import ofdm 7 | ofdm.dummy_ff($) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_dynamic_trigger_ib.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Dynamic Trigger 4 | ofdm_dynamic_trigger_ib 5 | ofdm 6 | import ofdm 7 | ofdm.dynamic_trigger_ib($first_or_last) 8 | 13 | 14 | First Or Last 15 | first_or_last 16 | enum 17 | 21 | 25 | 26 | 27 | 32 | 33 | in 34 | int 35 | 36 | 37 | 42 | 43 | out 44 | byte 45 | 46 | 47 | -------------------------------------------------------------------------------- /grc/ofdm_encoder_bb.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | encoder_bb 4 | ofdm_encoder_bb 5 | ofdm 6 | import ofdm 7 | ofdm.encoder_bb($&FSM, $ST) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_extract_block_from_frame.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | extract_block_from_frame 4 | ofdm_extract_block_from_frame 5 | ofdm 6 | import ofdm 7 | ofdm.extract_block_from_frame($vlen, $block_no) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_fbmc_asymmetrical_vector_mask_vcvc.xml: -------------------------------------------------------------------------------- 1 | 2 | Assym. Vector Mask 3 | ofdm_fbmc_asymmetrical_vector_mask_vcvc 4 | FBMC 5 | import ofdm 6 | ofdm.fbmc_asymmetrical_vector_mask_vcvc($M, $start, $end) 7 | 8 | M 9 | M 10 | M 11 | int 12 | 13 | 14 | Start 15 | start 16 | int 17 | 18 | 19 | End 20 | end 21 | int 22 | 23 | 24 | in 25 | complex 26 | $M 27 | 28 | 29 | out 30 | complex 31 | ($end-$start+1) 32 | 33 | 34 | -------------------------------------------------------------------------------- /grc/ofdm_fbmc_asymmetrical_vector_padding_vcvc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | fbmc_asymmetrical_vector_padding_vcvc 4 | ofdm_fbmc_asymmetrical_vector_padding_vcvc 5 | ofdm 6 | import ofdm 7 | ofdm.fbmc_asymmetrical_vector_padding_vcvc($start, $end, $vlen, $padding_left) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_fbmc_beta_multiplier_vcvc.xml: -------------------------------------------------------------------------------- 1 | 2 | Beta Multiplier 3 | ofdm_fbmc_beta_multiplier_vcvc 4 | FBMC 5 | import ofdm 6 | ofdm.fbmc_beta_multiplier_vcvc($M, $K, $lp, $offset) 7 | 8 | M 9 | M 10 | M 11 | raw 12 | 13 | 14 | K 15 | K 16 | K 17 | raw 18 | 19 | 20 | Filter Length 21 | lp 22 | K*M-1 23 | raw 24 | 25 | 26 | Offset 27 | offset 28 | 0 29 | raw 30 | 31 | 32 | in 33 | complex 34 | $M 35 | 36 | 37 | out 38 | complex 39 | $M 40 | 41 | 42 | -------------------------------------------------------------------------------- /grc/ofdm_fbmc_junction_vcvc.xml: -------------------------------------------------------------------------------- 1 | 2 | Junction 3 | ofdm_fbmc_junction_vcvc 4 | FBMC 5 | import ofdm 6 | ofdm.fbmc_junction_vcvc($M, $num_input) 7 | 8 | M 9 | M 10 | M 11 | raw 12 | 13 | 14 | Num_input 15 | num_input 16 | 2 17 | raw 18 | 19 | 20 | in 21 | complex 22 | $M 23 | 2 24 | 25 | 26 | out 27 | complex 28 | $M 29 | 30 | 31 | -------------------------------------------------------------------------------- /grc/ofdm_fbmc_oqam_postprocessing_vcvc.xml: -------------------------------------------------------------------------------- 1 | 2 | OQAM postprocessing 3 | ofdm_fbmc_oqam_postprocessing_vcvc 4 | FBMC 5 | import ofdm 6 | ofdm.fbmc_oqam_postprocessing_vcvc($M, $offset, $theta_sel) 7 | 8 | M 9 | M 10 | M 11 | raw 12 | 13 | 14 | Offset 15 | offset 16 | 0 17 | int 18 | 19 | 20 | Theta selection 21 | theta_sel 22 | 0 23 | int 24 | 25 | 26 | in 27 | complex 28 | $M 29 | 30 | 31 | out 32 | complex 33 | $M 34 | 35 | 36 | -------------------------------------------------------------------------------- /grc/ofdm_fbmc_oqam_preprocessing_vcvc.xml: -------------------------------------------------------------------------------- 1 | 2 | OQAM Preprocessing 3 | ofdm_fbmc_oqam_preprocessing_vcvc 4 | FBMC 5 | import ofdm 6 | ofdm.fbmc_oqam_preprocessing_vcvc($M, $offset, $theta_sel) 7 | 8 | M 9 | M 10 | M 11 | raw 12 | 13 | 14 | Offset 15 | offset 16 | 0 17 | int 18 | 19 | 20 | Theta selection 21 | theta_sel 22 | 0 23 | int 24 | 25 | 26 | in 27 | complex 28 | $M 29 | 30 | 31 | out 32 | complex 33 | $M 34 | 35 | 36 | -------------------------------------------------------------------------------- /grc/ofdm_fbmc_overlapping_parallel_to_serial_vcc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Overlapping P/S 4 | ofdm_fbmc_overlapping_parallel_to_serial_vcc 5 | FBMC 6 | import ofdm 7 | ofdm.fbmc_overlapping_parallel_to_serial_vcc($M) 8 | 13 | 14 | M 15 | M 16 | M 17 | int 18 | 19 | 20 | 25 | 26 | in 27 | complex 28 | $M 29 | 2 30 | 31 | 32 | 37 | 38 | out 39 | complex 40 | 1 41 | 42 | 43 | -------------------------------------------------------------------------------- /grc/ofdm_fbmc_overlapping_serial_to_parallel_cvc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Overlapping S/P 4 | ofdm_fbmc_overlapping_serial_to_parallel_cvc 5 | FBMC 6 | import ofdm 7 | ofdm.fbmc_overlapping_serial_to_parallel_cvc($M) 8 | 13 | 14 | M 15 | M 16 | M 17 | raw 18 | 19 | 20 | 25 | 26 | in 27 | complex 28 | 1 29 | 30 | 31 | 36 | 37 | out 38 | complex 39 | $M 40 | 41 | 42 | -------------------------------------------------------------------------------- /grc/ofdm_fbmc_postprocess_CTF_estimate.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | FBMC Postprocess CTF Estimate 4 | ofdm_fbmc_postprocess_CTF_estimate 5 | FBMC 6 | import ofdm 7 | ofdm.fbmc_postprocess_CTF_estimate($vlen) 8 | 13 | 14 | Length 15 | vlen 16 | int 17 | 18 | 19 | 24 | 25 | in 26 | complex 27 | $vlen 28 | 29 | 30 | 35 | 36 | out 37 | float 38 | $vlen 39 | 40 | 41 | -------------------------------------------------------------------------------- /grc/ofdm_fbmc_rms_amplifier.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | FBMC RMS Amplifier 9 | fbmc_rms_amplifier 10 | FBMC 11 | from ofdm.fbmc_rms_amplifier_grc import fbmc_rms_amplifier 12 | fbmc_rms_amplifier($amplitude, $subcarriers) 13 | set_rms_amplitude($amplitude) 14 | 15 | Amplitude 16 | amplitude 17 | 1 18 | float 19 | 20 | 21 | Subcarriers 22 | subcarriers 23 | 1 24 | int 25 | 26 | 27 | in 28 | complex 29 | 30 | 31 | out 32 | complex 33 | 34 | FBMC RMS Amplifier 35 | Wrapper Block 36 | 37 | -------------------------------------------------------------------------------- /grc/ofdm_fbmc_separate_vcvc.xml: -------------------------------------------------------------------------------- 1 | 2 | Separate 3 | ofdm_fbmc_separate_vcvc 4 | FBMC 5 | import ofdm 6 | ofdm.fbmc_separate_vcvc($M, $num_output) 7 | 8 | M 9 | M 10 | M 11 | raw 12 | 13 | 14 | Num_output 15 | num_output 16 | 2 17 | raw 18 | 19 | 20 | in 21 | complex 22 | $M 23 | 24 | 25 | out 26 | complex 27 | $M 28 | 2 29 | 30 | 31 | -------------------------------------------------------------------------------- /grc/ofdm_fbmc_symbol_creation_bvc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Symbol Creation 4 | ofdm_fbmc_symbol_creation_bvc 5 | FBMC 6 | import ofdm 7 | ofdm.fbmc_symbol_creation_bvc($M, $qam_size) 8 | 13 | 14 | M 15 | M 16 | M 17 | int 18 | 19 | 20 | qam_size 21 | qam_size 22 | qam_size 23 | int 24 | 25 | 26 | 31 | 32 | in 33 | byte 34 | 35 | 36 | 41 | 42 | out 43 | complex 44 | $M 45 | 46 | 47 | -------------------------------------------------------------------------------- /grc/ofdm_fbmc_vector_copy_vcvc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Vector Copy 4 | ofdm_fbmc_vector_copy_vcvc 5 | FBMC 6 | import ofdm 7 | ofdm.fbmc_vector_copy_vcvc($M, $interpolation) 8 | 13 | 14 | M 15 | M 16 | M 17 | raw 18 | 19 | 20 | Interpolation 21 | interpolation 22 | 2 23 | raw 24 | 25 | 26 | in 27 | complex 28 | $M 29 | 30 | 31 | out 32 | complex 33 | $M 34 | 35 | 36 | -------------------------------------------------------------------------------- /grc/ofdm_fbmc_vector_reshape_vcvc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Vector Reshape 4 | ofdm_fbmc_vector_reshape_vcvc 5 | FBMC 6 | import ofdm 7 | ofdm.fbmc_vector_reshape_vcvc($len_in, $len_out) 8 | 13 | 14 | Input Length 15 | len_in 16 | raw 17 | 18 | 19 | Output Length 20 | len_out 21 | raw 22 | 23 | 24 | 29 | 30 | in 31 | complex 32 | $len_in 33 | 34 | 35 | 40 | 41 | out 42 | complex 43 | $len_out 44 | 45 | 46 | -------------------------------------------------------------------------------- /grc/ofdm_fbmc_weighted_despreading_vcvc.xml: -------------------------------------------------------------------------------- 1 | 2 | Weighted Despreading 3 | ofdm_fbmc_weighted_despreading_vcvc 4 | FBMC 5 | import ofdm 6 | ofdm.fbmc_weighted_despreading_vcvc($M, $K) 7 | 8 | M 9 | M 10 | M 11 | raw 12 | 13 | 14 | K 15 | K 16 | K 17 | raw 18 | 19 | 20 | in(KM) 21 | complex 22 | $K*M 23 | 24 | 25 | out(M) 26 | complex 27 | $M 28 | 29 | 30 | -------------------------------------------------------------------------------- /grc/ofdm_fbmc_weighted_spreading_vcvc.xml: -------------------------------------------------------------------------------- 1 | 2 | Weighted Spreading 3 | ofdm_fbmc_weighted_spreading_vcvc 4 | FBMC 5 | import ofdm 6 | ofdm.fbmc_weighted_spreading_vcvc($M, $K) 7 | 8 | M 9 | M 10 | M 11 | raw 12 | 13 | 14 | K 15 | K 16 | K 17 | raw 18 | 19 | 20 | in(M) 21 | complex 22 | $M 23 | 24 | 25 | out(KM) 26 | complex 27 | $K*M 28 | 29 | 30 | -------------------------------------------------------------------------------- /grc/ofdm_feedback_sink_vf.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | feedback_sink_vf 4 | ofdm_feedback_sink_vf 5 | ofdm 6 | import ofdm 7 | ofdm.feedback_sink_vf($subc, $*address) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_find_cir_shift.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | find_cir_shift 4 | ofdm_find_cir_shift 5 | ofdm 6 | import ofdm 7 | ofdm.find_cir_shift($vlen, $cir_len) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_frame_mux.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Frame Multiplexer 4 | ofdm_frame_mux 5 | ofdm 6 | import ofdm 7 | ofdm.frame_mux($vlen, $frame_len) 8 | 13 | 14 | Length 15 | vlen 16 | int 17 | 18 | 19 | Frame Length 20 | frame_len 21 | int 22 | 23 | 24 | 29 | 30 | in 31 | complex 32 | $vlen 33 | 34 | 35 | 40 | 41 | out 42 | complex 43 | $vlen 44 | 45 | 46 | -------------------------------------------------------------------------------- /grc/ofdm_frame_sampler.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | OFDM Frame Sampler 9 | ofdm_frame_sampler 10 | ofdm 11 | from ofdm.ofdm_frame_sampler_grc import ofdm_frame_sampler 12 | ofdm_frame_sampler($subcarriers, $frame_length) 13 | 14 | Total Subcarriers 15 | subcarriers 16 | 1 17 | int 18 | 19 | 20 | Frame Length 21 | frame_length 22 | 1 23 | int 24 | 25 | 26 | in 27 | complex 28 | $subcarriers 29 | 30 | 31 | in 32 | byte 33 | 1 34 | 35 | 36 | out 37 | complex 38 | $subcarriers 39 | 40 | 41 | out 42 | byte 43 | 44 | OFDM Frame Sampler 45 | Wrapper Block 46 | 47 | -------------------------------------------------------------------------------- /grc/ofdm_fsm.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | fsm 4 | ofdm_fsm 5 | ofdm 6 | import ofdm 7 | ofdm.fsm($) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_gate_ff.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | gate_ff 4 | ofdm_gate_ff 5 | ofdm 6 | import ofdm 7 | ofdm.gate_ff($) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_generic_mapper_mimo_bcv.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | generic_mapper_mimo_bcv 4 | ofdm_generic_mapper_mimo_bcv 5 | ofdm 6 | import ofdm 7 | ofdm.generic_mapper_mimo_bcv($vlen, $coding) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_imgtransfer_sink.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | imgtransfer_sink 4 | ofdm_imgtransfer_sink 5 | ofdm 6 | import ofdm 7 | ofdm.imgtransfer_sink($udppacketsize, $src_ip, $src_port, $dst_ip, $dst_port, $filename, $do_compare) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_imgtransfer_src.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | imgtransfer_src 4 | ofdm_imgtransfer_src 5 | ofdm 6 | import ofdm 7 | ofdm.imgtransfer_src($filename) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_imgtransfer_testkanal.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | imgtransfer_testkanal 4 | ofdm_imgtransfer_testkanal 5 | ofdm 6 | import ofdm 7 | ofdm.imgtransfer_testkanal($) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_int_skip.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | int_skip 4 | ofdm_int_skip 5 | ofdm 6 | import ofdm 7 | ofdm.int_skip($vlen, $skip, $start) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_interp_cir_set_noncir_to_zero.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | interp_cir_set_noncir_to_zero 4 | ofdm_interp_cir_set_noncir_to_zero 5 | ofdm 6 | import ofdm 7 | ofdm.interp_cir_set_noncir_to_zero($vlen, $window) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_itpp_tdl_channel.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | itpp_tdl_channel 4 | ofdm_itpp_tdl_channel 5 | ofdm 6 | import ofdm 7 | ofdm.itpp_tdl_channel($avg_power_db, $delay_prof, $calc_impulse_response) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_limit_vff.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | limit_vff 4 | ofdm_limit_vff 5 | ofdm 6 | import ofdm 7 | ofdm.limit_vff($vlen, $up_limit, $lo_limit) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_lms_fir_ff.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | LMS FIR 4 | ofdm_lms_fir_ff 5 | ofdm 6 | import ofdm 7 | ofdm.lms_fir_ff($len, $mu) 8 | 13 | 14 | Length 15 | len 16 | int 17 | 18 | 19 | MU Parameter 20 | mu 21 | float 22 | 23 | 24 | 29 | 30 | in 31 | float 32 | 33 | 34 | 39 | 40 | out 41 | float 42 | 43 | 44 | -------------------------------------------------------------------------------- /grc/ofdm_lms_phase_tracking.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | lms_phase_tracking 4 | ofdm_lms_phase_tracking 5 | ofdm 6 | import ofdm 7 | ofdm.lms_phase_tracking($vlen, $&pilot_tones, $&data_symbols) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_lms_phase_tracking_03.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | lms_phase_tracking_03 4 | ofdm_lms_phase_tracking_03 5 | ofdm 6 | import ofdm 7 | ofdm.lms_phase_tracking_03($vlen, $&pilot_subc, $&nondata_blocks, $&pilot_subcarriers, $dc_null) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_lms_phase_tracking_dc_null.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | lms_phase_tracking_dc_null 4 | ofdm_lms_phase_tracking_dc_null 5 | ofdm 6 | import ofdm 7 | ofdm.lms_phase_tracking_dc_null($vlen, $pilot_subc, $nondata_blocks, $pilot_subcarriers, $dc_null) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_ls_estimator_straight_slope.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | ls_estimator_straight_slope 4 | ofdm_ls_estimator_straight_slope 5 | ofdm 6 | import ofdm 7 | ofdm.ls_estimator_straight_slope($vlen) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_mean_squared_error.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | mean_squared_error 4 | ofdm_mean_squared_error 5 | ofdm 6 | import ofdm 7 | ofdm.mean_squared_error($vlen, $window, $reset, $norm_factor) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_midamble_insert.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | midamble_insert 4 | ofdm_midamble_insert 5 | ofdm 6 | import ofdm 7 | ofdm.midamble_insert($vlen, $frame_len) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_moms_cc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | moms_cc 4 | ofdm_moms_cc 5 | ofdm 6 | import ofdm 7 | ofdm.moms_cc($ip_num, $ip_denom) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_moms_ff.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | moms_ff 4 | ofdm_moms_ff 5 | ofdm 6 | import ofdm 7 | ofdm.moms_ff($) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | float 27 | 28 | 29 | 34 | 35 | out 36 | float 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_multiply_const_ccf.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | multiply_const_ccf 4 | ofdm_multiply_const_ccf 5 | ofdm 6 | import ofdm 7 | ofdm.multiply_const_ccf($k) 8 | 13 | 14 | Constant 15 | k 16 | float 17 | 18 | 19 | 24 | 25 | in 26 | complex 27 | 28 | 29 | 34 | 35 | out 36 | complex 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_multiply_const_ii.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | multiply_const_ii 4 | ofdm_multiply_const_ii 5 | ofdm 6 | import ofdm 7 | ofdm.multiply_const_ii($k) 8 | 13 | 14 | Constant 15 | k 16 | float 17 | 18 | 19 | 24 | 25 | in 26 | int 27 | 28 | 29 | 34 | 35 | out 36 | int 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_multiply_const_vcc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Multiply Constant VCC 4 | ofdm_multiply_const_vcc 5 | ofdm 6 | import ofdm 7 | ofdm.multiply_const_vcc($k) 8 | 13 | 14 | Constant Vector 15 | k 16 | complex_vector 17 | 18 | 19 | 24 | 25 | in 26 | complex 27 | len($k) 28 | 29 | 30 | 35 | 36 | out 37 | complex 38 | len($k) 39 | 40 | 41 | -------------------------------------------------------------------------------- /grc/ofdm_noise_nulling.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | noise_nulling 4 | ofdm_noise_nulling 5 | ofdm 6 | import ofdm 7 | ofdm.noise_nulling($vlen, $keep) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_normalize_vcc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | normalize_vcc 4 | ofdm_normalize_vcc 5 | ofdm 6 | import ofdm 7 | ofdm.normalize_vcc($vlen, $norm_power) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_ofdm_rms_amplifier.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | OFDM RMS Amplifier 9 | ofdm_rms_amplifier 10 | ofdm 11 | from ofdm.ofdm_rms_amplifier_grc import ofdm_rms_amplifier 12 | ofdm_rms_amplifier($amplitude, $subcarriers) 13 | set_rms_amplitude($amplitude) 14 | 15 | Amplitude 16 | amplitude 17 | 1 18 | float 19 | 20 | 21 | Subcarriers 22 | subcarriers 23 | 1 24 | int 25 | 26 | 27 | in 28 | complex 29 | 30 | 31 | out 32 | complex 33 | 34 | OFDM RMS Amplifier 35 | Wrapper Block 36 | 37 | -------------------------------------------------------------------------------- /grc/ofdm_peak_detector_02_fb.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Peak Detector 02 4 | ofdm_peak_detector_02_fb 5 | ofdm 6 | import ofdm 7 | ofdm.peak_detector_02_fb($look_ahead, $threshold) 8 | 13 | 14 | Look Ahead 15 | look_ahead 16 | int 17 | 18 | 19 | Threshold 20 | threshold 21 | float 22 | 23 | 24 | 29 | 30 | in 31 | float 32 | 33 | 34 | 39 | 40 | out 41 | byte 42 | 43 | 44 | -------------------------------------------------------------------------------- /grc/ofdm_peak_resync_bb.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | peak_resync_bb 4 | ofdm_peak_resync_bb 5 | ofdm 6 | import ofdm 7 | ofdm.peak_resync_bb($replace) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_postprocess_CTF_estimate.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | OFDM Postprocess CTF_Estimate 4 | ofdm_postprocess_CTF_estimate 5 | ofdm 6 | import ofdm 7 | ofdm.postprocess_CTF_estimate($vlen) 8 | 13 | 14 | Length 15 | vlen 16 | int 17 | 18 | 19 | 24 | 25 | in 26 | complex 27 | $vlen 28 | 29 | 30 | 35 | 36 | out 37 | complex 38 | $vlen 39 | 40 | 41 | out 42 | float 43 | $vlen 44 | 45 | 46 | -------------------------------------------------------------------------------- /grc/ofdm_puncture_bb.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Puncture 4 | ofdm_puncture_bb 5 | ofdm 6 | import ofdm 7 | ofdm.puncture_bb($vlen) 8 | 13 | 14 | Length 15 | vlen 16 | int 17 | 18 | 19 | 24 | 25 | in 26 | byte 27 | 28 | 29 | modemap 30 | byte 31 | $vlen 32 | 33 | 34 | trig 35 | byte 36 | 37 | 38 | 43 | 44 | out 45 | byte 46 | 47 | 48 | -------------------------------------------------------------------------------- /grc/ofdm_reassemble_ofdm_frame.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | reassemble_ofdm_frame 4 | ofdm_reassemble_ofdm_frame 5 | ofdm 6 | import ofdm 7 | ofdm.reassemble_ofdm_frame($vlen, $framelength) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_recursive_timing_metric.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | Recursive Timing metric 9 | ofdm_recursive_timing_metric 10 | FBMC 11 | from ofdm.schmidl import recursive_timing_metric 12 | recursive_timing_metric($fft_length) 13 | 14 | FFT Length 15 | fft_length 16 | 1 17 | int 18 | 19 | 20 | in 21 | complex 22 | 23 | 24 | out 25 | float 26 | 27 | FBMC Recursive Timing Metric 28 | Wrapper Block 29 | 30 | -------------------------------------------------------------------------------- /grc/ofdm_reference_data_source_02_ib.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Reference Data Source 4 | ofdm_reference_data_source_02_ib 5 | ofdm 6 | import ofdm 7 | ofdm.reference_data_source_02_ib($ref_data) 8 | 13 | 14 | Reference Data 15 | ref_data 16 | char_vector 17 | 18 | 19 | 24 | 25 | in_id 26 | short 27 | 28 | 29 | in_cnt 30 | int 31 | 32 | 33 | 38 | 39 | out_bits 40 | char 41 | 42 | 43 | -------------------------------------------------------------------------------- /grc/ofdm_reference_data_source_ib.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | reference_data_source_ib 4 | ofdm_reference_data_source_ib 5 | ofdm 6 | import ofdm 7 | ofdm.reference_data_source_ib($&ref_data) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_reference_data_source_mimo_ib.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | reference_data_source_mimo_ib 4 | ofdm_reference_data_source_mimo_ib 5 | ofdm 6 | import ofdm 7 | ofdm.reference_data_source_mimo_ib($&ref_data) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_rx_rpc_manager.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | Rx RPC Manager 9 | rx_rpc_manager 10 | ofdm 11 | from ofdm.rx_rpc_manager_grc import rx_rpc_manager 12 | rx_rpc_manager() 13 | Tx RPC Manager 14 | Wrapper Block 15 | 16 | -------------------------------------------------------------------------------- /grc/ofdm_scatterplot_sink.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | scatterplot_sink 4 | ofdm_scatterplot_sink 5 | ofdm 6 | import ofdm 7 | ofdm.scatterplot_sink($vlen, $shm_id) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_scatterplot_subcarrier_filter.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Scatterplot Subcarrier Filter 4 | scatterplot_subcarrier_filter 5 | ofdm 6 | from ofdm.preambles_grc import scatterplot_subcarrier_filter 7 | scatterplot_subcarrier_filter($subcarriers, $data_blocks) 8 | 13 | 14 | Subcarriers 15 | subcarriers 16 | subcarriers 17 | int 18 | 19 | 20 | Data Blocks 21 | data_blocks 22 | data_blocks 23 | int 24 | 25 | $subcarriers > 0 26 | 27 | in 28 | complex 29 | $subcarriers 30 | 31 | 32 | in 33 | byte 34 | 35 | 36 | out 37 | complex 38 | $subcarriers 39 | 40 | Scatterplot Subcarrier Filter 41 | Wrapper Block 42 | 43 | 44 | -------------------------------------------------------------------------------- /grc/ofdm_scfdma_subcarrier_demapper_vcvc.xml: -------------------------------------------------------------------------------- 1 | 2 | Subcarrier Demapper 3 | ofdm_scfdma_subcarrier_demapper_vcvc 4 | SC-FDMA 5 | import ofdm 6 | ofdm.scfdma_subcarrier_demapper_vcvc($N, $M, $start, $mode) 7 | 8 | M 9 | M 10 | M 11 | int 12 | 13 | 14 | N 15 | N 16 | N 17 | int 18 | 19 | 20 | Start index 21 | start 22 | int 23 | 24 | 25 | Mode 26 | mode 27 | enum 28 | 32 | 36 | 37 | 38 | in 39 | complex 40 | $M 41 | 42 | 43 | out 44 | complex 45 | $N 46 | 47 | 48 | -------------------------------------------------------------------------------- /grc/ofdm_scfdma_subcarrier_mapper_vcvc.xml: -------------------------------------------------------------------------------- 1 | 2 | Subcarrier Mapper 3 | ofdm_scfdma_subcarrier_mapper_vcvc 4 | SC-FDMA 5 | import ofdm 6 | ofdm.scfdma_subcarrier_mapper_vcvc($N, $M, $start, $mode) 7 | 8 | N 9 | N 10 | N 11 | int 12 | 13 | 14 | M 15 | M 16 | M 17 | int 18 | 19 | 20 | Start index 21 | start 22 | int 23 | 24 | 25 | Mode 26 | mode 27 | enum 28 | 32 | 36 | 37 | 38 | in 39 | complex 40 | $N 41 | 42 | 43 | out 44 | complex 45 | $M 46 | 47 | 48 | -------------------------------------------------------------------------------- /grc/ofdm_schmidl_cfo_estimator.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | schmidl_cfo_estimator 4 | ofdm_schmidl_cfo_estimator 5 | ofdm 6 | import ofdm 7 | ofdm.schmidl_cfo_estimator($fft_length, $carriers, $estimation_range, $&differential_pn_seq) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_schmidl_tm_rec_stage1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | schmidl_tm_rec_stage1 4 | ofdm_schmidl_tm_rec_stage1 5 | ofdm 6 | import ofdm 7 | ofdm.schmidl_tm_rec_stage1($fft_length) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_schmidl_tm_rec_stage2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | schmidl_tm_rec_stage2 4 | ofdm_schmidl_tm_rec_stage2 5 | ofdm 6 | import ofdm 7 | ofdm.schmidl_tm_rec_stage2($window) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_sinr_estimator.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | sinr_estimator 4 | ofdm_sinr_estimator 5 | ofdm 6 | import ofdm 7 | ofdm.sinr_estimator($vlen, $skip) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_sinr_estimator_02.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | sinr_estimator_02 4 | ofdm_sinr_estimator_02 5 | ofdm 6 | import ofdm 7 | ofdm.sinr_estimator_02($vlen, $skip) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_sinr_interpolator.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | sinr_interpolator 4 | ofdm_sinr_interpolator 5 | ofdm 6 | import ofdm 7 | ofdm.sinr_interpolator($vlen, $skip, $&load_index) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_snr_estimator.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | OFDM SNR Estimator 4 | ofdm_snr_estimator 5 | ofdm 6 | import ofdm 7 | ofdm.snr_estimator($vlen, $skip) 8 | 13 | 14 | Length 15 | vlen 16 | int 17 | 18 | 19 | Skip 20 | skip 21 | int 22 | 23 | 24 | 29 | 30 | in 31 | complex 32 | $vlen 33 | 34 | 35 | 40 | 41 | out 42 | float 43 | 44 | 45 | out1 46 | float 47 | 48 | 49 | -------------------------------------------------------------------------------- /grc/ofdm_snr_estimator_dc_null.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | snr_estimator_dc_null 4 | ofdm_snr_estimator_dc_null 5 | ofdm 6 | import ofdm 7 | ofdm.snr_estimator_dc_null($vlen, $skip, $dc_null) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_snr_filter.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | OFDM SNR Filter 4 | ofdm_snr_filter 5 | ofdm 6 | from ofdm.preambles_grc import ofdm_snr_filter 7 | ofdm_snr_filter($subcarriers, $frame_length) 8 | 13 | 14 | Subcarriers 15 | subcarriers 16 | 1 17 | int 18 | 19 | 20 | Frame Length 21 | frame_length 22 | 1 23 | int 24 | 25 | $subcarriers > 0 26 | 27 | in 28 | complex 29 | $subcarriers 30 | 31 | 32 | in 33 | byte 34 | 35 | 36 | out 37 | complex 38 | $subcarriers 39 | 40 | OFDM SNR Filter 41 | Wrapper Block 42 | 43 | -------------------------------------------------------------------------------- /grc/ofdm_sqrt_vff.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | sqrt_vff 4 | ofdm_sqrt_vff 5 | ofdm 6 | import ofdm 7 | ofdm.sqrt_vff($vlen) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_static_mux_c.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | static_mux_c 4 | ofdm_static_mux_c 5 | ofdm 6 | import ofdm 7 | ofdm.static_mux_c($&mux_ctrl) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_static_mux_v.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | static_mux_v 4 | ofdm_static_mux_v 5 | ofdm 6 | import ofdm 7 | ofdm.static_mux_v($streamsize, $&mux_ctrl) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_stc_decoder_rx0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | stc_decoder_rx0 4 | ofdm_stc_decoder_rx0 5 | ofdm 6 | import ofdm 7 | ofdm.stc_decoder_rx0($vlen) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_stc_decoder_rx1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | stc_decoder_rx1 4 | ofdm_stc_decoder_rx1 5 | ofdm 6 | import ofdm 7 | ofdm.stc_decoder_rx1($vlen) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_stc_encoder.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | stc_encoder 4 | ofdm_stc_encoder 5 | ofdm 6 | import ofdm 7 | ofdm.stc_encoder($vlen, $num_symbols, $&pilot_subcarriers) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_stream_controlled_mux.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | stream_controlled_mux 4 | ofdm_stream_controlled_mux 5 | ofdm 6 | import ofdm 7 | ofdm.stream_controlled_mux($streamsize) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_stream_controlled_mux_b.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Stream Controlled Mux 4 | ofdm_stream_controlled_mux_b 5 | ofdm 6 | import ofdm 7 | ofdm.stream_controlled_mux_b() 8 | 9 | in 10 | byte 11 | 12 | 13 | in 14 | byte 15 | 16 | 17 | in 18 | byte 19 | 20 | 21 | 26 | 27 | out 28 | byte 29 | 30 | 31 | -------------------------------------------------------------------------------- /grc/ofdm_subc_snr_estimator.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | subc_snr_estimator 4 | ofdm_subc_snr_estimator 5 | ofdm 6 | import ofdm 7 | ofdm.subc_snr_estimator($vlen) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_suppress_erasure_decision.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | suppress_erasure_decision 4 | ofdm_suppress_erasure_decision 5 | ofdm 6 | import ofdm 7 | ofdm.suppress_erasure_decision($) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_symbol_random_src.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | OFDM Symbol Random Source 4 | ofdm_symbol_random_src 5 | ofdm 6 | import ofdm 7 | ofdm.symbol_random_src($symbols, $vlen) 8 | 13 | 14 | Symbols 15 | symbols 16 | complex_vector 17 | 18 | 19 | Length 20 | vlen 21 | int 22 | 23 | 24 | 29 | 30 | 35 | 36 | out 37 | complex 38 | $vlen 39 | 40 | 41 | out 42 | byte 43 | $vlen 44 | 45 | 46 | -------------------------------------------------------------------------------- /grc/ofdm_template_ff.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | template_ff 4 | ofdm_template_ff 5 | ofdm 6 | import ofdm 7 | ofdm.template_ff($) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_throughput_measure.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | throughput_measure 4 | ofdm_throughput_measure 5 | ofdm 6 | import ofdm 7 | ofdm.throughput_measure($itemsize) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_trigger_surveillance.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | trigger_surveillance 4 | ofdm_trigger_surveillance 5 | ofdm 6 | import ofdm 7 | ofdm.trigger_surveillance($ideal_distance, $max_shift) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_tx_mux_ctrl.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Tx Multiplexer Control 4 | ofdm_tx_mux_ctrl 5 | ofdm 6 | import ofdm 7 | ofdm.tx_mux_ctrl($subcarriers) 8 | 13 | 14 | Subcarriers 15 | subcarriers 16 | int 17 | 18 | 19 | 24 | 25 | in 26 | int 27 | 28 | 29 | 34 | 35 | out 36 | byte 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_vector_element.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Vector Element 4 | ofdm_vector_element 5 | ofdm 6 | import ofdm 7 | ofdm.vector_element($vlen, $element) 8 | set_element(int) 9 | 14 | 15 | Length 16 | vlen 17 | int 18 | 19 | 20 | Element 21 | element 22 | int 23 | 24 | 25 | 30 | 31 | in 32 | complex 33 | $vlen 34 | 35 | 36 | 41 | 42 | out 43 | complex 44 | 45 | 46 | -------------------------------------------------------------------------------- /grc/ofdm_vector_element_vff.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | vector_element_vff 4 | ofdm_vector_element_vff 5 | ofdm 6 | import ofdm 7 | ofdm.vector_element_vff($vlen, $element) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_vector_mask.xml: -------------------------------------------------------------------------------- 1 | 2 | Vector Mask 3 | ofdm_vector_mask 4 | FBMC 5 | import ofdm 6 | ofdm.vector_mask($vlen, $cut_left, $mask_len, $mask) 7 | 8 | Vlen 9 | vlen 10 | M 11 | raw 12 | 13 | 14 | Cut_left 15 | cut_left 16 | (M-carriers)/2 17 | raw 18 | 19 | 20 | Mask_len 21 | mask_len 22 | carriers 23 | raw 24 | 25 | 26 | Mask 27 | mask 28 | [] 29 | raw 30 | 31 | 32 | in 33 | complex 34 | $vlen 35 | 36 | 37 | out 38 | complex 39 | $mask_len 40 | 41 | 42 | -------------------------------------------------------------------------------- /grc/ofdm_vector_mask_dc_null.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | vector_mask_dc_null 4 | ofdm_vector_mask_dc_null 5 | ofdm 6 | import ofdm 7 | ofdm.vector_mask_dc_null($vlen, $cut_left, $mask_len, $dc_zeros, $mask) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_vector_padding.xml: -------------------------------------------------------------------------------- 1 | 2 | Vector Padding 3 | ofdm_vector_padding 4 | FBMC 5 | import ofdm 6 | ofdm.vector_padding($carriers, $vlen, $padding_left) 7 | 8 | Number of Carriers 9 | carriers 10 | carriers 11 | int 12 | 13 | 14 | Vlen 15 | vlen 16 | M 17 | int 18 | 19 | 20 | Padding_left 21 | padding_left 22 | -1 23 | int 24 | 25 | 26 | in 27 | complex 28 | $carriers 29 | 30 | 31 | out 32 | complex 33 | $vlen 34 | 35 | 36 | -------------------------------------------------------------------------------- /grc/ofdm_vector_padding_dc_null.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | vector_padding_dc_null 4 | ofdm_vector_padding_dc_null 5 | ofdm 6 | import ofdm 7 | ofdm.vector_padding_dc_null($carriers, $vlen, $dc_zeros, $padding_left) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_vector_sum_vcc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | vector_sum_vcc 4 | ofdm_vector_sum_vcc 5 | ofdm 6 | import ofdm 7 | ofdm.vector_sum_vcc($vlen) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /grc/ofdm_vector_sum_vff.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | vector_sum_vff 4 | ofdm_vector_sum_vff 5 | ofdm 6 | import ofdm 7 | ofdm.vector_sum_vff($vlen) 8 | 13 | 14 | ... 15 | ... 16 | ... 17 | 18 | 19 | 24 | 25 | in 26 | 27 | 28 | 29 | 34 | 35 | out 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /include/ofdm/api.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2011 Free Software Foundation, Inc. 3 | * 4 | * This file is part of GNU Radio 5 | * 6 | * GNU Radio is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 3, or (at your option) 9 | * any later version. 10 | * 11 | * GNU Radio is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with GNU Radio; see the file COPYING. If not, write to 18 | * the Free Software Foundation, Inc., 51 Franklin Street, 19 | * Boston, MA 02110-1301, USA. 20 | */ 21 | 22 | #ifndef INCLUDED_OFDM_API_H 23 | #define INCLUDED_OFDM_API_H 24 | 25 | #include 26 | 27 | #ifdef gnuradio_ofdm_EXPORTS 28 | # define OFDM_API __GR_ATTR_EXPORT 29 | #else 30 | # define OFDM_API __GR_ATTR_IMPORT 31 | #endif 32 | 33 | #endif /* INCLUDED_OFDM_API_H */ 34 | -------------------------------------------------------------------------------- /include/ofdm/ofdm_metric_type.h: -------------------------------------------------------------------------------- 1 | /* -*- c++ -*- */ 2 | /* 3 | * Copyright 2014 Institute for Theoretical Information Technology, 4 | * RWTH Aachen University 5 | * www.ti.rwth-aachen.de 6 | * 7 | * This 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 | * This software 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 this software; 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_OFDM_METRIC_TYPE_H 24 | #define INCLUDED_OFDM_METRIC_TYPE_H 25 | 26 | namespace gr { 27 | namespace ofdm { 28 | 29 | 30 | typedef enum { 31 | TRELLIS_EUCLIDEAN = 200, TRELLIS_HARD_SYMBOL, TRELLIS_HARD_BIT 32 | } ofdm_metric_type_t; 33 | 34 | 35 | } /* namespace digital */ 36 | } /* namespace ofdm */ 37 | 38 | #endif 39 | -------------------------------------------------------------------------------- /include/ofdm/util_random.h: -------------------------------------------------------------------------------- 1 | /* 2 | * util_random.h 3 | * 4 | * Created on: 24.02.2009 5 | * Author: koppers 6 | */ 7 | 8 | #ifndef UTIL_RANDOM_H_ 9 | #define UTIL_RANDOM_H_ 10 | 11 | #include 12 | #include 13 | #include 14 | 15 | class CRandom 16 | { 17 | private: 18 | unsigned int d_count; 19 | std::list d_randomlist; 20 | std::list::iterator d_iterator; 21 | public: 22 | CRandom(); 23 | void reset(); 24 | void load_from_file(std::string filename); 25 | void generate(unsigned int no_items); 26 | unsigned char rand_bit(); 27 | virtual 28 | ~CRandom(); 29 | }; 30 | 31 | #endif /* UTIL_RANDOM_H_ */ 32 | -------------------------------------------------------------------------------- /lab_exercise/home/.config/gtk-3.0/gtk.css: -------------------------------------------------------------------------------- 1 | 2 | /************ 3 | .nemo-desktop.nemo-canvas-item { 4 | color: #FFFFFF; 5 | text-shadow: 1px 1px @desktop_item_text_shadow; 6 | } 7 | .nemo-desktop.nemo-canvas-item:selected { 8 | background-color: alpha(#D64A38, 0.9); 9 | background-image: none; 10 | color: #FFFFFF; 11 | text-shadow: none; 12 | } 13 | gnu gray= #71706E 14 | radio orange= #FE6905 15 | *******/ 16 | 17 | .nemo-desktop.nemo-canvas-item { 18 | color: #FE6905; 19 | /* 20 | * text-shadow: 2px 2px alpha(#000, 0.2); 21 | */ 22 | } 23 | 24 | .nemo-desktop.nemo-canvas-item:selected { 25 | background-color: alpha(@theme_selected_bg_color, 0.8); 26 | background-image: none; 27 | color: @theme_selected_fg_color; 28 | text-shadow: none; 29 | } 30 | -------------------------------------------------------------------------------- /lab_exercise/home/.icons/matlab-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rwth-ti/gr-ofdm/ae1861bc84c849062d959fd68eccf9b9d975ee51/lab_exercise/home/.icons/matlab-icon.png -------------------------------------------------------------------------------- /lab_exercise/home/.icons/ti-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rwth-ti/gr-ofdm/ae1861bc84c849062d959fd68eccf9b9d975ee51/lab_exercise/home/.icons/ti-icon.png -------------------------------------------------------------------------------- /lab_exercise/home/.ti_wallpaper.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rwth-ti/gr-ofdm/ae1861bc84c849062d959fd68eccf9b9d975ee51/lab_exercise/home/.ti_wallpaper.jpg -------------------------------------------------------------------------------- /lab_exercise/home/Desktop/hostnameinfo.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Version=1.0 3 | Type=Application 4 | Terminal=false 5 | Icon=ti-icon 6 | Name=What is my Hostname? 7 | Exec=shell_scripts/lab_env.sh "zenity --info --title=Hostname: --text=$HOSTNAME " 8 | 9 | -------------------------------------------------------------------------------- /lab_exercise/home/Desktop/matlab.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Version=1.0 3 | Type=Application 4 | Terminal=false 5 | Icon=matlab-icon 6 | Name=Matlab 7 | Exec=shell_scripts/start_matlab.sh 8 | -------------------------------------------------------------------------------- /lab_exercise/home/Desktop/print_results.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Version=1.0 3 | Type=Application 4 | Terminal=true 5 | Icon=ti-icon 6 | Name=print_results 7 | Exec=shell_scripts/print_results.sh 8 | -------------------------------------------------------------------------------- /lab_exercise/home/Desktop/task_1_usrp_rx.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Version=1.0 3 | Type=Application 4 | Terminal=true 5 | Icon=ti-icon 6 | Name=task_1_usrp_rx 7 | Exec=shell_scripts/lab_env.sh shell_scripts/usrp_rx.sh 8 | 9 | -------------------------------------------------------------------------------- /lab_exercise/home/Desktop/task_1_usrp_tx.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Version=1.0 3 | Type=Application 4 | Terminal=true 5 | Icon=ti-icon 6 | Name=task_1_usrp_tx 7 | Exec=shell_scripts/lab_env.sh shell_scripts/usrp_tx.sh 8 | -------------------------------------------------------------------------------- /lab_exercise/home/Desktop/task_2_results.xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rwth-ti/gr-ofdm/ae1861bc84c849062d959fd68eccf9b9d975ee51/lab_exercise/home/Desktop/task_2_results.xls -------------------------------------------------------------------------------- /lab_exercise/home/Desktop/task_2_usrp_rx.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Version=1.0 3 | Type=Application 4 | Terminal=true 5 | Icon=ti-icon 6 | Name=task_2_usrp_rx 7 | Exec=shell_scripts/lab_env.sh shell_scripts/usrp_rx.sh 8 | -------------------------------------------------------------------------------- /lab_exercise/home/Desktop/task_2_usrp_tx.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Version=1.0 3 | Type=Application 4 | Terminal=true 5 | Icon=ti-icon 6 | Name=task_2_usrp_tx 7 | Exec=shell_scripts/lab_env.sh shell_scripts/usrp_tx.sh 8 | -------------------------------------------------------------------------------- /lab_exercise/home/Desktop/task_3_results.xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rwth-ti/gr-ofdm/ae1861bc84c849062d959fd68eccf9b9d975ee51/lab_exercise/home/Desktop/task_3_results.xls -------------------------------------------------------------------------------- /lab_exercise/home/Desktop/task_3_system_simulation_case_1.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Version=1.0 3 | Type=Application 4 | Terminal=true 5 | Icon=ti-icon 6 | Name=task_3_system_simulation_case_1 7 | Exec=shell_scripts/lab_env.sh $GROFDM_DIR/bin/run_benchmark_gui.sh --multipath 8 | -------------------------------------------------------------------------------- /lab_exercise/home/Desktop/task_3_system_simulation_case_2.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Version=1.0 3 | Type=Application 4 | Terminal=true 5 | Icon=ti-icon 6 | Name=task_3_system_simulation_case_2 7 | Exec=shell_scripts/lab_env.sh $GROFDM_DIR/bin/run_benchmark_gui.sh --multipath --lab-special-case 8 | -------------------------------------------------------------------------------- /lab_exercise/home/Desktop/task_4_system_simulation.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Version=1.0 3 | Type=Application 4 | Terminal=true 5 | Icon=ti-icon 6 | Name=task_4_system_simulation 7 | Exec=shell_scripts/lab_env.sh $GROFDM_DIR/bin/run_benchmark_gui.sh --sinr-est --multipath 8 | -------------------------------------------------------------------------------- /lab_exercise/home/Desktop/task_5_results.xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rwth-ti/gr-ofdm/ae1861bc84c849062d959fd68eccf9b9d975ee51/lab_exercise/home/Desktop/task_5_results.xls -------------------------------------------------------------------------------- /lab_exercise/home/Desktop/task_5_system_simulation.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Version=1.0 3 | Type=Application 4 | Terminal=true 5 | Icon=ti-icon 6 | Name=task_5_system_simulation 7 | Exec=shell_scripts/lab_env.sh $GROFDM_DIR/bin/run_benchmark_gui.sh --disable-freq-sync 8 | -------------------------------------------------------------------------------- /lab_exercise/home/Desktop/usrp_fft.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Version=1.0 3 | Type=Application 4 | Terminal=true 5 | Icon=ti-icon 6 | Name=usrp_fft 7 | Exec=shell_scripts/lab_env.sh uhd_fft -f 2.45G 8 | -------------------------------------------------------------------------------- /lab_exercise/home/latex/RWTHAachenUniversity.eps: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rwth-ti/gr-ofdm/ae1861bc84c849062d959fd68eccf9b9d975ee51/lab_exercise/home/latex/RWTHAachenUniversity.eps -------------------------------------------------------------------------------- /lab_exercise/home/latex/results.aux: -------------------------------------------------------------------------------- 1 | \relax 2 | \catcode`"\active 3 | \@input{titlepage.aux} 4 | \select@language{english} 5 | \@writefile{toc}{\select@language{english}} 6 | \@writefile{lof}{\select@language{english}} 7 | \@writefile{lot}{\select@language{english}} 8 | \@writefile{toc}{\contentsline {section}{\numberline {1}Task 2}{1}} 9 | \@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces Rate-power functions for RF transmission using the OFDM system with 1~MHz bandwidth, 200 data subcarriers, 256 FFT length}}{1}} 10 | \@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces Measured BERs}}{2}} 11 | \@writefile{toc}{\contentsline {section}{\numberline {2}Task 3}{2}} 12 | \@writefile{lof}{\contentsline {figure}{\numberline {3}{\ignorespaces Using all subcarriers with BPSK and using the better half with QPSK}}{2}} 13 | \newlabel{fig:FSC}{{3}{2}} 14 | \@writefile{lof}{\contentsline {figure}{\numberline {4}{\ignorespaces BER for simulated OFDM system in frequency selective channel with 1~MHz bandwidth, 200 data subcarriers, 256 FFT length}}{3}} 15 | \@writefile{toc}{\contentsline {section}{\numberline {3}Task 4}{3}} 16 | \@writefile{lof}{\contentsline {figure}{\numberline {5}{\ignorespaces SNR loss over frequency offset for different SNRs, analytical and simulation results}}{4}} 17 | -------------------------------------------------------------------------------- /lab_exercise/home/latex/results.dvi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rwth-ti/gr-ofdm/ae1861bc84c849062d959fd68eccf9b9d975ee51/lab_exercise/home/latex/results.dvi -------------------------------------------------------------------------------- /lab_exercise/home/latex/titlepage.aux: -------------------------------------------------------------------------------- 1 | \relax 2 | \@setckpt{titlepage}{ 3 | \setcounter{page}{1} 4 | \setcounter{equation}{0} 5 | \setcounter{enumi}{0} 6 | \setcounter{enumii}{0} 7 | \setcounter{enumiii}{0} 8 | \setcounter{enumiv}{0} 9 | \setcounter{footnote}{0} 10 | \setcounter{mpfootnote}{0} 11 | \setcounter{part}{0} 12 | \setcounter{section}{0} 13 | \setcounter{subsection}{0} 14 | \setcounter{subsubsection}{0} 15 | \setcounter{paragraph}{0} 16 | \setcounter{subparagraph}{0} 17 | \setcounter{figure}{0} 18 | \setcounter{table}{0} 19 | } 20 | -------------------------------------------------------------------------------- /lab_exercise/home/matlab/fnf.m: -------------------------------------------------------------------------------- 1 | function out = fnf(ep) 2 | out = sin(pi*ep)./pi./ep; -------------------------------------------------------------------------------- /lab_exercise/home/shell_scripts/chooser.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo "Choose your gr-ofdm-Version" 4 | ans=$(zenity --list --title="Choose GR-OFDM Version" --column="Version" "default" 2015 2016) 5 | echo "Choose $ans" 6 | 7 | if [ -f $HOME/env ] 8 | then 9 | rm ~/env 10 | fi 11 | 12 | case $ans in 13 | "default") 14 | echo "export GNURADIO_DIR=/opt/gnuradio-3.7.7" >>~/env 15 | GNURADIO_DIR=/opt/gnuradio-3.7.7 16 | echo "export GROFDM_DIR=/opt/gr-ofdm" >>~/env 17 | GROFDM_DIR=/opt/gr-ofdm 18 | ;; 19 | 20 | 2015) 21 | echo "export GNURADIO_DIR=/opt/gnuradio-3.7.7" >>~/env 22 | GNURADIO_DIR=/opt/gnuradio-3.7.7 23 | echo "export GROFDM_DIR=/opt/gr-ofdm" >>~/env 24 | GROFDM_DIR=/opt/gr-ofdm/beta 25 | ;; 26 | 27 | 2016) 28 | echo "export GNURADIO_DIR=/opt/gnuradio-3.7.7" >>~/env 29 | GNURADIO_DIR=/opt/gnuradio-3.7.7 30 | echo "export GROFDM_DIR=/opt/gr-ofdm/beta" >>~/env 31 | GROFDM_DIR=/opt/gr-ofdm 32 | ;; 33 | *) 34 | echo "Nothing changed." 35 | esac 36 | 37 | 38 | . $HOME/env 39 | if [ -f /opt/gr-ofdm/environment ] 40 | then 41 | tail -n +5 /opt/gr-ofdm/environment >> $HOME/env 42 | else 43 | tail -n +5 /opt/gr-ofdm/bin/environment_lab >> $HOME/env 44 | fi 45 | 46 | . ~/env 47 | 48 | echo "Changing completed" 49 | 50 | echo "as a result:" 51 | 52 | head $HOME/env 53 | 54 | -------------------------------------------------------------------------------- /lab_exercise/home/shell_scripts/lab_env.sh: -------------------------------------------------------------------------------- 1 | if [ -f $HOME/env ] 2 | then 3 | . $HOME/env 4 | else 5 | if [ -f /opt/gr-ofdm/environment ] 6 | then 7 | . /opt/gr-ofdm/environment 8 | else 9 | . /opt/gr-ofdm/bin/environment_lab 10 | fi 11 | fi 12 | 13 | bash -c "$*"||{ 14 | echo "Programm start failed." 15 | echo "$*" 16 | zenity --error --text "Programm start failed. Please make sure that no other USRP programm or terminal is running!" 17 | } 18 | 19 | -------------------------------------------------------------------------------- /lab_exercise/home/shell_scripts/print_results.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | export TODAY=${HOSTNAME}_`date '+%Y_%m_%d'` 3 | export PRINTER=HPC4700 4 | if ! (lpstat -p $PRINTER ) ; 5 | then 6 | echo "WARNING: Printer name may be wrong or printer is offline." 7 | fi 8 | cd ~/latex 9 | echo $HOSTNAME > envar.tex 10 | latex results.tex 11 | latex results.tex 12 | dvipdfmx -o resultsA4_$TODAY.pdf results.dvi 13 | pdfnup --nup 2x1 resultsA4_$TODAY.pdf --outfile results_$TODAY.pdf 14 | if [[ $USER == *"ofdmlab"* ]]; 15 | then 16 | ans=$(zenity --list --column="Persons" 1 2 3 4 --text="How many copies do you need?") 17 | 18 | echo $ans 19 | echo "copies..." 20 | if (( $ans > 4 )) 21 | then 22 | persons=4 23 | echo "Not more then 4 copies, please." 24 | else 25 | persons=$ans 26 | fi 27 | 28 | i=1 29 | echo "printing..." 30 | while [ "$i" -le "$persons" ];do 31 | echo $i 32 | lpr results_$TODAY.pdf -P $PRINTER -o Duplex=DuplexTumble 33 | let i=i+1 34 | done 35 | 36 | else 37 | echo "ERROR:No ofdmlab-account! Abort printing." 38 | fi 39 | #put resultsA4_$TODAY.pdf zivkovic 40 | #put resultsA4_$TODAY.pdf reyer 41 | #put resultsA4_$TODAY.pdf liu 42 | #put resultsA4_$TODAY.pdf xu 43 | #put resultsA4_$TODAY.pdf schmitz 44 | 45 | 46 | -------------------------------------------------------------------------------- /lab_exercise/home/shell_scripts/reset_ofdm.sh: -------------------------------------------------------------------------------- 1 | cd 2 | 3 | 4 | if [[ $USER == *"ofdmlab"* ]]; 5 | then 6 | zenity --question --text="Reset to OFDM-Lab defaults?" 7 | if [ $? -eq 0 ] ; then 8 | rsync -av --force --delete-after --exclude .Xauthority --exclude .local/share/keyrings /home/ofdmlab-default/ ~ 9 | else 10 | zenity --error --text="No ofdmlab-account! Abort reset!" 11 | echo "ERROR:No ofdmlab-account! Abort reset." 12 | fi 13 | 14 | -------------------------------------------------------------------------------- /lab_exercise/home/shell_scripts/start_matlab.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | cd ~/matlab && matlab -desktop 4 | -------------------------------------------------------------------------------- /lab_exercise/home/shell_scripts/usrp_tx.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | 4 | 5 | if [ -f carrier ] 6 | then 7 | CARRIER=`cat carrier` 8 | else 9 | CARRIER=2.45G 10 | fi 11 | CARRIER=$(zenity --entry --title "Carrier frequency for $HOSTNAME" --text "This host is named $HOSTNAME.\nEnter transmitter's carrier frequency:" --entry-text "$CARRIER") 12 | 13 | echo $CARRIER > carrier 14 | 15 | echo "Hostname: $HOSTNAME" 16 | 17 | if [[ $CARRIER == *","* ]]; 18 | then 19 | zenity --error --text="Please use a dot as decimal mark!" 20 | exit 21 | fi 22 | 23 | if [[ $CARRIER != *"G"* ]] && [[ $CARRIER != *"M"* ]] && [ ${#CARRIER} -le 9 ]; 24 | then 25 | zenity --warning --text="Your choosen frequency is "$CARRIER"(Hz). This seems to be very small\! \nThe frequency should rather be 2.4___G(Hz)" 26 | exit 27 | fi 28 | 29 | $GROFDM_DIR/bin/run_usrp_tx_gui.sh -f $CARRIER --lo-offset=4M 30 | -------------------------------------------------------------------------------- /lib/malloc16.c: -------------------------------------------------------------------------------- 1 | /* Wrapper functions for malloc/free that force 16-byte alignment 2 | * See http://perso.club-internet.fr/matmac/sourcesc.htm 3 | 4 | * Copyright 2001 Phil Karn, KA9Q 5 | * May be used under the terms of the GNU Public License (GPL) 6 | */ 7 | 8 | #include "malloc16.h" 9 | #include 10 | 11 | void *malloc16Align(int size){ 12 | void *p; 13 | void **p1; 14 | 15 | if((p = malloc(size+31)) == NULL) 16 | return NULL; 17 | 18 | /* Round up to next 16-byte boundary */ 19 | p1 = (void **)(((long)p + 31) & (~15)); 20 | 21 | /* Stash actual start of block just before ptr we return */ 22 | p1[-1] = p; 23 | 24 | /* Return 16-byte aligned address */ 25 | return (void *)p1; 26 | } 27 | 28 | void *calloc16Align(size_t nmemb,size_t size){ 29 | int nbytes; 30 | void *p; 31 | 32 | nbytes = nmemb*size; 33 | if((p = malloc16Align(nbytes)) == NULL) 34 | return NULL; 35 | 36 | memset(p,0,nbytes); 37 | return p; 38 | } 39 | 40 | void free16Align(void *p){ 41 | 42 | if(p != NULL){ 43 | /* Retrieve pointer to actual start of block and free it */ 44 | free(((void **)p)[-1]); 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /lib/malloc16.h: -------------------------------------------------------------------------------- 1 | /* -*- c++ -*- */ 2 | /* 3 | * Copyright 2002 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 | #include 24 | 25 | #ifdef __cplusplus 26 | extern "C" { 27 | #endif 28 | 29 | #include 30 | 31 | GR_RUNTIME_API void *malloc16Align(int size); 32 | GR_RUNTIME_API void *calloc16Align(size_t nmemb,size_t size); 33 | GR_RUNTIME_API void free16Align(void *p); 34 | 35 | #ifdef __cplusplus 36 | } 37 | #endif 38 | -------------------------------------------------------------------------------- /lib/ofdmi_shared_generator.cc: -------------------------------------------------------------------------------- 1 | #ifdef HAVE_CONFIG_H 2 | #include "config.h" 3 | #endif 4 | 5 | #include 6 | 7 | #include 8 | 9 | #include 10 | 11 | static boost::once_flag f=BOOST_ONCE_INIT; 12 | static shared_generator_sptr shared_generator; 13 | 14 | 15 | void init_func() 16 | { 17 | unsigned int seed = static_cast( std::time( 0 ) ); 18 | shared_generator_sptr t( new shared_generator_type( seed ) ); 19 | shared_generator = t; 20 | } 21 | 22 | 23 | shared_generator_sptr 24 | get_shared_generator( void ) 25 | { 26 | boost::call_once( &init_func, f ); 27 | 28 | return shared_generator; 29 | } 30 | -------------------------------------------------------------------------------- /lib/qa_ofdm.cc: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2012 Free Software Foundation, Inc. 3 | * 4 | * This file is part of GNU Radio 5 | * 6 | * GNU Radio is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 3, or (at your option) 9 | * any later version. 10 | * 11 | * GNU Radio is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with GNU Radio; see the file COPYING. If not, write to 18 | * the Free Software Foundation, Inc., 51 Franklin Street, 19 | * Boston, MA 02110-1301, USA. 20 | */ 21 | 22 | /* 23 | * This class gathers together all the test cases for the gr-filter 24 | * directory into a single test suite. As you create new test cases, 25 | * add them here. 26 | */ 27 | 28 | #include "qa_ofdm.h" 29 | 30 | CppUnit::TestSuite * 31 | qa_ofdm::suite() 32 | { 33 | CppUnit::TestSuite *s = new CppUnit::TestSuite("ofdm"); 34 | 35 | return s; 36 | } 37 | -------------------------------------------------------------------------------- /lib/qa_ofdm.h: -------------------------------------------------------------------------------- 1 | /* -*- c++ -*- */ 2 | /* 3 | * Copyright 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 _QA_OFDM_H_ 24 | #define _QA_OFDM_H_ 25 | 26 | #include 27 | #include 28 | 29 | //! collect all the tests for the gr-filter directory 30 | 31 | class __GR_ATTR_EXPORT qa_ofdm 32 | { 33 | public: 34 | //! return suite of tests for all of gr-filter directory 35 | static CppUnit::TestSuite *suite(); 36 | }; 37 | 38 | #endif /* _QA_OFDM_H_ */ 39 | -------------------------------------------------------------------------------- /lib/util_endian.cc: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | int16_t twist_int16(int16_t inVar) 5 | { 6 | int16_t outVar; 7 | uint8_t* inBField = (uint8_t*) &inVar; 8 | uint8_t* outBField = (uint8_t*) &outVar; 9 | 10 | outBField[0] = inBField[1]; 11 | outBField[1] = inBField[0]; 12 | 13 | return outVar; 14 | } 15 | 16 | uint16_t twist_uint16(uint16_t inVar) 17 | { 18 | uint16_t outVar; 19 | uint8_t* inBField = (uint8_t*) &inVar; 20 | uint8_t* outBField = (uint8_t*) &outVar; 21 | 22 | outBField[0] = inBField[1]; 23 | outBField[1] = inBField[0]; 24 | 25 | return outVar; 26 | } 27 | 28 | int32_t twist_int32(int32_t inVar) 29 | { 30 | int32_t outVar; 31 | uint8_t* inBField = (uint8_t*) &inVar; 32 | uint8_t* outBField = (uint8_t*) &outVar; 33 | 34 | outBField[0] = inBField[3]; 35 | outBField[1] = inBField[2]; 36 | outBField[2] = inBField[1]; 37 | outBField[3] = inBField[0]; 38 | 39 | return outVar; 40 | } 41 | 42 | uint32_t twist_uint32(uint32_t inVar) 43 | { 44 | uint32_t outVar; 45 | uint8_t* inBField = (uint8_t*) &inVar; 46 | uint8_t* outBField = (uint8_t*) &outVar; 47 | 48 | outBField[0] = inBField[3]; 49 | outBField[1] = inBField[2]; 50 | outBField[2] = inBField[1]; 51 | outBField[3] = inBField[0]; 52 | 53 | return outVar; 54 | } 55 | 56 | -------------------------------------------------------------------------------- /lib/util_ipc.cc: -------------------------------------------------------------------------------- 1 | 2 | /* $Id$ */ 3 | 4 | #include 5 | 6 | std::string const c_interprocess :: shm_id = "gnuradio_ipc_shm"; 7 | std::string const c_interprocess :: shared_buffer_id = "shared_buffer"; 8 | std::string const c_interprocess :: put_buffer_id = "put_buffer"; 9 | std::string const c_interprocess :: mutex_id = "gnuradio_ipc_buffer_mutex"; 10 | std::string const c_interprocess :: buffers_tend_id = "buffers_tending"; 11 | std::string const c_interprocess :: buffers_cur_id = "current_buffer"; 12 | -------------------------------------------------------------------------------- /matlab/compare.m: -------------------------------------------------------------------------------- 1 | clear all 2 | s=read_char_binary('fbmcdata__source.dat'); 3 | e=read_char_binary('fbmcdata__estimated.dat'); 4 | cc = [(1:size(e,1)).' s(1:size(e,1)) e abs(s(1:size(e,1))-e)]; 5 | k=[find(cc(:,4)>0) cc(find(cc(:,4)>0),4)]; 6 | delete('fbmcdata__source.dat'); 7 | delete('fbmcdata__estimated.dat'); -------------------------------------------------------------------------------- /matlab/copy.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | STRING="Done!" 3 | #print 4 | COPYFROM=~/fbmcdata__*.dat 5 | COPYTO=$PWD 6 | mv $COPYFROM $COPYTO 7 | echo $STRING -------------------------------------------------------------------------------- /matlab/sp_cpp_output.txt: -------------------------------------------------------------------------------- 1 | M=128 2 | syms_per_frame=20 3 | sel_eq=1 4 | preamble_length=384 5 | -------------------------------------------------------------------------------- /matlab/sp_equ_cpp_output.txt: -------------------------------------------------------------------------------- 1 | M=1024 2 | syms_per_frame=10 3 | sel_eq=3 4 | preamble_length=3072 5 | -------------------------------------------------------------------------------- /matlab/sp_est_cpp_output.txt: -------------------------------------------------------------------------------- 1 | M=1024 2 | syms_per_frame=10 3 | sel_eq=3 4 | preamble_length=3072 5 | estimation_point=2047 6 | -------------------------------------------------------------------------------- /matlab/stopcheck.m: -------------------------------------------------------------------------------- 1 | clear all 2 | 3 | src =read_complex_binary('hebe1.dat'); 4 | snk =read_complex_binary('hebe2.dat'); 5 | 6 | ref=[]; 7 | for i=1:floor(length(src)/10) 8 | ref=[ref; src((i-1)*10+1:i*10); src((i-1)*10+1:i*10)]; 9 | end 10 | 11 | diff = abs(snk-ref(1:length(snk))); 12 | 13 | difind = find(diff>0); -------------------------------------------------------------------------------- /matlab/tapdata.txt: -------------------------------------------------------------------------------- 1 | 0 0.000504809 2 | 1 0.00185568 3 | 2 0.00358484 4 | 3 0.00498686 5 | 4 0.00522199 6 | 5 0.00344538 7 | 6 -0.00105124 8 | 7 -0.00870071 9 | 8 -0.0195399 10 | 9 -0.0331211 11 | 10 -0.0484678 12 | 11 -0.0640811 13 | 12 -0.0780013 14 | 13 -0.0879213 15 | 14 -0.0913461 16 | 15 -0.0857864 17 | 16 -0.068971 18 | 17 -0.0390612 19 | 18 0.00515124 20 | 19 0.0640811 21 | 20 0.137236 22 | 21 0.223164 23 | 22 0.319472 24 | 23 0.422914 25 | 24 0.529546 26 | 25 0.634939 27 | 26 0.734437 28 | 27 0.82344 29 | 28 0.897692 30 | 29 0.953554 31 | 30 0.988239 32 | 31 1 33 | 32 0.988239 34 | 33 0.953554 35 | 34 0.897692 36 | 35 0.82344 37 | 36 0.734437 38 | 37 0.634939 39 | 38 0.529546 40 | 39 0.422914 41 | 40 0.319472 42 | 41 0.223164 43 | 42 0.137236 44 | 43 0.0640811 45 | 44 0.00515124 46 | 45 -0.0390612 47 | 46 -0.068971 48 | 47 -0.0857864 49 | 48 -0.0913461 50 | 49 -0.0879213 51 | 50 -0.0780013 52 | 51 -0.0640811 53 | 52 -0.0484678 54 | 53 -0.0331211 55 | 54 -0.0195399 56 | 55 -0.00870071 57 | 56 -0.00105124 58 | 57 0.00344538 59 | 58 0.00522199 60 | 59 0.00498686 61 | 60 0.00358484 62 | 61 0.00185568 63 | 62 0.000504809 64 | -------------------------------------------------------------------------------- /matlab/taps.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rwth-ti/gr-ofdm/ae1861bc84c849062d959fd68eccf9b9d975ee51/matlab/taps.txt -------------------------------------------------------------------------------- /python/ofdm/delaylines.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # 3 | # Copyright 2014 Institute for Theoretical Information Technology, 4 | # RWTH Aachen University 5 | # www.ti.rwth-aachen.de 6 | # 7 | # This 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 | # This software 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 this software; 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 | from gnuradio import gr 24 | 25 | def delayline_cc(delay): 26 | return gr.delay(gr.sizeof_gr_complex,delay) 27 | 28 | def delayline_ff(delay): 29 | return gr.delay(gr.sizeof_float,delay) 30 | -------------------------------------------------------------------------------- /python/ofdm/fusb_options.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2006 Free Software Foundation, Inc. 3 | # 4 | # This file is part of GNU Radio 5 | # 6 | # GNU Radio is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 2, or (at your option) 9 | # any later version. 10 | # 11 | # GNU Radio is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with GNU Radio; see the file COPYING. If not, write to 18 | # the Free Software Foundation, Inc., 51 Franklin Street, 19 | # Boston, MA 02110-1301, USA. 20 | # 21 | 22 | def add_options(parser): 23 | """ 24 | Add Fast USB specifc options to command line parser. 25 | 26 | @param parser: instance of OptionParser 27 | """ 28 | parser.add_option("-B", "--fusb-block-size", type="int", default=0, 29 | help="specify fast usb block size [default=%default]") 30 | parser.add_option("-N", "--fusb-nblocks", type="int", default=0, 31 | help="specify number of fast usb blocks [default=%default]") 32 | -------------------------------------------------------------------------------- /python/ofdm/qa_add_vcc.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | # 4 | # Copyright 2015 <+YOU OR YOUR COMPANY+>. 5 | # 6 | # This is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3, or (at your option) 9 | # any later version. 10 | # 11 | # This software is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this software; see the file COPYING. If not, write to 18 | # the Free Software Foundation, Inc., 51 Franklin Street, 19 | # Boston, MA 02110-1301, USA. 20 | # 21 | 22 | from gnuradio import gr, gr_unittest 23 | from gnuradio import blocks 24 | import ofdm_swig as ofdm 25 | 26 | class qa_add_vcc (gr_unittest.TestCase): 27 | 28 | def setUp (self): 29 | self.tb = gr.top_block () 30 | 31 | def tearDown (self): 32 | self.tb = None 33 | 34 | def test_001_t (self): 35 | # set up fg 36 | self.tb.run () 37 | # check data 38 | 39 | 40 | if __name__ == '__main__': 41 | gr_unittest.run(qa_add_vcc, "qa_add_vcc.xml") 42 | -------------------------------------------------------------------------------- /python/ofdm/rx_rpc_manager_grc.py: -------------------------------------------------------------------------------- 1 | from gnuradio import zeromq 2 | import math 3 | 4 | class rx_rpc_manager(): 5 | def __init__(self): 6 | self.rpc_mgr_rx = zeromq.rpc_manager() 7 | self.rpc_mgr_rx.set_reply_socket("tcp://*:5550") 8 | self.rpc_mgr_rx.start_watcher() 9 | 10 | def add_set_scatter_subcarrier_interface(self,comm1): 11 | self.rpc_mgr_rx.add_interface("set_scatter_subcarrier",comm1) 12 | -------------------------------------------------------------------------------- /screenshot_rx_gui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rwth-ti/gr-ofdm/ae1861bc84c849062d959fd68eccf9b9d975ee51/screenshot_rx_gui.png -------------------------------------------------------------------------------- /usrp/images/std_1rxhb_1txhb.rbf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rwth-ti/gr-ofdm/ae1861bc84c849062d959fd68eccf9b9d975ee51/usrp/images/std_1rxhb_1txhb.rbf --------------------------------------------------------------------------------