diff --git a/CMakeLists.txt b/CMakeLists.txt index 824108d..facc660 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -57,7 +57,7 @@ set(Boost_ADDITIONAL_VERSIONS "1.60.0" "1.60" "1.61.0" "1.61" "1.62.0" "1.62" "1.63.0" "1.63" "1.64.0" "1.64" "1.65.0" "1.65" "1.66.0" "1.66" "1.67.0" "1.67" "1.68.0" "1.68" "1.69.0" "1.69" ) -find_package(Boost "1.35" COMPONENTS filesystem system) +find_package(Boost "1.35" COMPONENTS filesystem system thread) if(NOT Boost_FOUND) message(FATAL_ERROR "Boost required to compile ofdm") @@ -83,9 +83,8 @@ set(GRC_BLOCKS_DIR ${GR_PKG_DATA_DIR}/grc/blocks) ######################################################################## # Find gnuradio build dependencies ######################################################################## -#find_package(GnuradioRuntime) find_package(CppUnit) -#find_package(GnuradioFFT) +find_package(Volk) # To run a more advanced search for GNU Radio and it's components and # versions, use the following. Add any components required to the list @@ -107,6 +106,9 @@ endif() if(NOT GNURADIO_BLOCKS_FOUND) message(FATAL_ERROR "GnuRadio Blocks required to compile ofdm") endif() +if(NOT VOLK_FOUND) + message(FATAL_ERROR "Volk required to compile ofdm") +endif() ######################################################################## diff --git a/apps/CMakeLists.txt b/apps/CMakeLists.txt index a542d59..15b0430 100644 --- a/apps/CMakeLists.txt +++ b/apps/CMakeLists.txt @@ -24,7 +24,8 @@ GR_PYTHON_INSTALL( gui/ofdm_rx_gui.py gui/ofdm_mrrc_rx_gui.py gui/ofdm_tx_gui.py - DESTINATION bin + DESTINATION + ${CMAKE_INSTALL_PREFIX}/share/gnuradio/examples/ofdm ) install( @@ -38,7 +39,8 @@ install( run_usrp_tx.sh run_test_demapper_fbmc.sh run_grc.sh - DESTINATION bin + DESTINATION + ${CMAKE_INSTALL_PREFIX}/share/gnuradio/examples/ofdm ) install( @@ -48,5 +50,59 @@ install( gui/ofdm_rx_gui_window.ui gui/ofdm_mrrc_rx_gui_window.ui gui/ofdm_tx_gui_window.ui - DESTINATION bin + DESTINATION + ${CMAKE_INSTALL_PREFIX}/share/gnuradio/examples/ofdm +) + +install( + FILES + grc/demo.grc + grc/demo_1tap.grc + grc/demo_1zero.grc + grc/demo_1zero_rep.grc + grc/demo_1zero_rep_1tap.grc + grc/demo_2zero.grc + grc/demo_3tap.grc + grc/demo_onlyawgn.grc + grc/fbmc_inner_receiver.grc + grc/fbmc_main.grc + grc/fbmc_main_coding.grc + grc/fbmc_main_masking_after_fft.grc + grc/fbmc_multiuser_debug.grc + grc/fbmc_multiuser_scenario.grc + grc/fbmc_snr_estimator.grc + grc/fbmc_with_extended_fft.grc + grc/fbmc_with_hier_blocks.grc + grc/paper_tigr_fbmc_inner_receiver.grc + grc/paper_tigr_fbmc_inner_receiver2.grc + grc/paper_tigr_fbmc_uncoded_transceiver.grc + grc/paper_tigr_ofdm_inner_receiver.grc + grc/paper_tigr_ofdm_uncoded_transceiver.grc + grc/scfdma_receiver_chain.grc + grc/scfdma_transmitter_chain.grc + grc/scfdma_with_hier_blocks.grc + grc/sync_simple.grc + grc/test1.grc + grc/tigr_ber_measurement.grc + grc/tigr_fbmc_coded_transceiver.grc + grc/tigr_fbmc_coded_usrp_rx.grc + grc/tigr_fbmc_inner_receiver.grc + grc/tigr_fbmc_snr_estimator.grc + grc/tigr_fbmc_transceiver.grc + grc/tigr_fbmc_uncoded_transceiver.grc + grc/tigr_fbmc_uncoded_usrp_rx.grc + grc/tigr_fbmc_usrp_tx.grc + grc/tigr_ofdm_coded_transceiver.grc + grc/tigr_ofdm_coded_usrp_rx.grc + grc/tigr_ofdm_inner_receiver.grc + grc/tigr_ofdm_snr_estimator.grc + grc/tigr_ofdm_uncoded_transceiver.grc + grc/tigr_ofdm_uncoded_usrp_rx.grc + grc/tigr_ofdm_usrp_tx.grc + grc/tigr_scatterplot.grc + grc/tigr_test_demapper.grc + grc/tigr_transmit_control.grc + grc/transmit_control.grc + DESTINATION + ${CMAKE_INSTALL_PREFIX}/share/gnuradio/examples/ofdm/grc ) diff --git a/apps/environment_lab b/apps/environment_lab index 547a0f2..b3692c4 100644 --- a/apps/environment_lab +++ b/apps/environment_lab @@ -1,11 +1,9 @@ -#Gnuradio -export GNURADIO_DIR=/opt/gnuradio-3.7.7/ -export UHD_DIR=/opt/gnuradio-3.7.7/uhd_030901/ -export GROFDM_DIR=/opt/gr-ofdm/ - -export PATH=$GROFDM_DIR/bin/:$UHD_DIR/bin:$GNURADIO_DIR/bin:$PATH -export LD_LIBRARY_PATH=$GROFDM_DIR/lib/:$UHD_DIR/lib/:$GNURADIO_DIR/lib:$LD_LIBRARY_PATH -export PYTHONPATH=$GROFDM_DIR/lib/python2.7/dist-packages/:$GNURADIO_DIR/lib/python2.7/dist-packages/:$PYTHONPATH -export PKG_CONFIG_PATH=$GNURADIO_DIR/lib/pkgconfig:$PKG_CONFIG_PATH - - +# Gnuradio +# export GNURADIO_DIR=/opt/gnuradio-3.7.7/ +# export UHD_DIR=/opt/gnuradio-3.7.7/uhd_030901/ +# export GROFDM_DIR=/opt/gr-ofdm/ +# +# export PATH=$GROFDM_DIR/bin/:$UHD_DIR/bin:$GNURADIO_DIR/bin:$PATH +# export LD_LIBRARY_PATH=$GROFDM_DIR/lib/:$UHD_DIR/lib/:$GNURADIO_DIR/lib:$LD_LIBRARY_PATH +# export PYTHONPATH=$GROFDM_DIR/lib/python2.7/dist-packages/:$GNURADIO_DIR/lib/python2.7/dist-packages/:$PYTHONPATH +# export PKG_CONFIG_PATH=$GNURADIO_DIR/lib/pkgconfig:$PKG_CONFIG_PATH diff --git a/apps/environment_release b/apps/environment_release index 7951c4f..91ede47 100755 --- a/apps/environment_release +++ b/apps/environment_release @@ -1,3 +1,3 @@ -export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:"$PWD/../lib" -export PYTHONPATH=$PYTHONPATH:"$PWD/../lib/python2.7/dist-packages:$PWD/../lib/python2.7/dist-packages/ofdm" -export PATH=$PATH:"$PWD" +# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:"$PWD/../lib" +# export PYTHONPATH=$PYTHONPATH:"$PWD/../lib/python2.7/dist-packages:$PWD/../lib/python2.7/dist-packages/ofdm" +# export PATH=$PATH:"$PWD" diff --git a/apps/grc/demo.grc b/apps/grc/demo.grc index 7738da1..237265c 100644 --- a/apps/grc/demo.grc +++ b/apps/grc/demo.grc @@ -1340,7 +1340,7 @@ </param> <param> <key>extra_pad</key> - <value>0</value> + <value>False</value> </param> <param> <key>alias</key> @@ -1415,7 +1415,7 @@ </param> <param> <key>extra_pad</key> - <value>0</value> + <value>False</value> </param> <param> <key>sel_eq</key> @@ -1549,7 +1549,7 @@ </param> <param> <key>extra_pad</key> - <value>0</value> + <value>False</value> </param> <param> <key>alias</key> diff --git a/apps/grc/demo_1tap.grc b/apps/grc/demo_1tap.grc index e450fc7..74945f9 100644 --- a/apps/grc/demo_1tap.grc +++ b/apps/grc/demo_1tap.grc @@ -461,7 +461,7 @@ </param> <param> <key>extra_pad</key> - <value>0</value> + <value>False</value> </param> <param> <key>alias</key> @@ -1106,7 +1106,7 @@ </param> <param> <key>extra_pad</key> - <value>0</value> + <value>False</value> </param> <param> <key>alias</key> @@ -1545,7 +1545,7 @@ </param> <param> <key>extra_pad</key> - <value>0</value> + <value>False</value> </param> <param> <key>sel_eq</key> diff --git a/apps/grc/demo_1zero.grc b/apps/grc/demo_1zero.grc index f623680..058c73d 100644 --- a/apps/grc/demo_1zero.grc +++ b/apps/grc/demo_1zero.grc @@ -1066,7 +1066,7 @@ </param> <param> <key>extra_pad</key> - <value>0</value> + <value>False</value> </param> <param> <key>alias</key> @@ -1141,7 +1141,7 @@ </param> <param> <key>extra_pad</key> - <value>0</value> + <value>False</value> </param> <param> <key>sel_eq</key> @@ -1322,7 +1322,7 @@ </param> <param> <key>extra_pad</key> - <value>0</value> + <value>False</value> </param> <param> <key>alias</key> diff --git a/apps/grc/demo_1zero_rep.grc b/apps/grc/demo_1zero_rep.grc index 3e6934a..34ecf1a 100644 --- a/apps/grc/demo_1zero_rep.grc +++ b/apps/grc/demo_1zero_rep.grc @@ -1082,7 +1082,7 @@ </param> <param> <key>extra_pad</key> - <value>0</value> + <value>False</value> </param> <param> <key>alias</key> @@ -1157,7 +1157,7 @@ </param> <param> <key>extra_pad</key> - <value>0</value> + <value>False</value> </param> <param> <key>sel_eq</key> @@ -1236,7 +1236,7 @@ </param> <param> <key>extra_pad</key> - <value>0</value> + <value>False</value> </param> <param> <key>alias</key> diff --git a/apps/grc/demo_1zero_rep_1tap.grc b/apps/grc/demo_1zero_rep_1tap.grc index 2414057..ad1ec27 100644 --- a/apps/grc/demo_1zero_rep_1tap.grc +++ b/apps/grc/demo_1zero_rep_1tap.grc @@ -49,7 +49,7 @@ </param> <param> <key>extra_pad</key> - <value>0</value> + <value>False</value> </param> <param> <key>alias</key> @@ -1137,7 +1137,7 @@ </param> <param> <key>extra_pad</key> - <value>0</value> + <value>False</value> </param> <param> <key>alias</key> @@ -1275,7 +1275,7 @@ </param> <param> <key>extra_pad</key> - <value>0</value> + <value>False</value> </param> <param> <key>sel_eq</key> diff --git a/apps/grc/demo_2zero.grc b/apps/grc/demo_2zero.grc index 10bdaab..ca1d205 100644 --- a/apps/grc/demo_2zero.grc +++ b/apps/grc/demo_2zero.grc @@ -582,7 +582,7 @@ </param> <param> <key>extra_pad</key> - <value>0</value> + <value>False</value> </param> <param> <key>alias</key> @@ -1419,7 +1419,7 @@ </param> <param> <key>extra_pad</key> - <value>0</value> + <value>False</value> </param> <param> <key>alias</key> @@ -1545,7 +1545,7 @@ </param> <param> <key>extra_pad</key> - <value>0</value> + <value>False</value> </param> <param> <key>sel_eq</key> diff --git a/apps/grc/demo_3tap.grc b/apps/grc/demo_3tap.grc index ee9b076..6ef2484 100644 --- a/apps/grc/demo_3tap.grc +++ b/apps/grc/demo_3tap.grc @@ -995,7 +995,7 @@ </param> <param> <key>extra_pad</key> - <value>0</value> + <value>False</value> </param> <param> <key>alias</key> @@ -1070,7 +1070,7 @@ </param> <param> <key>extra_pad</key> - <value>0</value> + <value>False</value> </param> <param> <key>sel_eq</key> @@ -1337,7 +1337,7 @@ </param> <param> <key>extra_pad</key> - <value>0</value> + <value>False</value> </param> <param> <key>alias</key> diff --git a/apps/grc/demo_onlyawgn.grc b/apps/grc/demo_onlyawgn.grc index e8ed69b..ea5037b 100644 --- a/apps/grc/demo_onlyawgn.grc +++ b/apps/grc/demo_onlyawgn.grc @@ -913,7 +913,7 @@ </param> <param> <key>extra_pad</key> - <value>0</value> + <value>False</value> </param> <param> <key>alias</key> @@ -988,7 +988,7 @@ </param> <param> <key>extra_pad</key> - <value>0</value> + <value>False</value> </param> <param> <key>alias</key> @@ -1063,7 +1063,7 @@ </param> <param> <key>extra_pad</key> - <value>0</value> + <value>False</value> </param> <param> <key>sel_eq</key> diff --git a/apps/grc/fbmc_inner_receiver.grc b/apps/grc/fbmc_inner_receiver.grc index 930538e..3402c43 100644 --- a/apps/grc/fbmc_inner_receiver.grc +++ b/apps/grc/fbmc_inner_receiver.grc @@ -1505,7 +1505,7 @@ </param> <param> <key>extra_pad</key> - <value>1</value> + <value>True</value> </param> <param> <key>sel_eq</key> diff --git a/apps/grc/fbmc_main.grc b/apps/grc/fbmc_main.grc index eea9c0e..1efb49d 100644 --- a/apps/grc/fbmc_main.grc +++ b/apps/grc/fbmc_main.grc @@ -1888,7 +1888,7 @@ </param> <param> <key>extra_pad</key> - <value>1</value> + <value>True</value> </param> <param> <key>alias</key> @@ -1943,7 +1943,7 @@ </param> <param> <key>extra_pad</key> - <value>1</value> + <value>True</value> </param> <param> <key>sel_eq</key> @@ -2635,7 +2635,7 @@ </param> <param> <key>extra_pad</key> - <value>1</value> + <value>True</value> </param> <param> <key>alias</key> @@ -2690,7 +2690,7 @@ </param> <param> <key>extra_pad</key> - <value>1</value> + <value>True</value> </param> <param> <key>alias</key> diff --git a/apps/grc/fbmc_main_coding.grc b/apps/grc/fbmc_main_coding.grc index 6053b95..900e4c1 100644 --- a/apps/grc/fbmc_main_coding.grc +++ b/apps/grc/fbmc_main_coding.grc @@ -2454,7 +2454,7 @@ </param> <param> <key>extra_pad</key> - <value>1</value> + <value>True</value> </param> <param> <key>alias</key> @@ -2509,7 +2509,7 @@ </param> <param> <key>extra_pad</key> - <value>1</value> + <value>True</value> </param> <param> <key>alias</key> @@ -2564,7 +2564,7 @@ </param> <param> <key>extra_pad</key> - <value>1</value> + <value>True</value> </param> <param> <key>sel_eq</key> @@ -2623,7 +2623,7 @@ </param> <param> <key>extra_pad</key> - <value>1</value> + <value>True</value> </param> <param> <key>alias</key> diff --git a/apps/grc/fbmc_main_masking_after_fft.grc b/apps/grc/fbmc_main_masking_after_fft.grc index 47e5c90..0f9b403 100644 --- a/apps/grc/fbmc_main_masking_after_fft.grc +++ b/apps/grc/fbmc_main_masking_after_fft.grc @@ -2596,7 +2596,7 @@ </param> <param> <key>extra_pad</key> - <value>0</value> + <value>False</value> </param> <param> <key>alias</key> @@ -2910,7 +2910,7 @@ </param> <param> <key>extra_pad</key> - <value>0</value> + <value>False</value> </param> <param> <key>sel_eq</key> @@ -3212,7 +3212,7 @@ </param> <param> <key>extra_pad</key> - <value>0</value> + <value>False</value> </param> <param> <key>alias</key> @@ -3530,7 +3530,7 @@ </param> <param> <key>extra_pad</key> - <value>0</value> + <value>False</value> </param> <param> <key>alias</key> diff --git a/apps/grc/fbmc_multiuser_debug.grc b/apps/grc/fbmc_multiuser_debug.grc index 966d999..c4421d6 100644 --- a/apps/grc/fbmc_multiuser_debug.grc +++ b/apps/grc/fbmc_multiuser_debug.grc @@ -2856,7 +2856,7 @@ </param> <param> <key>extra_pad</key> - <value>1</value> + <value>True</value> </param> <param> <key>alias</key> @@ -3323,7 +3323,7 @@ </param> <param> <key>extra_pad</key> - <value>1</value> + <value>True</value> </param> <param> <key>sel_eq</key> @@ -3788,7 +3788,7 @@ </param> <param> <key>extra_pad</key> - <value>1</value> + <value>True</value> </param> <param> <key>alias</key> @@ -3977,7 +3977,7 @@ </param> <param> <key>extra_pad</key> - <value>1</value> + <value>True</value> </param> <param> <key>alias</key> diff --git a/apps/grc/fbmc_multiuser_scenario.grc b/apps/grc/fbmc_multiuser_scenario.grc index 3a59f98..dbbe3d2 100644 --- a/apps/grc/fbmc_multiuser_scenario.grc +++ b/apps/grc/fbmc_multiuser_scenario.grc @@ -2246,7 +2246,7 @@ </param> <param> <key>extra_pad</key> - <value>0</value> + <value>False</value> </param> <param> <key>sel_eq</key> @@ -2372,7 +2372,7 @@ </param> <param> <key>extra_pad</key> - <value>0</value> + <value>False</value> </param> <param> <key>alias</key> @@ -2451,7 +2451,7 @@ </param> <param> <key>extra_pad</key> - <value>0</value> + <value>False</value> </param> <param> <key>alias</key> @@ -2620,7 +2620,7 @@ </param> <param> <key>extra_pad</key> - <value>0</value> + <value>False</value> </param> <param> <key>alias</key> @@ -2699,7 +2699,7 @@ </param> <param> <key>extra_pad</key> - <value>0</value> + <value>False</value> </param> <param> <key>alias</key> @@ -2979,7 +2979,7 @@ </param> <param> <key>extra_pad</key> - <value>0</value> + <value>False</value> </param> <param> <key>sel_eq</key> diff --git a/apps/grc/fbmc_with_hier_blocks.grc b/apps/grc/fbmc_with_hier_blocks.grc index ce05376..5c6fd24 100644 --- a/apps/grc/fbmc_with_hier_blocks.grc +++ b/apps/grc/fbmc_with_hier_blocks.grc @@ -543,7 +543,7 @@ </param> <param> <key>extra_pad</key> - <value>1</value> + <value>True</value> </param> <param> <key>sel_eq</key> @@ -787,7 +787,7 @@ </param> <param> <key>extra_pad</key> - <value>1</value> + <value>True</value> </param> <param> <key>alias</key> @@ -1089,7 +1089,7 @@ </param> <param> <key>extra_pad</key> - <value>1</value> + <value>True</value> </param> <param> <key>alias</key> diff --git a/apps/grc/paper_tigr_fbmc_inner_receiver.grc b/apps/grc/paper_tigr_fbmc_inner_receiver.grc index bacea03..2027375 100644 --- a/apps/grc/paper_tigr_fbmc_inner_receiver.grc +++ b/apps/grc/paper_tigr_fbmc_inner_receiver.grc @@ -884,7 +884,7 @@ </param> <param> <key>extra_pad</key> - <value>1</value> + <value>True</value> </param> <param> <key>sel_eq</key> diff --git a/apps/grc/paper_tigr_fbmc_inner_receiver2.grc b/apps/grc/paper_tigr_fbmc_inner_receiver2.grc index c79a0ff..b1aa889 100644 --- a/apps/grc/paper_tigr_fbmc_inner_receiver2.grc +++ b/apps/grc/paper_tigr_fbmc_inner_receiver2.grc @@ -845,7 +845,7 @@ </param> <param> <key>extra_pad</key> - <value>1</value> + <value>True</value> </param> <param> <key>sel_eq</key> diff --git a/apps/grc/paper_tigr_fbmc_uncoded_transceiver.grc b/apps/grc/paper_tigr_fbmc_uncoded_transceiver.grc index 4cd0ee6..87fe708 100644 --- a/apps/grc/paper_tigr_fbmc_uncoded_transceiver.grc +++ b/apps/grc/paper_tigr_fbmc_uncoded_transceiver.grc @@ -2378,7 +2378,7 @@ </param> <param> <key>extra_pad</key> - <value>1</value> + <value>True</value> </param> <param> <key>alias</key> diff --git a/apps/grc/tigr_fbmc_coded_transceiver.grc b/apps/grc/tigr_fbmc_coded_transceiver.grc index 20e774a..5a192c6 100644 --- a/apps/grc/tigr_fbmc_coded_transceiver.grc +++ b/apps/grc/tigr_fbmc_coded_transceiver.grc @@ -2806,7 +2806,7 @@ </param> <param> <key>extra_pad</key> - <value>1</value> + <value>True</value> </param> <param> <key>alias</key> diff --git a/apps/grc/tigr_fbmc_inner_receiver.grc b/apps/grc/tigr_fbmc_inner_receiver.grc index b34fc83..3d9ec66 100644 --- a/apps/grc/tigr_fbmc_inner_receiver.grc +++ b/apps/grc/tigr_fbmc_inner_receiver.grc @@ -2204,7 +2204,7 @@ </param> <param> <key>extra_pad</key> - <value>1</value> + <value>True</value> </param> <param> <key>sel_eq</key> diff --git a/apps/grc/tigr_fbmc_transceiver.grc b/apps/grc/tigr_fbmc_transceiver.grc index d5e8a2b..9099393 100644 --- a/apps/grc/tigr_fbmc_transceiver.grc +++ b/apps/grc/tigr_fbmc_transceiver.grc @@ -2269,7 +2269,7 @@ </param> <param> <key>extra_pad</key> - <value>1</value> + <value>True</value> </param> <param> <key>alias</key> diff --git a/apps/grc/tigr_fbmc_uncoded_transceiver.grc b/apps/grc/tigr_fbmc_uncoded_transceiver.grc index ac246f8..10f7019 100644 --- a/apps/grc/tigr_fbmc_uncoded_transceiver.grc +++ b/apps/grc/tigr_fbmc_uncoded_transceiver.grc @@ -2233,7 +2233,7 @@ </param> <param> <key>extra_pad</key> - <value>1</value> + <value>True</value> </param> <param> <key>alias</key> diff --git a/apps/grc/tigr_fbmc_usrp_tx.grc b/apps/grc/tigr_fbmc_usrp_tx.grc index 5504f53..f11cc61 100644 --- a/apps/grc/tigr_fbmc_usrp_tx.grc +++ b/apps/grc/tigr_fbmc_usrp_tx.grc @@ -1367,7 +1367,7 @@ </param> <param> <key>extra_pad</key> - <value>1</value> + <value>True</value> </param> <param> <key>alias</key> diff --git a/cmake/Modules/FindITPP.cmake b/cmake/Modules/FindITPP.cmake index f4a0540..1f09141 100644 --- a/cmake/Modules/FindITPP.cmake +++ b/cmake/Modules/FindITPP.cmake @@ -7,25 +7,13 @@ # also defined, but not for general use are # ITPP_LIBRARY, where to find the ITPP library. -#MESSAGE("ITPP_DIR set to ${ITPP_DIR}" ) - FIND_PATH(ITPP_INCLUDE_DIR itpp/itbase.h - ${ITPP_DIR} - /usr/pkgs64/include - /usr/include - NO_DEFAULT_PATH + ${ITPP_DIR}/include ) FIND_LIBRARY(ITPP_LIBRARY - NAMES itpp #itpp_debug + NAMES itpp PATHS ${ITPP_DIR}/libs - ${ITPP_DIR}/itpp/.libs/ - "${ITPP_DIR}\\win32\\lib" - /usr/lib/x86_64-linux-gnu - /usr/pkgs64/lib - /usr/lib64 - /usr/lib - NO_DEFAULT_PATH ) IF (ITPP_LIBRARY AND ITPP_INCLUDE_DIR) @@ -35,7 +23,6 @@ ELSE (ITPP_LIBRARY AND ITPP_INCLUDE_DIR) SET(ITPP_FOUND "NO") ENDIF (ITPP_LIBRARY AND ITPP_INCLUDE_DIR) - IF (ITPP_FOUND) IF (NOT ITPP_FIND_QUIETLY) MESSAGE(STATUS "Found ITPP: ${ITPP_LIBRARIES}") diff --git a/grc/CMakeLists.txt b/grc/CMakeLists.txt index bdef4eb..3314c1a 100644 --- a/grc/CMakeLists.txt +++ b/grc/CMakeLists.txt @@ -17,92 +17,134 @@ # the Free Software Foundation, Inc., 51 Franklin Street, # Boston, MA 02110-1301, USA. install(FILES - ofdm_uhd_transmitter.xml - ofdm_ofdm_pilot_block_inserter.xml - ofdm_fbmc_snr_filter.xml - ofdm_snr_filter.xml - ofdm_scatterplot_subcarrier_filter.xml - ofdm_fbmc_rms_amplifier.xml - ofdm_fbmc_snr_estimator.xml - ofdm_fbmc_postprocess_CTF_estimate.xml - ofdm_pilot_block_filter.xml - ofdm_frame_sampler.xml - ofdm_fbmc_frame_sampler.xml - ofdm_fbmc_pilot_block_filter.xml - ofdm_pilot_subcarrier_filter.xml - ofdm_ber_reference_source.xml - ofdm_recursive_timing_metric.xml + ofdm_CTF_MSE_enhancer.xml ofdm_accumulator_cc.xml - ofdm_autocorrelator_stage1.xml - ofdm_autocorrelator_stage2.xml ofdm_accumulator_ff.xml - ofdm_autocorrelator0.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_equalizer_mimo.xml - ofdm_channel_equalizer.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_divide_frame_fc.xml - ofdm_imgtransfer_sink.xml - ofdm_imgtransfer_src.xml - ofdm_imgtransfer_testkanal.xml ofdm_complex_to_arg.xml ofdm_complex_white_noise.xml ofdm_constellation_sample_filter.xml - ofdm_CTF_MSE_enhancer.xml ofdm_cyclic_prefixer.xml ofdm_depuncture_bb.xml ofdm_depuncture_ff.xml - ofdm_time_sync.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_mapper_bcv.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_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_subc_snr_estimator.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 @@ -111,72 +153,36 @@ install(FILES 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_b.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_vector_padding.xml - ofdm_vector_mask.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 - ofdm_fsm.xml - ofdm_itpp_tdl_channel.xml - ofdm_encoder_bb.xml - ofdm_reference_data_source_02_ib.xml - ofdm_allocation_src.xml - ofdm_allocation_buffer.xml - ofdm_tx_mux_ctrl.xml - ofdm_vector_padding_dc_null.xml - ofdm_snr_estimator_dc_null.xml - ofdm_vector_mask_dc_null.xml - ofdm_lms_phase_tracking_dc_null.xml - ofdm_midamble_insert.xml - ofdm_fbmc_oqam_preprocessing_vcvc.xml - ofdm_fbmc_oqam_postprocessing_vcvc.xml - ofdm_fbmc_insert_preamble_vcvc.xml - ofdm_fbmc_beta_multiplier_vcvc.xml - ofdm_fbmc_separate_vcvc.xml - ofdm_fbmc_polyphase_network_vcvc.xml - ofdm_fbmc_overlapping_parallel_to_serial_vcc.xml - ofdm_fbmc_overlapping_serial_to_parallel_cvc.xml - ofdm_fbmc_pilot_block_inserter.xml - ofdm_fbmc_vector_reshape_vcvc.xml - ofdm_fbmc_vector_copy_vcvc.xml - ofdm_fbmc_junction_vcvc.xml - ofdm_fbmc_remove_preamble_vcvc.xml - ofdm_fbmc_subchannel_processing_vcvc.xml - ofdm_fbmc_weighted_spreading_vcvc.xml - ofdm_fbmc_weighted_despreading_vcvc.xml - ofdm_fbmc_channel_hier_cc.xml - ofdm_fbmc_receiver_hier_cb.xml - ofdm_fbmc_transmitter_hier_bc.xml - ofdm_fbmc_symbol_estimation_vcb.xml - ofdm_fbmc_symbol_creation_bvc.xml - ofdm_fbmc_transmitter_demo.xml - ofdm_fbmc_receiver_demo.xml - ofdm_fbmc_asymmetrical_vector_padding_vcvc.xml - ofdm_fbmc_transmitter_multiuser_bc.xml - ofdm_fbmc_asymmetrical_vector_mask_vcvc.xml - ofdm_fbmc_receiver_multiuser_cb.xml - ofdm_scfdma_subcarrier_mapper_vcvc.xml - ofdm_scfdma_transmitter_bc.xml - ofdm_scfdma_subcarrier_demapper_vcvc.xml - ofdm_scfdma_receiver_cb.xml - ofdm_add_vcc.xml - ofdm_fbmc_insert_preamble_mu_vcvc.xml - ofdm_fbmc_subchannel_processing_mu_vcvc.xml - ofdm_feedback_sink_vf.xml - ofdm_vector_element_vff.xml DESTINATION share/gnuradio/grc/blocks ) diff --git a/grc/ofdm_fbmc_channel_hier_cc.xml b/grc/ofdm_fbmc_channel_hier_cc.xml index 899533d..dbc4c44 100644 --- a/grc/ofdm_fbmc_channel_hier_cc.xml +++ b/grc/ofdm_fbmc_channel_hier_cc.xml @@ -148,18 +148,18 @@ <param> <name>Extra padding</name> <key>extra_pad</key> - <type>enum</type> + <value>False</value> + <type>bool</type> <option> <name>Off</name> - <key>0</key> + <key>False</key> </option> <option> <name>On</name> - <key>1</key> + <key>True</key> </option> </param> - <!-- Make one 'sink' node per input. Sub-nodes: * name (an identifier for the GUI) * type diff --git a/grc/ofdm_fbmc_insert_preamble_mu_vcvc.xml b/grc/ofdm_fbmc_insert_preamble_mu_vcvc.xml index d4e49af..0189d68 100644 --- a/grc/ofdm_fbmc_insert_preamble_mu_vcvc.xml +++ b/grc/ofdm_fbmc_insert_preamble_mu_vcvc.xml @@ -81,14 +81,15 @@ <param> <name>Extra padding</name> <key>extra_pad</key> - <type>enum</type> + <value>False</value> + <type>bool</type> <option> <name>Off</name> - <key>0</key> + <key>False</key> </option> <option> <name>On</name> - <key>1</key> + <key>True</key> </option> </param> diff --git a/grc/ofdm_fbmc_insert_preamble_vcvc.xml b/grc/ofdm_fbmc_insert_preamble_vcvc.xml index 78b8d68..4dc8b28 100644 --- a/grc/ofdm_fbmc_insert_preamble_vcvc.xml +++ b/grc/ofdm_fbmc_insert_preamble_vcvc.xml @@ -48,14 +48,15 @@ <param> <name>Extra padding</name> <key>extra_pad</key> - <type>enum</type> + <value>False</value> + <type>bool</type> <option> <name>Off</name> - <key>0</key> + <key>False</key> </option> <option> <name>On</name> - <key>1</key> + <key>True</key> </option> </param> diff --git a/grc/ofdm_fbmc_receiver_demo.xml b/grc/ofdm_fbmc_receiver_demo.xml index 1a78a41..457525a 100644 --- a/grc/ofdm_fbmc_receiver_demo.xml +++ b/grc/ofdm_fbmc_receiver_demo.xml @@ -90,14 +90,15 @@ <param> <name>Extra padding</name> <key>extra_pad</key> - <type>enum</type> + <value>False</value> + <type>bool</type> <option> <name>Off</name> - <key>0</key> + <key>False</key> </option> <option> <name>On</name> - <key>1</key> + <key>True</key> </option> </param> <param> diff --git a/grc/ofdm_fbmc_receiver_hier_cb.xml b/grc/ofdm_fbmc_receiver_hier_cb.xml index 4b82a6b..6d793d9 100644 --- a/grc/ofdm_fbmc_receiver_hier_cb.xml +++ b/grc/ofdm_fbmc_receiver_hier_cb.xml @@ -90,14 +90,15 @@ <param> <name>Extra padding</name> <key>extra_pad</key> - <type>enum</type> + <value>False</value> + <type>bool</type> <option> <name>Off</name> - <key>0</key> + <key>False</key> </option> <option> <name>On</name> - <key>1</key> + <key>True</key> </option> </param> <param> diff --git a/grc/ofdm_fbmc_receiver_multiuser_cb.xml b/grc/ofdm_fbmc_receiver_multiuser_cb.xml index c9ac6df..4d7a976 100644 --- a/grc/ofdm_fbmc_receiver_multiuser_cb.xml +++ b/grc/ofdm_fbmc_receiver_multiuser_cb.xml @@ -90,14 +90,15 @@ <param> <name>Extra padding</name> <key>extra_pad</key> - <type>enum</type> + <value>False</value> + <type>bool</type> <option> <name>Off</name> - <key>0</key> + <key>False</key> </option> <option> <name>On</name> - <key>1</key> + <key>True</key> </option> </param> <param> diff --git a/grc/ofdm_fbmc_remove_preamble_vcvc.xml b/grc/ofdm_fbmc_remove_preamble_vcvc.xml index 9c4bc17..e07dacf 100644 --- a/grc/ofdm_fbmc_remove_preamble_vcvc.xml +++ b/grc/ofdm_fbmc_remove_preamble_vcvc.xml @@ -48,14 +48,15 @@ <param> <name>Extra padding</name> <key>extra_pad</key> - <type>enum</type> + <value>False</value> + <type>bool</type> <option> <name>Off</name> - <key>0</key> + <key>False</key> </option> <option> <name>On</name> - <key>1</key> + <key>True</key> </option> </param> diff --git a/grc/ofdm_fbmc_subchannel_processing_mu_vcvc.xml b/grc/ofdm_fbmc_subchannel_processing_mu_vcvc.xml index 52c7db5..9a14b8a 100644 --- a/grc/ofdm_fbmc_subchannel_processing_mu_vcvc.xml +++ b/grc/ofdm_fbmc_subchannel_processing_mu_vcvc.xml @@ -48,14 +48,15 @@ <param> <name>Extra padding</name> <key>extra_pad</key> - <type>enum</type> + <value>False</value> + <type>bool</type> <option> <name>Off</name> - <key>0</key> + <key>False</key> </option> <option> <name>On</name> - <key>1</key> + <key>True</key> </option> </param> <param> @@ -94,4 +95,4 @@ <type>complex</type> <vlen>$M</vlen> </source> -</block> \ No newline at end of file +</block> diff --git a/grc/ofdm_fbmc_subchannel_processing_vcvc.xml b/grc/ofdm_fbmc_subchannel_processing_vcvc.xml index 2239e67..68e098a 100644 --- a/grc/ofdm_fbmc_subchannel_processing_vcvc.xml +++ b/grc/ofdm_fbmc_subchannel_processing_vcvc.xml @@ -46,14 +46,15 @@ <param> <name>Extra padding</name> <key>extra_pad</key> - <type>enum</type> + <value>False</value> + <type>bool</type> <option> <name>Off</name> - <key>0</key> + <key>False</key> </option> <option> <name>On</name> - <key>1</key> + <key>True</key> </option> </param> <param> diff --git a/grc/ofdm_fbmc_transmitter_demo.xml b/grc/ofdm_fbmc_transmitter_demo.xml index b51014c..cbb95ae 100644 --- a/grc/ofdm_fbmc_transmitter_demo.xml +++ b/grc/ofdm_fbmc_transmitter_demo.xml @@ -84,18 +84,17 @@ <param> <name>Extra padding</name> <key>extra_pad</key> - <type>enum</type> + <value>False</value> + <type>bool</type> <option> <name>Off</name> - <key>0</key> + <key>False</key> </option> <option> <name>On</name> - <key>1</key> + <key>True</key> </option> </param> - - <!-- Make one 'sink' node per input. Sub-nodes: * name (an identifier for the GUI) diff --git a/grc/ofdm_fbmc_transmitter_hier_bc.xml b/grc/ofdm_fbmc_transmitter_hier_bc.xml index 11cebdf..fa5df48 100644 --- a/grc/ofdm_fbmc_transmitter_hier_bc.xml +++ b/grc/ofdm_fbmc_transmitter_hier_bc.xml @@ -84,18 +84,17 @@ <param> <name>Extra padding</name> <key>extra_pad</key> - <type>enum</type> + <value>False</value> + <type>bool</type> <option> <name>Off</name> - <key>0</key> + <key>False</key> </option> <option> <name>On</name> - <key>1</key> + <key>True</key> </option> </param> - - <!-- Make one 'sink' node per input. Sub-nodes: * name (an identifier for the GUI) diff --git a/grc/ofdm_fbmc_transmitter_multiuser_bc.xml b/grc/ofdm_fbmc_transmitter_multiuser_bc.xml index f382755..12d3a44 100644 --- a/grc/ofdm_fbmc_transmitter_multiuser_bc.xml +++ b/grc/ofdm_fbmc_transmitter_multiuser_bc.xml @@ -90,14 +90,15 @@ <param> <name>Extra padding</name> <key>extra_pad</key> - <type>enum</type> + <value>False</value> + <type>bool</type> <option> <name>Off</name> - <key>0</key> + <key>False</key> </option> <option> <name>On</name> - <key>1</key> + <key>True</key> </option> </param> diff --git a/include/ofdm/ofdmi_fast_math.h b/include/ofdm/ofdmi_fast_math.h index 0488d73..085eae7 100644 --- a/include/ofdm/ofdmi_fast_math.h +++ b/include/ofdm/ofdmi_fast_math.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_OFDMI_FAST_MATH_H_ #define INCLUDED_OFDMI_FAST_MATH_H_ +#include <pmmintrin.h> typedef float v4sf __attribute__ ((vector_size (16))); typedef float const v4sfc __attribute__ ((vector_size (16))); @@ -52,31 +53,31 @@ perform_frequency_shift( gr_complex const * const in, gr_complex * const out, step_phasor.v[2] = std::cos( 2 * phase_step ); step_phasor.v[3] = std::sin( 2 * phase_step ); - v4sfc * vin = reinterpret_cast< v4sfc * >( in ); + const v4sfc * vin = reinterpret_cast< const v4sfc * >( in ); v4sf * vout = reinterpret_cast< v4sf * >( out ); // complex multiplication, with gr_expj( phase ) // phase increased for every complex sample for( int j = 0; j < vlen/2; ++j ) { - v4sf x0 = __builtin_ia32_movsldup( phasor.vec ); + v4sf x0 = _mm_moveldup_ps( phasor.vec ); v4sf x1 = vin[ j ]; x0 *= x1; - x1 = __builtin_ia32_shufps( x1, x1, 0xB1 ); - v4sf x2 = __builtin_ia32_movshdup( phasor.vec ); + x1 = _mm_shuffle_ps( x1, x1, 0xB1 ); + v4sf x2 = _mm_movehdup_ps( phasor.vec ); x2 *= x1; x0 = __builtin_ia32_addsubps( x0, x2 ); vout[ j ] = x0; - x0 = __builtin_ia32_movsldup( phasor.vec ); + x0 = _mm_moveldup_ps( phasor.vec ); x1 = step_phasor.vec; x0 *= x1; - x1 = __builtin_ia32_shufps( x1, x1, 0xB1 ); - x2 = __builtin_ia32_movshdup( phasor.vec ); + x1 = _mm_shuffle_ps( x1, x1, 0xB1 ); + x2 = _mm_movehdup_ps( phasor.vec ); x2 *= x1; x0 = __builtin_ia32_addsubps( x0, x2 ); @@ -101,18 +102,18 @@ void multiply_complex_vector( gr_complex const * const x, gr_complex const * const y, gr_complex * const out, int vlen ) { - v4sfc * vx = reinterpret_cast< v4sfc * >( x ); - v4sfc * vy = reinterpret_cast< v4sfc * >( y ); + const v4sfc * vx = reinterpret_cast< const v4sfc * >( x ); + const v4sfc * vy = reinterpret_cast< const v4sfc * >( y ); v4sf * vout = reinterpret_cast< v4sf * >( out ); for( int j = 0; j < vlen/2; ++j ) { - v4sf x0 = __builtin_ia32_movsldup( vx[ j ] ); + v4sf x0 = _mm_moveldup_ps( vx[ j ] ); v4sf x1 = vy[ j ]; x0 *= x1; - x1 = __builtin_ia32_shufps( x1, x1, 0xB1 ); - v4sf x2 = __builtin_ia32_movshdup( vx[ j ] ); + x1 = _mm_shuffle_ps( x1, x1, 0xB1 ); + v4sf x2 = _mm_movehdup_ps( vx[ j ] ); x2 *= x1; x0 = __builtin_ia32_addsubps( x0, x2 ); diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index 959c59c..f3a83b9 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -167,7 +167,7 @@ list(APPEND ofdm_sources fbmc_subchannel_processing_mu_vcvc_impl.cc feedback_sink_vf_impl.cc vector_element_vff_impl.cc) -SET ( CMAKE_CXX_FLAGS "-O3 -march=core2 -mfpmath=sse" ) +SET ( CMAKE_CXX_FLAGS "-O3 -msse3 -march=core2 -mfpmath=sse" ) add_library(gnuradio-ofdm SHARED ${ofdm_sources}) target_link_libraries(gnuradio-ofdm ${Boost_LIBRARIES} diff --git a/lib/CTF_MSE_enhancer_impl.cc b/lib/CTF_MSE_enhancer_impl.cc index b681480..ddc1458 100644 --- a/lib/CTF_MSE_enhancer_impl.cc +++ b/lib/CTF_MSE_enhancer_impl.cc @@ -27,7 +27,7 @@ #include <gnuradio/io_signature.h> #include "CTF_MSE_enhancer_impl.h" - +#include <pmmintrin.h> #include "malloc16.h" #include <iostream> @@ -168,12 +168,12 @@ namespace gr { for( int j = 0; j < d_vlen/4; ++j ) { - v4sf x0 = __builtin_ia32_movsldup( vfbuf4[ j ] ); + v4sf x0 = _mm_moveldup_ps( vfbuf4[ j ] ); v4sf x1 = vffilt[ j ]; x0 *= x1; - x1 = __builtin_ia32_shufps( x1, x1, 0xB1 ); - v4sf x2 = __builtin_ia32_movshdup( vfbuf4[ j ] ); + x1 = _mm_shuffle_ps( x1, x1, 0xB1 ); + v4sf x2 = _mm_movehdup_ps( vfbuf4[ j ] ); x2 *= x1; x0 = __builtin_ia32_addsubps( x0, x2 ); diff --git a/lib/accumulator_cc_impl.cc b/lib/accumulator_cc_impl.cc index 5c820ae..4fa6e3a 100644 --- a/lib/accumulator_cc_impl.cc +++ b/lib/accumulator_cc_impl.cc @@ -70,6 +70,7 @@ namespace gr { } d_accum = acc; + return(noutput_items); } } /* namespace ofdm */ diff --git a/lib/allocation_buffer_impl.cc b/lib/allocation_buffer_impl.cc index 57e8db7..050dadc 100644 --- a/lib/allocation_buffer_impl.cc +++ b/lib/allocation_buffer_impl.cc @@ -51,7 +51,7 @@ namespace gr { ,d_data_symbols(data_symbols) ,d_allocation_buffer(256) //TODO: id size hardcoded ,d_coding( coding ) - ,d_bitspermode( {1,2,3,4,6,8,9,10,12}) + ,d_bitspermode{1,2,3,4,6,8,9,10,12} { std::vector<int> out_sig(3); out_sig[0] = sizeof(int); // bitcount diff --git a/lib/allocation_src_impl.cc b/lib/allocation_src_impl.cc index ccd7917..e2426e8 100644 --- a/lib/allocation_src_impl.cc +++ b/lib/allocation_src_impl.cc @@ -62,8 +62,8 @@ namespace gr { ,d_subcarriers(subcarriers) ,d_data_symbols(data_symbols) ,d_coding( coding ) - ,d_bitspermode( {1,2,3,4,6,8,9,10,12}) - ,d_modulbitspermode( {1,2,2,4,4,6,6,6,8} ) + ,d_bitspermode{1,2,3,4,6,8,9,10,12} + ,d_modulbitspermode{1,2,2,4,4,6,6,6,8} ,d_modulbitcount_out(2000) ,d_allocation_scheme(CM) ,d_power_limit(subcarriers) @@ -436,7 +436,7 @@ namespace gr { d_amplitude_abs += level - d_gap/d_resource_blocks.snr[i]; } //Set minimum to 0.01 possibility for improvement - d_amplitude_abs = std::max(0.01, sqrt(d_amplitude_abs/d_resource_blocks.number)); + d_amplitude_abs = std::max(float(0.01), std::sqrt(d_amplitude_abs/float(d_resource_blocks.number))); //Allocate for(int i = 0; i < d_resource_blocks.number; i++) diff --git a/lib/autocorrelator_stage1_impl.cc b/lib/autocorrelator_stage1_impl.cc index 61d6609..fd95a8e 100644 --- a/lib/autocorrelator_stage1_impl.cc +++ b/lib/autocorrelator_stage1_impl.cc @@ -27,6 +27,7 @@ #include <gnuradio/io_signature.h> #include "autocorrelator_stage1_impl.h" #include <iostream> +#include <pmmintrin.h> namespace gr { namespace ofdm { @@ -105,24 +106,24 @@ namespace gr { v4sf const in_del0 = *in_del; v4sf const in_del1 = *(in_del+1); - v4sf x0 = __builtin_ia32_movsldup( in0 ); - v4sf x1 = __builtin_ia32_xorps( in_del0, xsign ); // conjugate + v4sf x0 = _mm_moveldup_ps( in0 ); + v4sf x1 = _mm_xor_ps( in_del0, xsign ); // conjugate x0 *= x1; - x1 = __builtin_ia32_shufps( x1, x1, 0xB1 ); - v4sf x2 = __builtin_ia32_movshdup( in0 ); + x1 = _mm_shuffle_ps( x1, x1, 0xB1 ); + v4sf x2 = _mm_movehdup_ps( in0 ); x2 *= x1; x0 = __builtin_ia32_addsubps( x0, x2 ); p[0] = x0; - x0 = __builtin_ia32_movsldup( in1 ); - x1 = __builtin_ia32_xorps( in_del1, xsign ); // conjugate + x0 = _mm_moveldup_ps( in1 ); + x1 = _mm_xor_ps( in_del1, xsign ); // conjugate x0 *= x1; - x1 = __builtin_ia32_shufps( x1, x1, 0xB1 ); - x2 = __builtin_ia32_movshdup( in1 ); + x1 = _mm_shuffle_ps( x1, x1, 0xB1 ); + x2 = _mm_movehdup_ps( in1 ); x2 *= x1; x0 = __builtin_ia32_addsubps( x0, x2 ); diff --git a/lib/autocorrelator_stage2_impl.cc b/lib/autocorrelator_stage2_impl.cc index c967bec..77a5263 100644 --- a/lib/autocorrelator_stage2_impl.cc +++ b/lib/autocorrelator_stage2_impl.cc @@ -26,6 +26,7 @@ #include <gnuradio/io_signature.h> #include "autocorrelator_stage2_impl.h" +#include <xmmintrin.h> namespace gr { namespace ofdm { diff --git a/lib/channel_equalizer_impl.cc b/lib/channel_equalizer_impl.cc index f77323c..031a077 100644 --- a/lib/channel_equalizer_impl.cc +++ b/lib/channel_equalizer_impl.cc @@ -31,6 +31,7 @@ #include <algorithm> #include "malloc16.h" +#include <pmmintrin.h> #define DEBUG 0 @@ -158,12 +159,12 @@ namespace gr { { for( int j = 0; j < d_vlen/2; ++j ) { - v4sf x0 = __builtin_ia32_movsldup( vin[ j ] ); + v4sf x0 = _mm_moveldup_ps( vin[ j ] ); v4sf x1 = vbuf[ j ]; x0 *= x1; - x1 = __builtin_ia32_shufps( x1, x1, 0xB1 ); - v4sf x2 = __builtin_ia32_movshdup( vin[ j ] ); + x1 = _mm_shuffle_ps( x1, x1, 0xB1 ); + v4sf x2 = _mm_movehdup_ps( vin[ j ] ); x2 *= x1; x0 = __builtin_ia32_addsubps( x0, x2 ); diff --git a/lib/depuncture_bb_impl.cc b/lib/depuncture_bb_impl.cc index efb199c..833703a 100644 --- a/lib/depuncture_bb_impl.cc +++ b/lib/depuncture_bb_impl.cc @@ -59,7 +59,7 @@ namespace gr { , d_need_modemap( 1 ) , d_modemap(new char[vlen]) //d_rep_per_mode( {1,1,1,1,1,1,1,1,1} ) // test case - , d_rep_per_mode( {2,4,1,8,2,4,3,2,4} ) + , d_rep_per_mode{2,4,1,8,2,4,3,2,4} // C++11 only: consider std::array {} void depuncture_bb_impl::set_punctpat(char c_mode) diff --git a/lib/depuncture_ff_impl.cc b/lib/depuncture_ff_impl.cc index be50800..0c6f2d5 100644 --- a/lib/depuncture_ff_impl.cc +++ b/lib/depuncture_ff_impl.cc @@ -59,7 +59,7 @@ namespace gr { , d_need_modemap( 1 ) , d_modemap(new char[vlen]) //d_rep_per_mode( {1,1,1,1,1,1,1,1,1} ) // test case - , d_rep_per_mode( {2,4,1,8,2,4,3,2,4} ) + , d_rep_per_mode{2,4,1,8,2,4,3,2,4} // C++11 only: consider std::array {} void depuncture_ff_impl::set_punctpat(char c_mode) diff --git a/lib/extract_block_from_frame_impl.cc b/lib/extract_block_from_frame_impl.cc index 42e60c6..4e99573 100644 --- a/lib/extract_block_from_frame_impl.cc +++ b/lib/extract_block_from_frame_impl.cc @@ -91,7 +91,7 @@ namespace gr { { if( frame_start[i] != 0 ) { - d_ctr == 0; + d_ctr = 0; } if( d_ctr < d_block_no ) diff --git a/lib/fbmc_polyphase_network_vcvc_impl.cc b/lib/fbmc_polyphase_network_vcvc_impl.cc index 98368f0..599bb87 100644 --- a/lib/fbmc_polyphase_network_vcvc_impl.cc +++ b/lib/fbmc_polyphase_network_vcvc_impl.cc @@ -67,7 +67,7 @@ namespace gr { sum4( static_cast< gr_complex * >( malloc16Align( sizeof( gr_complex ) *M ) ) ),*/ d_reverse(reverse) { - assert(M>0 && log(M)/log(2) = (int)(log(M)/log(2))); + assert(M>0 && log(M)/log(2) == (int)(log(M)/log(2))); assert(K==2 || K==3 || K==4); d_taps = new float[d_lp+1]; createTaps(d_M,d_K,d_lp,d_reverse,&d_taps[0]); @@ -91,9 +91,9 @@ namespace gr { { // coefficients float **P = new float*[3]; - float P0[]={1, sqrt(2)/2}; //K=2 + float P0[]={1, sqrtf(2)/2}; //K=2 float P1[]={1,0.911438,0.411438}; //K=3 - float P2[]={1,0.97195983,sqrt(2)/2,0.23514695}; //K=4 + float P2[]={1,0.97195983,sqrtf(2)/2,0.23514695}; //K=4 P[0] = P0; P[1] = P1; P[2] = P2; diff --git a/lib/fbmc_subchannel_processing_mu_vcvc_impl.cc b/lib/fbmc_subchannel_processing_mu_vcvc_impl.cc index bb96f3d..c364de4 100644 --- a/lib/fbmc_subchannel_processing_mu_vcvc_impl.cc +++ b/lib/fbmc_subchannel_processing_mu_vcvc_impl.cc @@ -241,17 +241,18 @@ namespace gr { gr_complex EQ1, EQ2; if(d_sel_eq==1){ // linear interpolation - EQ1 = (EQmin+EQi)/gr_complex(2,0); - EQ2 = (EQplus+EQi)/gr_complex(2,0); + const float ro = 0.5; + EQ1 = (EQmin+EQi)*ro; + EQ2 = (EQplus+EQi)*ro; }else if(d_sel_eq==2){ - float ro = 0.5; - EQ1 = (gr_complex)EQmin*pow((EQi/EQmin),ro); - EQ2 = (gr_complex)EQi*pow((EQplus/EQi),ro); + const float ro = 0.5; + EQ1 = EQmin*pow((EQi/EQmin),ro); + EQ2 = EQi*pow((EQplus/EQi),ro); } - d_eq_coef[i]= pow(gr_complex(-1,0),i)*((EQ1-gr_complex(2,0)*EQi+EQ2)+gr_complex(0,1)*(EQ2-EQ1))/gr_complex(4,0); - d_eq_coef[i+d_M]= (gr_complex)(EQ1+EQ2)/gr_complex(2,0); - d_eq_coef[i+2*d_M]= pow(gr_complex(-1,0),i)*((EQ1-gr_complex(2,0)*EQi+EQ2)-gr_complex(0,1)*(EQ2-EQ1))/gr_complex(4,0); + d_eq_coef[i]= powf(-1.0,i)*((EQ1-(float(2.0)*EQi)+EQ2)+(gr_complex(0.0,1.0)*(EQ2-EQ1)))/float(4.0); + d_eq_coef[i+d_M]= (EQ1+EQ2)/float(2.0); + d_eq_coef[i+2*d_M]= powf(-1.0,i)*((EQ1-(float(2.0)*EQi)+EQ2)-(gr_complex(0.0,1.0)*(EQ2-EQ1)))/float(4.0); // //logging // equalizer_data<<(fr-1)<<"\t"<<i<<"\t"<<real(d_estimation[i])<<"\t"<<imag(d_estimation[i])<<"j\t";//((imag(d_estimation[i])>0)?"+":"-") diff --git a/lib/fbmc_subchannel_processing_vcvc_impl.cc b/lib/fbmc_subchannel_processing_vcvc_impl.cc index df46abd..3625d24 100644 --- a/lib/fbmc_subchannel_processing_vcvc_impl.cc +++ b/lib/fbmc_subchannel_processing_vcvc_impl.cc @@ -457,6 +457,7 @@ namespace gr { fbmc_subchannel_processing_vcvc_impl::get_estimation(const gr_complex * start) { // int offset = estimation_point - d_M+1; +#if 0 /* for(int i=0;i<d_M;i++){ d_estimation[i] = *(start-d_M+i+1)/(d_preamble[i]*normalization_factor);//*gr_complex(0.6863,0)); // // *(start-d_M+i+1) = d_estimation[i]; @@ -480,10 +481,10 @@ namespace gr { volk_32f_x2_divide_32f(&d_divide[0],&d_norm_vect[0],&d_squared[0],d_M); volk_32fc_32f_multiply_32fc(&d_estimation[0],&d_conj[0],&d_divide[0],d_M); */ - +#endif volk_32fc_32f_multiply_32fc(&d_conj[0],start,&d_preamble_1[0],d_M); volk_32fc_32f_multiply_32fc(&d_estimation[0],&d_conj[0],&d_norm_vect[0],d_M); - +#if 0 /* std::cout<<"FRAME: "<<std::endl; for(int i=0;i<d_M/2;i++){ @@ -518,6 +519,7 @@ namespace gr { volk_32f_x2_add_32f(&d_estimation_q[0],&d_estimation_1_q[0],&d_estimation_2_q[0],d_M); volk_32f_x2_interleave_32fc(&d_estimation[0],&d_estimation_i[0],&d_estimation_q[0],d_M); */ +#endif //std::cout<<"FRAME: "<<std::endl; for(int i=0;i<d_M/2;i++){ // std::cout<<d_estimation[i]<<std::endl; @@ -549,25 +551,26 @@ namespace gr { gr_complex EQ1, EQ2; if(d_sel_eq==1){ // linear interpolation - EQ1 = (EQmin+EQi)/gr_complex(2,0); - EQ2 = (EQplus+EQi)/gr_complex(2,0); + float ro = 0.5; + EQ1 = (EQmin+EQi)*ro; + EQ2 = (EQplus+EQi)*ro; }else if(d_sel_eq==2){ float ro = 0.5; - EQ1 = (gr_complex)EQmin*pow((EQi/EQmin),ro); - EQ2 = (gr_complex)EQi*pow((EQplus/EQi),ro); + EQ1 = EQmin*pow((EQi/EQmin),ro); + EQ2 = EQi*pow((EQplus/EQi),ro); } // 0:2-> new implementation, 3< -> old implementation if(order == 0){ - d_eq_coef[i+2*d_M]= pow(gr_complex(-1,0),i)*((EQ1-gr_complex(2,0)*EQi+EQ2)-gr_complex(0,1)*(EQ2-EQ1))/gr_complex(4,0); // change this first + d_eq_coef[i+2*d_M]= powf(-1.0,i)*((EQ1-(float(2.0)*EQi)+EQ2)-(gr_complex(0,1)*(EQ2-EQ1)))/float(4.0); // change this first }else if (order == 1){ - d_eq_coef[i+d_M]= (gr_complex)(EQ1+EQ2)/gr_complex(2,0); // then this + d_eq_coef[i+d_M]= (EQ1+EQ2)/float(2.0); // then this }else if(order == 2){ - d_eq_coef[i]= pow(gr_complex(-1,0),i)*((EQ1-gr_complex(2,0)*EQi+EQ2)+gr_complex(0,1)*(EQ2-EQ1))/gr_complex(4,0); // lastly this + d_eq_coef[i]= powf(-1.0,i)*((EQ1-(float(2.0)*EQi)+EQ2)+(gr_complex(0,1)*(EQ2-EQ1)))/float(4.0); // lastly this }else{ - d_eq_coef[i]= pow(gr_complex(-1,0),i)*((EQ1-gr_complex(2,0)*EQi+EQ2)+gr_complex(0,1)*(EQ2-EQ1))/gr_complex(4,0); - d_eq_coef[i+d_M]= (gr_complex)(EQ1+EQ2)/gr_complex(2,0); - d_eq_coef[i+2*d_M]= pow(gr_complex(-1,0),i)*((EQ1-gr_complex(2,0)*EQi+EQ2)-gr_complex(0,1)*(EQ2-EQ1))/gr_complex(4,0); + d_eq_coef[i]= powf(-1.0,i)*((EQ1-(float(2.0)*EQi)+EQ2)+(gr_complex(0,1)*(EQ2-EQ1)))/float(4.0); + d_eq_coef[i+d_M]= (EQ1+EQ2)/float(2.0); + d_eq_coef[i+2*d_M]= powf(-1.0,i)*((EQ1-(float(2.0)*EQi)+EQ2)-(gr_complex(0,1)*(EQ2-EQ1)))/float(4.0); } // //logging diff --git a/lib/fbmc_weighted_despreading_vcvc_impl.cc b/lib/fbmc_weighted_despreading_vcvc_impl.cc index ca48241..55bd8d8 100644 --- a/lib/fbmc_weighted_despreading_vcvc_impl.cc +++ b/lib/fbmc_weighted_despreading_vcvc_impl.cc @@ -47,7 +47,7 @@ namespace gr { d_h(new gr_complex[K]) { assert(K==2 || K==3 || K==4); - assert(M>0 && log(M)/log(2) = (int)(log(M)/log(2))); + assert(M>0 && log(M)/log(2) == (int)(log(M)/log(2))); initialize_vector(d_h,K); } diff --git a/lib/fbmc_weighted_spreading_vcvc_impl.cc b/lib/fbmc_weighted_spreading_vcvc_impl.cc index 6180cc1..501a0ae 100644 --- a/lib/fbmc_weighted_spreading_vcvc_impl.cc +++ b/lib/fbmc_weighted_spreading_vcvc_impl.cc @@ -47,7 +47,7 @@ namespace gr { d_h(new gr_complex[K]) { assert(K==2 || K==3 || K==4); - assert(M>0 && log(M)/log(2) = (int)(log(M)/log(2))); + assert(M>0 && log(M)/log(2) == (int)(log(M)/log(2))); initialize_vector(d_h,K); // std::cout<<"before"; // for(int i=0;i<d_K;i++) std::cout<<d_h[i]<<std::endl; diff --git a/lib/find_cir_shift_impl.cc b/lib/find_cir_shift_impl.cc index f3a2500..96f6635 100644 --- a/lib/find_cir_shift_impl.cc +++ b/lib/find_cir_shift_impl.cc @@ -27,6 +27,7 @@ #include <gnuradio/io_signature.h> #include "find_cir_shift_impl.h" +#include <pmmintrin.h> #include "malloc16.h" #include <iostream> @@ -160,12 +161,12 @@ namespace gr { for( int j = 0; j < d_vlen/4; ++j ) { - v4sf x0 = __builtin_ia32_movsldup( vfbuf4[ j ] ); + v4sf x0 = _mm_moveldup_ps( vfbuf4[ j ] ); v4sf x1 = vffilt[ j ]; x0 *= x1; - x1 = __builtin_ia32_shufps( x1, x1, 0xB1 ); - v4sf x2 = __builtin_ia32_movshdup( vfbuf4[ j ] ); + x1 = _mm_shuffle_ps( x1, x1, 0xB1 ); + v4sf x2 = _mm_movehdup_ps( vfbuf4[ j ] ); x2 *= x1; x0 = __builtin_ia32_addsubps( x0, x2 ); diff --git a/lib/itpp_tdl_channel_impl.cc b/lib/itpp_tdl_channel_impl.cc index ee0938f..cb2050f 100644 --- a/lib/itpp_tdl_channel_impl.cc +++ b/lib/itpp_tdl_channel_impl.cc @@ -359,6 +359,7 @@ namespace gr { } } assert(0 && "failed to translate"); + return((T2)(-1)); } template < typename T1, typename T2 > @@ -373,6 +374,7 @@ namespace gr { } } assert(0 && "failed to translate"); + return((T1)(-1)); } #define ENUM_FIRST_TO_SECOND( x ) \ diff --git a/lib/multiply_const_vcc_impl.cc b/lib/multiply_const_vcc_impl.cc index 94bbfff..e8678c9 100644 --- a/lib/multiply_const_vcc_impl.cc +++ b/lib/multiply_const_vcc_impl.cc @@ -27,6 +27,7 @@ #include <gnuradio/io_signature.h> #include "multiply_const_vcc_impl.h" +#include <pmmintrin.h> #include "malloc16.h" #include <iostream> @@ -85,12 +86,12 @@ namespace gr { { for( int j = 0; j < d_vlen/2; ++j ) { - v4sf x0 = __builtin_ia32_movsldup( buf[ j ] ); + v4sf x0 = _mm_moveldup_ps( buf[ j ] ); v4sf x1 = in[ j ]; x0 *= x1; - x1 = __builtin_ia32_shufps( x1, x1, 0xB1 ); - v4sf x2 = __builtin_ia32_movshdup( buf[ j ] ); + x1 = _mm_shuffle_ps( x1, x1, 0xB1 ); + v4sf x2 = _mm_movehdup_ps( buf[ j ] ); x2 *= x1; x0 = __builtin_ia32_addsubps( x0, x2 ); diff --git a/lib/puncture_bb_impl.cc b/lib/puncture_bb_impl.cc index eac25ca..13cc801 100644 --- a/lib/puncture_bb_impl.cc +++ b/lib/puncture_bb_impl.cc @@ -58,7 +58,7 @@ namespace gr { , d_need_modemap( 1 ) , d_modemap(new char[vlen]) //d_rep_per_mode( {1,1,1,1,1,1,1,1,1} ) // test case - , d_rep_per_mode( {2,4,1,8,2,4,3,2,4} ) + , d_rep_per_mode{2,4,1,8,2,4,3,2,4} // C++11 only: consider std::array { set_relative_rate(1.0/6.0); } diff --git a/lib/repetition_encoder_sb_impl.cc b/lib/repetition_encoder_sb_impl.cc index 95b4eb3..b1124ee 100644 --- a/lib/repetition_encoder_sb_impl.cc +++ b/lib/repetition_encoder_sb_impl.cc @@ -90,7 +90,7 @@ namespace gr { //and write it bit by bit to the output for (unsigned short bit = 0; bit < d_input_bits; bit++) { - out[output_pos++] = ((char)(in[item] >> bit)) & 1 + out[output_pos++] = (((char)(in[item] >> bit)) & 1) ^ d_whitener[reps*d_input_bits+bit]; } } diff --git a/lib/skip_impl.cc b/lib/skip_impl.cc index 592ecda..1a2d9be 100644 --- a/lib/skip_impl.cc +++ b/lib/skip_impl.cc @@ -193,7 +193,7 @@ namespace gr { int skip_impl::fixed_rate_ninput_to_noutput(int ninput_items) { - return std::max(0U,ninput_items * (d_blocklen-d_skip)/d_blocklen); + return std::max(0,ninput_items * int ((d_blocklen-d_skip)/d_blocklen)); } diff --git a/lib/util_bmp.cc b/lib/util_bmp.cc index e151a10..e29b4ed 100644 --- a/lib/util_bmp.cc +++ b/lib/util_bmp.cc @@ -1,6 +1,5 @@ #include <stdio.h> #include <cstdlib> -#include <malloc.h> #include <ofdm/util_endian.h> #include <ofdm/util_bmp.h> diff --git a/python/ofdm/CMakeLists.txt b/python/ofdm/CMakeLists.txt index d30b694..9bd5c27 100644 --- a/python/ofdm/CMakeLists.txt +++ b/python/ofdm/CMakeLists.txt @@ -63,13 +63,8 @@ GR_PYTHON_INSTALL( transmit_path.py fbmc_transmit_path.py scfdma_receiver_cb.py - fbmc_insert_preamble_mu_vcvc.py DESTINATION bin -) - -GR_PYTHON_INSTALL( - FILES - configparse.py - DESTINATION ${GR_PYTHON_DIR} + fbmc_insert_preamble_mu_vcvc.py DESTINATION + ${GR_PYTHON_DIR}/ofdm ) GR_PYTHON_INSTALL( @@ -78,6 +73,7 @@ GR_PYTHON_INSTALL( autocorrelator.py channel.py common_options.py + configparse.py delaylines.py file_psd.py fusb_options.py