USRP Hardware Driver and USRP Manual Version: 4.8.0.0+ds1-1
UHD and USRP Manual
 
Loading...
Searching...
No Matches
fft_block_control.hpp
Go to the documentation of this file.
1//
2// Copyright 2024 Ettus Research, a National Instruments Brand
3//
4// SPDX-License-Identifier: GPL-3.0-or-later
5//
6
7#pragma once
8
9#include <uhd/config.hpp>
11
12namespace uhd { namespace rfnoc {
13
17
18// Custom property keys
19static const std::string PROP_KEY_MAGNITUDE = "magnitude";
20static const std::string PROP_KEY_DIRECTION = "direction";
21static const std::string PROP_KEY_LENGTH = "length";
22static const std::string PROP_KEY_FFT_SCALING = "fft_scaling";
23static const std::string PROP_KEY_FFT_SCALING_FACTOR = "fft_scaling_factor";
24static const std::string PROP_KEY_SHIFT_CONFIG = "shift_config";
25static const std::string PROP_KEY_BYPASS_MODE = "bypass_mode";
26static const std::string PROP_KEY_CP_INSERTION_LIST = "cp_insertion_list";
27static const std::string PROP_KEY_CP_REMOVAL_LIST = "cp_removal_list";
28static const std::string PROP_KEY_MAX_LENGTH = "max_length";
29static const std::string PROP_KEY_MAX_CP_LENGTH = "max_cp_length";
30static const std::string PROP_KEY_MAX_CP_INSERTION_LIST_LENGTH =
31 "max_cp_insertion_list_length";
32static const std::string PROP_KEY_MAX_CP_REMOVAL_LIST_LENGTH =
33 "max_cp_removal_list_length";
34
58{
59public:
61
62
63 static const uint32_t REG_COMPAT_ADDR;
64 static const uint32_t REG_PORT_CONFIG_ADDR;
65 static const uint32_t REG_CAPABILITIES_ADDR;
66 static const uint32_t REG_CAPABILITIES2_ADDR;
67 static const uint32_t REG_RESET_ADDR;
68 static const uint32_t REG_LENGTH_LOG2_ADDR;
69 static const uint32_t REG_SCALING_ADDR;
70 static const uint32_t REG_DIRECTION_ADDR;
71 static const uint32_t REG_CP_INS_LEN_ADDR;
72 static const uint32_t REG_CP_INS_LIST_LOAD_ADDR;
73 static const uint32_t REG_CP_INS_LIST_CLR_ADDR;
74 static const uint32_t REG_CP_INS_LIST_OCC_ADDR;
75 static const uint32_t REG_CP_REM_LEN_ADDR;
76 static const uint32_t REG_CP_REM_LIST_LOAD_ADDR;
77 static const uint32_t REG_CP_REM_LIST_CLR_ADDR;
78 static const uint32_t REG_CP_REM_LIST_OCC_ADDR;
79 static const uint32_t REG_OVERFLOW_ADDR;
80 static const uint32_t REG_BYPASS_ADDR;
81 static const uint32_t REG_ORDER_ADDR;
82 static const uint32_t REG_MAGNITUDE_ADDR;
83
85 static const uint32_t REG_RESET_ADDR_V1;
86 static const uint32_t REG_LENGTH_LOG2_ADDR_V1;
87 static const uint32_t REG_MAGNITUDE_ADDR_V1;
88 static const uint32_t REG_DIRECTION_ADDR_V1;
89 static const uint32_t REG_SCALING_ADDR_V1;
90 static const uint32_t REG_ORDER_ADDR_V1;
91
99 virtual void set_direction(const fft_direction direction) = 0;
100
107 virtual fft_direction get_direction() const = 0;
108
120 virtual void set_magnitude(const fft_magnitude magnitude) = 0;
121
128 virtual fft_magnitude get_magnitude() const = 0;
129
143 virtual void set_shift_config(const fft_shift shift) = 0;
144
151 virtual fft_shift get_shift_config() const = 0;
152
172 virtual void set_scaling_factor(const double factor) = 0;
173
192 virtual void set_scaling(const uint32_t scaling) = 0;
193
200 virtual uint32_t get_scaling() const = 0;
201
210 virtual void set_length(const uint32_t length) = 0;
211
218 virtual uint32_t get_length() const = 0;
219
229 virtual void set_bypass_mode(const bool bypass) = 0;
230
237 virtual bool get_bypass_mode() const = 0;
238
245 virtual uint32_t get_max_length() const = 0;
246
253 virtual uint32_t get_max_cp_length() const = 0;
254
263 virtual uint32_t get_max_cp_removal_list_length() const = 0;
264
273 virtual uint32_t get_max_cp_insertion_list_length() const = 0;
274
287 virtual void set_cp_insertion_list(const std::vector<uint32_t> cp_lengths) = 0;
288
297 virtual std::vector<uint32_t> get_cp_insertion_list() const = 0;
298
312 virtual void set_cp_removal_list(const std::vector<uint32_t> cp_lengths) = 0;
313
322 virtual std::vector<uint32_t> get_cp_removal_list() const = 0;
323};
324
325}} // namespace uhd::rfnoc
Definition fft_block_control.hpp:58
Definition noc_block_base.hpp:43
#define UHD_API
Definition config.h:87
STL namespace.
fft_magnitude
Definition fft_block_control.hpp:16
fft_shift
Definition fft_block_control.hpp:14
fft_direction
Definition fft_block_control.hpp:15
Definition build_info.hpp:12
#define RFNOC_DECLARE_BLOCK(CLASS_NAME)
Definition noc_block_base.hpp:22