aboutsummaryrefslogtreecommitdiffstats
path: root/host/include
diff options
context:
space:
mode:
Diffstat (limited to 'host/include')
-rw-r--r--host/include/uhd/rfnoc/noc_block_base.hpp10
-rw-r--r--host/include/uhd/rfnoc/noc_block_make_args.hpp7
-rw-r--r--host/include/uhd/rfnoc/registry.hpp23
3 files changed, 23 insertions, 17 deletions
diff --git a/host/include/uhd/rfnoc/noc_block_base.hpp b/host/include/uhd/rfnoc/noc_block_base.hpp
index 45a1f5738..d9659862c 100644
--- a/host/include/uhd/rfnoc/noc_block_base.hpp
+++ b/host/include/uhd/rfnoc/noc_block_base.hpp
@@ -100,7 +100,7 @@ public:
*
* Note there is only ever one time base (or tick rate) per block.
*/
- double get_tick_rate() const { return _tick_rate; }
+ double get_tick_rate() const;
/*! Return the arguments that were passed into this block from the framework
*/
@@ -215,11 +215,11 @@ private:
// for all in- and output edges.
std::vector<property_t<double>> _tick_rate_props;
- //! The actual tick rate of the current time base
- double _tick_rate;
+ //! Reference to the ctrlport clock_iface object shared with the register_iface
+ std::shared_ptr<clock_iface> _ctrlport_clock_iface;
- //! Reference to the clock_iface object shared with the register_iface
- std::shared_ptr<clock_iface> _clock_iface;
+ //! Reference to the timebase clock_iface object shared with the register_iface
+ std::shared_ptr<clock_iface> _tb_clock_iface;
//! Stores a reference to this block's motherboard's controller, if this
// block had requested and was granted access
diff --git a/host/include/uhd/rfnoc/noc_block_make_args.hpp b/host/include/uhd/rfnoc/noc_block_make_args.hpp
index 8a5fbd46f..7ed191079 100644
--- a/host/include/uhd/rfnoc/noc_block_make_args.hpp
+++ b/host/include/uhd/rfnoc/noc_block_make_args.hpp
@@ -40,8 +40,11 @@ struct noc_block_base::make_args_t
//! Register interface to this block's register space
register_iface::sptr reg_iface;
- //! Clock interface object that is shared with the reg_iface
- std::shared_ptr<clock_iface> clk_iface;
+ //! Timebase clock interface object that is shared with the reg_iface
+ std::shared_ptr<clock_iface> tb_clk_iface;
+
+ //! Controlport clock interface object that is shared with the reg_iface
+ std::shared_ptr<clock_iface> ctrlport_clk_iface;
//! Reference to the motherboard controller associated with this block.
//
diff --git a/host/include/uhd/rfnoc/registry.hpp b/host/include/uhd/rfnoc/registry.hpp
index cc07d5c65..9815ce3c6 100644
--- a/host/include/uhd/rfnoc/registry.hpp
+++ b/host/include/uhd/rfnoc/registry.hpp
@@ -15,16 +15,17 @@
//! This macro must be placed inside a block implementation file
// after the class definition
-#define UHD_RFNOC_BLOCK_REGISTER_DIRECT(CLASS_NAME, NOC_ID, BLOCK_NAME) \
- uhd::rfnoc::noc_block_base::sptr CLASS_NAME##_make( \
- uhd::rfnoc::noc_block_base::make_args_ptr make_args) \
- { \
- return std::make_shared<CLASS_NAME##_impl>(std::move(make_args)); \
- } \
- UHD_STATIC_BLOCK(register_rfnoc_##CLASS_NAME) \
- { \
- uhd::rfnoc::registry::register_block_direct( \
- NOC_ID, BLOCK_NAME, &CLASS_NAME##_make); \
+#define UHD_RFNOC_BLOCK_REGISTER_DIRECT( \
+ CLASS_NAME, NOC_ID, BLOCK_NAME, TB_CLOCK, CTRL_CLOCK) \
+ uhd::rfnoc::noc_block_base::sptr CLASS_NAME##_make( \
+ uhd::rfnoc::noc_block_base::make_args_ptr make_args) \
+ { \
+ return std::make_shared<CLASS_NAME##_impl>(std::move(make_args)); \
+ } \
+ UHD_STATIC_BLOCK(register_rfnoc_##CLASS_NAME) \
+ { \
+ uhd::rfnoc::registry::register_block_direct( \
+ NOC_ID, BLOCK_NAME, TB_CLOCK, CTRL_CLOCK, &CLASS_NAME##_make); \
}
#define UHD_RFNOC_BLOCK_REQUEST_MB_ACCESS(NOC_ID) \
@@ -62,6 +63,8 @@ public:
*/
static void register_block_direct(noc_block_base::noc_id_t noc_id,
const std::string& block_name,
+ const std::string& timebase_clock,
+ const std::string& ctrlport_clock,
factory_t factory_fn);
/*! Register a block that does use a block descriptor file