# Software Defined Radio Platforms for Wireless Technologies

Dereje M. Molla, Hakim Badis, Laurent George, Marion Berbineau

► To cite this version:

Dereje M. Molla, Hakim Badis, Laurent George, Marion Berbineau. Software Defined Radio Platforms for Wireless Technologies. IEEE Access, 2022, pp1-27. 10.1109/ACCESS.2022.3154364. hal-03592937

HAL Id: hal-03592937

https://hal.science/hal-03592937

Submitted on 1 Mar 2022

HAL is a multi-disciplinary open access
archive for the deposit and dissemination of sci-
entific research documents, whether they are pub-
lished or not. The documents may come from
teaching and research institutions in France or
abroad, or from public or private research centers.

L'archive ouverte pluridisciplinaire HAL, est
destinée au dépôt et à la diffusion de documents
scientifiques de niveau recherche, publiés ou non,
émanant des établissements d'enseignement et de
recherche français ou étrangers, des laboratoires
publics ou privés.

<figure><img src="image_1.png" /></figure>

Distributed under a Creative Commons Attribution 4.0 International License
Date of publication xxxx 00, 0000, date of current version xxxx 00, 0000.

Digital Object Identifier xx.xxxx/ACCESS.xxxx.xxxx

# Software Defined Radio Platforms for Wireless Technologies

DEREJE M. MOLLA<fnref n="1" />, HAKIM BADIS<fnref n="1" />, LAURENT GEORGE<fnref n="1" />, AND MARION BERBINEAU<fnref n="2" />

Corresponding author: Dereje M. MOLLA (e-mail: dereje.molla@esiee.fr).

The authors acknowledge funding from I-Site Future in the framework of the Western project. One of the authors acknowledge partial funding by the regional project SMARTIES in the framework of the ELSAT 2020 program co-financed by the European Union with the European Regional development fund, the French state and Hauts de France Regional council.

**ABSTRACT** Wireless connectivity standards have been developed to meet the requirements of various applications. To support a wireless standard, a wireless transceiver should be equipped with a Radio Frequency (RF) transceiver. Traditional RF transceivers are designed and implemented on a radio chip or an embedded module in a System-on-a-Chip (SoC), ensuring small size, high performance, low power consumption, and cost. However, this traditional implementation design limits directly or indirectly the programmability and flexibility of the RF transceivers. An alternative solution is to implement RF transceivers using Software Defined Radio (SDR) platforms. In the market, SDR platform hardware exists with different configurations, performance, cost, size, etc., making it hard to select the minimum SDR platform necessary to satisfy the wireless standard requirements. This paper aims to provide a list of well-known General Purpose Processor (GPP) based SDR platforms satisfying the minimum specifications of selected wireless standards. To this end, we first review the characteristics of selected wireless technologies. Then, we investigate existing SDR platform architecture and their maximal performance in terms of the frequency range, bandwidth, symbol rate, bitrate, and latency support. Finally, we intersect the wireless standard requirements with the corresponding SDR platform parameters and provide a list of GPP-based SDR platforms for some existing wireless technology implementations. While investigations related to frequency, bandwidth, symbol rate and bitrate are supported by theoretical results, latency is obtained from experiments by benchmarking existing implementations.

**INDEX TERMS** General Purpose Processor, Software Defined Radio, Transceivers, Wireless Technologies.

## I. INTRODUCTION

The number of wireless devices used by various wireless application domains such as Wireless Sensor Networks (WSNs) [1], Internet of Things (IoT) [2], cellular base stations [3], etc., has increased tremendously in the past decade. Several wireless technologies are standardized to enable the interconnection between the different wireless devices including NFC, RFID, IEEE 802.15x, IEEE 802.11x, LoRa, Sigfox, 3GPP 3G/4G/5G, etc., [3]–[5]. A wireless device can incorporate one or multiple wireless transceivers supporting distinct wireless technologies. Each transceiver performs all the physical (PHY) and a portion of the Media Access Control (MAC) layer operations through integrated

analog and digital circuit blocks. Indeed, most of the PHY layer analog operations are implemented on a dedicated and integrated analog hardware such as amplifiers, radio frequency (RF) synthesizers, filters, etc. On the other hand, some PHY layer digital baseband and time critical MAC layer functions are fully implemented on a digital hardware such as Application Specific Integrated Circuits (ASICs), a Programmable Digital Signal Processor (PDSP), Application Specific Instruction Set DSP (DSP ASIP) or a mixed solution using ASIC hardware accelerators with PDSP or with DSP ASIP [6]. This traditional implementation considerably limits directly or indirectly the programmability and flexibility of the transceivers for upgrading or handling multiple wire-

<footnote n="1">¹LIGM, ESIEE Paris, Gustave Eiffel University, CNRS, F-77454 Marne-la-Vallée, France (e-mail: dereje.molla@esiee.fr, hakim.badis@univ-eiffel.fr, laurent.george@esiee.fr)</footnote>

<footnote n="2">²COSYS Department, Gustave Eiffel University, France (e-mail: marion.berbineau@univ-eiffel.fr)</footnote>
less standards. Moreover, processors of wireless transceivers are mostly proprietary which prevent programmers and researchers from access to reprogram the instruction code.

An alternative solution to allow programmers and researchers to easily control the hardware and program the software of wireless transceivers is to use an implementation based on general-purpose processor (GPP) based Software Defined Radio (SDR) platforms, which is a reconfigurable and reprogrammable radio transceiver. In such platforms, the PHY layer digital baseband and MAC layer operations are implemented on a GPP, and the PHY layer analog RF/IF front-end operations are controlled using an analog device board supporting a wide range radio spectrum. This solution have been explored by many researchers to investigate the architecture, challenges and compare the performance of several SDR platforms [7]–[9]. In addition, as the PHY and MAC layers are performed in software by GPP host and due to the reconfigurability and reprogrammability of the radio transceiver, the SDR platform can be used to implement multiple wireless technologies. Such benefit has been exploited in many recent research works such as [10], [11]. These benefits conjugated with the continuous advancement in processing performance (hardware and software) and decreasing price of GPPs made GPP-based SDR platforms gain much attention for implementing and testing wireless technologies [12]–[16]. Moreover, it is also used to build testbeds and/or perform experimentation to study different features of communication systems and suggest performance improvement [17]–[19].

Currently, several SDR platforms are available in the market and research community. To implement a desired wireless technology, an appropriate SDR platform need to be selected. Previous research works such as [7] and [9] have presented the challenges during SDR platform selection process and compared the performance of SDR platforms in the general context. However, they abstain from addressing the specific considerations required by SDR platforms based on the requirement of wireless technologies. This problem is slightly addressed by other researchers and developers in two different perspectives, by designing a custom SDR architecture suited to a specific implementation such as [20]–[22], and/or providing list of recommended requirements to implement a certain wireless technology. Regarding the latter case, the recommendations are usually provided by SDR platform software implementations such as Software Radio Systems (SRS) [14], OpenAirInterface Software (OAI) [23], gr-IEEE-802.15.4 [15], gr-LoRa [24], etc. However, these recommendations are essentially formulated after multiple experimental tests. Nevertheless, as the experimental tests are not exhaustive, the recommended SDR platforms may be over-dimensioned and thus the minimal necessary configuration (carrier frequency and bandwidth, clock rate, communication interface support, GPP cores, GPP processing power, software architecture, etc.), can be exceeded.

The aim of this paper is to provide a list of possible GPP-based SDR platforms in terms of hardware components sat-

isfying the minimum specifications of well-known wireless technologies. This is achieved by analyzing what a wireless technology requires at minimum in terms of frequency range, bandwidth, symbol rate, bitrate and latency, and the performance offered by GPP-based SDR platform components. The contributions of this paper can be summarized as:

* we present a detailed study of the architecture of GPP-based SDR platforms, and analyze their capabilities in terms of the performance metrics;

* we drive the minimum performance requirements of the most relevant wireless technologies. We use these requirements to draw mapping conditions in order to determine which GPP-based SDR platform is appropriate to successfully perform a targeted wireless technology;

* we identify existing wireless technology implementations from the literature that use GPP-based SDR platforms, examine their performance metrics, and suggest a list of other possible SDR platforms to implement the use-cases described in the literature.

Thus, the in-depth analysis of selected wireless technologies and SDR platforms allows researchers from both academia and industry to easily understand required parameters, software and hardware components of SDR platforms. We believe this paper will help researchers (SDR platform users and SDR software developers) looking for the appropriate SDR platform to implement a given wireless technology. To the best of our knowledge, this paper is the first to perform mapping several wireless technologies with GPP-based SDR platforms.

This paper is organized as follows: Section II provides classification and characteristics of well-known wireless connectivity technologies. Section III discusses the architecture of GPP-based SDR platforms and provides general background on the hardware and software components. Section IV provides a detailed study on the performance parameters of GPP-based SDR platforms and presents numerical results using selected GPP-based SDR platforms. Section V presents a mapping between SDR platform performance and wireless technology requirements. Open research challenges and future directions are given in section VI. Finally, section VII provides conclusions to this paper.

## II. WIRELESS CONNECTIVITY TECHNOLOGIES

The interconnection between different wireless devices is enabled by a wide range of wireless technologies that can cover from very short distance (in centimeter range) to several kilometers. Thus, wireless connectivity technologies can mainly be classified into three groups based on the range they cover [25]: i) short-range wireless technologies, ii) Wireless Local Area Networks (WLANs), and iii) Wireless Wide Area Networks (WWANs). Within each of these categories, several wireless technologies are standardized, as shown in Fig. 1. The subsequent subsections present the main PHY and MAC layer characteristics of major wireless technologies. We note that, the frequency requirement of wireless technologies stated in the tables is given based on their standard. However,
the specific frequency band used by a wireless technology depends on its allocation for global and regional use and also countries regulation [26].

<figure><img src="image_2.png" /><figcaption>FIGURE 1: Wireless technologies.</figcaption></figure>

## A. SHORT-RANGE WIRELESS TECHNOLOGIES

Short-range wireless technologies include proximity communication, Wireless Body Area Networks (WBANs) and Wireless Personal Area Networks (WPANs). They are mainly characterized by their short-range coverage operating under the unlicensed industrial, scientific and medical (ISM) frequency bands. International Organization for Standardization(ISO)/International Electrotechnical Commission (IEC) defines the PHY and MAC layer requirements for proximity technologies, and IEEE defines for WBAN and WPANs. Some of the most prominent wireless technologies are Near Field Communication (NFC), Radio Frequency Identification (RFID), IEEE 802.15.6 (NB PHY, UWB PHY and HBC PHY), IEEE 802.15.1, and IEEE 802.15.4. IEEE also defines the PHY and MAC layer for Low-Rate WPAN to meet the limited resource requirement of IoT and WSN devices. Among these standards are IEEE 802.15.4 and Bluetooth Low Energy (BLE), which are developed for networks with low power consumption, low deployment cost and less com-

plexity. Table 1 gives the PHY and MAC layer characteristics of some of the short-range wireless technologies.

## B. WIRELESS LOCAL AREA NETWORK - WLAN

WLAN is mostly designed for wireless connectivity covering less than one kilometer range. Different standards falling under this group include IEEE 802.11b, IEEE 802.11a/g, IEEE 802.11n, IEEE 802.11ac/ax, IEEE 802.11ah and IEEE 802.11p. The first four standards (IEEE 802.11a/b/g/n/ac) are the most popular wireless standards used by WiFi [32], [33]. They are high bandwidth technologies that supports the communication of bandwidth-intensive applications like streaming video, and enable wireless gateways with a high-speed interface to relay traffics requiring large bandwidth and IP connectivity [34]. Other standards promising for IoT and WSN deployment due to their low power and long range wireless communication support are IEEE 802.11ah (WiFi-HaLoW) [35] and IEEE 802.11p [36]. IEEE 802.11ah defines PHY and MAC layer specification for large scale sensor networks and extended range hotspot. It operates in the sub-GHz ISM bands. IEEE 802.11p is an amendment of 802.11 standard that operates in the 5.9 GHz band and offer wireless connectivity between mobile vehicles (and/or vehicles and roadside units) and designed to guarantee low latency [36]. Table 2 enlists their PHY and MAC layer characteristics.

## C. WIRELESS WIDE AREA NETWORK - WWAN

WWANs are meant for large area coverage in the order of kilometers. The wireless communication technologies standardized for such wide coverage have mainly two groups: cellular networks such as 2G, 3G, 4G and 5G; and Low Power Wide Area Networks (LP-WANs). The latter also has two groups: licensed and unlicensed. The licensed LP-WAN consists of Narrow-Band IoT (NB-IoT), Enhanced Coverage-GSM IoT (EC-GSM-IoT) and Long Term Evolution for Machine Type Communication (LTE-M). They are upgrades of cellular communication technologies for IoT applications.

<table><caption>TABLE 1: Characteristics of short-range wireless technologies.</caption><thead><tr><th rowspan="2">Standards</th><th colspan="4">PHY layer</th><th colspan="2">MAC layer</th></tr><tr><th>Frequency Band (MHz)</th><th>Channel size (Bandwidth (MHz))</th><th>Max. symbol rate (MSym/s)</th><th>Modulation</th><th>Subcarriers</th><th>Max. bitrate (kbit/s)</th><th>Latency (ms)</th><th>Access scheme</th></tr></thead><tbody><tr><td>ISO/IEC 18092:2013 (NFC) [27]</td><td>13.56</td><td>1</td><td>0.106, 0.424, 1.696</td><td>ASK (OOK) FSK</td><td>1</td><td>106, 212, 424</td><td>5.340</td><td>Electromagnetic coupling</td></tr><tr><td>ISO/IEC 18000 (JTC1 SC31) (RFID) [28]</td><td>0.125, 13.5, 433, subGHz, 2.4G, UWB</td><td>10, 14, 1.74, 7, 8</td><td>—</td><td>BPSK</td><td>1</td><td>640</td><td></td><td>FDMA/TDMA</td></tr><tr><td>NB PHY [29]</td><td>0.4 – 2.4</td><td>0.3, 0.32, 0.4, 1</td><td>0.6</td><td>DBPSK, π/4-DQPSK, π/8-D8PSK, GMSK</td><td>1</td><td>0.0759 – 0.9714</td><td>pSIFS = 75</td><td>CSMA/CA, slotted ALOHA</td></tr><tr><td>UWB PHY (IR-UWB, FM-UWB) [29]</td><td>3.493 – 9.984</td><td>499.2</td><td>15.6</td><td>On-OFF modulation, BPSK/QPSK, CP-BFSK, WB-FM, DBPSK/DQPSK</td><td>1</td><td>15.6</td><td>pSIFS = 75</td><td>CSMA/CA, slotted ALOHA</td></tr><tr><td>HBC PHY [29]</td><td>0.021</td><td>5.25</td><td>0.328</td><td>Based on NFC (OOK, DSSS)</td><td>1</td><td>1.3125</td><td>pSIFS = 75</td><td>CSMA/CA, slotted ALOHA</td></tr><tr><td>IEEE 802.15.1 [30]</td><td>2.4G</td><td>1, 2</td><td>2</td><td>FHSS based GFSK, DQPSK</td><td>1</td><td>2000</td><td>IFS = 150</td><td>TDMA</td></tr><tr><td>IEEE 802.15.4 [31]</td><td>sub-GHz and 2.4G</td><td>0.4, 0.6, 2, 5</td><td>0.0625</td><td>DSSS based BPSK, O-QPSK</td><td>1</td><td>20, 40, 100, 250</td><td>aTurnaroundTime = 192; macAckWaitDuration = 864<br>aTurnaroundTime = 192; aTurnaroundTime + aUnitBackoffPeriod = 512<br>macTsTxAckDelay = 1000</td><td>Unslotted CSMA/CA<br>Slotted CSMA/CA<br>GTS allocation</td></tr></tbody></table>

<footnote>* SIFS: Short Inter-Frame Space.</footnote>
<table><caption>TABLE 2: Characteristics of WLAN standards.</caption><thead><tr><th rowspan="2">Standards</th><th rowspan="2">Frequency Band (GHz)</th><th rowspan="2">Channel size (Bandwidth (MHz))</th><th rowspan="2">Symbol duration + GI' (μs)</th><th rowspan="2">Max. symbol rate (kSym/s)</th><th colspan="3">PHY layer</th><th colspan="2">MAC layer</th></tr><tr><th>Modulation</th><th>Bit-to-Symbol mapper</th><th>Subcarriers</th><th>Max. bitrate (Mbit/s)</th><th>Latency (μs)</th><th>Access scheme</th></tr></thead><tbody><tr><td>IEEE802.11b [32]</td><td>2.4</td><td>22</td><td>0.7273</td><td>1375</td><td>CCK,QPSK</td><td>1</td><td>11</td><td>SIFS = 10; ACK timeout = 30</td><td>CSMA/CA</td></tr><tr><td>IEEE802.11a/g [32]</td><td>5/2.4</td><td>20</td><td>4</td><td>250</td><td>BPSK,QPSK, (16,64)QAM</td><td>52</td><td>54</td><td>SIFS=16/10; ACK timeout = 25/19</td><td>CSMA/CA</td></tr><tr><td>IEEE802.11n [32]</td><td>2.4/5</td><td>20/40</td><td>4</td><td>250</td><td>BPSK,QPSK, (16,64)QAM</td><td>56/114</td><td>72.2, 150</td><td>SIFS = 10; ACK timeout = 19</td><td>CSMA/CA</td></tr><tr><td>IEEE802.11ac [33]</td><td>5</td><td>20/40/80/160</td><td>4</td><td>250</td><td>BPSK,QPSK, (16, 64, 256)QAM</td><td>56/114/242/484</td><td>86.7 – 6000</td><td>SIFS = 16; ACK timeout = 25</td><td>CSMA/CA</td></tr><tr><td>IEEE802.11ah [35]</td><td>subGHz (0.7 - 0.9)</td><td>1/2/4/8/16</td><td>40</td><td>25</td><td>BPSK,QPSK, (16, 64, 256)QAM</td><td>32/56/114/242/484</td><td>0.1 – 347</td><td>SIFS = 160</td><td>CSMA/CA</td></tr><tr><td>IEEE802.11p [36]</td><td>5.8/5.9</td><td>10</td><td>8</td><td>125</td><td>BPSK,QPSK, (16,64)QAM</td><td>52</td><td>3 – 27</td><td>SIFS = 32</td><td>CSMA/CA</td></tr></tbody></table>

<table><caption>TABLE 3: Characteristics of WWAN standards.</caption><thead><tr><th rowspan="2">Standards</th><th rowspan="2">Frequency Band (MHz)</th><th rowspan="2">Channel size (Bandwidth (MHz))</th><th rowspan="2">Symbol duration + GI (μs)</th><th rowspan="2">Max. symbol rate (kSym/s)</th><th colspan="3">PHY layer</th><th colspan="2">MAC layer</th></tr><tr><th>Modulation</th><th>Bit-to-Sym mapper</th><th>Subcarriers**</th><th>Max. bitrate (bit/s)</th><th>Latency (ms)</th><th>Access scheme</th></tr></thead><tbody><tr><td rowspan="2">Cellular</td><td>GSM/</td><td>800/900, 1800/1900</td><td>0.2</td><td>3.69</td><td>271</td><td>GMSK, QPSK, 8PSK, 16QAM</td><td>1</td><td>171k (GPRS), 384k(EDGE)</td><td>slot time = 0.577</td><td>TDMA/FDMA</td></tr><tr><td>3GPP LTE</td><td>LTE bands [40]</td><td>1.4,3.5,10,15,20</td><td>66.66</td><td>15</td><td>QPSK, 16QAM, 64QAM</td><td>73/181/301/601/901/1201</td><td>50.42M (UL), 100.8M (DL)</td><td>4</td><td>SC-FDMA, OFDMA</td></tr><tr><td rowspan="3">Cellular for IoT</td><td>NB-IoT [41]</td><td>LTE bands</td><td>0.18</td><td>66.66</td><td>15</td><td>BPSK, QPSK, 16QAM</td><td>12</td><td>250k</td><td>20</td><td>SC-FDMA/ FDMA, OFDMA</td></tr><tr><td>EC-GSM-IoT</td><td>GSM bands</td><td>0.20</td><td>3.69</td><td>271</td><td>GMSK, 8PSK</td><td>1</td><td>240k</td><td>slot time = 0.577</td><td>TDMA</td></tr><tr><td>LTE-M</td><td>LTE bands</td><td>1.4</td><td>66.66</td><td>15</td><td>QPSK, 16QAM</td><td>73</td><td>1M</td><td>end-end = 100</td><td>SC-FDMA, OFDMA</td></tr><tr><td rowspan="2">LP-WAN</td><td>LoRa<sup>a</sup></td><td>433/868(EU), 915(US), 430(Asia)</td><td>0.125,0.25,0.5</td><td>1024,512,256</td><td>3.91</td><td>LoRa, FSK</td><td>1</td><td>50k</td><td>24</td><td>Proprietary CSS</td></tr><tr><td>Sigfox</td><td>868(EU), 902(US)</td><td>0.0001(UL), 0.0006(DL)</td><td>10,000/60,000</td><td>0.1, 0.6</td><td>DBPSK(UL), GFSK(DL)</td><td>1</td><td>100(UL), 600(DL)</td><td>~ 2000</td><td>Proprietary UNB/FHSS</td></tr></tbody></table>

Unlicensed LP-WAN includes Long Range (LoRa), Sigfox, etc., [37]. LP-WAN technologies are designed for Machine-to-Machine (M2M) and IoT applications that need to forward small payload data at low data rate and low power consumption [38], [39]. The cellular technologies (2G, 3G, and 4G), on the other hand, consume a lot of device energy which may cause a negative impact on low-power IoT devices. However, they are useful for IoT gateways or IoT devices running bandwidth-intensive applications. Table 3 quantifies the requirements of cellular and LP-WAN technologies.

### III. GPP-BASED SDR PLATFORM ARCHITECTURE

The implementation design of conventional wireless transceivers, in general, lacks reprogrammability, flexibility and scalability. Therefore, upgrading the software, changing the logic of the dedicated hardware or reusing the transceiver to implement a wireless standard other than the one the transceiver was designed for is limited or non-existent. Moreover, conventional wireless transceivers are mostly proprietary which prevent developers and researchers from access to reprogram the assembly instruction set. An alternative solution to mitigate these limitations is using SDR platforms. In addition to the programmability feature, the SDR platform also serves as a multi-technology gateway by performing multiple wireless technologies using a common set of radio transceiver [10], [11]. It also allows to reuse software across multiple radio devices and download software over-the-air to implement new standards and fix bugs [8]. Furthermore, it is

recently being used to mitigate cross-technology interference problem faced by conventional technologies [42].

An SDR platform is a class of radio transceivers which controls the analog RF/IF part using an open-source analog device board, named SDR device, and implements all the digital part using programmable host processor. The programmable host processor can be GPP, DSP ASIP or FPGA. The scope of our study is limited to GPP-based SDR platforms due to its easy programmability using a high-level language and its flexibility for reconfiguration and handling complex algorithms [9]. The general architecture of GPP-based SDR platform is illustrated in Fig. 2. It is mainly sectioned into three parts as **SDR device**, **communication interface** and **GPP host**. Each component of the platform has its communication parameters that contribute to the overall performance of the SDR platform. This section investigates the GPP-based SDR platform.

<figure><img src="image_3.png" /><figcaption>FIGURE 2: GPP-based SDR platform general architecture.</figcaption></figure>

<footnote>* GI is long Guard Interval (8μs for 802.11ah, 1.6μs for 802.11p and 0.8μs for others).</footnote>

<footnote>* Spreading factor (SF) = 7.</footnote>

<footnote>** Subcarriers are shown only for the downlink.</footnote>
## A. SDR DEVICE

An SDR device is a small handheld type of device which is capable of transmitting and receiving signals at different frequencies. It typically consists of software controllable analog RF/IF and digital IF front-ends. The former is called as daughterboard and the latter as motherboard. This subsection describes their respective tasks and characteristics.

### 1) Daughterboard

The daughterboard is essentially responsible to perform analog RF/IF processing functions such as filtering, amplification, conversion of signals from RF to IF and vice-versa, etc. It is mainly characterized by the frequency band it covers, the analog bandwidth, RF performance, number of channels, channel's capability (only RX or TX/RX), mode of operation as a half (HD) or full (FD) duplex, etc. Mainly, the operating frequency range, width of analog bandwidth and channel's capability determines the scope of the daughterboard to implement a wide range of wireless technologies using SDR device. The daughterboard interfaces the antenna with the motherboard. Indeed, most daughterboards integrate multiple input/output circuits to connect multiple separated antennas enabling simultaneous transmission and reception capability [43], [44]. Also, daughterboards integrate analog inputs/outputs to connect motherboard ADCs and DACs. In the market, daughterboards are either stand-alone component or integrated with a motherboard forming a single board. Table 4 lists few commercially available daughterboards.

<table><caption>TABLE 4: List of selected daughterboards.</caption><thead><tr><th>Daughterboard</th><th>Frequency Band (MHz)</th><th>Bandwidth (MHz)</th><th>TX/Rx/Mode</th><th>Type</th><th>SDR family</th></tr></thead><tbody><tr><td>UBX</td><td>10 - 6000</td><td>40/160</td><td>Tx/Rx/FD</td><td rowspan="5">Stand-alone</td><td rowspan="5">USRP [43]</td></tr><tr><td>CBX</td><td>1200 - 6000</td><td>40/120</td><td>Tx/Rx/FD</td></tr><tr><td>SBX</td><td>400 - 4400</td><td>40/120</td><td>Tx/Rx/FD</td></tr><tr><td>WBX</td><td>50 - 2200</td><td>40/120</td><td>Tx/Rx/FD</td></tr><tr><td>B210</td><td>70 - 6000</td><td>56</td><td>Tx/Rx/FD</td></tr><tr><td>HackRF FE [45]</td><td>1 - 6000</td><td>20</td><td>Tx/Rx/HD</td><td>Integrated</td><td>HackRF</td></tr><tr><td>WARP Radio RF [46]</td><td>2400-2500, 4900-5875</td><td>40</td><td>Tx/Rx/FD</td><td>Stand-alone</td><td>Used by Sora</td></tr><tr><td>LMS7002M PPRF [47]</td><td>0.1 - 3800</td><td>60</td><td>Tx/Rx/FD</td><td>Integrated</td><td>LimeSDR</td></tr><tr><td>AD-FMCOMMS2-EBZ [44]</td><td>70 - 6000</td><td>56</td><td>Tx/Rx/FD</td><td>Integrated</td><td>Analog Devices</td></tr></tbody></table>

### 2) Motherboard

Motherboard is mainly responsible to perform digitization, channelization and sample rate conversion (digital up/down conversion [DUC/DDC]). To achieve these operations, motherboards integrate ADCs/DACs and a DSP processor that can be implemented using ASIC, DSP ASIP or FPGA. It also integrates one or more communication interfaces to connect with GPP host. It is mainly characterized by the maximum ADC and DAC sample rates, ADC and DAC resolution, DSP processor design and the supported communication interface. Table 5 provides characteristics of motherboards of selected SDR devices.

The motherboard, in SDR devices, interfaces daughterboard with a GPP host. It exchanges baseband samples with GPP host and IF analog signals with daughterboards. Actually, a received IF analog signal from a daughterboard is first digitized by ADC to get IF digital samples and then downsampled through DDC to obtain baseband digital samples.

<table><caption>TABLE 5: Characteristics of motherboards of SDR devices.</caption><thead><tr><th rowspan="2">SDR family</th><th rowspan="2">DSP processor</th><th colspan="2">Sample rate (MS/s)</th><th colspan="2">Resolution (bits)</th><th rowspan="2">Comm. Interface</th><th rowspan="2">Type</th></tr><tr><th>ADC</th><th>DAC</th><th>ADC</th><th>DAC</th></tr></thead><tbody><tr><td>HackRF One [45]</td><td>NXP LPC43XX ARM Cortex-M4 MCU</td><td>20</td><td>20</td><td>8</td><td>8</td><td>USB 2.0</td><td>Integrated</td></tr><tr><td>USRP B210 series [43]</td><td>Xilinx Spartan-6 FPGA</td><td>61.44</td><td>61.44</td><td>12</td><td>12</td><td>USB 3.0</td><td>Integrated</td></tr><tr><td>USRP X310 series [43]</td><td>Xilinx Kintex-7-410T FPGA</td><td>200</td><td>800</td><td>14</td><td>16</td><td>Ethernet</td><td>Separate</td></tr><tr><td>Microsoft Sora [48]</td><td>Virtex-5 FPGA</td><td>44</td><td>40</td><td>12</td><td>12</td><td>PCIe</td><td>Separate</td></tr><tr><td>LimeSDR [47]</td><td>Altera Cyclone IV EP4CE40F23 FPGA</td><td>160</td><td>640</td><td>12</td><td>12</td><td>USB 3.0, PCIe</td><td>Integrated</td></tr></tbody></table>

Finally, the baseband samples are transmitted to the GPP host through an integrated communication interface. On the reverse direction, received baseband samples are first upsampled through DUC to get IF digital samples and then converted to IF analog signal by DAC. Finally, the IF analog signal is forwarded to the daughterboard [49]. In the market, motherboards are either separate boards containing slots to plug daughterboards or a board integrating daughterboards.

## B. COMMUNICATION INTERFACE

Data is transferred from GPP Host to SDR device and vice-versa using wired communication interfaces. These are based on commonly used data transfer communication interfaces like Universal Serial Bus (USB 2.0, USB 3.0, etc.), Ethernet (standard, fast, gigabit, etc.) and Peripheral Component Interconnect Express (PCIe 1.x, PCIe 2.x, etc). They consist of controllers such as Network Interface Controller (NIC), installed in both GPP host and SDR motherboard, to implement the communication interface standard. The communication interface technology implemented by the controller has specific characteristics defined by standards such as the maximal supported rate, maximal payload size, maximal cable length, etc., [50]–[52]. To allow more flexibility in data transfer speeds, some SDR devices include multiple communication interfaces (see Table 5). The controllers of both SDR device and GPP host should implement the same interface standard but not necessarily the same version. Indeed, different versions of the same standard may create connection between the two ends but they need to be synchronized for efficient data exchange. In such cases, the communication standard with the lowest rate will be agreed by auto-negotiation (as for Ethernet [51]) or backward compatibility (for example between USB 2.0 and USB 3.0) or manually [53].

## C. GPP HOST

A GPP host is a programmable device that can perform computational tasks based on instructions given by software programs using either high or lower level programming languages. As such a GPP host combines hardware and software, and is responsible to handle their interaction. The subsequent sections review these components highlighting the parts that impact the processing speed of a GPP host.

### 1) Hardware

The GPP host components are, mostly, assembled in a singleboard. This board contains SoC internal components such as GPP, internal memories, co-processors (GPU, DSP ASIP, etc.), and possible controllers for communication interfaces
(see section III-B) and SoC external components such as external memories, expansion slots, etc.

A GPP, which can be either microprocessor or micro-controller, is responsible for performing the digital PHY, MAC, and upper layer operations. Unlike the conventional transceivers, it has the advantage of either high or low level programmability without modifying the hardware. Although it offers high user flexibility, the high-level programmability usually results in performance degradation of the processor to satisfy the requirements of intensive computation signal processing tasks [54]. Indeed, the performance (processing speed) of GPP is largely determined by a clock, where lower clock speed implies a slow processor and less energy consumption [55].

The GPP may be of single core or multi-core processor. However, most GPPs currently are based on multi-core (Dual-core, Quad-core, etc.) processors on a single physical Central Processing Unit (CPU) [7]. Each core, in a multi-core single CPU system, represents a single processor or execution unit capable of executing processes concurrently with other processors. This increases the number of instructions to be processed per clock cycle. In addition to clock speed and number of cores, system bus architecture (bus width, its clock frequency, the number of data it can transfer per clock cycle, etc.,) significantly affects the speed of processing [55]. The size and level of cache a CPU has also affects the speed of its processing. Other parameters that could affect overall processing speed of GPP are number of threads, memory size, number of ALUs, hyper-threading support, size of Single Instruction Multiple Data (SIMD) units, etc. The SIMD units allow a processor to perform simultaneously the same instruction (operation) on multiple data units [56]. Recent GPPs support SIMD architecture to improve performance capabilities [57]. Table 6 provides few examples of GPP host hardware. To achieve more computing performance, GPPs are usually complemented with co-processors like GPU, FPGA and DSP ASIP as accelerators [56], [58], [59].

<table><caption>TABLE 6: List of well-known GPP Host hardware.</caption><thead><tr><th>GPP Characteristics</th><th>Desktop computer</th><th>Laptop</th><th>Smartphones</th><th>Embedded computer boards</th></tr></thead><tbody><tr><td>Processor</td><td>Intel x86, AMD, ARM, MIPS</td><td>Intel x86, AMD, ARM, MIPS</td><td>ARM, Intel, MIPS</td><td>ARM, 8051 cores, microMIPS</td></tr><tr><td>SIMD support</td><td>Yes</td><td>Yes</td><td>Yes</td><td>Yes</td></tr><tr><td>CommIFY Interface controller</td><td>USB, Ethernet, PCIe</td><td>USB, Ethernet, PCIe</td><td>USB</td><td>USB, Ethernet</td></tr><tr><td>Computing power</td><td>Low to High</td><td>Low to High</td><td>Low to Medium</td><td>Low to Medium</td></tr><tr><td>Size/Weight</td><td>Large</td><td>Medium</td><td>Small</td><td>Small</td></tr><tr><td>Example</td><td>Dell, Apple, HP, Lenovo, Acer, etc.</td><td>Dell, Apple, HP, Lenovo, Acer, etc.</td><td>iPhone, Samsung, Huawei, etc.</td><td>Raspberry Pi, Arduino, NXP, etc.</td></tr></tbody></table>

## 2) Software

The software part of GPP host controls the operation of the processor, input/output traffic of communication controllers and the SDR device. It is generally layered into three on top of the hardware processor as instructions set, kernel space and user space. The instruction set is defined as a group of instructions a processor can execute. Thereby, an instruction code (object code) generated by a compiler or an assembler

can only contain instructions from this set. The instruction set is one of two types of instruction set architecture (ISA) designs: Reduced Instruction Set Computers (RISC) or Complex Instruction Set Computers (CISC) [60]. The ISA of GPPs can be based on CISC or RISC. To exploit the advantages of both instruction sets, modern GPPs are more based on hybrid ISA (using CISC instructions externally, but RISC techniques internally) [61]. Moreover, the use of RISC architecture can also be enhanced by adding Very Long Instruction Word (VLIW) extensions, a technique that offer instruction level parallelism [62].

The middle layer of the software system architecture is the kernel. It is the heart of an operating system (OS), linking the user space with the hardware processor [63]. To interact with the hardware, the kernel includes hardware drivers such as processor driver, hard disk driver, network controller driver, etc. To interact with user space, the kernel includes Application Program Interface (API) allowing programs in user space to access system resources (e.g., file systems, GPP time, virtual memory, etc.) and services (e.g., scheduling, swapping, interrupt request (IRQ) handling, context switching, etc). It is precisely these services that impact the kernel space performances in terms of latency and overhead. To reduce the latency, additional functions such as the IRQ handler, process scheduling, reducing number of context switches, etc., are required. On the other hand, kernel overhead is the time due to managing resources such as GPP time, memory, disk, etc. The increased overhead often results in reducing the GPP time occupation and consequently the GPP throughput. As reducing the kernel latency requires additional functions, the kernel overhead will increase. It is obvious that a trade-off between kernel latency and GPP throughput exists, and a balance should carefully be designed as per user need.

At the top of software system architecture is the user space that consists of a portion of memory in which user applications are executed. Hereby, the user applications are PHY and MAC functions of the wireless technologies. The user applications are mostly written using high-level programming languages like C, C++, Java, Python, Matlab, etc. It is also possible to generate the user applications code via data flow textual/graphical programming languages like G programming, Python, C++, etc. These programming languages (high-level and data-flow) are generally included in software development toolkits such as GNU Radio [64], LabVIEW [65], Matlab [66], etc. The toolkits provide DSP libraries for DSP functions, libraries for runtime and compilation, graphical tools for creating signal flow graphs and generating flow-graph source code, etc.

The user application compiler is an element of most importance in assisting the processor to achieve high performance in speed and execution time. It is responsible for generating the instruction code using the ISA of the target processor. When a large variety of target processors are supported, the compiler is said to be general (like the GNU Compiler Collection (GCC) [67]). The general compilers also implement optimizations to improve the GPP performance by increasing
the parallelism levels through three mechanisms: instruction-level parallelism (ILP) which allows multiple instructions to be executed at the same time, thread-level parallelism (TLP) which allows multiple threads to run simultaneously or pseudo-simultaneously on single/multiple cores, and data-level parallelism (DLP) which enables performing multiple data-elements simultaneously. This entails an optimal source code generation in size and execution time, according to the target processor. Examples of optimizations are automatic vectorization [68], automatic parallelization [68], [69], inter-procedural optimization [70], and SIMD intrinsics (assembly-coded functions [71]). Table 7 lists well-known software implementation toolkits.

<table><caption>TABLE 7: Software development toolkits.</caption><thead><tr><th rowspan="2">Implementation tools</th><th colspan="2">Data-flow programming language</th><th rowspan="2">High Level programming language</th><th rowspan="2">Scheduler</th><th rowspan="2">Optimization type</th><th rowspan="2">License</th></tr><tr><th>Textual</th><th>Graphical</th></tr></thead><tbody><tr><td>GNU Radio</td><td>C++/python</td><td>GRC</td><td>C++/python</td><td>yes</td><td>SIMD (VOLK) [72]</td><td>open-source</td></tr><tr><td>Labview [73]</td><td>C/MathScript</td><td>G/DFIR</td><td>C</td><td>yes</td><td>Auto (DFIR/LLVM)</td><td>Commercial</td></tr><tr><td>Matlab/ Simulink</td><td>Matlab.m code)</td><td>Simulink</td><td>C</td><td>yes</td><td>Manual or Auto [69]</td><td>Commercial</td></tr><tr><td>C/C++</td><td>X/X</td><td>X/X</td><td>C/C++</td><td>Hard code</td><td>Manual or compiler</td><td>open-source</td></tr></tbody></table>

## IV. SDR PLATFORM PERFORMANCE ANALYSIS

To implement a wireless technology on SDR platforms or use existing implementations, it is necessary that the selected SDR platform (SDR device, communication interface and GPP Host) performance should meet at least the requirements of the target wireless technology. These requirements are mainly given in terms of operating frequency band, bandwidth, symbol rate, bitrate, latency, etc. In this section, a thorough theoretical analysis of these performance parameters in GPP-based SDR platform architecture is presented along with the minimal/maximal values offered by the components.

### A. FREQUENCY BAND

The frequency band of SDR platforms is the operating frequency range covered by the SDR device. This is determined at the daughterboards from the local oscillator (LO) signals generated by the frequency synthesizer, such as Phase-Locked Loop (PLL) synthesizer. Large frequency band needs large LO frequency range, and consequently wideband frequency synthesizers. Daughterboard's datasheet usually lists the operating frequency band of SDR devices (see Table 4 for well-known daughterboards). To cover the range of frequency bands supported by daughterboards, SDR device's need to use appropriate type of antenna [74].

### B. BANDWIDTH

Any analog or digital signal has a bandwidth defined as the occupied range of frequencies carrying most of its energy. This range varies at each stage of the signal chain. Hence, it can be expressed differently (but related) according to the signal processing stage. Indeed, at the RF front end stage, it is expressed as the analog bandwidth or RF channel width. At the ADC/DAC stage, it is expressed as the DAC/ADC sample rates. When the signal is processed at the digital front end

(DFE) stage, its bandwidth is expressed as the DFE sample rate. On the communication link between the DFE and GPP, the bandwidth is limited by the communication interface speed. At the GPP host, the bandwidth is expressed as the symbol rate. Fig. 3 illustrates the main points in the signal chain where the bandwidth of SDR platform is characterized. In this section, we examine the analog bandwidth, ADC/DAC and DFE sample rates. Sections IV-C, IV-D and IV-E will address the interface speed, symbol rate and bitrate.

<figure><img src="image_4.png" /><figcaption>FIGURE 3: Bandwidth at each block of SDR-GPP signal chain.</figcaption></figure>

#### 1) Analog bandwidth

This bandwidth, measured in Hz, is determined by the RF front end (daughterboard) of the SDR device. It is configured mainly by the analog baseband low pass filter (LPF) to vary from 0 Hz to the specified cut-off frequency, $f_{cut}$. Thus, in a direct-conversion (Zero IF) I/Q modulator [75] both at the transmitter and receiver side, the analog bandwidth at RF front end is determined by the LPF and its $f_{cut}$. It is equal to twice $f_{cut}$ for Ideal LPFs that completely eliminate (attenuate) all frequencies above the $f_{cut}$. The excess bandwidth, defined as the transition band in LPF datasheets [76], of an Ideal LPF is null, and hence its Roll-off factor (ratio between passband and transition band) is null. In real-world, practical LPFs are not perfect and have a transition region where some high frequencies above the $f_{cut}$ can pass. Consequently, the real analog bandwidth is greater than twice $f_{cut}$ and can be formulated as follows:

$$ \text{Real Analog bandwidth} = (2 \times f_{cut}) \times (1 + \text{Roll-off factor}) \quad (1) $$

where the Roll-off factor is in the range [0,1]. Equation (1) assumes signals spectra that would occur after theoretical cut-off point. Thus, the Roll-off factor shifts the bandwidth towards the transition band so that we can minimize loss of information.

Most of the LPFs are programmable and can take different $f_{cut}$ values where each $f_{cut}$ is assigned a roll-off factor. The maximal real analog bandwidth is achieved by the highest $f_{cut}$ scaled by [1 + Roll-off factor]. Table 8 summarizes the analog bandwidth as theoretically computed from (1) and the maximal ideal analog bandwidth (twice $f_{cut}$) as indicated on the daughterboard's datasheet.

#### 2) ADC/DAC sample rate

The ADC sample rate, given on Samples per Second (S/s), allows to determine the time interval between two samples applied to the input of a DAC. The ADC sample rate determines the time interval between two samples at the output of an ADC. Both sample rates are related to the input signal spectrum by the Nyquist-Shannon sampling theorem [77].
<table><caption>TABLE 8: Maximal analog bandwidths of SDR devices.</caption><thead><tr><th>SDR</th><th>Max. cutoff frequency</th><th>Max. Ideal Analog bandwidth (MHz)</th><th>Roll-off factor</th><th>Max. real Analog bandwidth (MHz)</th></tr></thead><tbody><tr><td>HackRF [45]</td><td>10</td><td>20</td><td>0</td><td>20</td></tr><tr><td>UBX-40, SBX-40, CBX-40, WBX-40 [43]</td><td>20</td><td>40</td><td>1.5</td><td>100</td></tr><tr><td>SBX-120, CBX-120, WBX-120 [43]</td><td>60</td><td>120</td><td>0.667</td><td>200</td></tr><tr><td>UBX-160 [43]</td><td>80</td><td>160</td><td>0.25</td><td>200</td></tr><tr><td>USRP-B2x0 [43]</td><td>28</td><td>56</td><td>0.097</td><td>61.44</td></tr><tr><td>Microsoft Sora [46]</td><td>10</td><td>20</td><td>1</td><td>40</td></tr><tr><td>LimeSDR [47]</td><td>80</td><td>160</td><td>0</td><td>160</td></tr></tbody></table>

Theoretically, for a given ADC/DAC sample rate, the maximum frequency that can be reproduced is half the sample rate (Nyquist frequency) to avoid aliasing effect. As the maximum frequency of an equivalent complex baseband (a complex valued representation of the real baseband) is [real analog bandwidth / 2], the sample rate needs to be greater than the real analog bandwidth (see (1)). The more sample rate is greater than the real analog bandwidth, the more the band gap increases between the real analog bandwidth copies repeated at multiples of sample rate resulting on zero-loss on bandwidth. This band gap has an amount of [ADC sample rate – real analog bandwidth] Hz.

In motherboard of SDR devices, the integrated ADC/DAC can support one or multiple sample rates where one at a time can be selected. The highest sample rate value determines the largest analog bandwidth. Table 9 shows the supported sample rates by well-known SDR devices. This table also shows whether the SDR device has fixed or selective sample rates. Using selective sample rate is preferable than fixed rate to adapt the real analog bandwidth to the necessary bandwidth asked by applications' rate requirement and expressed by the DFE sample rate (see section IV-B3). When the nearest sample rate is greater than the DFE sample rate, an adjustment through interpolation and decimation process is necessary [49].

<table><caption>TABLE 9: Analog bandwidth and ADC/DAC sample rates.</caption><thead><tr><th>SDR device</th><th>Ideal Analog bandwidth (MHz)</th><th>Clock rate (MHz)</th><th>Supported sample rates (MS/s)</th><th>ADC sample rates (MS/s)</th><th>Supported DAC sample rates (MS/s)</th><th>Selective/ Fixed</th></tr></thead><tbody><tr><td>HackRF [45]</td><td>20</td><td>20</td><td>20</td><td>20</td><td>20</td><td>Fixed</td></tr><tr><td>USRP-X3x0 (UBX-160) [43]</td><td>160</td><td>200, 184.32</td><td>195.31K - 200M; 180.0K - 184.32M</td><td>800</td><td>800</td><td>Selective</td></tr><tr><td>USRP-B2x0 [43]</td><td>56</td><td>5 - 61.44</td><td>61.44</td><td>61.44</td><td>61.44</td><td>Selective</td></tr><tr><td>Microsoft Sora [48]</td><td>20</td><td>40, 44</td><td>40, 44</td><td>40</td><td>40</td><td>Selective</td></tr><tr><td>LimeSDR [47]</td><td>160</td><td>640</td><td>20 - 160</td><td>80 - 640</td><td>80 - 640</td><td>Selective</td></tr></tbody></table>

### 3) Digital Front End (DFE) sample rate

This rate, given on Samples per second (S/s), defines the constant speed by which I/Q samples are exchanged between the DUC/DDC (interpolation/decimation) stages and the interface controller. It can be specified either explicitly by the user or implicitly from the real analog bandwidth of the channel. The sample size (in bits) is determined by the DAC/ADC resolution. At the transmitter side of an SDR device, arriving I and Q data samples from the GPP host (in a format configured by the user, e.g., 32-bit float) join their corresponding queue waiting for service by the DFE. The arrival rate at the queue is constant over time and is

determined by the bitrate of GPP host. The interpolation stage of the DFE retrieves samples from the queue at DFE sample rate, which is the service rate of the queue system. As the DFE sample rate can take very high values, it is extremely important that the arrival and service rates should be equal after normalization to avoid waiting for the queues to become non-empty (underflow). Then, the interpolation stage increases the DFE sample rate of input samples to higher output rate equal to the DAC sample rate (see Fig. 4). The applied interpolation factor is equivalent to the ratio of the DAC sample rate to the DFE sample rate.

<figure><img src="image_5.png" /><figcaption>FIGURE 4: DFE sample rate (Digital Up Converter).</figcaption></figure>

At the receiver side of an SDR device, as shown in Fig. 5, the DFE receives samples at a speed of ADC sample rate. It performs decimation to decrease the input ADC sample rate to a lower rate equal to the DFE sample rate. The applied decimation factor is equivalent to the ratio of ADC clock rate to the DFE clock rate. The output samples are, then, inserted into the I/Q queues waiting to be transmitted to the GPP host. A queue overflow occurs when the GPP host cannot retrieve samples as fast enough. As in the transmitter side, it is extremely important that the DFE sample rate be close to the bitrate of GPP host.

<figure><img src="image_6.png" /><figcaption>FIGURE 5: DFE sample rate (Digital Down Converter).</figcaption></figure>

From the above discussion, as the DFE sample rate should be close to the bitrate of GPP host, it can be used to define the necessary channel bandwidth required by user application in the GPP host. Since the necessary channel bandwidth is included in the real analog bandwidth (see section IV-B1), the DFE sample rate should be smaller than the real analog bandwidth. Also, the DFE sample rate should be increased or reduced to fulfill the DAC and ADC clock rates. Some SDR devices require a strictly-integer interpolation and decimation factors, and it is strongly desirable for that factors to be even and it's much better if the factors are in power of two [78]. Thus, specifying appropriate DFE sample rate is another requirement to be considered by the user.
## 4) The maximal GPP-based SDR platform bandwidth

Since GPP-based SDR platform's bandwidth is concave, it takes the lowest value between analog bandwidth, ADC/DAC sample rate and DFE sample rate. The maximal DFE sample rate is achieved when its value reaches to ADC sample rate and DAC sample rate at unity decimation and interpolation factor, respectively. However, as stated above, DFE sample rate cannot be greater than real analog bandwidth. Consequently, the maximal GPP-based SDR platform bandwidth (in Hz) is the minimum from maximal DFE sample rate and analog bandwidth.

## C. COMMUNICATION INTERFACE SPEED

This speed, given in bit per second (bit/s), refers to the PHY layer net bitrate of the wired interface between GPP host and SDR device. The PHY layer net bitrate defines the amount of transferred bits, excluding the PHY layer protocol overhead, per second over a communication link. Obviously, its value (specified by the standard) is less than the real transmission rate defined at the PHY layer gross bitrate that includes the PHY layer overhead (channel coding, modulation, physical framing, guard interval, etc). For example, the PHY layer net bitrate of the Gigabit Ethernet is 1 Gbit/s and the real transmission rate is 1.25 Gbit/s due to the 8B/10B encoding [79]. Since I/Q samples, exchanged between GPP host and SDR device, are encapsulated in frames of the used interface, their rate is limited by the communication interface speed. In the upcoming discussion, the I/Q sample rate is the equivalent of DFE sample rate defined in bit/s and related by [DFE sample rate × I/Q symbol format].

The communication interface speed, despite it excludes the PHY layer protocol overhead, it includes upper layer protocols head such as link layer head, network layer head, etc. Based on this remark, the peak (maximum achievable) rate of encapsulated I/Q samples (useful data rate) is limited by the communication interface speed weighted by a factor of [payload size / data link frame size], known as the link efficiency. Higher the link efficiency, closer the peak I/Q sample rate to the communication interface speed. The peak I/Q sample rate is an instantaneous rate that doesn't consider link occupancy. Consequently, its value will be very large to be taken as an acceptable upper bound, otherwise the real I/Q sample rate will be under-constrained. Thus, it is necessary to include the link occupancy on the upper bound to get the maximal acceptable I/Q sample rate (or maximal acceptable DFE sample rate). To do so, the peak I/Q sample rate weighted by the link occupancy, expressed as $[peak I/Q sample rate \times link occupancy]$, will give us the maximal acceptable I/Q sample rate. Henceforth, we limit the I/Q sample rate or DFE sample rate by the maximal acceptable I/Q sample rate.

The maximal acceptable I/Q sample rate is affected by three factors: the communication interface mode, GPP host application mode and SDR device capability. The communication interface between the GPP host and SDR device motherboard can work in either half or full duplex modes.

With full-duplex interface mode, the communication link can simultaneously be fully occupied in both directions (Host→SDR and SDR→Host) allowing to benefit from full-speed on each direction. In this case, the transmit and receive links have independent occupancy of up to 100% each at any time. With half-duplex interface mode, the communication link is used to either exclusively transmit or receive. In this case, the link occupancy is shared so that transmitting and receiving occupancies are 100%'s complement. One could think that full-duplex interfaces always achieve highest performance but in reality it depends on the GPP host application and SDR motherboard capability (half or full-duplex transceiver). Indeed, half and full duplex interfaces can have similar performance when:

* The GPP host application is one-way communication. So, using either half or full duplex is the same, as the communication needed is only to transmit or receive. This implies the link occupancy of the used direction can attain 100%, allowing a maximal acceptable TX or RX I/Q sample rate equal to the peak rate (on the used direction) and always null on the other direction. Thus, using only half-duplex interface is sufficient when the GPP host application is one-way communication;

* The GPP host application is non-overlapped two-way communication. Both directions between SDR device and GPP host cannot be used simultaneously since transmission and reception are separated in time. So, the occupied time for transmission doesn't consume the time of reception and vice versa. Consequently, the sum of TX and RX link occupancies can go to 100% allowing a maximal acceptable TX rate of $[peak rate \times TX link occupancy]$ and maximal acceptable RX rate of $[peak rate \times (1 - TX link occupancy)]$. Thus, using only half-duplex interface is sufficient when GPP host user application is non-overlapped two-way;

* The SDR device is half-duplex. As SDR device can either receive or transmit, only single direction on the link between SDR device and GPP host is solicited. Such SDR device capability is suitable for GPP host user applications using one-way communication or two-way communication without temporal overlap between transmission and reception. Since only single direction is being used, its link occupancy can go to 100% allowing a maximal acceptable rate equal to the peak rate (null for the unused direction). Hence, using only half duplex interface is sufficient for one-way and non-overlapped two-way communications when SDR device is half duplex.

Full-duplex interfaces become necessary when the GPP host user application is temporally overlapped two-way communication. In addition, SDR devices should also be full-duplex. In this scenario, TX and RX link occupancies are independent and can simultaneously go to 100%. Now, the maximal acceptable TX and RX rate can attain the peak I/Q sample rate. Table 10 shows the maximal supported I/Q
<table><caption>TABLE 10: Maximal I/Q sample rates of selected communication interfaces between GPP host and SDR transceivers.</caption><thead><tr><th rowspan="2">Interface Host - SDR</th><th rowspan="2">Speed (Mbit/s)</th><th rowspan="2">Interface mode</th><th rowspan="2">Link efficiency</th><th rowspan="2">Host application</th><th colspan="2">Max. TX. rate (Mbit/s)</th><th colspan="2">Max. RX rate (Mbit/s)</th></tr><tr><th>Half Dup.SDR</th><th>Full Dup.SDR</th><th>Half Dup.SDR</th><th>Full Dup.SDR</th></tr></thead><tbody><tr><td rowspan="4">USB2.0 [50]</td><td rowspan="4">480</td><td rowspan="4">Half dup.</td><td rowspan="4">0.9970</td><td>TX 1-way Comm.</td><td>478.59</td><td>0</td><td>478.59</td><td>0</td></tr><tr><td>RX 1-way Comm.</td><td>0</td><td>0</td><td>478.59 × (1 - TX link Occup.)</td><td>0</td></tr><tr><td>Non-overlap 2-way Comm.</td><td>478.59 × TX link Occup.</td><td>0</td><td>478.59 × (1 - TX link Occup.)</td><td>0</td></tr><tr><td>Overlap 2-way Comm.</td><td>not supported</td><td>not supported</td><td>not supported</td><td>not supported</td></tr><tr><td rowspan="4">USB3.0 [50]</td><td rowspan="4">5120</td><td rowspan="4">Full dup.</td><td rowspan="4">0.9808</td><td>TX 1-way Comm.</td><td>5021.91</td><td>0</td><td>5021.91</td><td>0</td></tr><tr><td>RX 1-way Comm.</td><td>0</td><td>0</td><td>5021.91 × TX link Occup.</td><td>0</td></tr><tr><td>Non-overlap 2-way Comm.</td><td>5021.91 × TX link Occup.</td><td>0</td><td>5021.91 × (1 - TX link Occup.)</td><td>0</td></tr><tr><td>Overlap 2-way Comm.</td><td>not supported</td><td>5021.91</td><td>not supported</td><td>5021.91</td></tr><tr><td rowspan="4">Gig.Eth [51]</td><td rowspan="4">1000</td><td rowspan="4">Full dup.</td><td rowspan="4">0.9881</td><td>TX 1-way Comm.</td><td>988.1</td><td>0</td><td>988.1</td><td>0</td></tr><tr><td>RX 1-way Comm.</td><td>0</td><td>0</td><td>988.1</td><td>0</td></tr><tr><td>Non-overlap 2-way Comm.</td><td>988.1 × TX link Occup.</td><td>0</td><td>988.1 × (1 - TX link Occup.)</td><td>0</td></tr><tr><td>Overlap 2-way Comm.</td><td>not supported</td><td>988.1</td><td>not supported</td><td>988.1</td></tr><tr><td rowspan="4">10Gig.Eth [51]</td><td rowspan="4">10000</td><td rowspan="4">Full dup.</td><td rowspan="4">0.9881</td><td>TX 1-way Comm.</td><td>9881.0</td><td>0</td><td>9881.0</td><td>0</td></tr><tr><td>RX 1-way Comm.</td><td>0</td><td>0</td><td>9881.0</td><td>0</td></tr><tr><td>Non-overlap 2-way Comm.</td><td>9881.0 × TX link Occup.</td><td>0</td><td>9881.0 × (1 - TX link Occup.)</td><td>0</td></tr><tr><td>Overlap 2-way Comm.</td><td>not supported</td><td>9881.0</td><td>not supported</td><td>9881.0</td></tr><tr><td rowspan="4">PCIe 4.0 (x4 link) [52]</td><td rowspan="4">63015.38</td><td rowspan="4">Full dup.</td><td rowspan="4">0.99369</td><td>TX 1-way Comm.</td><td>62617.75</td><td>0</td><td>62617.75</td><td>0</td></tr><tr><td>RX 1-way Comm.</td><td>0</td><td>0</td><td>62617.75</td><td>0</td></tr><tr><td>Non-overlap 2-way Comm.</td><td>62617.75 × TX link Occup.</td><td>0</td><td>62617.75 × (1 - TX link Occup.)</td><td>0</td></tr><tr><td>Overlap 2-way Comm.</td><td>not supported</td><td>62617.75</td><td>not supported</td><td>62617.75</td></tr></tbody></table>

sample rates of Host-SDR interface solutions for both full and half-duplex SDR transceivers.

## D. SYMBOL RATE

This rate, given in Symbol per second (Sym/s), refers to the constant rate at which symbols occur. One symbol can carry one or more bits according to the digital modulation format. For example, in a BPSK system, each symbol represents one bit; in a 64-QAM system, each symbol represents 6 bits. Symbol rate is determined from the symbol duration as [1 / symbol duration], where symbol duration is the sum of the useful symbol duration and the potential guard interval expressed as [useful symbol duration + guard interval]. The guard interval is used between two successive symbols to reduce inter-symbol interference that results from multi-path fading or band-limited channels [80]. It is given by the wireless technology specification. The useful symbol duration is the time used to carry the useful data and is related to the number of samples per symbol and the sampling interval time. It can be formulated as [number of samples per symbol × sampling interval]. The sampling interval parameter is the inverse of the DFE sample rate, [1 / DFE sample rate]. As the DFE sample rate for quadrature sampling systems is equal to the occupied baseband bandwidth, the sampling interval will be the inverse of the occupied baseband bandwidth. The number of samples per symbol parameter can be computed from the frequency domain based on the total number of spectral lines [80].

The number of samples per symbol is equal to the number of spectral lines in quadrature sampling systems and twice in direct-sampling systems. The number of spectral lines is related to the number of carrier/sub-carrier frequencies. Considering quadrature sampling system, when a conventional single-carrier modulation is applied (like in IEEE 802.15.4, ...), the number of spectral lines is equal to one and hence the number of samples per symbol will be one. When multiple sub-carrier modulation technique is used (like in IEEE 802.11ac, ...), the number of spectral lines is equal to the total number of used and unused sub-carriers. In general, the total number of sub-carriers is specified by the used FFT size [80]. To summarize, the useful symbol duration is expressed

as [number of spectral lines / occupied baseband bandwidth].

In some wireless systems spread spectrum techniques such as Frequency-Hopping Spread Spectrum (FHSS), Direct Sequence Spread Spectrum (DSSS), Time-Hopping Spread Spectrum (THSS) and Chirp Spread Spectrum (CSS) are used to prevent interference by transmitting symbols at low power density over a wide band. This band is named as spread occupied baseband bandwidth. The spreading process is achieved by multiplying the symbols with a spreading code, known as chip sequence, having a faster rate than the input symbol rate (symbol rate before spreading). Thus, the spread occupied baseband bandwidth is larger than the original baseband bandwidth by a factor of chip sequence size, [original occupied baseband bandwidth × chip sequence size]. The spread occupied baseband bandwidth is always given as the channel size of wireless systems using spread spectrum techniques. The spreading process has no effect on the useful symbol duration. However, as the given channel size is the spread baseband bandwidth and not the original occupied baseband bandwidth, the useful symbol duration needs to be relied on the spread baseband bandwidth and the chip sequence size. Based on the fact that the symbol duration before spreading is [number of spectral lines / original occupied baseband bandwidth] and the original occupied bandwidth is [spread baseband bandwidth / chip sequence size], the output symbol duration can be written as [number of spectral lines × chip sequence size / spread occupied baseband bandwidth]. It is obvious that the input and output useful symbol duration are the same.

In general, the useful time duration with/without spreading process can be formulated as [number of spectral lines × chip sequence size / channel size]. Fig. 6 depicts an example of possible single/multiple carrier and spreading/non-spreading cases of digital baseband transmitter. Table 11 provides equations of the symbol rate for each path-end. By applying these equations, users can generate the symbol rate for their desired wireless technology and can also be verified from the corresponding specifications [31], [33], [35], [39]–[41].

The software programmer at user space should consider both symbol rate and symbol format. The symbol rate can be either explicitly set or implicitly driven from the DFE
<figure><img src="image_7.png" /><figcaption>FIGURE 6: Digital baseband transmitter paths.</figcaption></figure>

<table><caption>TABLE 11: Symbol rate of transmitter paths in Fig. 6.</caption><thead><tr><th>Path-end</th><th>Spreading</th><th>Symbol rate</th></tr></thead><tbody><tr><td rowspan="2">①</td><td>No</td><td><sup>1</sup>&frasl;<sub>1</sub> + guard interval</td></tr><tr><td>Yes</td><td><sup>1</sup>&frasl;<sub>1</sub> + guard interval</td></tr><tr><td rowspan="2">②</td><td>No</td><td><sup>1</sup>&frasl;<sub>1</sub> + guard interval</td></tr><tr><td>Yes</td><td><sup>1</sup>&frasl;<sub>1</sub> + guard interval</td></tr><tr><td rowspan="2">③</td><td>No</td><td><sup>1</sup>&frasl;<sub>1</sub> + guard interval</td></tr><tr><td>Yes</td><td><sup>1</sup>&frasl;<sub>1</sub> + guard interval</td></tr></tbody></table>

sample rate and the number of used subcarriers. The symbol format, on the other hand, should be explicitly specified (e.g., complex int16, complex int32, etc). When using a complex int16, the I and Q samples of each symbol are coded each by 16 bits, and so 32 bits per I/Q sample are transmitted to the communication interface. This transmission has a rate of [symbol rate × symbol format]. The communication interface considers the received data as a data payload and performs its operation related to its technology.

### 1) Maximal symbol rate at SDR devices

From the equations depicted in Table 11, the theoretical maximal symbol rate at SDR device can be attained when the channel width (bandwidth) is at its maximal value, and the number of spectral line, guard interval and chip sequence size are at their lowest values. The highest channel width can be set to the maximal bandwidth of SDR device; the lowest number of spectral lines can be set to one; the lowest guard interval can be set to zero (without guard interval) and the lowest chip sequence size can be set to one (i.e., without spreading). Consequently, the maximal symbol rate takes the maximal bandwidth of the SDR device. On the other hand, as symbols should traverse the communication interface between the GPP host and the SDR device and vice versa, the maximal symbol rate at the SDR device is bounded by the communication interface speed (after normalization). This latter value is given by [(interface speed × link efficiency × link occupancy) / symbol format] in Sym/s. Since, we have two theoretical upper bounds, the maximal symbol rate will take the minimum value between them, i.e., minimum (maximal bandwidth of SDR device, [(interface speed × link efficiency × link occupancy) / symbol format]). See Table 13 in subsecion IV-D3 for the maximal theoretical upper bound of the symbol rate at SDR devices.

### 2) Maximal symbol rate at GPP host

In GPP-based SDR platforms, all symbols are either generated or consumed by GPP host. Therefore, GPP host can impact the maximal symbol rate supported by the platforms. To determine the maximal speed at which symbols are generated or consumed at a GPP host, a continuous data transmission/reception without MAC operations, physical framing, channel coding and spreading is considered. Consequently, the executed physical layer in software should incorporate only bit generator and digital modulator blocks at the transmission side (baseband TX path); or bit sink and digital demodulator blocks at the receiving side (baseband RX path). Hence, only Bit stream and Digital Modulator blocks in Fig. 6 are used to determine the upper bound of symbol rates supported at GPP hosts.

Each symbol generation/consumption requires a time duration in the baseband TX/RX path, when inverted gives the symbol rate. This duration represents the makespan (execution time) of an executable file, created after compiling the TX/RX path blocks, from generating a stream of bits to delivering the corresponding output symbol or from taking a symbol as input and delivering its corresponding bits. Several hardware and software parameters of the GPP host impact the makespan. The hardware parameters include: number of cores, speed of cores, ISA design, pipeline stages, caches, accelerators, hyperthreading support, SIMD support, etc. The software parameters include: user program quality, compiler optimization to enhance the degree of ILP/TLP/DLP, user threads and their degree of TLP, kernel type (non-preemptive and preemptive) and its operations (scheduling, context switching, etc). Multiple parameters can be merged into some big factors such as the minimum number of cycles per instruction (CPI), the number of executed instructions and overheads (due to kernel and memory access operations). The minimum execution time supported by GPP hosts to generate/consume one symbol is achieved when the number of input/output symbols reaches a threshold value ($K$) to fully benefit from the high degree of parallelism (ILP/TLP/DLP). Above this threshold value, the execution time will increase due to the high CPU load and overhead. Thereby, the minimal makespan can be formulated as in (2):

$$ makespan = \left[ \frac{I}{K} \times \text{Inf CPI} \times T \times \frac{1}{\text{# of cores} \times 2_{\text{IT}}} + \text{Overhead} \right] (2) $$

where $I$ is number of executed instructions to generate/consume $K$ symbols, Inf CPI represents the lowest CPI, $T$ is clock cycle duration given by $\frac{1}{\text{GPP clock speed}}$, and $2_{\text{IT}} = 2$ if hyperthreading or 1 otherwise.

Using (2), numerical results are conducted and illustrated in Table 12. Some parameters such as the threshold number of symbols $K$ and the number of executed instructions are
obtained from experimental data by benchmarking specific functions. To this end, a baseband TX/RX python program is written using GNU Radio software. This program includes source/sink and digital modulator/demodulator. To cover the various types of baseband processing in multiple wireless technologies, different modulation formats are considered such as GFSK, GMSK, BPSK, QPSK, 8-PSK, 16QAM, BPSK OFDM-64 (BPSK with 64-point IFFT), QPSK OFDM-64, and 16QAM OFDM-64. By running the baseband TX/RX python program on different GPP hosts based on Intel core processor, the maximum number of supported symbols (K) that achieves the lowest makespan per symbol is examined. An average maximum value equivalent to fifty six million symbols is obtained. At this threshold value, other parameters such as the total number of instructions, Inf CPI and overhead were also recorded via perf stat tool [81].

<table><caption>TABLE 12: Maximal symbol rate at GPP host.</caption><thead><tr><th>TX path blocks<br>Source</th><th>Modulator</th><th>Total number<br>of executed<br>instructions</th><th>Overhead<br>(%)</th><th>CPI</th><th>GPP cores and speed</th><th>Hyperfthreading Enabled<br>Makespan (ns)</th><th>Hyperthreading Enabled<br>Sym. rate<br>(MSym/s)</th><th>Hyperthreading Disabled<br>Makespan (ns)</th><th>Hyperthreading Disabled<br>Sym. rate<br>(MSym/s)</th></tr></thead><tbody><tr><td rowspan="4">Random</td><td rowspan="4">GFSK</td><td rowspan="4">39,442,851,301</td><td rowspan="4">0.98</td><td rowspan="4">0.44</td><td>2 core, 2.0 GHz</td><td>38,3500</td><td>26,0756</td><td>76,7000</td><td>31,078</td></tr><tr><td>4 core, 1.5 GHz</td><td>25,5726</td><td>39,1044</td><td>51,1452</td><td>19,5522</td></tr><tr><td>4 core, 4.2 GHz</td><td>9,1500</td><td>109,2896</td><td>18,3000</td><td>54,6448</td></tr><tr><td>8 core, 3.6 GHz</td><td>5,3276</td><td>187,7018</td><td>10,6552</td><td>93,8509</td></tr><tr><td rowspan="4">Random</td><td rowspan="4">GMSK</td><td rowspan="4">38,349,575,894</td><td rowspan="4">0.79</td><td rowspan="4">0.44</td><td>2 core, 2.0 GHz</td><td>37,3672</td><td>26,7614</td><td>74,7344</td><td>13,3807</td></tr><tr><td>4 core, 1.5 GHz</td><td>24,9114</td><td>40,1422</td><td>49,8229</td><td>20,0711</td></tr><tr><td>4 core, 4.2 GHz</td><td>8,8969</td><td>112,3987</td><td>17,7939</td><td>56,1990</td></tr><tr><td>8 core, 3.6 GHz</td><td>5,1899</td><td>192,6819</td><td>10,3798</td><td>96,3409</td></tr><tr><td rowspan="4">Random</td><td rowspan="4">BPSK<br>without<br>IFFT</td><td rowspan="4">67,051,370,617</td><td rowspan="4">1.26</td><td rowspan="4">0.44</td><td>2 core, 2.0 GHz</td><td>65,0243</td><td>15,3788</td><td>130,0485</td><td>7,6894</td></tr><tr><td>4 core, 1.5 GHz</td><td>43,3405</td><td>23,0683</td><td>86,6990</td><td>11,5341</td></tr><tr><td>4 core, 4.2 GHz</td><td>15,4819</td><td>64,5915</td><td>30,9639</td><td>32,2956</td></tr><tr><td>8 core, 3.6 GHz</td><td>9,0311</td><td>110,7285</td><td>18,0622</td><td>55,3642</td></tr><tr><td rowspan="4">Random</td><td rowspan="4">BPSK<br>OFDM-<br>64</td><td rowspan="4">69,664,173,615</td><td rowspan="4">1.81</td><td rowspan="4">0.44</td><td>2 core, 2.0 GHz</td><td>67,1817</td><td>14,8850</td><td>134,3635</td><td>7,4425</td></tr><tr><td>4 core, 1.5 GHz</td><td>44,7878</td><td>22,3275</td><td>89,5757</td><td>11,1637</td></tr><tr><td>4 core, 4.2 GHz</td><td>15,9956</td><td>62,5172</td><td>31,9913</td><td>31,2585</td></tr><tr><td>8 core, 3.6 GHz</td><td>9,3308</td><td>107,1719</td><td>18,6616</td><td>55,2859</td></tr><tr><td rowspan="4">Random</td><td rowspan="4">QPSK<br>without<br>IFFT</td><td rowspan="4">74,936,632,019</td><td rowspan="4">0.82</td><td rowspan="4">0.44</td><td>2 core, 2.0 GHz</td><td>72,9949</td><td>13,6996</td><td>145,9899</td><td>6,8498</td></tr><tr><td>4 core, 1.5 GHz</td><td>48,6633</td><td>20,5494</td><td>97,3266</td><td>10,2747</td></tr><tr><td>4 core, 4.2 GHz</td><td>17,3797</td><td>57,5384</td><td>34,7595</td><td>28,7691</td></tr><tr><td>8 core, 3.6 GHz</td><td>10,1381</td><td>98,6378</td><td>20,2763</td><td>49,3186</td></tr><tr><td rowspan="4">Random</td><td rowspan="4">QPSK<br>OFDM-<br>64</td><td rowspan="4">77,443,318,169</td><td rowspan="4">0.43</td><td rowspan="4">0.44</td><td>2 core, 2.0 GHz</td><td>75,7333</td><td>13,2042</td><td>151,4666</td><td>6,6021</td></tr><tr><td>4 core, 1.5 GHz</td><td>50,4888</td><td>19,8064</td><td>100,9777</td><td>9,9032</td></tr><tr><td>4 core, 4.2 GHz</td><td>18,0317</td><td>55,4578</td><td>36,0615</td><td>27,7288</td></tr><tr><td>8 core, 3.6 GHz</td><td>10,5185</td><td>95,0706</td><td>21,0370</td><td>47,5353</td></tr><tr><td rowspan="4">Random</td><td rowspan="4">8-PSK</td><td rowspan="4">82,830,339,448</td><td rowspan="4">0.51</td><td rowspan="4">0.44</td><td>2 core, 2.0 GHz</td><td>39,8621</td><td>25,0864</td><td>79,7242</td><td>12,5432</td></tr><tr><td>4 core, 1.5 GHz</td><td>26,5747</td><td>37,6297</td><td>53,1494</td><td>18,8148</td></tr><tr><td>4 core, 4.2 GHz</td><td>9,4909</td><td>105,3640</td><td>18,9818</td><td>52,0820</td></tr><tr><td>8 core, 3.6 GHz</td><td>5,5364</td><td>180,6228</td><td>11,0728</td><td>90,3114</td></tr><tr><td rowspan="4">Random</td><td rowspan="4">16QAM<br>without<br>IFFT</td><td rowspan="4">90,791,074,521</td><td rowspan="4">1.90</td><td rowspan="4">0.44</td><td>2 core, 2.0 GHz</td><td>87,4756</td><td>11,4317</td><td>174,9512</td><td>5,7159</td></tr><tr><td>4 core, 1.5 GHz</td><td>58,3171</td><td>17,1476</td><td>116,6541</td><td>8,5738</td></tr><tr><td>4 core, 4.2 GHz</td><td>20,8275</td><td>48,0134</td><td>41,6550</td><td>24,0067</td></tr><tr><td>8 core, 3.6 GHz</td><td>12,1494</td><td>82,3086</td><td>24,2988</td><td>41,1543</td></tr><tr><td rowspan="4">Random</td><td rowspan="4">16QAM<br>OFDM-<br>64</td><td rowspan="4">93,191,248,403</td><td rowspan="4">0.61</td><td rowspan="4">0.44</td><td>2 core, 2.0 GHz</td><td>90,9688</td><td>10,9928</td><td>181,9376</td><td>5,4964</td></tr><tr><td>4 core, 1.5 GHz</td><td>60,6458</td><td>16,4892</td><td>121,2917</td><td>8,2446</td></tr><tr><td>4 core, 4.2 GHz</td><td>21,6592</td><td>46,1697</td><td>43,3184</td><td>23,0848</td></tr><tr><td>8 core, 3.6 GHz</td><td>12,6346</td><td>79,1477</td><td>25,2691</td><td>39,5740</td></tr></tbody></table>

The results depicted in Table 12, show the minimal makespans and maximal data symbol rates supported by different GPP hosts according to the applied digital modulator. As the consecutive transmit or receive symbols are independent of each other, a high degree of parallelism ILP/TLP/DLP is expected. Thus, GPP hosts having more cores with faster clock speeds and hyperthreading support achieve higher symbol rates by fully exploiting the parallelism. It is important to note that hyperthreading can enhance performance when TLP is very high, otherwise, it might create negative impacts.

### 3) Maximal symbol rate supported by GPP-based SDR platforms

The maximal symbol rate supported by a given GPP-based SDR platform corresponds to the smallest value between the maximal symbol rate at the used SDR device and at the GPP host. Table 13 gives the maximal symbol rates supported by selected GPP-based SDR platforms according to the type of

digital modulation. As the table depicts, for small modulators such as GFSK and GMSK, the maximal symbol rate of the SDR platform is generally limited by the symbol rate of SDR devices, except when X310 is used as SDR device and hyperthreading is enabled for high core and faster clock speed hosts. As the modulator goes higher, the symbol rate starts to be limited by the rate of the GPP host. This is true specially for lower GPP core and slower clock speed. On the other hand, when hyperthreading is disabled, the symbol rate of the SDR platform is mostly limited by the rate of the GPP host for lower core and slower clock speeds. At higher GPP core and clock speed, specially for 8 core and 3.6 GHz host, the SDR platform symbol rate is limited by the symbol rate of the SDR device except for X310 and Lime.

## E. BITRATE

This rate, given by bits per second (bit/s), refers to the net bitrate at which data is transferred between the MAC sublayer and the PHY layer of the wireless technology, both implemented in software. It includes the user data and all headers from the application layer to the MAC sublayer. This rate can be expressed based on the wireless PHY layer gross bitrate by excluding from the physical layer frames the error-correction codes and physical layer header. Since the rate of error-correction codes is [code rate] and the rate of physical layer headers is [physical framing], the bitrate can be written as [wireless physical layer gross bitrate × code rate × physical framing]. The wireless physical layer gross bitrate is related to the symbol rate, the number of bits per symbol (resulted from bit-to-symbol mapper) and to the number of data subcarriers (if OFDM system is used) to carry data in parallel. It can be expressed by the formula [symbol rate × # bits per symbol × # data subcarriers]. All the parameters (code rate, physical framing, symbol rate, number of bits per symbol and number of data subcarriers) are stated in the wireless standard technical specifications. Thus, bitrates and maximal bitrates of wireless technologies can simply be obtained from the bitrate formula. Please refer to section II for the maximal bitrate of selected wireless technologies.

### 1) Theoretical maximal supported bitrate by GPP-based SDR platforms

The theoretical maximal bitrate that can be achieved by a GPP-based SDR platform depends on the highest values of the wireless physical layer gross bitrate, code rate and physical framing supported by the platform. It can be formulated as [maximal wireless physical layer gross bitrate × maximal code rate × maximal physical framing], where the maximal wireless physical layer gross bitrate is computed according to the used digital modulator by [maximal symbol rate × involved # of bits per symbol × involved # of data subcarriers]. The maximal symbol rate supported by GPP-based SDR platforms is computed in the previous section (see Table 13) using continuous data transmission/reception without MAC operations, physical framing (i.e., maximal physical framing
<table><caption>TABLE 13: Maximal symbol rate of GPP-based SDR platforms.</caption><thead><tr><th rowspan="2">Modulator</th><th rowspan="2">GPP cores and speed</th><th colspan="5">Hypothreading Enabled</th><th colspan="5">Hypothreading Disabled</th></tr><tr><th>Symbol rate (MSym/s)</th><th>Hack</th><th>X310</th><th>B210</th><th>Sora</th><th>Lime</th><th>Symbol rate (MSym/s)</th><th>Hack</th><th>X310</th><th>B210</th><th>Sora</th><th>Lime</th></tr></thead><tbody><tr><td rowspan="4">GFSK</td><td>2 core, 2.0 GHz</td><td>26.0756</td><td>14.95</td><td>26.07</td><td>26.07</td><td>26.07</td><td>26.07</td><td>13.0378</td><td>13.03</td><td>13.03</td><td>13.03</td><td>13.03</td></tr><tr><td>4 core, 1.5 GHz</td><td>39.1044</td><td>14.95</td><td>39.10</td><td>39.10</td><td>39.10</td><td>39.10</td><td>19.5522</td><td>14.95</td><td>19.55</td><td>19.55</td><td>19.55</td></tr><tr><td>4 core, 4.2 GHz</td><td>109.2896</td><td>14.95</td><td>109.28</td><td>61.44</td><td>40.00</td><td>109.28</td><td>54.6448</td><td>14.95</td><td>54.64</td><td>54.64</td><td>54.64</td></tr><tr><td>8 core, 3.6 GHz</td><td>187.7018</td><td>14.95</td><td>187.70</td><td>61.44</td><td>40.00</td><td>160.00</td><td>93.8509</td><td>14.95</td><td>93.85</td><td>61.44</td><td>93.85</td></tr><tr><td rowspan="4">GMSK</td><td>2 core, 2.0 GHz</td><td>26.7614</td><td>14.95</td><td>26.76</td><td>26.76</td><td>26.76</td><td>26.76</td><td>13.3807</td><td>13.38</td><td>13.38</td><td>13.38</td><td>13.38</td></tr><tr><td>4 core, 1.5 GHz</td><td>40.1422</td><td>14.95</td><td>40.14</td><td>40.14</td><td>40.00</td><td>40.14</td><td>20.0711</td><td>14.95</td><td>20.07</td><td>20.07</td><td>20.07</td></tr><tr><td>4 core, 4.2 GHz</td><td>112.3987</td><td>14.95</td><td>112.39</td><td>61.44</td><td>40.00</td><td>112.39</td><td>56.1990</td><td>14.95</td><td>56.19</td><td>56.19</td><td>56.19</td></tr><tr><td>8 core, 3.6 GHz</td><td>192.6819</td><td>14.95</td><td>192.68</td><td>61.44</td><td>40.00</td><td>160.00</td><td>96.3409</td><td>14.95</td><td>96.34</td><td>61.44</td><td>96.34</td></tr><tr><td rowspan="4">BPSK without FFT</td><td>2 core, 2.0 GHz</td><td>15.3788</td><td>14.95</td><td>15.37</td><td>15.37</td><td>15.37</td><td>15.37</td><td>7.6894</td><td>7.68</td><td>7.68</td><td>7.68</td><td>7.68</td></tr><tr><td>4 core, 1.5 GHz</td><td>23.0683</td><td>14.95</td><td>23.06</td><td>23.06</td><td>23.06</td><td>23.06</td><td>11.5341</td><td>11.53</td><td>11.53</td><td>11.53</td><td>11.53</td></tr><tr><td>4 core, 4.2 GHz</td><td>64.5915</td><td>14.95</td><td>64.59</td><td>61.44</td><td>40.00</td><td>64.59</td><td>32.2956</td><td>14.95</td><td>32.29</td><td>32.29</td><td>32.29</td></tr><tr><td>8 core, 3.6 GHz</td><td>110.7285</td><td>14.95</td><td>110.72</td><td>61.44</td><td>40.00</td><td>110.72</td><td>55.3642</td><td>14.95</td><td>55.36</td><td>55.36</td><td>55.36</td></tr><tr><td rowspan="4">BPSK OFDM-64</td><td>2 core, 2.0 GHz</td><td>14.8850</td><td>14.88</td><td>14.88</td><td>14.88</td><td>14.88</td><td>14.88</td><td>7.4425</td><td>7.44</td><td>7.44</td><td>7.44</td><td>7.44</td></tr><tr><td>4 core, 1.5 GHz</td><td>22.3275</td><td>14.95</td><td>22.32</td><td>22.32</td><td>22.32</td><td>22.32</td><td>11.1637</td><td>11.16</td><td>11.16</td><td>11.16</td><td>11.16</td></tr><tr><td>4 core, 4.2 GHz</td><td>62.5172</td><td>14.95</td><td>62.51</td><td>61.44</td><td>40.00</td><td>62.51</td><td>31.2585</td><td>14.95</td><td>31.25</td><td>31.25</td><td>31.25</td></tr><tr><td>8 core, 3.6 GHz</td><td>107.1719</td><td>14.95</td><td>107.17</td><td>61.44</td><td>40.00</td><td>107.17</td><td>53.5859</td><td>14.95</td><td>53.58</td><td>53.58</td><td>53.58</td></tr><tr><td rowspan="4">QPSK without FFT</td><td>2 core, 2.0 GHz</td><td>13.6996</td><td>13.69</td><td>13.69</td><td>13.69</td><td>13.69</td><td>13.69</td><td>6.8498</td><td>6.84</td><td>6.84</td><td>6.84</td><td>6.84</td></tr><tr><td>4 core, 1.5 GHz</td><td>20.5494</td><td>14.95</td><td>20.54</td><td>20.54</td><td>20.54</td><td>20.54</td><td>10.2747</td><td>10.27</td><td>10.27</td><td>10.27</td><td>10.27</td></tr><tr><td>4 core, 4.2 GHz</td><td>57.5384</td><td>14.95</td><td>57.53</td><td>57.53</td><td>40.00</td><td>57.53</td><td>28.7691</td><td>14.95</td><td>28.76</td><td>28.76</td><td>28.76</td></tr><tr><td>8 core, 3.6 GHz</td><td>98.6378</td><td>14.95</td><td>98.63</td><td>61.44</td><td>40.00</td><td>98.63</td><td>49.3186</td><td>14.95</td><td>49.31</td><td>49.31</td><td>49.31</td></tr><tr><td rowspan="4">QPSK OFDM-64</td><td>2 core, 2.0 GHz</td><td>13.2042</td><td>13.20</td><td>13.20</td><td>13.20</td><td>13.20</td><td>13.20</td><td>6.6021</td><td>6.60</td><td>6.60</td><td>6.60</td><td>6.60</td></tr><tr><td>4 core, 1.5 GHz</td><td>19.8064</td><td>14.95</td><td>19.80</td><td>19.80</td><td>19.80</td><td>19.80</td><td>9.9032</td><td>9.90</td><td>9.90</td><td>9.90</td><td>9.90</td></tr><tr><td>4 core, 4.2 GHz</td><td>55.4578</td><td>14.95</td><td>55.45</td><td>55.45</td><td>40.00</td><td>55.45</td><td>27.7288</td><td>14.95</td><td>27.72</td><td>27.72</td><td>27.72</td></tr><tr><td>8 core, 3.6 GHz</td><td>95.0706</td><td>14.95</td><td>95.07</td><td>61.44</td><td>40.00</td><td>95.07</td><td>47.5353</td><td>14.95</td><td>47.53</td><td>47.53</td><td>47.53</td></tr><tr><td rowspan="4">8-PSK</td><td>2 core, 2.0 GHz</td><td>25.0864</td><td>14.95</td><td>25.08</td><td>25.08</td><td>25.08</td><td>25.08</td><td>12.5432</td><td>12.54</td><td>12.54</td><td>12.54</td><td>12.54</td></tr><tr><td>4 core, 1.5 GHz</td><td>37.6297</td><td>14.95</td><td>37.62</td><td>37.62</td><td>37.62</td><td>37.62</td><td>18.8148</td><td>14.95</td><td>18.81</td><td>18.81</td><td>18.81</td></tr><tr><td>4 core, 4.2 GHz</td><td>105.3640</td><td>14.95</td><td>105.36</td><td>61.44</td><td>40.00</td><td>105.36</td><td>52.6820</td><td>14.95</td><td>52.68</td><td>52.68</td><td>52.68</td></tr><tr><td>8 core, 3.6 GHz</td><td>180.6228</td><td>14.95</td><td>180.62</td><td>61.44</td><td>40.00</td><td>160.00</td><td>90.3114</td><td>14.95</td><td>90.31</td><td>61.44</td><td>40.00</td></tr><tr><td rowspan="4">16QAM without FFT</td><td>2 core, 2.0 GHz</td><td>11.4317</td><td>11.43</td><td>11.43</td><td>11.43</td><td>11.43</td><td>11.43</td><td>5.7159</td><td>5.71</td><td>5.71</td><td>5.71</td><td>5.71</td></tr><tr><td>4 core, 1.5 GHz</td><td>17.1476</td><td>14.95</td><td>17.14</td><td>17.14</td><td>17.14</td><td>17.14</td><td>8.5738</td><td>8.57</td><td>8.57</td><td>8.57</td><td>8.57</td></tr><tr><td>4 core, 4.2 GHz</td><td>48.0134</td><td>14.95</td><td>48.01</td><td>48.01</td><td>40.00</td><td>48.01</td><td>24.0067</td><td>14.95</td><td>24.00</td><td>24.00</td><td>24.00</td></tr><tr><td>8 core, 3.6 GHz</td><td>82.3086</td><td>14.95</td><td>82.30</td><td>61.44</td><td>40.00</td><td>82.30</td><td>41.1543</td><td>14.95</td><td>41.15</td><td>41.15</td><td>41.15</td></tr><tr><td rowspan="4">16QAM OFDM-64</td><td>2 core, 2.0 GHz</td><td>10.9928</td><td>10.99</td><td>10.99</td><td>10.99</td><td>10.99</td><td>10.99</td><td>5.4964</td><td>5.49</td><td>5.49</td><td>5.49</td><td>5.49</td></tr><tr><td>4 core, 1.5 GHz</td><td>16.4892</td><td>14.95</td><td>16.48</td><td>16.48</td><td>16.48</td><td>16.48</td><td>8.2446</td><td>8.24</td><td>8.24</td><td>8.24</td><td>8.24</td></tr><tr><td>4 core, 4.2 GHz</td><td>46.1697</td><td>14.95</td><td>46.16</td><td>46.16</td><td>40.00</td><td>46.16</td><td>23.0848</td><td>14.95</td><td>23.08</td><td>23.08</td><td>23.08</td></tr><tr><td>8 core, 3.6 GHz</td><td>79.1477</td><td>14.95</td><td>79.14</td><td>61.44</td><td>40.00</td><td>79.14</td><td>39.5740</td><td>14.95</td><td>39.57</td><td>39.57</td><td>39.57</td></tr></tbody></table>

<table><caption>TABLE 14: Maximal bitrate (in Mbit/s) of GPP-based SDR platforms.</caption><thead><tr><th rowspan="2">Modulator</th><th rowspan="2">GPP cores and speed</th><th colspan="5">Hypothreading Enabled</th><th colspan="5">Hypothreading Disabled</th></tr><tr><th>Hack</th><th>X310</th><th>B210</th><th>Sora</th><th>Lime</th><th>Hack</th><th>X310</th><th>B210</th><th>Sora</th><th>Lime</th></tr></thead><tbody><tr><td rowspan="4">GFSK</td><td>2 core, 2.0 GHz</td><td>14.95</td><td>26.07</td><td>26.07</td><td>26.07</td><td>26.07</td><td>13.03</td><td>13.03</td><td>13.03</td><td>13.03</td><td>13.03</td></tr><tr><td>4 core, 1.5 GHz</td><td>14.95</td><td>39.10</td><td>39.10</td><td>39.10</td><td>39.10</td><td>14.95</td><td>19.55</td><td>19.55</td><td>19.55</td><td>19.55</td></tr><tr><td>4 core, 4.2 GHz</td><td>14.95</td><td>109.28</td><td>61.44</td><td>40.00</td><td>109.28</td><td>14.95</td><td>54.64</td><td>54.64</td><td>40.00</td><td>54.64</td></tr><tr><td>8 core, 3.6 GHz</td><td>14.95</td><td>187.70</td><td>61.44</td><td>40.00</td><td>160.00</td><td>14.95</td><td>93.85</td><td>61.44</td><td>40.00</td><td>93.85</td></tr><tr><td rowspan="4">GMSK</td><td>2 core, 2.0 GHz</td><td>14.95</td><td>26.76</td><td>26.76</td><td>26.76</td><td>26.76</td><td>13.38</td><td>13.38</td><td>13.38</td><td>13.38</td><td>13.38</td></tr><tr><td>4 core, 1.5 GHz</td><td>14.95</td><td>40.14</td><td>40.14</td><td>40.00</td><td>40.14</td><td>14.95</td><td>20.07</td><td>20.07</td><td>20.07</td><td>20.07</td></tr><tr><td>4 core, 4.2 GHz</td><td>14.95</td><td>112.39</td><td>61.44</td><td>40.00</td><td>112.39</td><td>14.95</td><td>56.19</td><td>56.19</td><td>40.00</td><td>56.19</td></tr><tr><td>8 core, 3.6 GHz</td><td>14.95</td><td>192.68</td><td>61.44</td><td>40.00</td><td>160.00</td><td>14.95</td><td>96.34</td><td>61.44</td><td>40.00</td><td>96.34</td></tr><tr><td rowspan="4">BPSK without FFT</td><td>2 core, 2.0 GHz</td><td>14.95</td><td>15.37</td><td>15.37</td><td>15.37</td><td>15.37</td><td>7.68</td><td>7.68</td><td>7.68</td><td>7.68</td><td>7.68</td></tr><tr><td>4 core, 1.5 GHz</td><td>14.95</td><td>23.06</td><td>23.06</td><td>23.06</td><td>23.06</td><td>11.53</td><td>11.53</td><td>11.53</td><td>11.53</td><td>11.53</td></tr><tr><td>4 core, 4.2 GHz</td><td>14.95</td><td>64.59</td><td>61.44</td><td>40.00</td><td>64.59</td><td>14.95</td><td>32.29</td><td>32.29</td><td>32.29</td><td>32.29</td></tr><tr><td>8 core, 3.6 GHz</td><td>14.95</td><td>110.72</td><td>61.44</td><td>40.00</td><td>110.72</td><td>14.95</td><td>55.36</td><td>55.36</td><td>40.00</td><td>55.36</td></tr><tr><td rowspan="4">BPSK OFDM-64</td><td>2 core, 2.0 GHz</td><td>952.32</td><td>952.32</td><td>952.32</td><td>952.32</td><td>952.32</td><td>476.16</td><td>476.16</td><td>476.16</td><td>476.16</td><td>476.16</td></tr><tr><td>4 core, 1.5 GHz</td><td>956.80</td><td>1428.48</td><td>1428.48</td><td>1428.48</td><td>1428.48</td><td>714.24</td><td>714.24</td><td>714.24</td><td>714.24</td><td>714.24</td></tr><tr><td>4 core, 4.2 GHz</td><td>956.80</td><td>4000.64</td><td>3932.16</td><td>2560.00</td><td>4000.64</td><td>956.80</td><td>2000.00</td><td>2000.00</td><td>2000.00</td><td>2000.00</td></tr><tr><td>8 core, 3.6 GHz</td><td>956.80</td><td>6858.88</td><td>3932.16</td><td>2560.00</td><td>6858.88</td><td>956.80</td><td>3429.12</td><td>3429.12</td><td>2560.00</td><td>3429.12</td></tr><tr><td rowspan="4">QPSK without FFT</td><td>2 core, 2.0 GHz</td><td>27.38</td><td>27.38</td><td>27.38</td><td>27.38</td><td>27.38</td><td>13.68</td><td>13.68</td><td>13.68</td><td>13.68</td><td>13.68</td></tr><tr><td>4 core, 1.5 GHz</td><td>29.90</td><td>41.08</td><td>41.08</td><td>41.08</td><td>41.08</td><td>20.54</td><td>20.54</td><td>20.54</td><td>20.54</td><td>20.54</td></tr><tr><td>4 core, 4.2 GHz</td><td>29.90</td><td>115.06</td><td>115.06</td><td>80.00</td><td>115.06</td><td>29.90</td><td>57.52</td><td>57.52</td><td>57.52</td><td>57.52</td></tr><tr><td>8 core, 3.6 GHz</td><td>29.90</td><td>197.26</td><td>122.88</td><td>80.00</td><td>197.26</td><td>29.90</td><td>98.62</td><td>98.62</td><td>80.00</td><td>98.62</td></tr><tr><td rowspan="4">QPSK OFDM-64</td><td>2 core, 2.0 GHz</td><td>1689.60</td><td>1689.60</td><td>1689.60</td><td>1689.60</td><td>1689.60</td><td>844.80</td><td>844.80</td><td>844.80</td><td>844.80</td><td>844.80</td></tr><tr><td>4 core, 1.5 GHz</td><td>1913.60</td><td>2534.40</td><td>2534.40</td><td>2534.40</td><td>2534.40</td><td>1267.20</td><td>1267.20</td><td>1267.20</td><td>1267.20</td><td>1267.20</td></tr><tr><td>4 core, 4.2 GHz</td><td>1913.60</td><td>7097.60</td><td>7097.60</td><td>7097.60</td><td>7097.60</td><td>1913.60</td><td>3548.16</td><td>3548.16</td><td>3548.16</td><td>3548.16</td></tr><tr><td>8 core, 3.6 GHz</td><td>1913.60</td><td>121,689.6</td><td>7864.32</td><td>5120.00</td><td>12,168.96</td><td>1913.60</td><td>6083.84</td><td>6083.84</td><td>5120.00</td><td>6083.84</td></tr><tr><td rowspan="4">8-PSK</td><td>2 core, 2.0 GHz</td><td>44.85</td><td>75.24</td><td>75.24</td><td>75.24</td><td>75.24</td><td>37.62</td><td>37.62</td><td>37.62</td><td>37.62</td><td>37.62</td></tr><tr><td>4 core, 1.5 GHz</td><td>44.85</td><td>112.86</td><td>112.86</td><td>112.86</td><td>112.86</td><td>44.85</td><td>56.43</td><td>56.43</td><td>56.43</td><td>56.43</td></tr><tr><td>4 core, 4.2 GHz</td><td>44.85</td><td>316.08</td><td>184.32</td><td>120.00</td><td>316.08</td><td>44.85</td><td>158.04</td><td>158.04</td><td>120.00</td><td>158.04</td></tr><tr><td>8 core, 3.6 GHz</td><td>44.85</td><td>541.86</td><td>184.32</td><td>120.00</td><td>480.00</td><td>44.85</td><td>270.93</td><td>184.32</td><td>120.00</td><td>270.93</td></tr><tr><td rowspan="4">16QAM without FFT</td><td>2 core, 2.0 GHz</td><td>45.72</td><td>45.72</td><td>45.72</td><td>45.72</td><td>45.72</td><td>22.84</td><td>22.84</td><td>22.84</td><td>22.84</td><td>22.84</td></tr><tr><td>4 core, 1.5 GHz</td><td>59.80</td><td>68.56</td><td>68.56</td><td>68.56</td><td>68.56</td><td>34.28</td><td>34.28</td><td>34.28</td><td>34.28</td><td>34.28</td></tr><tr><td>4 core, 4.2 GHz</td><td>59.80</td><td>192.04</td><td>192.04</td><td>160.00</td><td>160.00</td><td>59.80</td><td>96.00</td><td>96.00</td><td>96.00</td><td>96.00</td></tr><tr><td>8 core, 3.6 GHz</td><td>59.80</td><td>329.20</td><td>245.76</td><td>160.00</td><td>329.20</td><td>59.80</td><td>164.60</td><td>164.60</td><td>160.00</td><td>164.60</td></tr><tr><td rowspan="4">16QAM OFDM-64</td><td>2 core, 2.0 GHz</td><td>2813.44</td><td>2813.44</td><td>2813.44</td><td>2813.44</td><td>2813.44</td><td>1405.44</td><td>1405.44</td><td>1405.44</td><td>1405.44</td><td>1405.44</td></tr><tr><td>4 core, 1.5 GHz</td><td>3827.20</td><td>4218.88</td><td>4218.88</td><td>4218.88</td><td>4218.88</td><td>2109.44</td><td>2109.44</td><td>2109.44</td><td>2109.44</td><td>2109.44</td></tr><tr><td>4 core, 4.2 GHz</td><td>3827.20</td><td>11,816.96</td><td>11,816.96</td><td>10,240.00</td><td>11,816.96</td><td>3827.20</td><td>5908.48</td><td>5908.48</td><td>5908.48</td><td>5908.48</td></tr><tr><td>8 core, 3.6 GHz</td><td>3827.20</td><td>20,259.84</td><td>15,728.64</td><td>10,240.00</td><td>20,259.84</td><td>3827.20</td><td>10,129.92</td><td>10,129.92</td><td>10,129.92</td><td>10,129.92</td></tr></tbody></table>

is set to one), channel coding (i.e., maximal code rate is set to one) and different types of digital modulation techniques. The number of bits per symbol as well as the number of data

subcarriers are related to the digital modulation on which the maximal symbol rate is computed. Table 14 illustrates the maximal supported bitrates by SDR platforms.
Like the symbol rate, the maximal supported bitrate by a given GPP-based SDR platform increases with GPP core and clock speed, and varies with the used modulation technique and number of data subcarriers. It is also shown that hyperthreading support offers higher maximal bitrate than hyperthreading disabled GPP host. From the SDR device's perspective, those with the highest maximal symbol rate also gives the highest maximal supported bitrate. Thus, for a given wireless technology (i.e., if required modulation type and number of data subcarriers are known), one can easily determine the type of GPP host that can support this requirement. Hence, the candidate SDR platforms with respect to supported maximal symbol rate and bitrate can be determined. For instance, as shown in Table 14, executing GMSK modulator provides a maximal bitrate of (26.76, 40.14, 112.39 and 192.68) Mbit/s, with (2, 4/1.5GHz, 4/3.6GHz and 8) core hyperthreading enabled GPP hosts, respectively. Depending on the SDR device employed, the GPP-based SDR platform will have a maximal bitrate value as illustrated in the table. Therefore, a wireless technology supporting GMSK modulator (such as EC-GSM-IoT having a maximal bitrate of 240 kbit/s), can be implemented using any of the SDR platforms listed in the table with/without hyperthreading support. These findings are used for mapping wireless technologies with SDR platforms in section V.

## F. LATENCY

In GPP-based SDR platforms, a latency refers to the time delay spent by a MAC frame (data, control and management) in the transceiver chain between the MAC layer at the GPP host and the antenna connected to the SDR device. As frames can traverse the transceiver chain while being transmitted or received, two types of latencies can be distinguished: GPP-based SDR platform TX latency and RX latency. Both of these latencies contain the same components and results from an accumulation of latencies at each stage of the corresponding path. Since TX/RX path stages are shared between the GPP host, communication interface and SDR device, the GPP-based SDR platform TX/RX latency components can be grouped as: SDR latency, communication interface latency and GPP host latency, as shown in Fig. 7. These latencies are examined below in detail, and we drive the minimal total latency.

### 1) SDR device latency

This latency consists of three components: DFE latency, ADC/DAC conversion latency and RF front end (RFFE) latency. It may be asymmetrical, providing a varying delay

between the case when the SDR device is used for transmitting or for receiving.

At the transmitter side, as shown in Fig. 8, the SDR device latency is the sum of DFE latency, DAC output latency and RFFE latency. The DFE latency is related to both the queuing time of I/Q samples in the SDR buffers (one queue for each type of samples) and the DUCs output latency. The queuing time depends on the arrival rate (i.e., symbol rate), the service rate (i.e., DFE sample rate) and the buffer capacity (limited by dedicated buffer memory space located in the motherboard). The queuing model of the sample buffers can be identified as a D/D/1/buffer_capacity queuing system. Thus, as the I/Q sample rate is always less than or equal to the DFE sample rate, the expected waiting time (in seconds) can be calculated from Little's Law [82] and is given by $[1 / \text{DFE sample rate}]$. The minimal waiting time can be achieved when the DFE sample rate is at its maximum, i.e., the highest DAC sample rate. The DUC output latency is given by $[\text{number of cycles} \times \text{DUC cycle duration}]$. The values of number of cycles and DUC cycle duration (i.e., $[1 / \text{DUC clock rate}]$) are stated in the motherboard device datasheet [83]. Similarly to the DUC output latency, the DAC conversion latency is given by $[\text{number of clock cycles} \times \text{DAC clock duration}]$ where number of clock cycles depends on the used sample rate and DAC architecture, and the DAC clock duration is $[1 / \text{DAC clock rate}]$. The minimal DAC conversion latency can be formulated as $[\text{minimal number of clock cycles} / \text{maximal DAC clock rate}]$. The last part of latency related to the front-end (RFFE latency) is negligible due to high frequency bus. The minimal SDR device latency, therefore, is the sum of the minimum values of DFE and DAC conversion latencies. Table 15 gives theoretical minimal latencies of well-known SDR devices at the transmitting side.

<figure><img src="image_8.png" /><figcaption>FIGURE 8: Transmitter side SDR device latency.</figcaption></figure>

The SDR latency at the receiver side has the same components as the transmitter side, namely RFFE latency, ADC conversion latency and DFE latency, shown in Fig. 9. The RFFE latency remains negligible for the receiver side due to the high frequency bus. The latency part related to the ADC conversion can be expressed similarly as for DAC conversion latency, by $[\text{number of clock cycles} \times \text{ADC clock duration}]$.

<figure><img src="image_9.png" /><figcaption>FIGURE 7: GPP-based SDR platform latency.</figcaption></figure>
<table><caption>TABLE 15: Minimal SDR latency for SDR devices.</caption><thead><tr><th rowspan="2">SDR device</th><th colspan="2">DFE latency (n.s)</th><th rowspan="2">DAC latency (n.s)</th><th rowspan="2">RFFE latency</th><th rowspan="2">SDR latency (n.s)</th></tr><tr><th>Buffer latency</th><th>DUC latency</th></tr></thead><tbody><tr><td rowspan="4">TX side</td><td>HackRF</td><td>50.00</td><td>83.33</td><td>50.00</td><td>183.33</td></tr><tr><td>USRP-X3x0</td><td>1.25</td><td>5.00</td><td>1.25</td><td>7.50</td></tr><tr><td>USRP-B2x0</td><td>16.27</td><td>16.27</td><td>16.27</td><td>48.81</td></tr><tr><td>Microsoft Sora</td><td>25.00</td><td>25.00</td><td>25.00</td><td>75.00</td></tr><tr><td>LimeSDR</td><td>1.56</td><td>6.25</td><td>1.56</td><td>9.37</td><td></td></tr></tbody></table><table><thead><tr><th rowspan="2">SDR device</th><th colspan="2">DFE latency</th><th rowspan="2">ADC latency (n.s)</th><th rowspan="2">RFFE latency</th><th rowspan="2">SDR latency (n.s)</th></tr><tr><th>Buffer latency (n.s)</th><th>DUC latency (n.s)</th></tr></thead><tbody><tr><td rowspan="4">RX side</td><td>HackRF</td><td>6.55</td><td>83.33</td><td>50.00</td><td>6.55</td></tr><tr><td>USRP-X3x0</td><td>4.47</td><td>5.00</td><td>5.00</td><td>4.47</td></tr><tr><td>USRP-B2x0</td><td>3.28</td><td>16.27</td><td>16.27</td><td>3.28</td></tr><tr><td>Microsoft Sora</td><td>0.95</td><td>25.00</td><td>25.00</td><td>0.95</td></tr><tr><td>LimeSDR</td><td>0.04</td><td>6.25</td><td>6.25</td><td>0.04</td><td></td></tr></tbody></table>

<figure><img src="image_10.png" /><figcaption>FIGURE 10: Communication interface latency.</figcaption></figure>

The minimal value, therefore, can be formulated as [minimal number of clock cycles / maximal ADC clock rate]. The DFE latency is related to the DFE operations and includes: the DDC output latency and the queuing time at the SDR buffer. The DDC output latency is given by [number of clock cycles × DDC cycle duration], where the number of clock cycles and DDC cycle duration are found from device motherboard datasheet. The waiting time, on the other hand, represents the time spent by I/Q samples in the SDR buffers before forwarding to the communication interface controller. The waiting time can be given by [(buffer_capacity + 1) (in Sym) / symbol rate (in sym/s)]. The minimal waiting time, therefore, is achieved when the symbol rate attains its maximum, i.e., maximal DFE sample rate, which in turn has its maximum value equivalent to ADC sample rate. Consequently, the minimal waiting time can be approximated to [(buffer_capacity + 1) (in Sym) / ADC sample rate (in Sym/s)]. Table 15 gives theoretical minimal SDR device latency in the receiving side (RX side).

<figure><img src="image_11.png" /><figcaption>FIGURE 9: Receiver side SDR device latency.</figcaption></figure>

## 2) Communication interface latency

This latency is related to data exchange between GPP host and SDR device through communication interfaces such as Gigabit Ethernet, USB3.0, PCIe, etc. The data packets are used to carry symbols, where each symbol is pushed in one packet as data payload and followed by a set of header fields. The time spent by a data packet to travel from one communication interface controller, of GPP host or SDR device, to another is defined as the communication interface latency. It includes the waiting time of data packets at both communication interface controllers and the propagation time. The waiting time at each communication interface controller combines the queuing time and the service time. Fig. 10 depicts the components of the communication interface latency.

The queuing system consists of two symmetric queuing networks that can work either simultaneously in case of Full-duplex interfaces, or only one at a time in case of Half-duplex

interfaces. Each queuing network comprises a TX buffer linked to a RX buffer through the communication interface link. From the TX buffer to RX buffer, the communication interface controller collects I/Q samples (generated by the user application or received from the DFE) and creates data packets according to the used interface standard (data packet size, header fields, etc). These data packets are queued at the TX buffer waiting for transmission to the RX buffer. When a packet is transmitted, it will travel over the communication link with signal propagation speed in a medium. Finally, the communication interface controller intercepts the received packets, extracts the I/Q samples and puts them into the RX buffer for delivery (to the DFE or to the user application). For the queuing network parameters:

* The arrival rate at the TX buffer, expressed in packets/s, takes the same value of the symbol rate as each symbol is carried by a single data packet;

* The service rate of the TX Buffer can be derived from the interface speed and the TX link occupancy, and converted into packets/s using the following formula: [(interface speed × link efficiency × TX link occupancy) / payload size] (in packets/s). The resulting speed is called normalized interface speed. For more details about the TX link occupancy computation, see section IV-C;

* The propagation time can be given by [length of the medium / speed of signal propagation] where speed of signal propagation is $3 \times 10^8 \text{ m/sec}$; or can be found from datasheet of the used communication interface [50];

* The arrival rate at the RX buffer, expressed in Sym/s, takes the same arrival rate of the TX buffer (i.e., symbol rate) if this later is less than or equal to TX buffer service rate (normalized interface speed). Otherwise, it takes the normalized interface speed;

* The service rate of the RX buffer, expressed in Sym/s, is symbol rate.

The communication interface latency can, therefore, be regarded as the total waiting time of the queuing network. Thus, it's the result of the sum of the waiting time of data packets at TX/RX buffers and the propagation time. Two cases need to be distinguished: when the symbol rate is less than or equal, and when it's greater than the normalized interface speed (i.e., the interface speed, averaged and converted). In the first case, the expected waiting time in the TX buffer is [1 / normalized interface speed] seconds, and the expected waiting time in the RX buffer is [1 / symbol rate] seconds. Hence,
the total waiting time is given by [(1 / normalized interface speed) + (length of the medium / speed of signal propagation) + (1 / symbol rate)] (seconds). The minimal waiting time is achieved when the symbol rate attains its maximum, i.e., the normalized interface speed, the limit imposed by the condition of the 1st case. Consequently, the total minimum waiting time is [(2 / normalized interface speed) + (length of the medium / speed of signal propagation)] (seconds). In the second case, the expected waiting time in the TX buffer is [(TX buffer capacity (in packets) + 1) / normalized interface speed] seconds, and the expected waiting time in the RX buffer is [1 / symbol rate] seconds. Hence, the total waiting time is given by [((TX buffer capacity (in packets) + 1) / normalized interface speed) + (length of the medium / speed of signal propagation) + (1 / symbol rate)] (seconds). The minimal waiting time is achieved when the symbol rate attains its maximum, i.e., the DFE sample rate, and it is given by [((TX buffer capacity (in packets) + 1) / normalized interface speed) + (length of the medium / speed of signal propagation) + (1 / DFE sample rate)] (seconds). Table 16 gives theoretical minimal interface latency with 100% TX link occupancy.

<table><caption>TABLE 16: Minimal communication interface latency.</caption><thead><tr><th>SDR platform</th><th>Comm. interface</th><th>Propagation time (μs)</th><th>Normalized int. speed (kpacket/s)</th><th>Max. Sym rate (kpacket/s)</th><th>Min. waiting time (μs)</th><th>TX buffer</th><th>RX buffer</th><th>Comm. interface latency (μs)</th></tr></thead><tbody><tr><td>GPP host + HackRF</td><td>USB2.0</td><td>0.026</td><td>116.8432</td><td>116.843</td><td>8.5584</td><td>8.5584</td><td>17.1428</td></tr><tr><td>GPP host + USRP B2x</td><td>USB3.0</td><td>0.026</td><td>613.026</td><td>613.026</td><td>156.250</td><td>6.4000</td><td>2154.60</td></tr><tr><td>GPP host + USRP X3x</td><td>10Gig Eth</td><td>0.025</td><td>813.6528</td><td>813.6528</td><td>1.2290</td><td>1.2290</td><td>3.2884</td></tr><tr><td>GPP host + Sora</td><td>PCIe (x8)</td><td>—</td><td>1903.6207</td><td>1903.62</td><td>1.2290</td><td>1.2290</td><td>2.4830</td></tr><tr><td>GPP host + LimeSDR</td><td>PCIe (x4)</td><td>—</td><td>951.8103</td><td>951.8103</td><td>0.5253</td><td>0.5253</td><td>1.0506</td></tr><tr><td></td><td></td><td></td><td>613.0268</td><td>613.0268</td><td>1.0506</td><td>1.0506</td><td>2.1012</td></tr></tbody></table>

### 3) GPP host latency

This latency is the time a wireless MAC frame (data, management or control) passes in GPP host between the MAC layer and the interface controller due to TX and RX activities. It mainly includes the processing time due to the MAC layer operations such as access mechanism, MAC framing, generating/transmitting/receiving control and management frames, transmitting/receiving data frames, etc., and the PHY layer operations such as channel coding, digital modulation, PHY framing, etc. The time to forward/retrieve symbols to/from the interface controller should also be added. To perform all these operations require a GPP time and additional extra-time related to the kernel operations and external memory read/write should be considered. Estimating the GPP host latency is a very complex work, due to the high number of hardware and software factors that affect the execution time of the user program (wireless technology implementation). Indeed, the GPP host hardware and software configurations (see section III-C) affects the execution speed and hence impact the response time of all tasks. Consequently, we illustrate the minimum GPP host latency experimentally by benchmarking existing software implementations of selected wireless technologies.

The selected wireless technologies were run on Intel

x86_64 microprocessor with different number of cores and speeds (2 GHz Dual-core, 1.5 GHz Quad-core and 3.6GHz Octa-core). Each core has L1/L2/L3 cache sizes of 64KB/256KB/6144KB and access time of 1.2ns/3.6ns/12ns. All the applications listed below are tested on Ubuntu 18.04.2 LTS: NFC based on gr-nfc [84], IEEE 802.15.6 based on a prototype proposed in [85] for NB-WBAN, IEEE 802.15.1 based on scapy-radio for Bluetooth [86], IEEE 802.15.4 based on gr-IEEE 802.15.4 [15], IEEE 802.11ac and IEEE 802.11ah are based on GNU Radio implementation of gr-IEEE 802.11 [16]; EC-GSM-IoT based on gr-GSM [87]. LTE is measured using eNodeB and user equipment (UE) PHY downlink (DL) shared channel (PDSCH) and NB-IoT using Narrowband PDSCH (NPDSCH) PHY modules from srsRAN [14]; and LoRa based on gr-lora [24]. The parameters involved in the experimental latency result like number of executed instructions and CPI are measured using perf stat tool. The results are depicted in Table 17.

<table><caption>TABLE 17: GPP host latency for wireless technologies.</caption><thead><tr><th rowspan="2">Wireless tech.</th><th rowspan="2">TX/RX</th><th colspan="3">Hyperethreading Enabled</th><th colspan="3">Hyperethreading Disabled</th></tr><tr><th>Total # of executed instructions</th><th>CPI</th><th>GPP cores and speed</th><th>latency (ms)</th><th>Total # of executed instructions</th><th>CPI</th><th>GPP cores and speed</th><th>latency (ms)</th></tr></thead><tbody><tr><td rowspan="2">NFC</td><td>TX</td><td>558.321.456</td><td>0.8620</td><td>240.636<br>4 core, 2.0 GHz<br>8 core, 3.6 GHz</td><td>559.515.043</td><td>0.8695</td><td>2 core, 2.0 GHz<br>4 core, 1.5 GHz<br>8 core, 3.6 GHz</td><td>243.249<br>324.323<br>135.138</td></tr><tr><td>RX</td><td>972.461.581</td><td>0.8474</td><td>320.848<br>4 core, 1.5 GHz<br>8 core, 3.6 GHz</td><td>926.670.202</td><td>0.8620</td><td>2 core, 2.0 GHz<br>4 core, 1.5 GHz<br>8 core, 3.6 GHz</td><td>199.699<br>133.132<br>27.736</td></tr><tr><td rowspan="2">IEEE802.15.6</td><td>TX</td><td>876.981.272</td><td>0.8772</td><td>4 core, 1.5 GHz<br>8 core, 3.6 GHz</td><td>878.403.793</td><td>0.8928</td><td>2 core, 2.0 GHz<br>4 core, 1.5 GHz<br>8 core, 3.6 GHz</td><td>39.419<br>522.826<br>217.844</td></tr><tr><td>RX</td><td>796.701.770</td><td>0.8695</td><td>2 core, 2.0 GHz<br>4 core, 1.5 GHz<br>8 core, 3.6 GHz</td><td>796.549.347</td><td>0.9009</td><td>4 core, 1.5 GHz<br>8 core, 3.6 GHz<br>4 core, 1.5 GHz</td><td>478.408<br>199.336<br>388.806</td></tr><tr><td rowspan="2">IEEE802.15.1</td><td>TX</td><td>795.768.645</td><td>0.8849</td><td>2 core, 2.0 GHz<br>8 core, 3.6 GHz</td><td>795.694.115</td><td>0.9009</td><td>2 core, 2.0 GHz<br>4 core, 1.5 GHz<br>8 core, 3.6 GHz</td><td>199.210<br>119.271<br>27.911</td></tr><tr><td>RX</td><td>797.964.859</td><td>0.8772</td><td>2 core, 2.0 GHz<br>4 core, 1.5 GHz<br>8 core, 3.6 GHz</td><td>799.065.806</td><td>0.9009</td><td>2 core, 2.0 GHz<br>4 core, 1.5 GHz<br>8 core, 3.6 GHz</td><td>359.339<br>279.919<br>199.966</td></tr><tr><td rowspan="2">IEEE802.15.4</td><td>TX</td><td>861.073.678</td><td>0.8772</td><td>2 core, 2.0 GHz<br>4 core, 1.5 GHz<br>8 core, 3.6 GHz</td><td>856.394.067</td><td>0.8928</td><td>2 core, 2.0 GHz<br>4 core, 1.5 GHz<br>8 core, 3.6 GHz</td><td>191.147<br>191.311<br>27.611</td></tr><tr><td>RX</td><td>858.617.170</td><td>0.8772</td><td>2 core, 2.0 GHz<br>4 core, 1.5 GHz<br>8 core, 3.6 GHz</td><td>855.396.059</td><td>0.8928</td><td>2 core, 2.0 GHz<br>4 core, 1.5 GHz<br>8 core, 3.6 GHz</td><td>190.924<br>127.293<br>26.517</td></tr><tr><td rowspan="2">IEEE802.11a</td><td>TX</td><td>1,515.777.533</td><td>0.8064</td><td>2 core, 2.0 GHz<br>4 core, 1.5 GHz<br>8 core, 3.6 GHz</td><td>1,543.797.133</td><td>0.8130</td><td>2 core, 2.0 GHz<br>8 core, 3.6 GHz<br>8 core, 3.6 GHz</td><td>313.776<br>209.184<br>87.16</td></tr><tr><td>RX</td><td>1,349.807.636</td><td>0.8403</td><td>2 core, 2.0 GHz<br>4 core, 1.5 GHz<br>8 core, 3.6 GHz</td><td>1,377.853.186</td><td>0.8547</td><td>2 core, 2.0 GHz<br>4 core, 1.5 GHz<br>8 core, 3.6 GHz</td><td>294.413<br>261.700<br>190.442</td></tr><tr><td rowspan="2">IEEE802.11ah</td><td>TX</td><td>1,391.308.356</td><td>0.8264</td><td>2 core, 2.0 GHz<br>4 core, 1.5 GHz<br>8 core, 3.6 GHz</td><td>1,421.664.038</td><td>0.8474</td><td>2 core, 2.0 GHz<br>4 core, 1.5 GHz<br>8 core, 3.6 GHz</td><td>301.179<br>200.786<br>83.661</td></tr><tr><td>RX</td><td>1,346.778.585</td><td>0.8403</td><td>2 core, 2.0 GHz<br>4 core, 1.5 GHz<br>8 core, 3.6 GHz</td><td>1,378.183.531</td><td>0.8474</td><td>2 core, 2.0 GHz<br>4 core, 1.5 GHz<br>8 core, 3.6 GHz</td><td>294.483<br>261.763<br>199.068</td></tr><tr><td rowspan="2">LTE</td><td>TX</td><td>1,767.690.400</td><td>0.4464</td><td>2 core, 2.0 GHz<br>4 core, 1.5 GHz<br>8 core, 3.6 GHz</td><td>1,773.284.720</td><td>0.4424</td><td>2 core, 2.0 GHz<br>4 core, 1.5 GHz<br>8 core, 3.6 GHz</td><td>196.125<br>174.334<br>72.639</td></tr><tr><td>RX</td><td>2,045.481.270</td><td>0.4098</td><td>2 core, 2.0 GHz<br>4 core, 1.5 GHz<br>8 core, 3.6 GHz</td><td>2,054.979.907</td><td>0.4081</td><td>2 core, 2.0 GHz<br>4 core, 1.5 GHz<br>8 core, 3.6 GHz</td><td>33.279<br>29.721<br>8.635</td></tr><tr><td rowspan="2">NB-IoT</td><td>TX</td><td>1,326.609.522</td><td>0.7194</td><td>2 core, 2.0 GHz<br>4 core, 1.5 GHz<br>8 core, 3.6 GHz</td><td>123.277.890</td><td>0.7936</td><td>2 core, 2.0 GHz<br>4 core, 1.5 GHz<br>8 core, 3.6 GHz</td><td>31.992<br>3.882<br>1.451</td></tr><tr><td>RX</td><td>1,624.402.628</td><td>0.7092</td><td>2 core, 2.0 GHz<br>4 core, 1.5 GHz<br>8 core, 3.6 GHz</td><td>161.738.446</td><td>0.7246</td><td>2 core, 2.0 GHz<br>4 core, 1.5 GHz<br>8 core, 3.6 GHz</td><td>159.74<br>32.233<br>22.323</td></tr><tr><td rowspan="2">EC-GSM-IoT</td><td>TX</td><td>893.349.079</td><td>0.8695</td><td>2 core, 2.0 GHz<br>4 core, 1.5 GHz<br>8 core, 3.6 GHz</td><td>893.315.010</td><td>0.8772</td><td>2 core, 2.0 GHz<br>8 core, 3.6 GHz<br>8 core, 3.6 GHz</td><td>195.904<br>130.601<br>27.099</td></tr><tr><td>RX</td><td>1,317.231.292</td><td>0.7633</td><td>2 core, 2.0 GHz<br>4 core, 1.5 GHz<br>8 core, 3.6 GHz</td><td>1,222.540.786</td><td>0.7874</td><td>2 core, 2.0 GHz<br>4 core, 1.5 GHz<br>8 core, 3.6 GHz</td><td>240.657<br>160.418<br>31.325</td></tr><tr><td rowspan="2">LoRa</td><td>TX</td><td>946.374.830</td><td>0.7692</td><td>2 core, 2.0 GHz<br>4 core, 1.5 GHz<br>8 core, 3.6 GHz</td><td>1,184.932.351</td><td>0.7246</td><td>2 core, 2.0 GHz<br>4 core, 1.5 GHz<br>8 core, 3.6 GHz</td><td>31.425<br>195.492<br>190.328</td></tr><tr><td>RX</td><td>572.913.761</td><td>0.8403</td><td>2 core, 2.0 GHz<br>4 core, 1.5 GHz<br>8 core, 3.6 GHz</td><td>571.508.495</td><td>0.8695</td><td>2 core, 2.0 GHz<br>4 core, 1.5 GHz<br>8 core, 3.6 GHz</td><td>31.03<br>248.463<br>138.035</td></tr></tbody></table>

From Table 17, we can see that under the same hardware and kernel settings at the GPP host, wireless technologies provide different latencies according to the total number of executed instructions and the inherent parallelism in the instruction code. This parallelism defines on one hand the level of TLP exploited by the scheduler to split execution of threads between physical/virtual cores, and on the other hand by the level of TLP exploited by the processor to perform multiple instructions simultaneously within the same core which reduces (on average)
the number of required CPI. Based on the total number of executed instructions and parallelism, the latency increases when the number of instructions increases and parallelism degree decreases and vice versa. Thereby, since the total number of executed instructions of IEEE 802.15.4 is 861,073,678/858,617,170 for TX/RX and the CPI is 0.8772 for both TX and RX, the latencies under hyperthreading for Dual/Quad/Octa-core are 94.417ms/62.944ms/13.113ms for TX and 94.147ms/62.765ms/13.076ms for RX, respectively. Also, we note that the latency is lower with hyperthreading enabled than hyperthreading disabled for all tested technologies, from 0.009% upto 54.31% improvements. The major contributor of the high percentage improvements provided by some tested technologies is due to the large number of threads in the program; and with high-TLP, theoretically, we might expect to have upto 50% improvement due to hyperthreading. However, this depends on the resource contention between threads on hyperthreaded cores. High resource contention often leads to latency degradation.

### 4) Minimal theoretical GPP-based SDR platform latency

The latency of GPP-based SDR platforms related to TX/RX operations is the result of cumulative latencies over three stages: SDR device, communication interface and GPP host. The minimal latency at both SDR device and communication interface stages is theoretically expressed by modeling the internal architecture using queuing theory. While the minimal latency at the SDR device varies from several nanoseconds to few milliseconds depending on the buffer size, it varies from microseconds to few milliseconds at the communication interface. At the GPP host stage, the minimal latency is investigated experimentally based on multiple parameters such as number and speed of cores, hyperthreading, number of executed instructions, number of threads, degree of ILP/TLP/DLP, kernel scheduler, I/O management (e.g., cache/memory/disk access), etc. Table 18 gives the total minimal latency of GPP-based SDR platforms related to TX/RX operations of some wireless technologies. For the communication interface a link occupancy of 100% and symbol rate less than or equal to the normalized interface speed is used.

Table 18 demonstrates that large part of the total latency is due to the GPP host. Comparing the minimal GPP-based SDR platform latency for TX/RX paths with latencies at the three components (SDR device, communication interface and GPP host), we see that for some wireless technologies the GPP host contributes upto 99% of the total (such as in NFC, IEEE802.15.6, IEEE802.15.1, etc). It is shown that the latency at the GPP host stage could be minimized by using high TLP, high clock rate, hyperthreading (with lower resource contention), etc. One can also see that, TX and RX latencies are different. This is due to the specific operations on each path. Moreover, there's significant difference in TX and RX latencies of SDR devices (see section IV-F1) that also contributes to the total latency. The values in Table 18 indicate the capability of the SDR platforms in executing wireless

technologies. For instance, to perform a TX operation of NFC using Hack SDR device and USB2.0 communication interface on a (2 core, 2 GHz, hyperthreading enabled) GPP host, it takes 122.855ms (shaded cell). However, to determine whether a given SDR platform meets the latency required by a wireless technology, one needs to carefully map the two (see section V for the mapping). Note that the latency analysis illustrated in this paper can also be exploited to investigate other SDR platforms and wireless technologies.

## V. MAPPING PARAMETERS OF WIRELESS TECHNOLOGY WITH GPP-BASED SDR PLATFORM

In the previous sections, we have carried out investigations to determine the requirements of well-known wireless technologies and the minimum performance of GPP-SDR platform in terms of frequency, bandwidth, symbol rate, bitrate and latency. In this section, we intersect the wireless standard requirements with the SDR platform performance to build a list of possible GPP-based SDR platforms that can successfully implement a given wireless technology.

### A. MATCHING CONDITIONS

A successful matching between a wireless technology requirements and a GPP-based SDR platform performance can occur when matching conditions are satisfied. These conditions are applied to perform a simple comparison between similar metrics of the two sets. Further details on the matching conditions are discussed below.

#### 1) Frequency band matching

Wireless technologies are defined to operate in a single or multiple frequency bands of the radio spectrum. On the other hand, SDR device daughterboards are defined to operate in a wide contiguous frequency band. Given a wireless technology, frequency band matching consists of ensuring that the SDR device daughterboard frequency range covers the frequency bands of the wireless technology.

#### 2) Bandwidth matching

Wireless technologies divide their operating frequency bands to single/multiple overlapping/non-overlapping channels of predefined widths. However, the really occupied bandwidth can be less than the channel width depending on the type of modulation. Given a wireless technology, bandwidth matching consists of ensuring that the maximal SDR platform bandwidth is at least equal to the real occupied bandwidth in the channel width defined by the standard.

#### 3) Symbol rate matching

The specifications of wireless technologies provide the symbol duration, and hence the symbol rate, either explicitly or implicitly through related PHY parameters (see equations in Table 11). Given a wireless technology and a GPP-based SDR platform, symbol rate matching ensures that the maximal supported symbol rate by the GPP-based SDR platform
<table><caption>TABLE 18: Theoretical minimal latency (ms) on GPP-based SDR platforms.</caption><thead><tr><th rowspan="3">Wireless tech.</th><th rowspan="3">TX/RX</th><th colspan="5">GPP-based SDR platform</th><th colspan="5">Hyperthreading Enabled</th><th colspan="5">Hyperthreading Disabled</th></tr><tr><th colspan="2">SDR device</th><th colspan="4">Hyperthreading Enabled</th><th colspan="4">Hyperthreading Disabled</th><th colspan="4">Hyperthreading Disabled</th></tr><tr><th>Comm. int.</th><th>Hack<br>USB2.0</th><th>X310<br>IOGig.</th><th>B210<br>USB3.0</th><th>Sora<br>PCIe-x8</th><th>Lime<br>PCIe-x4</th><th>Hack<br>USB2.0</th><th>X310<br>IOGig.</th><th>B210<br>USB3.0</th><th>Sora<br>PCIe-x8</th><th>Lime<br>PCIe-x4</th><th>Hack<br>USB2.0</th><th>X310<br>IOGig.</th><th>B210<br>USB3.0</th><th>Sora<br>PCIe-x8</th><th>Lime<br>PCIe-x4</th></tr></thead><tbody><tr><td rowspan="4">NFC</td><td rowspan="2">TX</td><td>2 core, 2.0 GHz</td><td>122.855</td><td>122.840</td><td>122.841</td><td>122.839</td><td>122.840</td><td>123.122</td><td>123.108</td><td>123.106</td><td>123.107</td><td>123.122</td><td>123.108</td><td>123.106</td><td>123.107</td></tr><tr><td>4 core, 1.5 GHz</td><td>163.782</td><td>163.784</td><td>163.785</td><td>163.783</td><td>163.784</td><td>164.153</td><td>164.138</td><td>164.139</td><td>164.137</td><td>164.138</td><td>164.153</td><td>164.138</td><td>164.137</td></tr><tr><td rowspan="2">RX</td><td>8 core, 3.6 GHz</td><td>68.264</td><td>68.264</td><td>68.250</td><td>68.248</td><td>68.249</td><td>68.414</td><td>68.399</td><td>68.400</td><td>68.398</td><td>68.399</td><td>68.414</td><td>68.399</td><td>68.399</td></tr><tr><td>2 core, 2.0 GHz</td><td>77.903</td><td>75.808</td><td>74.619</td><td>72.287</td><td>71.378</td><td>119.882</td><td>117.787</td><td>116.598</td><td>114.266</td><td>113.357</td><td>119.882</td><td>117.787</td><td>116.598</td><td>114.266</td></tr><tr><td rowspan="4">IEEE802.15.6</td><td rowspan="2">TX</td><td>2 core, 2.0 GHz</td><td>192.961</td><td>192.946</td><td>192.947</td><td>192.945</td><td>192.946</td><td>193.277</td><td>193.262</td><td>193.263</td><td>193.261</td><td>193.277</td><td>193.262</td><td>193.261</td><td>193.262</td></tr><tr><td>4 core, 1.5 GHz</td><td>257.273</td><td>257.258</td><td>257.2593</td><td>257.257</td><td>257.258</td><td>257.694</td><td>257.679</td><td>257.680</td><td>257.678</td><td>257.694</td><td>257.694</td><td>257.679</td><td>257.678</td></tr><tr><td rowspan="2">RX</td><td>8 core, 3.6 GHz</td><td>107.211</td><td>107.196</td><td>107.197</td><td>107.195</td><td>107.196</td><td>107.389</td><td>107.374</td><td>107.375</td><td>107.373</td><td>107.389</td><td>107.374</td><td>107.373</td><td>107.374</td></tr><tr><td>2 core, 2.0 GHz</td><td>181.849</td><td>179.754</td><td>178.565</td><td>176.233</td><td>175.324</td><td>181.819</td><td>179.724</td><td>178.535</td><td>176.203</td><td>178.565</td><td>179.724</td><td>178.535</td><td>176.203</td></tr><tr><td rowspan="4">IEEE802.15.1</td><td rowspan="2">TX</td><td>2 core, 2.0 GHz</td><td>240.274</td><td>238.179</td><td>236.990</td><td>234.658</td><td>233.749</td><td>240.233</td><td>238.138</td><td>236.949</td><td>234.617</td><td>234.658</td><td>238.138</td><td>236.949</td><td>234.617</td></tr><tr><td>4 core, 1.5 GHz</td><td>103.949</td><td>101.854</td><td>100.665</td><td>98.333</td><td>97.424</td><td>103.935</td><td>101.840</td><td>100.651</td><td>98.319</td><td>97.424</td><td>103.935</td><td>101.840</td><td>98.319</td></tr><tr><td rowspan="2">RX</td><td>2 core, 2.0 GHz</td><td>46.731</td><td>46.716</td><td>46.717</td><td>46.715</td><td>46.716</td><td>93.467</td><td>93.452</td><td>93.453</td><td>93.451</td><td>93.452</td><td>93.467</td><td>93.452</td><td>93.451</td></tr><tr><td>4 core, 1.5 GHz</td><td>31.155</td><td>31.140</td><td>31.141</td><td>31.139</td><td>31.140</td><td>62.302</td><td>62.287</td><td>62.288</td><td>62.286</td><td>62.287</td><td>62.302</td><td>62.287</td><td>62.286</td></tr><tr><td rowspan="4">IEEE802.15.1</td><td rowspan="2">TX</td><td>8 core, 3.6 GHz</td><td>6.509</td><td>6.494</td><td>6.495</td><td>6.493</td><td>6.494</td><td>13.006</td><td>12.991</td><td>12.992</td><td>12.990</td><td>12.991</td><td>13.006</td><td>12.992</td><td>12.990</td></tr><tr><td>2 core, 2.0 GHz</td><td>182.127</td><td>180.032</td><td>178.843</td><td>176.511</td><td>175.602</td><td>182.373</td><td>180.278</td><td>179.089</td><td>176.757</td><td>182.127</td><td>180.278</td><td>179.089</td><td>176.757</td></tr><tr><td rowspan="2">RX</td><td>4 core, 1.5 GHz</td><td>240.644</td><td>238.549</td><td>237.360</td><td>235.028</td><td>234.119</td><td>240.971</td><td>238.876</td><td>237.687</td><td>235.355</td><td>240.644</td><td>238.549</td><td>237.360</td><td>235.355</td></tr><tr><td>8 core, 3.6 GHz</td><td>104.104</td><td>102.009</td><td>100.820</td><td>98.484</td><td>97.579</td><td>104.242</td><td>102.147</td><td>100.958</td><td>98.626</td><td>104.104</td><td>102.009</td><td>100.820</td><td>97.717</td></tr><tr><td rowspan="4">IEEE802.15.4</td><td rowspan="2">TX</td><td>2 core, 2.0 GHz</td><td>47.420</td><td>47.405</td><td>47.406</td><td>47.404</td><td>47.405</td><td>94.353</td><td>94.338</td><td>94.339</td><td>94.337</td><td>94.353</td><td>94.338</td><td>94.337</td><td>94.338</td></tr><tr><td>4 core, 1.5 GHz</td><td>31.612</td><td>31.597</td><td>31.598</td><td>31.596</td><td>31.597</td><td>62.886</td><td>62.871</td><td>62.872</td><td>62.870</td><td>62.886</td><td>62.871</td><td>62.872</td><td>62.871</td></tr><tr><td rowspan="2">RX</td><td>8 core, 3.6 GHz</td><td>8.802</td><td>8.787</td><td>8.788</td><td>8.786</td><td>8.787</td><td>100.793</td><td>98.698</td><td>97.509</td><td>95.177</td><td>100.793</td><td>98.698</td><td>97.509</td><td>95.177</td></tr><tr><td>2 core, 2.0 GHz</td><td>53.835</td><td>51.740</td><td>50.551</td><td>48.219</td><td>47.310</td><td>47.200</td><td>47.185</td><td>47.186</td><td>47.184</td><td>47.200</td><td>47.185</td><td>47.186</td><td>47.184</td></tr><tr><td rowspan="4">IEEE802.11a</td><td rowspan="2">TX</td><td>4 core, 1.5 GHz</td><td>38.072</td><td>35.977</td><td>34.788</td><td>32.456</td><td>31.547</td><td>69.363</td><td>67.268</td><td>66.079</td><td>63.747</td><td>69.363</td><td>67.268</td><td>66.079</td><td>63.747</td></tr><tr><td>8 core, 3.6 GHz</td><td>15.327</td><td>13.232</td><td>12.043</td><td>9.711</td><td>8.802</td><td>19.669</td><td>17.574</td><td>16.385</td><td>14.053</td><td>19.669</td><td>16.385</td><td>14.053</td><td>13.144</td></tr><tr><td rowspan="2">RX</td><td>2 core, 2.0 GHz</td><td>83.392</td><td>83.377</td><td>83.378</td><td>83.376</td><td>83.377</td><td>169.857</td><td>169.842</td><td>169.843</td><td>169.841</td><td>169.857</td><td>169.842</td><td>169.841</td><td>169.842</td></tr><tr><td>4 core, 1.5 GHz</td><td>111.182</td><td>111.167</td><td>111.168</td><td>111.166</td><td>111.167</td><td>113.240</td><td>113.225</td><td>113.226</td><td>113.224</td><td>113.240</td><td>113.225</td><td>113.224</td><td>113.225</td></tr><tr><td rowspan="4">IEEE802.11ah</td><td rowspan="2">TX</td><td>8 core, 3.6 GHz</td><td>46.340</td><td>46.325</td><td>46.326</td><td>46.324</td><td>46.325</td><td>47.200</td><td>47.185</td><td>47.186</td><td>47.184</td><td>47.200</td><td>47.185</td><td>47.186</td><td>47.184</td></tr><tr><td>2 core, 2.0 GHz</td><td>105.561</td><td>103.466</td><td>102.277</td><td>99.945</td><td>99.036</td><td>208.675</td><td>206.580</td><td>205.391</td><td>203.059</td><td>208.675</td><td>206.580</td><td>205.391</td><td>203.059</td></tr><tr><td rowspan="2">RX</td><td>4 core, 1.5 GHz</td><td>138.556</td><td>136.461</td><td>135.272</td><td>132.940</td><td>132.031</td><td>141.302</td><td>139.207</td><td>138.018</td><td>135.686</td><td>138.556</td><td>135.272</td><td>138.018</td><td>135.686</td></tr><tr><td>8 core, 3.6 GHz</td><td>61.567</td><td>59.472</td><td>58.283</td><td>55.951</td><td>55.042</td><td>62.713</td><td>60.618</td><td>59.429</td><td>57.097</td><td>61.567</td><td>59.472</td><td>58.283</td><td>56.188</td></tr><tr><td rowspan="4">LTE</td><td rowspan="2">TX</td><td>2 core, 2.0 GHz</td><td>76.547</td><td>76.532</td><td>76.533</td><td>76.531</td><td>76.532</td><td>156.423</td><td>156.408</td><td>156.409</td><td>156.407</td><td>156.423</td><td>156.408</td><td>156.409</td><td>156.408</td></tr><tr><td>4 core, 1.5 GHz</td><td>102.054</td><td>102.039</td><td>102.040</td><td>102.038</td><td>102.039</td><td>104.284</td><td>104.269</td><td>104.270</td><td>104.268</td><td>104.284</td><td>104.269</td><td>104.270</td><td>104.268</td></tr><tr><td rowspan="2">RX</td><td>8 core, 3.6 GHz</td><td>42.537</td><td>42.522</td><td>42.523</td><td>42.521</td><td>42.522</td><td>43.468</td><td>43.453</td><td>43.454</td><td>43.452</td><td>43.468</td><td>43.453</td><td>43.452</td><td>43.453</td></tr><tr><td>2 core, 2.0 GHz</td><td>105.338</td><td>103.243</td><td>102.054</td><td>99.722</td><td>98.813</td><td>208.723</td><td>206.628</td><td>205.439</td><td>203.107</td><td>206.628</td><td>205.439</td><td>203.107</td><td>202.198</td></tr><tr><td rowspan="4">NB-IoT</td><td rowspan="2">TX</td><td>4 core, 1.5 GHz</td><td>138.260</td><td>136.165</td><td>134.976</td><td>132.644</td><td>131.735</td><td>141.334</td><td>139.239</td><td>138.050</td><td>135.718</td><td>138.260</td><td>136.165</td><td>135.718</td><td>134.809</td></tr><tr><td>8 core, 3.6 GHz</td><td>61.443</td><td>59.348</td><td>58.159</td><td>55.827</td><td>54.918</td><td>62.727</td><td>60.632</td><td>59.443</td><td>57.111</td><td>61.443</td><td>59.348</td><td>58.159</td><td>56.202</td></tr><tr><td rowspan="2">RX</td><td>2 core, 2.0 GHz</td><td>129.663</td><td>129.648</td><td>129.649</td><td>129.647</td><td>129.648</td><td>195.112</td><td>195.097</td><td>195.098</td><td>195.096</td><td>195.112</td><td>195.097</td><td>195.096</td><td>195.097</td></tr><tr><td>4 core, 1.5 GHz</td><td>86.445</td><td>86.430</td><td>86.431</td><td>86.429</td><td>86.430</td><td>173.427</td><td>173.412</td><td>173.413</td><td>173.411</td><td>173.427</td><td>173.412</td><td>173.413</td><td>173.412</td></tr><tr><td rowspan="4">EC-GSM-IoT</td><td rowspan="2">TX</td><td>8 core, 3.6 GHz</td><td>36.033</td><td>36.018</td><td>36.019</td><td>36.018</td><td>36.018</td><td>36.151</td><td>36.136</td><td>36.137</td><td>36.135</td><td>36.033</td><td>36.018</td><td>36.137</td><td>36.136</td></tr><tr><td>2 core, 2.0 GHz</td><td>135.155</td><td>133.060</td><td>131.871</td><td>129.539</td><td>128.630</td><td>264.952</td><td>262.857</td><td>261.668</td><td>259.336</td><td>258.427</td><td>135.155</td><td>133.060</td><td>258.427</td></tr><tr><td rowspan="2">RX</td><td>4 core, 1.5 GHz</td><td>92.290</td><td>90.195</td><td>89.006</td><td>86.674</td><td>85.765</td><td>178.816</td><td>176.721</td><td>175.532</td><td>173.200</td><td>89.006</td><td>90.195</td><td>173.200</td><td>172.291</td></tr><tr><td>8 core, 3.6 GHz</td><td>42.289</td><td>40.194</td><td>39.005</td><td>36.673</td><td>35.764</td><td>42.459</td><td>40.364</td><td>34.964</td><td>34.962</td><td>36.673</td><td>42.289</td><td>40.194</td><td>39.005</td><td>36.673</td></tr><tr><td rowspan="4">LoRa</td><td rowspan="2">TX</td><td>2 core, 2.0 GHz</td><td>8.367</td><td>8.352</td><td>8.353</td><td>8.351</td><td>8.352</td><td>15.559</td><td>15.544</td><td>15.545</td><td>15.543</td><td>15.559</td><td>15.544</td><td>15.543</td><td>15.544</td></tr><tr><td>4 core, 1.5 GHz</td><td>5.582</td><td>5.567</td><td>5.568</td><td>5.566</td><td>5.567</td><td>10.371</td><td>10.356</td><td>10.357</td><td>10.355</td><td>10.371</td><td>10.356</td><td>10.355</td><td>10.356</td></tr><tr><td rowspan="2">RX</td><td>8 core, 3.6 GHz</td><td>2.340</td><td>2.325</td><td>2.326</td><td>2.324</td><td>2.325</td><td>2.181</td><td>2.166</td><td>2.167</td><td>2.165</td><td>2.181</td><td>2.325</td><td>2.167</td><td>2.165</td></tr><tr><td>2 core, 2.0 GHz</td><td>16.790</td><td>14.695</td><td>13.506</td><td>11.174</td><td>10.265</td><td>26.944</td><td>24.849</td><td>23.66</td><td>21.328</td><td>26.944</td><td>16.790</td><td>14.695</td><td>20.419</td></tr><tr><td rowspan="4">LoRa</td><td rowspan="2">TX</td><td>4 core, 1.5 GHz</td><td>13.380</td><td>11.285</td><td>10.096</td><td>7.764</td><td>6.855</td><td>20.145</td><td>18.05</td><td>16.861</td><td>14.529</td><td>13.380</td><td>11.285</td><td>13.62</td><td>13.62</td></tr><tr><td>8 core, 3.6 GHz</td><td>9.410</td><td>7.315</td><td>6.126</td><td>3.794</td><td>2.885</td><td>9.403</td><td>7.308</td><td>6.119</td><td>3.787</td><td>9.410</td><td>7.315</td><td>6.126</td><td>2.878</td></tr><tr><td rowspan="2">RX</td><td>2 core, 2.0 GHz</td><td>52.456</td><td>52.441</td><td>52.442</td><td>52.44</td><td>52.441</td><td>52.469</td><td>52.454</td><td>52.455</td><td>52.453</td><td>52.456</td><td>52.441</td><td>52.456</td><td>52.454</td></tr><tr><td>4 core, 1.5 GHz</td><td>34.972</td><td>34.957</td><td>34.958</td><td>34.956</td><td>34.957 8</td><td>34.978</td><td>34.963</td><td>34.964</td><td>34.962</td><td>34.972</td><td>34.957</td><td>34.963</td><td>34.963</td></tr><tr><td rowspan="4">EC-GSM-IoT</td><td rowspan="2">TX</td><td>8 core, 3.6 GHz</td><td>7.304</td><td>7.289</td><td>7.290</td><td>7.288</td><td>7.289</td><td>7.307</td><td>7.293</td><td>7.293</td><td>7.291</td><td>7.304</td><td>7.289</td><td>7.290</td><td>7.291</td></tr><tr><td>2 core, 2.0 GHz</td><td>91.836</td><td>89.741</td><td>88.552</td><td>86.22</td><td>85.311</td><td>85.728</td><td>83.633</td><td>82.444</td><td>80.112</td><td>91.836</td><td>89.741</td><td>82.444</td><td>80.112</td></tr><tr><td rowspan="2">RX</td><td>4 core, 1.5 GHz</td><td>74.775</td><td>72.68</td><td>71.491</td><td>69.159</td><td>68.25</td><td>69.885</td><td>67.79</td><td>66.601</td><td>64.269</td><td>74.775</td><td>72.68</td><td>69.159</td><td>64.269</td></tr><tr><td>8 core, 3.6 GHz</td><td>25.523</td><td>23.428</td><td>22.239</td><td>19.907</td><td>18.998</td><td>24.169</td><td>22.074</td><td>20.885</td><td>18.553</td><td>25.523</td><td>23.428</td><td>22.239</td><td>18.553</td></tr><tr><td rowspan="4">LoRa</td><td rowspan="2">TX</td><td>2 core, 2.0 GHz</td><td>59.518</td><td>59.503</td><td>59.504</td><td>59.502</td><td>59.503</td><td>122.942</td><td>122.927</td><td>122.928</td><td>122.926</td><td>59.518</td><td>59.503</td><td>59.504</td><td>59.518</td></tr><tr><td>4 core, 1.5 GHz</td><td>39.682</td><td>39.667</td><td>39.668</td><td>39.666</td><td>39.667</td><td>81.96</td><td>81.946</td><td>81.946</td><td>81.944</td><td>39.682</td><td>39.667</td><td>39.668</td><td>39.682</td></tr><tr><td rowspan="2">RX</td><td>8 core, 3.6 GHz</td><td>16.549</td><td>16.534</td><td>16.535</td><td>16.533</td><td>16.534</td><td>17.095</td><td>17.08</td><td>17.081</td><td>17.079</td><td>16.549</td><td>16.534</td><td>16.535</td><td>16.549</td></tr><tr><td>2 core, 2.0 GHz</td><td>132.616</td><td>130.521</td><td>129.332</td><td>127.000</td><td>126.091</td><td>132.31</td><td>130.215</td><td>129.026</td><td>126.694</td><td>132.616</td><td>130.521</td><td>129.332</td><td>126.694</td></tr><tr><td rowspan="4">LoRa</td><td rowspan="2">TX</td><td>4 core, 1.5 GHz</td><td>174.629</td><td>172.534</td><td>171.345</td><td>169.013</td><td>168.104</td><td>174.221</td><td>172.126</td><td>170.937</td><td>168.605</td><td>174.629</td><td>172.534</td><td>168.605</td><td>174.629</td></tr><tr><td>8 core, 3.6 GHz</td><td>76.598</td><td>74.503</td><td>73.314</td><td>70.982</td><td>70.073</td><td>76.43</td><td>74.335</td><td>73.146</td><td>70.814</td><td>76.598</td><td>74.503</td><td>73.314</td><td>76.598</td></tr></tbody></table>

is greater than or equal to that defined by the wireless standard.

### 4) Bitrate matching

Based on PHY parameters (spectral lines, code rate, PHY framing, digital modulation) and symbol rate of wireless technologies, specifications provide a list of supported bitrates. On the other hand, GPP-based SDR platforms support a maximum bitrate according to the used SDR device, communication interface and GPP host capabilities. Given a wireless technology and a GPP-based SDR platform, full bitrate matching ascertains that the maximal supported bitrate by the GPP-based SDR platforms is greater than or equal to the highest bitrate of the wireless technology. However, partial matching can also occur when the maximal supported bitrate by the SDR platform is between the highest and lowest bitrates of the wireless technology. In this case, the SDR platform can still perform the implemented wireless technology but in lower bitrates.
## 5) Latency matching

Wireless devices operate in a shared wireless medium, and hence, require a MAC protocol to organize access to a channel. In general, MAC protocols can be classified as either contention-based or contention-free protocols [88]. Despite their significant differences in terms of coordination, they define inter-frame times to handle waiting periods between transmission of frames (data, control and management). For example, IEEE 802.15.4 uses slotted CSMA/CA as a contention based protocol and Guaranteed Time Slot (GTS) allocation mechanism as a contention-free protocol. Both protocols define inter-frame times to cover the period from receiving a data frame and transmitting an explicit acknowledgment frame. The smallest inter-frame time among all inter-frame times is defined as the latency. Wireless devices should respect the latency to ensure optimized network performance. Examples of latency for the well-known wireless technologies are given in Tables 1, 2 and 3.

As GPP-based SDR platforms will play the role of wireless device, they should fulfill the latency constraint by completing execution of all operations within the dedicated time period as defined by the specific MAC protocol. The concerned operations are often related to transmission and/or reception of frames. Thus, during the latency period, frames should traverse the transceiver chain in one or both directions based on the objective of MAC operations. Consequently, the latency of GPP-based SDR platforms related to the implemented wireless technology can include latency values of only in TX or RX path, or both TX and RX paths depending on the covered operations desired by the implemented technology.

Given a wireless technology and a GPP-based SDR platform, full latency matching occurs when the minimal latency supported by the GPP-based SDR platform is below the latency of the wireless technology. Such matching allows the GPP-based SDR platform to perform the TX/RX operations efficiently and ensure normal communication with legacy transceivers. However, when the minimal latency supported by the GPP-based SDR platform exceeds the latency of wireless technology and/or some other (perhaps all) inter-frame times, frame exchange with legacy transceivers will be affected. In other words, as TX/RX operations at the GPP-based SDR platform are delayed, the overall network (in presence of one or more legacy transceivers) performance will degrade. To illustrate this, consider the following two cases:

* Case 1: Assume that a GPP-based SDR platform has won the channel access. A delayed frame transmission may cause collisions at legacy receivers in the presence of concurrent transmissions;

* Case 2: Assume that a GPP-based SDR platform is receiving a unicast data frame from a legacy transceiver. A delayed processing of the received frame and transmitting a response (e.g., ACK) may cause the data frame retransmission after response timeout, or starting concurrent transmissions by other devices;

It should be noted that with or without matching, GPP-based SDR platforms can still perform some tasks successfully such as: a) receiving broadcast/multicast frames as they are not acknowledged, and b) acting as a wireless sniffer.

## B. MAPPING PERFORMANCE OF GPP-BASED SDR PLATFORMS WITH WIRELESS TECHNOLOGY REQUIREMENTS

Based on the theoretical performance of GPP-based SDR platforms calculated in section IV and the requirements of wireless technologies listed in section II, the matching conditions can be performed. For this purpose, a list of selected wireless technologies and GPP-based SDR platforms are considered. List of wireless technologies include: NFC, IEEE802.15.6, IEEE802.15.1, IEEE802.15.4, IEEE802.11ac, IEEE802.11ah, LTE, NB-IoT, EC-GSM-IoT, and LoRa. The list of GPP-based SDR platform contains several SDR devices connected to different GPP hosts via their fastest supported communication interface. The SDR devices and their fastest supported communication interface considered are: HackRF with USB2.0, USRP-X310 with 10Gigabit Ethernet, USRP-B210 with USB3.0, Microsoft Sora with PCIe (x8), and LimeSDR with PCIe (x4). The GPP hosts are: 2 GHz Dual-core processor, 1.5 GHz Quad-core processor and 8 GHz Octa-core processor.

To match the two lists, according to the matching conditions, a mapping table is created (see Table 19). In this Table, as the maximal frequency band and maximal bandwidth of SDR devices are determined irrespective of the wireless technology and GPP host type, they are defined only once. Whereas, the other three parameters (maximal symbol rate, maximal bitrate and minimal latency), as they are determined for each technology on the three GPP host types, their values are indicated separately as per the technology. Moreover, the minimal latency supported by GPP-based SDR platform for each wireless technology is set based on TX path and RX path latencies computed for each technology. For example, the minimal latency supported by a GPP-based SDR platform when performing IEEE802.15.4 based slotted CSMA/CA protocol should take the sum of TX path and RX path latencies. This is due to the fact that slotted CSMA/CA protocol latency represents the Turn around Time (TT) which covers the delay for a receiver device to receive a data frame on RX path and if successfully decoded, transmit an ACK on TX path.

From Table 19, we see that SDR platforms that have wider range of operating frequency (HackRF, USRP-X310 and USRP-B210) satisfies the frequency requirements of all wireless technologies except for IEEE 802.15.6, which is only partially matched. Another exception is that of USRP-B210, which doesn't cover the frequency range of NFC technology. Whereas, most of the technologies are not fully supported by Sora and LimeSDR, although LimeSDR can fully/partially match with more technologies than Sora. In terms of bandwidth, while all wireless technologies are fully matched with the SDR platforms, the exceptions are IEEE
<table><caption>TABLE 19: Mapping SDR platform with wireless technologies (F: Full match; P: Partial match; N: No match).</caption><thead><tr><th colspan="10">GPP-based SDR platform</th></tr><tr><th colspan="2">wireless technology</th><th>SDR device</th><th colspan="3">Hack</th><th colspan="3">X310</th><th colspan="3">B210</th><th colspan="3">Sora</th><th colspan="3">Lime</th></tr><tr><th colspan="2">Name</th><th>no. of GPP cores</th><th>2 core</th><th>4 core</th><th>8 core</th><th>2 core</th><th>4 core</th><th>8 core</th><th>2 cor</th><th>4 cor</th><th>8 cor</th><th>2 cor</th><th>4 cor</th><th>8 cor</th><th>2 cor</th><th>4 cor</th><th>8 cor</th></tr><tr><th colspan="2">Metrics</th><th></th><th colspan="3">0.001 - 6 GHz</th><th colspan="3">0.01 - 6 GHz</th><th colspan="3">0.07 - 6 GHz</th><th colspan="3">2.4-2.5; 4.9-5.875GHz</th><th colspan="3">0.1 - 3.8 GHz</th></tr><tr><th colspan="2"></th><th></th><th colspan="3">20 MHz</th><th colspan="3">40/120/160 MHz</th><th colspan="3">56 MHz</th><th colspan="3">40 MHz</th><th colspan="3">60 MHz</th></tr></thead><tbody><tr><td rowspan="4">NFC [27]</td><td rowspan="4"></td><td>Max.Sym. rate (MSym/s)</td><td>14.95</td><td>14.95</td><td>14.95</td><td>26.07</td><td>39.10</td><td>187.70</td><td>26.07</td><td>39.10</td><td>61.44</td><td>26.07</td><td>39.10</td><td>40.00</td><td>26.07</td><td>39.10</td><td>160.00</td></tr><tr><td>Max.Bitrate (Mbit/s)</td><td>14.95</td><td>14.95</td><td>14.95</td><td>26.07</td><td>39.10</td><td>187.70</td><td>26.07</td><td>39.10</td><td>61.44</td><td>26.07</td><td>39.10</td><td>40.00</td><td>26.07</td><td>39.10</td><td>160.00</td></tr><tr><td>Latency (ms)</td><td>200.758</td><td>233.771</td><td>88.045</td><td>198.649</td><td>231.662</td><td>85.936</td><td>197.461</td><td>230.474</td><td>84.748</td><td>195.126</td><td>228.139</td><td>82.413</td><td>194.218</td><td>227.231</td><td>81.505</td></tr><tr><td>Freq. range (13.56 MHz)</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>N</td><td>N</td><td>N</td><td>N</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td></tr><tr><td rowspan="5">IEEE802.15.6 [29]</td><td rowspan="5"></td><td>Bandwidth (1 MHz)</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td></tr><tr><td>Max.Sym. rate (1.69MSym/s)</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td></tr><tr><td>Max.Bitrate (424 kbit/s)</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td></tr><tr><td>Latency (5.34 ms)</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td></tr><tr><td>Max.Sym. rate (MSym/s)</td><td>14.95</td><td>14.95</td><td>14.95</td><td>15.37</td><td>23.06</td><td>110.72</td><td>15.37</td><td>23.06</td><td>61.44</td><td>15.37</td><td>23.06</td><td>40.00</td><td>15.37</td><td>23.06</td><td>110.72</td></tr><tr><td rowspan="5">IEEE802.15.6 [29]</td><td rowspan="5"></td><td>Max.Bitrate (Mbit/s)</td><td>27.38</td><td>29.90</td><td>29.90</td><td>27.38</td><td>41.08</td><td>197.26</td><td>27.38</td><td>41.08</td><td>122.88</td><td>27.38</td><td>41.08</td><td>80.00</td><td>27.08</td><td>41.08</td><td>197.26</td></tr><tr><td>Latency (ms)</td><td>374.810</td><td>497.547</td><td>211.160</td><td>372.701</td><td>495.438</td><td>209.051</td><td>371.513</td><td>494.250</td><td>207.863</td><td>369.178</td><td>491.915</td><td>205.528</td><td>368.270</td><td>491.907</td><td>204.620</td></tr><tr><td>Freq. range (0.021 - 9.98GHz)</td><td>P</td><td>P</td><td>P</td><td>P</td><td>P</td><td>P</td><td>P</td><td>P</td><td>P</td><td>P</td><td>P</td><td>P</td><td>P</td><td>P</td><td>P</td></tr><tr><td>Bandwidth (0.3 - 499.2 MHz)</td><td>P</td><td>P</td><td>P</td><td>P</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td></tr><tr><td>Max.Sym. rate (15.6 MSym/s)</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td></tr><tr><td rowspan="5">IEEE802.15.1 [30]</td><td rowspan="5"></td><td>Max.Bitrate (Mbit/s)</td><td>27.38</td><td>29.90</td><td>29.90</td><td>27.38</td><td>41.08</td><td>197.26</td><td>27.38</td><td>41.08</td><td>122.88</td><td>27.38</td><td>41.08</td><td>80.00</td><td>27.08</td><td>41.08</td><td>197.26</td></tr><tr><td>Latency (ms)</td><td>228.858</td><td>217.799</td><td>110.613</td><td>226.749</td><td>269.69</td><td>108.504</td><td>225.561</td><td>268.502</td><td>107.316</td><td>223.226</td><td>266.167</td><td>104.981</td><td>222.318</td><td>265.259</td><td>104.073</td></tr><tr><td>Max.Sym. rate (MSym/s)</td><td>14.95</td><td>14.95</td><td>14.95</td><td>15.37</td><td>23.06</td><td>110.72</td><td>15.37</td><td>23.06</td><td>61.44</td><td>15.37</td><td>23.06</td><td>40.00</td><td>26.07</td><td>39.10</td><td>160.00</td></tr><tr><td>Max.Bitrate (Mbit/s)</td><td>27.38</td><td>29.90</td><td>29.90</td><td>27.38</td><td>41.08</td><td>197.26</td><td>27.38</td><td>41.08</td><td>122.88</td><td>27.38</td><td>41.08</td><td>80.00</td><td>27.08</td><td>41.08</td><td>197.26</td></tr><tr><td>Latency (ms)</td><td>101.255</td><td>69.684</td><td>24.129</td><td>99.146</td><td>67.575</td><td>22.020</td><td>97.958</td><td>66.387</td><td>20.832</td><td>95.623</td><td>64.052</td><td>18.497</td><td>94.715</td><td>63.144</td><td>17.589</td></tr><tr><td rowspan="5">IEEE802.15.4 [31]</td><td rowspan="5"></td><td>Freq. range (2.4 GHz)</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td></tr><tr><td>Bandwidth (1, 2 MHz)</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td></tr><tr><td>Max.Sym. rate (2 MSym/s)</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td></tr><tr><td>Max.Bitrate (2 Mbit/s)</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td></tr><tr><td>Latency (150 µs)</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td></tr><tr><td rowspan="5">IEEE802.15.4 [31]</td><td rowspan="5"></td><td>Max.Sym. rate (MSym/s)</td><td>14.95</td><td>14.95</td><td>14.95</td><td>14.95</td><td>14.95</td><td>14.95</td><td>14.95</td><td>14.95</td><td>14.95</td><td>14.95</td><td>14.95</td><td>14.95</td><td>14.95</td><td>14.95</td><td>14.95</td></tr><tr><td>Max.Bitrate (Mbit/s)</td><td>27.38</td><td>29.90</td><td>29.90</td><td>27.38</td><td>41.08</td><td>197.26</td><td>27.38</td><td>41.08</td><td>122.88</td><td>27.38</td><td>41.08</td><td>80.00</td><td>27.08</td><td>41.08</td><td>197.26</td></tr><tr><td>Latency (ms)</td><td>101.255</td><td>69.684</td><td>24.129</td><td>99.146</td><td>67.575</td><td>22.020</td><td>97.958</td><td>66.387</td><td>20.832</td><td>95.623</td><td>64.052</td><td>18.497</td><td>94.715</td><td>63.144</td><td>17.589</td></tr><tr><td>Freq. range (subGHz, 2.4GHz)</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td></tr><tr><td>Bandwidth (0.4 - 5MHz)</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td></tr><tr><td rowspan="5">IEEE802.11ac [33]</td><td rowspan="5"></td><td>Max.Sym. rate (62.5Sym/s)</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td></tr><tr><td>Max.Bitrate (250 kbit/s)</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td></tr><tr><td>Latency (Unslotted CSMA/CA: 192 µs)</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td></tr><tr><td>Max.Sym. rate (MSym/s)</td><td>14.95</td><td>14.95</td><td>14.95</td><td>14.95</td><td>14.95</td><td>14.95</td><td>14.95</td><td>14.95</td><td>14.95</td><td>14.95</td><td>14.95</td><td>14.95</td><td>14.95</td><td>14.95</td><td>14.95</td></tr><tr><td>Max.Bitrate (Gbit/s)</td><td>244.94</td><td>244.94</td><td>244.94</td><td>264.60</td><td>396.98</td><td>190.61</td><td>264.60</td><td>396.98</td><td>100.66</td><td>264.60</td><td>396.98</td><td>655.36</td><td>264.60</td><td>396.98</td><td>190.61</td></tr><tr><td rowspan="5">IEEE802.11ac [33]</td><td rowspan="5"></td><td>Latency (ms)</td><td>188.953</td><td>249.738</td><td>107.907</td><td>186.844</td><td>247.629</td><td>105.798</td><td>185.656</td><td>246.441</td><td>104.610</td><td>183.321</td><td>244.106</td><td>102.275</td><td>182.413</td><td>243.198</td><td>101.367</td></tr><tr><td>Freq. range (5 GHz)</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td></tr><tr><td>Bandwidth (20 - 160 MHz)</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td></tr><tr><td>Max.Sym. rate (250 kSym/s)</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td></tr><tr><td>Max.Bitrate (up to 6 Gbit/s)</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td></tr><tr><td rowspan="5">IEEE802.11ah [35]</td><td rowspan="5"></td><td>Latency (16 µs)</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td></tr><tr><td>Max.Sym. rate (MSym/s)</td><td>14.95</td><td>14.95</td><td>14.95</td><td>14.95</td><td>14.95</td><td>14.95</td><td>14.95</td><td>14.95</td><td>14.95</td><td>14.95</td><td>14.95</td><td>14.95</td><td>14.95</td><td>14.95</td><td>14.95</td></tr><tr><td>Max.Bitrate (Gbit/s)</td><td>45.92</td><td>45.92</td><td>45.92</td><td>56.77</td><td>85.15</td><td>408.76</td><td>56.77</td><td>85.15</td><td>188.74</td><td>56.77</td><td>85.15</td><td>122.88</td><td>56.77</td><td>85.15</td><td>408.76</td></tr><tr><td>Latency (ms)</td><td>181.885</td><td>240.314</td><td>103.980</td><td>179.776</td><td>238.205</td><td>101.871</td><td>178.588</td><td>237.017</td><td>100.683</td><td>176.253</td><td>234.682</td><td>98.348</td><td>175.345</td><td>233.774</td><td>97.440</td></tr><tr><td>Freq. range (subGHz)</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td></tr><tr><td rowspan="5">LTE [40]</td><td rowspan="5"></td><td>Bandwidth (1 - 16 MHz)</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td></tr><tr><td>Max.Sym. rate (25 kSym/s)</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td></tr><tr><td>Max.Bitrate (up to 347 Mbit/s)</td><td>P</td><td>P</td><td>P</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td></tr><tr><td>Latency (160 µs)</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td></tr><tr><td>Max.Sym. rate (MSym/s)</td><td>14.95</td><td>14.95</td><td>14.95</td><td>14.95</td><td>14.95</td><td>14.95</td><td>14.95</td><td>14.95</td><td>14.95</td><td>14.95</td><td>14.95</td><td>14.95</td><td>14.95</td><td>14.95</td><td>14.95</td></tr><tr><td rowspan="5">LTE [40]</td><td rowspan="5"></td><td>Max.Bitrate (Gbit/s)</td><td>183.7</td><td>183.7</td><td>183.7</td><td>184.8</td><td>27.72</td><td>133.06</td><td>18.48</td><td>27.72</td><td>61.44</td><td>18.48</td><td>27.72</td><td>40.00</td><td>18.48</td><td>27.72</td><td>133.06</td></tr><tr><td>Latency (ms)</td><td>264.818</td><td>178.735</td><td>78.322</td><td>262.709</td><td>176.626</td><td>76.213</td><td>261.521</td><td>175.438</td><td>75.025</td><td>259.186</td><td>173.103</td><td>72.690</td><td>258.278</td><td>172.195</td><td>71.782</td></tr><tr><td>Freq. range (0.41 - 5.9 GHz)</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td></tr><tr><td>Bandwidth (1.4 - 20 MHz)</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td></tr><tr><td>Max.Sym. rate (15 kSym/s)</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td></tr><tr><td rowspan="5">NB-IoT [41]</td><td rowspan="5"></td><td>Max.Bitrate (Mbit/s)</td><td>14.88</td><td>14.95</td><td>14.95</td><td>14.88</td><td>22.32</td><td>107.17</td><td>14.88</td><td>22.32</td><td>61.44</td><td>14.88</td><td>22.32</td><td>40.00 1</td><td>14.88</td><td>22.32</td><td>107.17</td></tr><tr><td>Latency (ms)</td><td>281.344</td><td>3827.20</td><td>3827.20</td><td>281.344</td><td>4218.88</td><td>20.2598</td><td>281.344</td><td>4218.88</td><td>15.72864</td><td>281.344</td><td>4218.88</td><td>10.24000</td><td>281.344</td><td>4218.88</td><td>20.2598</td></tr><tr><td>Freq. range (0.41 - 5.9 GHz)</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td></tr><tr><td>Bandwidth (180 kHz)</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td></tr><tr><td>Max.Sym. rate (15 kSym/s)</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td></tr><tr><td rowspan="5">EC-GSM-IoT [38]</td><td rowspan="5"></td><td>Max.Bitrate (Mbit/s)</td><td>14.95</td><td>14.95</td><td>14.95</td><td>26.76</td><td>40.14</td><td>192.68</td><td>26.76</td><td>40.14</td><td>61.44</td><td>26.76</td><td>40.00</td><td>40.00</td><td>26.76</td><td>40.14</td><td>160.00</td></tr><tr><td>Latency (ms)</td><td>144.292</td><td>109.747</td><td>32.827</td><td>142.182</td><td>107.637</td><td>30.717</td><td>140.994</td><td>106.449</td><td>184.32</td><td>75.24</td><td>112.86</td><td>120.00</td><td>75.24</td><td>112.86</td><td>480.00</td></tr><tr><td>Freq. range (0.8/0.9, 1.8/1.9GHz)</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td></tr><tr><td>Bandwidth (200 kHz)</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td></tr><tr><td>Max.Sym. rate (271 kSym/s)</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td></tr><tr><td rowspan="5">LoRa [39]</td><td rowspan="5"></td><td>Max.Bitrate (Mbit/s)</td><td>14.95</td><td>14.95</td><td>14.95</td><td>26.07</td><td>39.10</td><td>187.70</td><td>26.07</td><td>39.10</td><td>61.44</td><td>26.07</td><td>39.10</td><td>40.00</td><td>26.07</td><td>39.10</td><td>160.00</td></tr><tr><td>Latency (ms)</td><td>192.134</td><td>214.311</td><td>93.147</td><td>190.025</td><td>212.202</td><td>91.038</td><td>188.837</td><td>211.014</td><td>89.850</td><td>186.502</td><td>208.679</td><td>87.515</td><td>185.594</td><td>207.771</td><td>86.607</td></tr><tr><td>Freq. range (433/868 MHz)</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td></tr><tr><td>Bandwidth 125 - 500 kHz</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td></tr><tr><td>Max.Sym. rate (3.91 kSym/s)</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td></tr><tr><td rowspan="5">LoRa [39]</td><td rowspan="5"></td><td>Max.Bitrate (Mbit/s)</td><td>14.95</td><td>14.95</td><td>14.95</td><td>26.07</td><td>39.10</td><td>187.70</td><td>26.07</td><td>39.10</td><td>61.44</td><td>26.07</td><td>39.10</td><td>40.00</td><td>26.07</td><td>39.10</td><td>160.00</td></tr><tr><td>Latency (ms)</td><td>192.134</td><td>214.311</td><td>93.147</td><td>190.025</td><td>212.202</td><td>91.038</td><td>188.837</td><td>211.014</td><td>89.850</td><td>186.502</td><td>208.679</td><td>87.515</td><td>185.594</td><td>207.771</td><td>86.607</td></tr><tr><td>Freq. range (50 kbit/s)</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td><td>F</td></tr><tr><td>Latency (24 ms)</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td><td>N</td></tr></tbody></table>

802.15.6 and IEEE 802.11ac. IEEE 802.15.6 is partially matched by all SDR platforms; and IEEE 802.11ac is fully supported only by USRP-X310 and LimeSDR, partially by USRP-B210 and Sora.

The maximal symbol rate requirement of the wireless technologies, except IEEE 802.15.6, fully matches with that

offered by the GPP-based SDR platforms. The maximal symbol rate of IEEE 802.15.6, however, fully matches with all SDR devices, except HackRF, connected to Quad and Octa-core GPP hosts and partially when connected to a Dual-core GPP host. The mapping of bitrate has a similar behaviour to that of symbol rate mapping. Thus, the maximal bitrates of
all wireless technologies, except IEEE 802.11ah and IEEE 802.11ac, fully match with that supported by all GPP-based SDR platforms. For the maximal bitrates of IEEE 802.11ah and IEEE 802.11ac, while the first partially matches with HackRF and fully with other SDR platforms, the second partially matches with all SDR devices connected to any GPP host type. For the latency matching, the requirement of most of the wireless technologies is several orders of magnitude less than what is offered by any of the SDR platforms. Thus, except NB-IoT, all the other technologies have no match. NB-IoT have full match with all SDR platforms interfaced with Quad-core and Octa-core GPP hosts.

As illustrated by the mapping table and discussion given, most GPP-based SDR platforms fully or partially satisfy the frequency, bandwidth, symbol rate and bitrate requirements of most wireless technologies. However, meeting the latency condition was a bit of a challenge, and thus, both software and hardware improvements should be made. For the software part, compiler and kernel should be optimized to increase the degree of parallelism according to the used processor capabilities. For the hardware part, increasing the number of cores can be efficient in case of applications having high degree of parallelism. Otherwise (with low degree of parallelism), processor with a higher clock speed or using hardware accelerators such as GPUs, DSPs and FPGAs are necessary. Several software projects exist to enable hardware accelerators usage like RAPIDS cuSignal [89] and Compute Unified Device Architecture (CUDA) [90] for GPU, RF Network-on-Chip (RFNoC) [91] and Nutaq's Real-Time Data Exchange (RTDEx) [92] for FPGA, meta-sdr OpenEmbedded layer [93] and liquidsdr [94] for DSP.

### C. WHAT OTHER GPP-BASED SDR PLATFORMS FOR EXISTING WIRELESS SDR IMPLEMENTATIONS

Implementations of wireless technologies using SDR platforms were considered by several researchers. These implementations are accompanied by a limited, if not a single, recommended GPP-based SDR platforms. Moreover, the implementations doesn't show/demonstrate how the SDR platforms were selected nor there are studies to map several wireless standards with commercial SDR platforms. Table 20 presents examples of recommended GPP-based SDR platforms for selected wireless technologies. Now, based on the mapping table given in previous section, new opportunities appear to perform the existing implementations of wireless technologies. Thus, new possible GPP-based SDR platforms, listed in Table 20, become candidates and may be more convenient for some users in terms of cost, hardware availability, etc. Of course the list of the proposed GPP-based SDR platforms are not exhaustive, but it can be easily extended for other SDR devices and GPP hosts based on the theoretical analysis of our work. For example, a user having a GPP host with Quad-core 3.4 GHz processor can follow our theoretical analysis to determine its eligibility to perform a desired wireless technology through computing the supported bitrate, symbol rate and latency metrics. The following paragraphs

demonstrate how to determine the candidate SDR platforms for few existing wireless SDR implementations.

**IEEE 802.15.6:** the proposed NB-WBAN evaluation platform by [85] uses USRP-N210 and GNU Radio to test different modulation techniques (DBPSK, DQPSK, D8PSK, GMSK) at operating frequency of 950MHz and bandwidth of 0.4MHz. The frequency band and bandwidth help determine the candidate SDR devices, and hence, from our matching conditions and mapping table, HackRF, USRP-X310, USRP-B210, Sora, and LimeSDR are possible candidates. The maximal symbol rate and bitrate for this implementation is 0.6MSym/s and 0.971Mbit/s, respectively, allowing us to choose any communication interface from (USB2.0, USB3.0, Gig.Eth, 10Gig.Eth and PCIe). The listed SDR devices also matches with the required symbol rate. For the target modulation techniques, symbol rate and bitrate, a GPP host having 2 core, 2.0 GHz processor without hyperthreading support is sufficient (see Table 12). Hence, from the list of SDR platforms considered in this paper, HackRF with USB2.0, USRP-X310 with Gig.Eth or 10Gig.Eth, USRP-B210 with USB3.0, Sora with PCIe, and LimeSDR with USB3.0 or PCIe can be used along with Dual-core, Quad-core or Octa-core GPP hosts.

**LTE:** srsRAN is one of the most popular open-source SDR implementation of LTE that has been tested with USRP, LimeSDR and BladeRF SDR devices; USB3.0, Gig.Eth and 10Gig.Eth as communication interface; and ARM based processors as GPP host [14]. It operates for LTE frequency bands and all current LTE bandwidths. As per the modulation, it supports LTE modulation coding scheme upto QAM256 in DL direction. The maximal bitrate achievable by the current srsRAN release is 75Mbit/s DL and 50Mbit/s uplink in 20MHz bandwidth and single-input single-output configuration. To determine other possible SDR platforms, we check for each parameter. The operating frequency for this implementation (LTE bands) ranges from 0.41 to 5.9GHz, which is supported partially by Sora SDR devices as discussed in the mapping table. For the bandwidth, Sora is capable to handle the implementation. The symbol rate and bitrate are also supported by the PCIe communication interface of Sora. As per the GPP host, the maximal symbol rate and maximal bitrate demanded by srsRAN are attained by Dual/Quad/Octa-core processors in both hyperthreading enabled and disable mode as demonstrated by our result in Table 12. Thus, from the list of SDR platforms considered in this paper and using the mapping table, Sora with PCIe interfaced with any of the three GPP hosts are suggested as possible SDR platform to test srsRAN in addition to those recommended by srsRAN.

### D. EXPLOITATION OF THE MAPPING BETWEEN SDR AND WIRELESS TECHNOLOGIES

The mapping Table 19 can be exploited either by SDR software developers or regular users. An SDR software developer integrates two categories: who are programming the embedded software (custom SDR functions, FPGA design, etc.,) for SDR devices, and who are programming open-
<table><caption>TABLE 20: Possible GPP-based SDR platforms for existing implementations.</caption><thead><tr><th rowspan="2">wireless technology</th><th rowspan="2">Description</th><th colspan="3">SDR platform recommended by developers</th><th colspan="3">New SDR platforms suggested by our work</th></tr><tr><th>SDR device</th><th>Comm. interface</th><th>GPP host</th><th>SDR device</th><th>Comm. interface</th><th>GPP host*</th></tr></thead><tbody><tr><td rowspan="3">IEEE 802.15.6</td><td rowspan="3">A prototype for NB-WBAN transmit-receive system with high flexibility for healthcare applications (GNU Radio) [85]</td><td rowspan="3">USRP-N210</td><td rowspan="3">Gig.Eth</td><td rowspan="3">-</td><td>HackRF</td><td>USB2.0</td><td rowspan="3">D, Q, Octa</td></tr><tr><td>USRP</td><td>USB3.0, Gig.Eth, 10Gig.Eth</td></tr><tr><td>Sora</td><td>PCIe</td></tr><tr><td rowspan="10">IEEE 802.15.4</td><td rowspan="5">Implemented 802.15.4 encoding and decoding blocks (using GNU Radio) [95]</td><td rowspan="5">USRP1</td><td rowspan="5">USB2.0</td><td rowspan="5">Dual Pentium IV, 2.8GHz CPU</td><td>Sora</td><td>PCIe</td><td rowspan="5">D, Q, Octa</td></tr><tr><td>HackRF</td><td>USB2.0</td></tr><tr><td>USRP</td><td>USB3.0, Gig.Eth, 10Gig.Eth</td></tr><tr><td>Sora</td><td>PCIe</td></tr><tr><td>LimeSDR</td><td>USB3.0, PCIe</td></tr><tr><td rowspan="5">gr-IEEE-802.15.4 – transceiver testbed for GNU Radio (using GNU Radio) [15]</td><td rowspan="5">USRP-N210</td><td rowspan="5">Gig.Eth</td><td rowspan="5">Intel i5 CPU (2.6 GHz) laptop</td><td>Sora</td><td>PCIe</td><td rowspan="5">D, Q, Octa</td></tr><tr><td>HackRF</td><td>USB2.0</td></tr><tr><td>USRP</td><td>USB3.0, Gig.Eth, 10Gig.Eth</td></tr><tr><td>Sora</td><td>PCIe</td></tr><tr><td>LimeSDR</td><td>USB3.0, PCIe</td></tr><tr><td rowspan="5">GalioT-802.15.4 [42]</td><td rowspan="5">RTL-SDR</td><td rowspan="5">USB2.0</td><td rowspan="5">Raspberry Pi</td><td>Sora</td><td>PCIe</td><td rowspan="5">D, Q, Octa</td></tr><tr><td>HackRF</td><td>USB2.0</td></tr><tr><td>USRP</td><td>USB3.0, Gig.Eth, 10Gig.Eth</td></tr><tr><td>Sora</td><td>PCIe</td></tr><tr><td>LimeSDR</td><td>USB3.0, PCIe</td></tr><tr><td rowspan="5">IEEE 802.15.1</td><td rowspan="5">• Implemented GFSK modulation [96]</td><td rowspan="5">Tx: PC with DAC board, Agilent E4438C generator<br/>Rx: Wideband SDR analog front-end and PC with ADC board</td><td rowspan="5"></td><td rowspan="5"></td><td>Sora</td><td>PCIe</td><td rowspan="5">D, Q, Octa</td></tr><tr><td>LimeSDR</td><td>USB2.0</td></tr><tr><td>USRP</td><td>USB3.0, Gig.Eth, 10Gig.Eth</td></tr><tr><td>Sora</td><td>PCIe</td></tr><tr><td>LimeSDR</td><td>USB3.0, PCIe</td></tr><tr><td rowspan="3">IEEE 802.11a/b/g</td><td rowspan="3">SoftWiFi: Implementation of IEEE 802.11a/b/g [48]</td><td rowspan="3">Sora</td><td rowspan="3">PCIe</td><td rowspan="3">Dell XPS PCs (Intel Core 2 Quad 2.66GHz CPU)</td><td>USRP</td><td>PCIe</td><td rowspan="3">D, Q, Octa</td></tr><tr><td>LimeSDR</td><td>PCIe</td></tr><tr><td>Sora</td><td>PCIe</td></tr><tr><td rowspan="2">IEEE 802.11a/g/n/ac</td><td rowspan="2">Developed open Wi-Fi platform for IEEE 802.11a/g/n/ac [97]</td><td rowspan="2">USRP-X310</td><td rowspan="2">10Gig.Eth</td><td rowspan="2">HP ML350 Gen9, Intel® Xeon® E5-2620, 3.2GHz, 12 cores, 24 Threads</td><td>LimeSDR</td><td>PCIe</td><td rowspan="2">Octa</td></tr><tr><td>Sora</td><td>PCIe</td></tr><tr><td rowspan="2">IEEE 802.11a/g/p</td><td rowspan="2">Developed a prototype for GNU radio based OFDM receiver (GNU Radio) [16]</td><td rowspan="2">USRP-N210</td><td rowspan="2">Gig.Eth</td><td rowspan="2">Intel Core i7-2600 CPU 3.40GHz</td><td>Sora</td><td>PCIe</td><td rowspan="2">D, Q, Octa</td></tr><tr><td>LimeSDR</td><td>PCIe</td></tr><tr><td rowspan="5">3GPP LTE</td><td rowspan="2">SoftLTE: Implementation of 3GPP LTE Uplink based on SoftWiFi [98]</td><td rowspan="2">Sora</td><td rowspan="2">PCIe</td><td rowspan="2">Dell XPS small form-factor PCs</td><td>USRP</td><td>USB3.0, Gig.Eth, 10Gig.Eth</td><td rowspan="2">Octa</td></tr><tr><td>LimeSDR</td><td>PCIe</td></tr><tr><td rowspan="2">Implementation of LTE PHY layer based on multi-core GPP parallel processing [99]</td><td rowspan="2">USRP-N210</td><td rowspan="2">Gig.Eth</td><td rowspan="2">Intel-core i7 series CPU, 4 core, 8 Threads</td><td>Sora</td><td>PCIe</td><td rowspan="2">Octa</td></tr><tr><td>LimeSDR</td><td>PCIe</td></tr><tr><td rowspan="2">srsRAN [14]</td><td rowspan="2"></td><td rowspan="2">USRP, BladeRF, LimeSDR</td><td rowspan="2">USB3.0, Gig. Eth, 10Gig.Eth</td><td rowspan="2">ARM based processors</td><td>Sora</td><td>PCIe</td><td rowspan="2">Octa</td></tr><tr><td>Sora</td><td>PCIe</td></tr><tr><td rowspan="2">OAI [23]</td><td rowspan="2"></td><td rowspan="2">USRP, BladeRF, LimeSDR, BladeRF, USRP-B210, EURECOM EXPRESSMIMO2 RF</td><td rowspan="2">USB3.0, PCIe</td><td rowspan="2">Generation 3/4/5/6 Intel Core i5, i7 (4 core, 6 core)</td><td>Sora</td><td>PCIe</td><td rowspan="2">Octa</td></tr><tr><td>Sora</td><td>PCIe</td></tr><tr><td rowspan="4">LoRa</td><td rowspan="3">• Implemented modulation and encoding of LoRa PHY (gr-lora) [24]<br/>• GNU Radio blocks for receiving and decoding LoRa modulated radio messages (gr-lora) [100]</td><td rowspan="3">HackRF, USRP, RTL-SDR</td><td rowspan="3">USB2.0, USB3.0</td><td rowspan="3">-</td><td rowspan="3"></td><td>LimeSDR</td><td>USB3.0, PCIe</td><td rowspan="3">D, Q, Octa</td></tr><tr><td>HackRF</td><td>USB2.0</td></tr><tr><td>USRP</td><td>USB3.0, Gig.Eth, 10Gig.Eth</td></tr><tr><td rowspan="2">Modulation/demodulation and encoding/decoding using LimeSDR (LoRa-SDR) [101]</td><td rowspan="2">LimeSDR</td><td rowspan="2">USB3.0</td><td rowspan="2">-</td><td rowspan="2"></td><td>Sora</td><td>PCIe</td><td rowspan="2">D, Q, Octa</td></tr><tr><td>USRP</td><td>USB3.0, Gig.Eth, 10Gig.Eth</td></tr><tr><td rowspan="2">GalioT-LoRa [42]</td><td rowspan="2"></td><td rowspan="2">RTL-SDR</td><td rowspan="2">USB2.0</td><td rowspan="2">Raspberry Pi</td><td>Sora</td><td>PCIe</td><td rowspan="2">D, Q, Octa</td></tr><tr><td>Sora</td><td>PCIe</td></tr></tbody></table>

source software (wireless technology libraries, digital signal processing blocks, etc.,) on GPP hosts.

The mapping table cells with values N (no match) or P (partial match) give important information to encourage SDR software developer to propose solutions. As most of the table cells with value N are mainly due to the high latency of GPP hosts that cannot fulfill the wireless standard requirement, both embedded software and open-source software developers can provide improvements and optimizations in their software to reduce latency. Thus, embedded software developers can move some intensive computation or time critical MAC layer functions of wireless standards to be performed by the SDR device, which is more fast to save GPP resources and reduce latency. For example, from the mapping table, the wireless technology IEEE 802.15.4 cannot be performed (in terms of latency) by any SDR platforms due to the MAC layer latency. In this case, embedded software developers can decide to provide APIs to allow open-source software developers to directly implement and perform the critical

MAC layer functions such as inter-frame spacing periods manager on the SDR device. Recently, some SDR devices have integrated this option such as all USRP devices from the third-generation integrated RFNoC [91], an API developed by Ettus Research to use USRP's FPGA processing power, with the UHD software. On their side, open-source software developers can adapt their wireless standard source code by integrating custom processing blocks of the critical MAC layer functions. These blocks should be implemented based on the APIs offered by the used SDR device. To continue with the RFNoC example, several RFNoC blocks have been developed and ready to use [102]. Also, on GPP hosts, open-source software developers should make an effort to provide software optimization (vectorization, automatic parallelization, inter-procedural optimization, etc.,) according to the used GPP host characteristics (clock speed, number of cores, memory and cache size, external hardware accelerators). These software optimizations, in context of SDR platforms, remain an open research (for further details, see

<footnote>* D for Dual-core, 2 GHz GPP; Q for Quad-core, 1.5 GHz GPP; Octa for Octa-core, 3.6 GHz GPP type.</footnote>
section VI-A). Based on the level of optimizations and our mapping table, open-source software developers can test and suggest more SDR platform possibilities to regular users.

Unlike SDR software developers, regular users employ GPP-based SDR platforms as a testbed to experiment their applications (upper layers) without relying on expert knowledge on how the wireless standards (lower layers) are implemented or performed. Indeed, they only need to know how to select the appropriate SDR platform and how to run the selected wireless technology. For a given application, they first determine its characteristics in terms of data type (sensory data, voice, video, etc.), traffic model (event-driven, continuous or query-driven), number of sensors, geographical area, etc., [4], [5]. Then, they express the application characteristics as a set of specific requirements such as range, data rate, energy consumption, etc. After, they select a set of candidate wireless technologies that can theoretically meet the application's requirement. To experiment the application with the selected wireless technologies, regular users can use a single SDR platform due to the reconfigurable and reproducible hardware. In order to determine the suitable SDR platform that can support the selected wireless technologies, regular users can refer to our mapping table. They can also refine their selection by choosing an SDR platform capable of satisfying the requirement of most of their selected wireless technologies.

# VI. OPEN CHALLENGES AND FUTURE DIRECTIONS

Using GPP-based SDR platforms for wireless prototyping have been extensively accepted by many researchers and companies. Despite its continuing expansion, several existing research challenges have not yet been addressed. This section presents some open challenges and trends related to the performance enhancement of GPP-based SDR platforms to successfully perform wireless transceivers.

## A. HARDWARE AND SOFTWARE OPTIMIZATIONS

To improve the performance of GPP-based SDR platforms in dealing with the computational requirements of wireless standards, hardware and software optimizations should be addressed. From the hardware side, GPP-based SDR platforms performance can be enhanced by different solutions such as: a) increasing the processing speed of GPP host by using more number of cores (as reported by our work) with higher clock speed, memory and cache, and b) using external hardware accelerators such as GPU, FPGA and DSPs. In literature, these solutions were more or less studied theoretically (using GPU [58], [59], [103], FPGA [56], [91], [104], [105], DSPs [93], [94]) but it's still an open challenge to fully investigate experimentally. In addition, the latency due to the interface between the GPP and external accelerator should be considered.

From the software side, various optimizations can be applied to enhance the execution time of the wireless transceiver code at the GPP host. Few examples include using increased number of threads (multi-threaded GPP),

vectorization, automatic parallelization, inter-procedural optimization, SIMD and look-up tables (LUTs). These solutions are well investigated theoretically and experimentally in a general context. With respect to the SDR platform, there are few studies conducted by applying these solutions such as [20], [48], however, satisfying the full requirements of wireless transceivers still remains an open challenge. Another important point that seeks research attention is satisfying the real-time requirements (e.g., respecting response time) of wireless transceivers, which has been slightly addressed by researchers using Xenomai Real-Time OSs (RTOSs) [106]. However, the real-time performance of GPP-based SDR platforms need to be investigated more based on the real-time demands of different wireless standards using other RTOSs such as Real-time Linux [107], Real-Time Application Interface (RTAI) [108], and ChronOS [109].

## B. VIRTUALIZATION IN SDR PLATFORMS

GPP-based SDR platform can use different type of SDR devices to implement one or more wireless transceivers. Two problems could arise: on one hand the PHY layer software portability, and on the other hand running multiple parallel wireless transceivers. For the first problem, as different types of SDR devices are considered, transceiver software portability can be insured by virtualization to abstract the hardware resources. In literature, the common solution to this problem consists of including a dedicated virtual machine (VM), named as radio virtual machine (RVM), on each SDR device image [11], [110], [111]. However, this solution introduces an extra cost in terms of overhead and latency, and limiting their effect remains an open challenge. The second problem concerns gateways (e.g., IoT gateways in home automation box) that require multiple transceivers to communicate with the deployed end-devices through heterogeneous wireless technologies. To enable this role on the GPP-based SDR platform, multiple VMs should be run in parallel at the GPP host where each VM is dedicated to one wireless transceiver [112]. However, in spite of the benefits gained, the performance of each implemented wireless transceiver maybe seriously degraded due to the competition of GPP host and SDR device resources between the co-located wireless transceivers and additional costs of VMs. These problems are not yet addressed and needs to be explored.

## C. MOBILITY AND ENERGY CONSUMPTION

The majority of commercially available GPP-based SDR platforms (Desktop PC or Laptop based) consume high energy to achieve high performance, hence rely on main power supply. However, this is unsuitable for mobile application where SDR platforms can be used as mobile wireless transceivers. Indeed, many projects such as [113], [114] are developed addressing mobile applications where sensors are deployed on vehicles (e.g., car, drone, train) with an onboard SDR platform powered by the vehicle's battery like any mobile wireless device. All these projects report the negative impact of GPP-based SDR platforms on the life-time of
vehicle's battery. It becomes necessary to build mobile SDR platforms consuming less energy and at the same time offer expected performance. One discussed solution in literature [42], [115], [116] is to use low power embedded computer boards such as Raspberry Pi, ARM Cortex processor, etc., as GPP hosts. Nevertheless, prototypes based on this solution lack offering adequate performance to support the requirement (specially, the frequency, bandwidth, latency) of most wireless technologies. Thus, building energy efficient SDR platform using embedded computer boards with performance objective is still an open issue. Another alternative solution discussed in literature is to remove the GPP host by migrating its capabilities to the SDR device to form a standalone SDR platform. Examples of such SDR platforms are USRP-E3xx [117], BladeRF [118], μSDR [119]. They are designed to offer high performance, be energy efficient and suitable for mobile applications. However, they require more experimental investigations on their performance in terms of frequency, bandwidth, symbol rate, bitrate and latency.

## VII. CONCLUSIONS

Selecting SDR platform to implement and perform a wireless technology is challenging as it comprises, on one hand, to satisfy design requirements both at the hardware and software level. On the other hand, previous recommendations by researchers/developers of wireless technologies suggest to fulfill the proposed hardware and software list to successfully perform their open-source implementations. However, the proposed list is often restrictive in terms of hardware (SDR devices and GPP hosts) and doesn't take into account the use-case desired by users. This paper has reviewed and presented a large list of GPP-based SDR platforms that satisfy the minimum requirement of wireless technologies.

We believe that the study conducted in this paper will help users to determine, for a given wireless technology, which GPP-based SDR platform configuration is necessary to fully or partially perform the MAC and PHY functions. Additionally, through this study, users who already possess a GPP-based SDR platform can identify possible applications that could be implemented. To determine the candidate SDR platform, the paper first evaluated the performance of selected GPP-based SDR platforms through theoretical and experimental analysis. Then, we proposed matching conditions and created a mapping table between the minimum requirements of well-known wireless technologies and performance of GPP-based SDR platforms. Thereby, a list of candidate GPP-based SDR platforms is established for each wireless technology. This list indicates if the matching is complete, incomplete or negative. The two latter are mainly due to the high latency of GPP hosts. A summary of some of the existing implementations were discussed and using the mapping table we suggested other possible GPP-based SDR platforms to be used. Finally, we highlighted some of the research challenges and future directions to be considered by the research community.

## REFERENCES

[1] Research and Markets. "Wireless Sensor Network Markets," 2019, Accessed September 2021 [Online]. https://www.researchandmarkets.com/reports/4844854/wireless-sensor-network-markets?w=5&utm_source=CI&utm_medium=PressRelease&utm_code=g87tcl

[2] IoT Analytics. Accessed January 2021 [Online]. https://iot-analytics.com/iot-2020-in-review/

[3] A. Gupta and R. K. Jha, "A Survey of 5G Network: Architecture and Emerging Technologies," in IEEE Access, vol. 3, pp. 1206-1232, 2015, doi: 10.1109/ACCESS.2015.2461602

[4] A. Al-Fuqaha, M. Guizani, M. Mohammadi, M. Aledhari and M. Ayyash, "Internet of Things: A Survey on Enabling Technologies, Protocols, and Applications," in IEEE Communications Surveys & Tutorials, vol. 17, no. 4, pp. 2347-2376, Fourthquarter 2015.

[5] Yaqoob, Ibrar, Ejaz Ahmed, Ibrahim Abaker Targio Hashem, Abdelmuttlib Ibrahim Abdalla Ahmed, Abdullah Gani, Muhammad Imran, and Mohsen Guizani. "Internet of things architecture: Recent advances, taxonomy, requirements, and open challenges." IEEE wireless communications 24, no. 3 (2017): 10-16.

[6] Tessier, Russell, and Wayne Burleson. "Reconfigurable computing for digital signal processing: A survey." Journal of VLSI signal processing systems for signal, image and video technology 28.1-2 (2001): 7-27.

[7] Ulversoy, Tore. "Software defined radio: Challenges and opportunities." IEEE Communications Surveys & Tutorials 12, no. 4 (2010): 531-550.

[8] D. F. Macedo, D. Guedes, L. F. M. Vieira, M. A. M. Vieira and M. Nogueira, "Programmable Networks—From Software-Defined Radio to Software-Defined Networking," in IEEE Communications Surveys & Tutorials, vol. 17, no. 2, pp. 1102-1125, Secondquarter 2015.

[9] Akeela, R., & Dezfouli, B. (2018). Software-defined Radios: Architecture, state-of-the-art, and challenges. Computer Communications, 128(July), 106–125.

[10] Gavrilă, C., Popescu, V., Alexandru, M., Murroni, M., and Sacchi, C. "An SDR-Based Satellite Gateway for Internet of Remote Things (IoRT) Applications." IEEE Access 8 (2020): 115423-115436.

[11] M. Kist, J. Rochol, L. A. DaSilva and C. B. Both, "SDR Virtualization in Future Mobile Networks: Enabling Multi-Programmable Air-Interfaces," 2018 IEEE International Conf. on Communications (ICC), 2018, pp. 1-6.

[12] M. Schadhauser, J. Robert, and A. Heuberger, "Design of autonomous basestations for low power wide area (LPWA) communication," in Proc. SmartSysTech; Eur. Conf. Smart Objects, Syst. Technol., Jun. 2017, pp. 1–8.

[13] Wei, Xingguang, Haitao Liu, Zhiming Geng, Kan Zheng, Rongtao Xu, Yang Liu, and Peng Chen. "Software defined radio implementation of a non-orthogonal multiple access system towards 5G." IEEE Access 4 (2016): 9604-9613.

[14] Gomez-Miguelez, Ismael, Andres Garcia-Saavedra, Paul D. Sutton, Pablo Serrano, Cristina Cano, and Doug J. Leith. "srsLTE: An open-source platform for LTE evolution and experimentation." In Proceedings of the Tenth ACM International Workshop on Wireless Network Testbeds, Experimental Evaluation, and Characterization, pp. 25-32. 2016. https://github.com/srsran/srsRAN

[15] Bastian Bloessl, Christoph Leitner, Falko Dressler and Christoph Sommer, "A GNU Radio-based IEEE 802.15.4 Testbed," Proceedings of 12. GI/ITG KuVS Fachgespräch Drahtlose Sensornetze (FGSN 2013), Cottbus, Germany, September 2013, pp. 37-40.

[16] Bloessl, Bastian, Michele Segata, Christoph Sommer, and Falko Dressler. "An IEEE 802.11 a/g/p OFDM Receiver for GNU Radio." In Proceedings of the second workshop on Software radio implementation forum, pp. 9-16. 2013.

[17] Khan, Muhammad Bilal, Xiaodong Yang, Aifeng Ren, Mohammed Ali Mohammed Al-Hababi, Nan Zhao, Lei Guan, Dou Fan, and Syed Aziz Shah. "Design of software defined radios based platform for activity recognition." IEEE Access 7 (2019): 31083-31088.

[18] Politis, Christos, Sina Maleki, Juan Merlano Duncan, Jevgenij Krivochiza, Symeon Chatzinotas, and Björn Ottesten. "SDR implementation of a testbed for real-time interference detection with signal cancellation." IEEE Access 6 (2018): 20807-20821.

[19] Handagala, Suranga, and Miriam Leeser. "Real time receiver baseband processing platform for sub 6 GHz PHY layer experiments." IEEE Access 8 (2020): 105571-105586.

[20] Chen, Y., Lu, S., Kim, H. S., Blaauw, D., Dreslinski, R. G., & Mudge, T. (2016). A low power software-defined-radio baseband processor for