1 // 2 // Copyright 2014 Ettus Research LLC 3 // Copyright 2018 Ettus Research, a National Instruments Company 4 // Copyright 2020 Ettus Research, a National Instruments Brand 5 // 6 // SPDX-License-Identifier: GPL-3.0-or-later 7 // 8 9 #pragma once 10 11 #include <string> 12 13 namespace uhd { namespace rfnoc { 14 15 // FIXME come up with a better place for this 16 static const size_t CHDR_MAX_LEN_HDR = 16; 17 18 static const std::string CLOCK_KEY_GRAPH("__graph__"); 19 20 static const std::string PROP_KEY_DECIM("decim"); 21 static const std::string PROP_KEY_INTERP("interp"); 22 static const std::string PROP_KEY_SAMP_RATE("samp_rate"); 23 static const std::string PROP_KEY_SCALING("scaling"); 24 static const std::string PROP_KEY_TYPE("type"); 25 static const std::string PROP_KEY_FREQ("freq"); 26 static const std::string PROP_KEY_TICK_RATE("tick_rate"); 27 static const std::string PROP_KEY_SPP("spp"); 28 static const std::string PROP_KEY_MTU("mtu"); 29 30 static const std::string NODE_ID_SEP("SEP"); 31 32 using io_type_t = std::string; 33 static const io_type_t IO_TYPE_S16 = "s16"; 34 static const io_type_t IO_TYPE_SC16 = "sc16"; 35 static const io_type_t IO_TYPE_U8 = "u8"; 36 37 static const std::string ACTION_KEY_STREAM_CMD("stream_cmd"); 38 static const std::string ACTION_KEY_RX_EVENT("rx_event"); 39 static const std::string ACTION_KEY_RX_RESTART_REQ("restart_request"); 40 static const std::string ACTION_KEY_TX_EVENT("tx_event"); 41 42 //! If the block name can't be automatically detected, this name is used 43 static const std::string DEFAULT_BLOCK_NAME = "Block"; 44 //! This NOC-ID is used to look up the default block 45 static const uint32_t DEFAULT_NOC_ID = 0xFFFFFFFF; 46 static const double DEFAULT_TICK_RATE = 1.0; 47 // Whenever we need a default spp value use this, unless there are some 48 // block/device-specific constraints. It will keep the frame size below 1500. 49 static const int DEFAULT_SPP = 1996; 50 51 /*! The NoC ID is the unique identifier of the block type. All blocks of the 52 * same type have the same NoC ID. 53 */ 54 using noc_id_t = uint32_t; 55 56 /*** Device Identifiers ******************************************************/ 57 //! Device Type 58 using device_type_t = uint16_t; 59 // first nibble for device family (E = E, N = 1, X = A), remaining three nibbles 60 // for device number 61 //! placeholder for unspecified device 62 static const device_type_t ANY_DEVICE = 0xFFFF; 63 //! E300 device family 64 static const device_type_t E300 = 0xE300; 65 //! E310 device 66 static const device_type_t E310 = 0xE310; 67 //! E320 68 static const device_type_t E320 = 0xE320; 69 //! N300 device family (N300, N310) 70 static const device_type_t N300 = 0x1300; 71 //! N320 device 72 static const device_type_t N320 = 0x1320; 73 //! X300 device family (X300, X310) 74 static const device_type_t X300 = 0xA300; 75 76 // block identifiers 77 static const noc_id_t ADDSUB_BLOCK = 0xADD00000; 78 static const noc_id_t DUC_BLOCK = 0xD0C00000; 79 static const noc_id_t DDC_BLOCK = 0xDDC00000; 80 static const noc_id_t FFT_BLOCK = 0xFF700000; 81 static const noc_id_t FIR_FILTER_BLOCK = 0xF1120000; 82 static const noc_id_t FOSPHOR_BLOCK = 0x666F0000; 83 static const noc_id_t LOGPWR_BLOCK = 0x4C500000; 84 static const noc_id_t KEEP_ONE_IN_N_BLOCK = 0x02460000; 85 static const noc_id_t MOVING_AVERAGE_BLOCK = 0xAAD20000; 86 static const noc_id_t RADIO_BLOCK = 0x12AD1000; 87 static const noc_id_t REPLAY_BLOCK = 0x4E91A000; 88 static const noc_id_t SIGGEN_BLOCK = 0x51663110; 89 static const noc_id_t SPLIT_STREAM_BLOCK = 0x57570000; 90 static const noc_id_t SWITCHBOARD_BLOCK = 0xBE110000; 91 static const noc_id_t VECTOR_IIR_BLOCK = 0x11120000; 92 static const noc_id_t WINDOW_BLOCK = 0xD0530000; 93 94 }} // namespace uhd::rfnoc 95