|
virtual double | set_freq (const double freq, const size_t chan, const boost::optional< uhd::time_spec_t > time=boost::none)=0 |
|
virtual double | get_freq (const size_t chan) const =0 |
|
virtual uhd::freq_range_t | get_frequency_range (const size_t chan) const =0 |
|
virtual double | get_input_rate (const size_t chan) const =0 |
|
virtual double | get_output_rate (const size_t chan) const =0 |
|
virtual void | set_output_rate (const double rate, const size_t chan)=0 |
|
virtual uhd::meta_range_t | get_input_rates (const size_t chan) const =0 |
|
virtual double | set_input_rate (const double rate, const size_t chan)=0 |
|
| ~noc_block_base () override |
|
std::string | get_unique_id () const override |
| Unique ID for an RFNoC block is its block ID. More...
|
|
size_t | get_num_input_ports () const override |
| Number of input ports. Note: This gets passed into this block from the. More...
|
|
size_t | get_num_output_ports () const override |
| Number of output ports. Note: This gets passed outto this block from the. More...
|
|
noc_id_t | get_noc_id () const |
|
const block_id_t & | get_block_id () const |
|
double | get_tick_rate () const |
|
size_t | get_mtu (const res_source_info &edge) |
|
size_t | get_chdr_hdr_len (const bool account_for_ts=true) const |
|
size_t | get_max_payload_size (const res_source_info &edge, const bool account_for_ts=true) |
|
uhd::device_addr_t | get_block_args () const |
|
uhd::property_tree::sptr & | get_tree () const |
| Return a reference to this block's subtree. More...
|
|
uhd::property_tree::sptr & | get_tree () |
| Return a reference to this block's subtree (non-const version) More...
|
|
std::shared_ptr< mb_controller > | get_mb_controller () |
|
| node_t () |
|
virtual | ~node_t () |
|
std::vector< std::string > | get_property_ids () const |
|
template<typename prop_data_t > |
void | set_property (const std::string &id, const prop_data_t &val, const size_t instance=0) |
|
void | set_properties (const uhd::device_addr_t &props, const size_t instance=0) |
|
template<typename prop_data_t > |
const prop_data_t & | get_property (const std::string &id, const size_t instance=0) |
|
virtual void | set_command_time (uhd::time_spec_t time, const size_t instance) |
|
virtual uhd::time_spec_t | get_command_time (const size_t instance) const |
|
virtual void | clear_command_time (const size_t instance) |
|
| register_iface_holder (register_iface::sptr reg) |
|
virtual | ~register_iface_holder ()=default |
|
register_iface & | regs () |
|
|
using | sptr = std::shared_ptr< noc_block_base > |
|
using | make_args_ptr = std::unique_ptr< make_args_t > |
| Opaque pointer to the constructor arguments. More...
|
|
enum | forwarding_policy_t {
forwarding_policy_t::ONE_TO_ONE,
forwarding_policy_t::ONE_TO_FAN,
forwarding_policy_t::ONE_TO_ALL_IN,
forwarding_policy_t::ONE_TO_ALL_OUT,
forwarding_policy_t::ONE_TO_ALL,
forwarding_policy_t::DROP,
forwarding_policy_t::USE_MAP
} |
| Types of property/action forwarding for those not defined by the block itself. More...
|
|
using | resolver_fn_t = std::function< void(void)> |
|
using | resolve_callback_t = std::function< void(void)> |
|
using | graph_mutex_callback_t = std::function< std::recursive_mutex &(void)> |
|
using | action_handler_t = std::function< void(const res_source_info &, action_info::sptr)> |
|
using | forwarding_map_t = std::unordered_map< res_source_info, std::vector< res_source_info > > |
|
using | prop_ptrs_t = std::vector< property_base_t * > |
|
| noc_block_base (make_args_ptr make_args) |
|
void | set_num_input_ports (const size_t num_ports) |
| Update number of input ports. More...
|
|
void | set_num_output_ports (const size_t num_ports) |
| Update number of output ports. More...
|
|
void | set_tick_rate (const double tick_rate) |
|
void | set_mtu_forwarding_policy (const forwarding_policy_t policy) |
|
void | set_mtu (const res_source_info &edge, const size_t new_mtu) |
|
property_base_t * | get_mtu_prop_ref (const res_source_info &edge) |
|
virtual void | deinit () |
|
void | register_property (property_base_t *prop, resolve_callback_t &&clean_callback=nullptr) |
|
void | add_property_resolver (prop_ptrs_t &&inputs, prop_ptrs_t &&outputs, resolver_fn_t &&resolver_fn) |
|
void | set_prop_forwarding_policy (forwarding_policy_t policy, const std::string &prop_id="") |
|
void | set_prop_forwarding_map (const forwarding_map_t &map) |
|
template<typename prop_data_t > |
void | set_property (const std::string &id, const prop_data_t &val, const res_source_info &src_info) |
|
template<typename prop_data_t > |
const prop_data_t & | get_property (const std::string &id, const res_source_info &src_info) |
|
void | register_action_handler (const std::string &id, action_handler_t &&handler) |
|
void | set_action_forwarding_policy (forwarding_policy_t policy, const std::string &action_key="") |
|
void | set_action_forwarding_map (const forwarding_map_t &map) |
|
void | post_action (const res_source_info &edge_info, action_info::sptr action) |
|
virtual bool | check_topology (const std::vector< size_t > &connected_inputs, const std::vector< size_t > &connected_outputs) |
|
void | update_reg_iface (register_iface::sptr new_iface=nullptr) |
|
static dirtifier_t | ALWAYS_DIRTY |
| A dirtifyer object, useful for properties that always need updating. More...
|
|
DUC Block Control Class
The DUC Block is a multi-channel digital upconverter (DUC) with built-in frequency shift. The number of channels as well as the maximum interpolation is configurable in the FPGA, the block controller will read out registers to identify the capabilities of this block.
This block has two user properties per channel:
freq
: The frequency shift at the input. Note: A convenience method set_freq() is provided to set this property. It also takes care of the command time, which set_property() does not, and thus should be preferred.
interp
: The interpolation value
virtual double uhd::rfnoc::duc_block_control::set_freq |
( |
const double |
freq, |
|
|
const size_t |
chan, |
|
|
const boost::optional< uhd::time_spec_t > |
time = boost::none |
|
) |
| |
|
pure virtual |
Set the DDS frequency
This block will shift the signal at the input by this frequency before decimation. The frequency is given in Hz, it is not a relative frequency to the input sampling rate.
Note: When the rate is modified, the frequency is kept constant. Because the FPGA internally uses a relative phase increment, changing the input sampling rate will trigger a property propagation to recalculate the phase increment based off of this value.
This function will coerce the frequency to a valid value, and return the coerced value.
- Parameters
-
freq | The frequency shift in Hz |
chan | The channel to which this change shall be applied |
time | When to apply the new frequency |
- Returns
- The coerced, actual current frequency of the DDS