diff options
Diffstat (limited to 'host/include')
-rw-r--r-- | host/include/uhd/rfnoc/noc_block_base.hpp | 10 | ||||
-rw-r--r-- | host/include/uhd/rfnoc/noc_block_make_args.hpp | 7 | ||||
-rw-r--r-- | host/include/uhd/rfnoc/registry.hpp | 23 |
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 |