aboutsummaryrefslogtreecommitdiffstats
path: root/host/lib/rfnoc/fir_block_ctrl_impl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'host/lib/rfnoc/fir_block_ctrl_impl.cpp')
-rw-r--r--host/lib/rfnoc/fir_block_ctrl_impl.cpp78
1 files changed, 0 insertions, 78 deletions
diff --git a/host/lib/rfnoc/fir_block_ctrl_impl.cpp b/host/lib/rfnoc/fir_block_ctrl_impl.cpp
deleted file mode 100644
index a4106111e..000000000
--- a/host/lib/rfnoc/fir_block_ctrl_impl.cpp
+++ /dev/null
@@ -1,78 +0,0 @@
-//
-// Copyright 2014-2018 Ettus Research, a National Instruments Company
-//
-// SPDX-License-Identifier: GPL-3.0-or-later
-//
-
-#include <uhd/convert.hpp>
-#include <uhd/rfnoc/fir_block_ctrl.hpp>
-#include <uhd/utils/log.hpp>
-
-using namespace uhd::rfnoc;
-
-class fir_block_ctrl_impl : public fir_block_ctrl
-{
-public:
- static const uint32_t RB_NUM_TAPS = 0;
- static const uint32_t SR_RELOAD = 128;
- static const uint32_t SR_RELOAD_TLAST = 129;
- static const uint32_t SR_CONFIG = 130;
-
- UHD_RFNOC_BLOCK_CONSTRUCTOR(fir_block_ctrl),
- _item_type("sc16") // We only support sc16 in this block
- {
- _n_taps = uint32_t(user_reg_read64(RB_NUM_TAPS));
- UHD_LOGGER_DEBUG(unique_id())
- << "fir_block::fir_block() n_taps ==" << _n_taps << std::endl;
- UHD_ASSERT_THROW(_n_taps);
-
- // Default to Dirac impulse
- std::vector<int> default_taps(1, 20000);
- set_taps(default_taps);
- }
-
- void set_taps(const std::vector<int>& taps_)
- {
- UHD_LOGGER_TRACE(unique_id()) << "fir_block::set_taps()" << std::endl;
- if (taps_.size() > _n_taps) {
- throw uhd::value_error(
- str(boost::format("FIR block: Too many filter coefficients! Provided %d, "
- "FIR allows %d.\n")
- % taps_.size() % _n_taps));
- }
- for (size_t i = 0; i < taps_.size(); i++) {
- if (taps_[i] > 32767 || taps_[i] < -32768) {
- throw uhd::value_error(
- str(boost::format("FIR block: Coefficient %d out of range! Value %d, "
- "Allowed range [-32768,32767].\n")
- % i % taps_[i]));
- }
- }
- std::vector<int> taps = taps_;
- if (taps.size() < _n_taps) {
- taps.resize(_n_taps, 0);
- }
-
- // Write taps via the reload bus
- for (size_t i = 0; i < taps.size() - 1; i++) {
- sr_write(SR_RELOAD, uint32_t(taps[i]));
- }
- // Assert tlast when sending the spinal tap (haha, it's actually the final tap).
- sr_write(SR_RELOAD_TLAST, uint32_t(taps.back()));
- // Send the configuration word to replace the existing coefficients with the new
- // ones. Note: This configuration bus does not require tlast
- sr_write(SR_CONFIG, 0);
- }
-
- //! Returns the number of filter taps in this block.
- size_t get_n_taps() const
- {
- return _n_taps;
- }
-
-private:
- const std::string _item_type;
- size_t _n_taps;
-};
-
-UHD_RFNOC_BLOCK_REGISTER(fir_block_ctrl, "FIR");