1 Introduction

Software radio has overcome the disadvantage that previous communication platforms with different communication functions and frequency bands cannot communicate mutually. Existing software radio platforms are constructed by discrete devices, which are constrained by high power consumption and high cost. This situation not only requires technicians to be experienced in hardware design and radio frequency (RF) signal processing, but it also poses high access requirements for software. Given the coexistence of 3G and 4G communication standards, and even that of 5G, there are multiple frequency bands around the world. Traditional software radio designs require different hardware platforms to support varied communication protocols and frequency bands, and they require long development periods and high design costs.

Andrews et al. [1] suggested the use of a mixer as the first-level structure of a software radio to reduce noise at the cost of power with the supply voltage of the baseband low-noise amplifier increased. Murphy et al. (2012) put forward the use of a noise-canceling technology as the software radio structure. Useful signals were enhanced by increasing the auxiliary channels and offset noises at the output terminal, thus improving the noise reduction capability and the overall performance of the software radio system [2]. Zhang et al. propounded a software radio technique that can eliminate the spatial incident angle interference and frequency interference in signal filtering [3]. Loubser and Swart [4] encoded two existing CR-specific media access control protocols by using a CR-specific simulator. Kamaleldin and Ahmed put forward that hardware platforms of software radio system which support many wireless standards could be realized by dynamical program reconfiguration [5]. Marwanto et al. [6] proposed ARDUINO UNO and X-Bee technologies for software radio systems to reduce the costs of spectrum exchange information based on OFDM. Sahoo et al. propounded a multichannel finite impulse response filter for software radio, which can reduce power consumption effectively by the launcher umbilical tower, and can be applied to software radio systems with multichannel filter efficiently [7].

Tsinghua University (2014) completed a chip for software radio receivers in the working frequency band of 0.1–5 GHz. Qin and Wang et al. constructed a radio communication system platform in Matlab and a universal software radio peripheral to increase the utilization of spectrum resources. Spectrum sensing and available spectral bandwidth estimation of signals of master users were obtained by performing an energy detection method. Thus, spectrum detection was realized, and a set of judgment criteria was provided for the spectral access of secondary users [8]. Xu and Yu designed and completed a fault prediction software platform for an airborne software radio system by analyzing its structure [9]. Cui [10] designed a communication terminal for the time-hopping spread spectrum of the TDMA system based on the software radio concept, realized the single-channel launching and multichannel reception of RFs, and accomplished the design of RF modules and their link terminals. Zhang et al. [11] designed a monitoring system over interferences and multipath in the signal bands and adjacent frequencies of current four navigation systems based on software-defined radio concept. Yin and Cheng [12] built a new hardware design program for the software radio processing platform with high-performance and low power consumption based on the requirements of special radio communication systems with low power consumption.

Extant studies have reported that software radio systems are generally limited by their structures. Studies based on AD9361 RF modules and processing modules of SOC digital basebands remain underexplored. Covering most bands with the charter and license-free bands, the working frequency range of AD9361 is from 70 MHz to 6.0 GHz. The supported channel bandwidth is from less than 200 kHz to 56 MHz. With the RF front end and the baseband of the flexible mixed signal integrated, AD9361 provides a configurable digital interface for the processor and integrates frequency synthesizer, thus simplifying the import of the design, which can achieve lower noise and higher accuracy of modulation with the high programmability. In this study, an AD9361-based software radio structure was constructed by using the broadband zero-IF bandpass sampling software radio structure. The corresponding software radio receiver was designed, which achieved many core functions, such as group detection, frame synchronization, channel estimation, and frequency-domain equilibrium. The results can provide new universal platforms and methods for software radio receivers.

2 Methods

2.1 Structure of software radio system

The software radio system is mainly composed of RF module and digital baseband processing module. The RF module converts RF analog signals to baseband digital signals and vice versa, and it facilitates RF receiving and transmitting. The communication protocol in the physical layer is realized by the digital baseband processing module, which ensured signal encoding/decoding, and facilitated modulation and demodulation [13]. The structure of the software radio system is shown in Fig. 1.

Fig. 1
figure 1

The structure of the software radio system. The software radio system is mainly composed of an RF module and a digital baseband processing module

2.2 Implementation of software radio receiving terminal

The receiving terminal of the software radio performs group detection, frame synchronization, channel estimation, frequency-domain equilibrium, RS decoding, inverse mapping, and so on. In the main signal processing of the digital baseband receiving module, the first step is to conduct group detection, followed by signal synchronization and channel estimation based on training sequences. Then, signals are balanced on the basis of data from channel estimation to compensate for the frequency-selective fading of signals caused by multipath transmission. Finally, RS decoding and 16QAM demodulation are accomplished. The structure of the software radio receiver is shown in Fig. 2.

Fig. 2
figure 2

The structure of the software radio receiver. The receiving terminal performs group detection, frame synchronization, channel estimation, frequency-domain equilibrium, RS decoding, and inverse mapping

2.3 The structure of AD9361

AD9361 is composed of the 2 × 2 transceiver, the configuration interface of Serial Peripheral Interface (SPI), the AUXADC, internal PLLs, the programmable GPO, and the data bus of 2 × 12 bits which can be configured as differential or single terminal. Each transmitting and receiving channel of AD9361 is independent. The two receiving channels are composed of low-noise amplifier, mixer, amplifier, filter, and ADC. The two transmitting channels are composed of DAC, filter, amplifier, low-noise amplifier, and mixer. The configuration interface of SPI is compatible with the standard mode of four lines. The structure of AD9361 is shown in Fig. 3.

Fig. 3
figure 3

The structure of AD9361. The whole circuit of RF and IF signals is integrated into one chip by adopting zero-IF architecture, which is composed of the transceiver, the configuration interface of SPI, the AUXADC, the internal PLLs, the programmable GPO, and the data bus

2.4 Group detection

Group detection is performed by using the leading structure. The circuit used for group detection is shown in Fig. 4, which is designed and realized according to the circuit procedure [14].

Fig. 4
figure 4

Circuit procedure for group detection. Group detection is performed by using the leading structure. Cn is the mutual correlation between the currently received L data and the L data received before D. Pn is the value of received signal energy. mn is the decision variable of the delay correlation algorithm

The value of delay correlation Cn is:

$$ {C}_n=\sum \limits_{k=0}^{L-1}{r}_{n-k}{r^{\ast}}_{n-k-D}, $$
(1)

where rn is the received signal, and Cn is the mutual correlation between the currently received L data and the L data received before D.

The value of received signal energy Pn is:

$$ {P}_n=\sum \limits_{k=0}^{L-1}{r}_{n-k-D}{r^{\ast}}_{n-k-D}=\sum \limits_{k=0}^{L-1}{\left|{r}_{n-k-D}\right|}^2. $$
(2)

The decision variable mn of the delay correlation algorithm is:

$$ {m}_n=\frac{C_n}{P_n}=\frac{\mid \sum \limits_{k=0}^{L-1}{r}_{n-k}{r^{\ast}}_{n-k-D}\mid }{\sum \limits_{k=0}^{L-1}{r}_{n-k}{r^{\ast}}_{n-k-D}}. $$
(3)

The value of mn for group detection can be determined by the leading structure when the signal-to-noise ratio (SNR) is 15 dB. A value of Cn approaching 0 indicates that effective data transmission has not been achieved and only noise exists. Parameter mn begins to increase with the occurrence of the secondary short-training symbol and begins to decrease when the ninth period is reached.

A simulation on the basis of the ModelSim platform is conducted. The simulation results of group detection are shown in Figs. 5 and 6.

Fig. 5
figure 5

The simulation diagram 1 of group detection. The value of mn for group detection can be determined by the leading structure when the signal-to-noise ratio (SNR) is 15 dB

Fig. 6
figure 6

The simulation diagram 2 of group detection. The value of mn for group detection can be determined by the leading structure when the SNR is 15 dB

DataInRe and DataInIm are the real part and imaginary part of the current data, respectively. SumMagnitude is the sum of relevant window energies, and SumDelayCorrelation is the sum of correlation coefficients of relevant windows. BufferForDetection represents the initial judgment samples of 32 continuous groups, and BufferForDetection represents the judgment samples at the end of 48 continuous groups. As shown in Figs. 4 and 5, SumMagnitude and SumDelayCorrelation are immediately calculated after a system reset and when the effective signal of the grouping detection elevates. When 32 samples are detected continuously, data grouping of judgment arrives. When the SumMagnitude of the 48 continuous samples is smaller than the threshold, the data grouping is completed.

2.5 Frame synchronization

The frame synchronization of signals requires the calculation of the cross-correlation coefficient between the received data groups and the locally known short-training symbols [15]. Cross-correlation coefficient Ck can be expressed as:

$$ {C}_k=\sum \limits_{m=0}^{D-1}{r}_{k-m}\times {S}_m^{\ast }, $$
(4)

where the superscript is a conjugation, and D is the length of the cross-correlation coefficient, which is determined to be 16. The positions of the short-training symbols are judged according to the value of ∣Ck∣. The moment of the last peak of ∣Ck∣ is designated as the end point of the short-training symbols.

The simulation results of frame synchronization based on the ModelSim platform are shown in Fig. 7.

Fig. 7
figure 7

The simulation diagram of frame synchronization. The simulation results of frame synchronization. DataOutEn is the effective time for outputting one symbol, which calculates from the long sequence

DataInRe and DataInIm are the real part and imaginary part of input data, respectively. DataInEnable is the enable signal of input data, and PCouter is the number of detected peaks. First, quantization is implemented when the data to be synchronized arrives. Then, the correlation is calculated on the basis of the 16 local short-training symbols, and the moment at the ninth peak is viewed as the end point of the short-training symbols. Finally, long-training symbols and data symbols are designated with serial output according to the output format with the cyclic prefix eliminated at the same time. As shown in Fig. 7, DataOutEn is the effective time for outputting one symbol denoted as 1 and 2 successively which calculates from the long-sequence, with the data symbols started from 3. This scheme is viewed as one cycle of output data.

2.6 Channel estimation

Channel estimation is first performed to estimate the received signals from the time domain, according to which the estimation of frequency domain can be easily obtained [16]. Then, the received signals of the estimator can be expressed as:

$$ r(t)=s(t)\times h(t)+n(t), $$
(5)

where h(t) is the impulse response, r(t) represents the received signals, s(t) denotes the theoretically received signals, and n(t) is the signal noise. The estimated value of the input signal \( \widehat{s}(t) \) is produced by the convolution of inverse channel system \( \widehat{h}(t) \) that is composed of r(t) and h(t), where \( h(t)\otimes \widehat{h}(t)=\delta (t) \).

$$ {\displaystyle \begin{array}{c}\widehat{s}(t)=\left[s(t)\otimes h(t)+n(t)\right]\otimes \widehat{h}(t)\\ {}=s(t)\otimes h(t)\otimes \widehat{h}(t)+n(t)\otimes \widehat{h}(t)\\ {}=s(t)+\widehat{n}(t)\end{array}} $$
(6)

The estimation of the channel frequency response of the frequency domain can be deduced directly from the time domain. Channel frequency response H() is estimated by using r(t), and the inverse channel system \( \widehat{H}\left( j\omega \right) \) is constructed by using H(). Therefore,

$$ {\displaystyle \begin{array}{c}\widehat{s}(t)={F}^{-1}\left\{\left[F\left\{S(t)\right\}\cdot H(jw)\right]\cdot \widehat{H}(jw)\right\}\\ {}={F}^{-1}\left\{F\;\left\{s(t)\right\}H(jw)\;\widehat{H}(jw)+N(jw)\cdot \widehat{H}(jw)\right\}\;\\ {}=s(t)+{F}^{-1}\left\{N(jw)\cdot \widehat{H}(jw)\right\}\end{array}}, $$
(7)

where \( \widehat{H}\left( j\omega \right)=\frac{1}{H\left( j\omega \right)} \).

Channel estimation is realized by the unique words (UW) inserted into the data sequence. If UW is {xm} with a length of P, then the channel frequency response \( {\widehat{H}}_k \) can be estimated by FFT from the transmitting sequences {xm} and {ym} to {xm} and {Ym}.

$$ {\widehat{H}}_k=\frac{Y_k}{X_k}\kern1.8em k=1,2,3,K,P-1 $$
(8)

The corresponding time-domain discrete signal {hm} can be initially obtained from the IFFT operation of \( {\widehat{H}}_k \) at the point P, where P denotes the length. Then, the zero-padding operation of {hm} is performed, thus obtaining the {hm} of the point M. Finally, the frequency response value \( {\widehat{H}}_k \) is acquired from the FFT operation of {hm} of the point M.

The frequency domain is calculated on the basis of the time domain as part of the channel estimation. The received signals can be expressed by the Y = XH + V matrix as follows:

$$ {J}_{LS}={\left(Y- XH\right)}^H\left(Y- XH\right), $$
(9)

where X = diag[X(0), X(1),  … , X(Np − 1)], Y = [Y(0), Y(1),  … , Y(Np − 1)]T, and H = [H(0), H(1),  … , H(Np − 1)]T. Np is the number of UW. The first-order derivative and the second-order derivative of JLS for H are calculated as follows:

$$ \frac{\partial }{\partial H}{J}_{LS}=-2{X}^H\left(Y- XH\right), $$
(10)
$$ \frac{\partial }{\partial H}{\left(\frac{\partial }{\partial H}\;{J}_{LS}\right)}^H=2{X}^H\;X\ge 0. $$
(11)

The minimum can be derived from Eq. (11). If Eq. (11) is 0, then:

$$ {\widehat{H}}_{LS}={\left({X}^HX\right)}^{-1}{X}^HY={X}^{-1}Y=\frac{Y}{X}. $$
(12)

Thus, the estimated value denoted by \( {\widehat{H}}_{LS} \) can be expressed as:

$$ {\widehat{H}}_{LS}={X}^{-1}\left( XH+V\right)=H+{X}^{-1}V=H+n, $$
(13)

where n is the estimation error, and n = X−1V. The simulation results of channel estimation based on the ModelSim platform are shown in Fig. 8.

Fig. 8
figure 8

The simulation diagram of channel estimation. The simulation results of channel estimation. The frequency domain is calculated on the basis of the time domain as part of the channel estimation

DataInRe and DataInIm are the real part and imaginary part of input data, respectively. DataInEnable is the enable signal of input data, and ChannelcoeEnable is the enable signal of output data. ChannelcoeIm and ChannelcoeRe are the real part and imaginary part of output channel estimation, respectively.

2.7 Frequency-domain equilibrium module

Frequency-domain equilibrium is performed to offset the effects of channels on the received signals. Here, the minimum mean-squared error (MMSE) equilibrium algorithm is applied as the frequency-domain equilibrium [17].

Suppose that the set of transmitting data is denoted by s (s = [s0, s1,  … , sN − 1]T), N is the number of FFT points (h = [h0,  … , hL − 1.0,  … , 0]T), and L is the length of impulse response. Then, the received signal vector is r = [r0, r1,  … , rN − 1]T. Accordingly,

$$ r=h\otimes s+v $$
(14)

where ⊗ is the cyclic convolution, and v = [v0, v1,  … , vN − 1]T is the channel noise. On the basis of the FFT of Eq. (14),

$$ {R}_k={S}_k{H}_k+{V}_k, $$
(15)

where \( {H}_k=\sum \limits_{m=0}^{L-1}\left({h}_m{e}^{-j2\pi km/N}\right) \), and Rk, Sk, Hk, and Vk are the frequency domain values of received signals, transmitting signals and channel impulse response function, and additive white Gaussian noise.

If the equilibrium coefficient is Wk, then the frequency-domain output after equilibrium is:

$$ {\tilde{S}}_k={W}_k{H}_k{S}_k+{W}_k{V}_k. $$
(16)

According to its definition, the mean square error (MSE) after the equilibrium can be deduced.

$$ {\displaystyle \begin{array}{c}\mathrm{MSE}=E\sum \limits_{k=0}^{N-1}\mid {\tilde{S}}_k-{S}_k\mid \\ {}=E\sum \limits_{k=0}^{N-1}{\left|\left[{W}_k{H}_k-1\right]{S}_k+{W}_k{V}_k\right|}^2\\ {}=\sum \limits_{k=0}^{N-1}E{\left|\left[{W}_k{H}_k-1\right]{S}_k+{W}_k{V}_k\right|}^2\\ {}=\sum \limits_{k=0}^{N-1}{F}_k\end{array}}. $$
(17)

Suppose that \( {\sigma}_N^2 \) is the noise power on the frequency domain and \( {\sigma}_S^2 \) is the signal power on the frequency domain, then:

$$ {\sigma}_N^2=E{\left|{V}_k\right|}^2, $$
(18)
$$ {\sigma}_S^2=E{\left|{S}_k\right|}^2. $$
(19)

On the basis of Eq. (18) and Eq. (19), the following can be derived:

$$ {F}_k={\left|{W}_k{H}_k-1\right|}^2{\sigma}_S^2+{\left|{W}_k\right|}^2{\sigma}_N^2. $$
(20)

If argz1 = arg z2, |z1 − z2|≥|| z1|  − | z2| |(z1, z2 ∈ W) is true, then:

$$ {F}_k\ge {\left|{W}_k{H}_k-1\right|}^2{\sigma}_N^2={\left(\left|{W}_k{H}_k\right|-1\right)}^2{\sigma}_S^2+{\left|{W}_k\right|}^2{\sigma}_N^2, $$
(21)

where Fk uses the lower limit value based on the condition of argWkHk = arg 1 = 0.

$$ \arg {W}_k=-\arg {\mathrm{H}}_k $$
(22)

If the lower limit of Fk is y, then the minimum y should be calculated, such that:

$$ y={\left(\left|{W}_k{H}_k\right|-1\right)}^2{\sigma}_S^2+{\left|{W}_k\right|}^2{\sigma}_N^2=\left|{H}_k^2{\sigma}_S^2-{\sigma}_N^2\right|{\left|{W}_k\right|}^2-2{H}_k{\sigma}_S^2{\left|{W}_k\right|}^2+{\sigma}_S^2. $$
(23)

To derive the minimum of y:

$$ {W}_k=\frac{H^{\ast }{\sigma}_S^2}{{\left|{H}_k\right|}^2{\sigma}_S^2+{\sigma}_N^2}=\frac{H^{\ast }}{{\left|{H}_k\right|}^2+\frac{\sigma_S^2}{\sigma_N^2}}. $$
(24)

Given that \( \frac{\sigma_S^2}{\sigma_N^2}=\mathrm{SNR} \), the MMSE equilibrium coefficient can be expressed as \( {W}_k=\frac{H_k^{\ast }}{{\left|{H}_k\right|}^2+1/\mathrm{SNR}} \). In Eq. (24), 0 ≤ k ≤ N − 1 and SNR denotes the signal-to-noise ratio of the transmitting terminal.

The simulation of signals based on the MMSE algorithm is conducted in Matlab. The following parameters are included:

Multipath channel: the corresponding power of the SUI.3 channel model is [0, − 5, − 10 dB];

Modulation mode: 16QAM;

SC-FDE system parameters: UW uses the Chu sequence, and the length is N = 64;

M = 256, and the MMSE equilibrium algorithm is used.

The hardware implementation block diagram of channel equalization module based on FPGA is shown in Fig. 9.

Fig. 9
figure 9

The hardware implementation block diagram of channel equalization module. The hardware implementation block diagram of channel equalization module. SC-FDE symbols in the time domain are read from “buffer of RX frame sample” by the channel equalization module and sent to the FFT module to calculate the frequency domain values of SC-FDE symbols. Frequency domain values are read from “buffer of CSI” by the CSI_ACQ module, which can complete the integration of corresponding samples meanwhile. With the complex multiplication of the corresponding sample points completed by the FDE_CORE module, the frequency domain equalization is achieved

SC-FDE symbols in the time domain are read from “buffer of RX frame sample” by the channel equalization module and sent to the FFT module to calculate the frequency domain values of SC-FDE symbols.

Frequency domain values are read from “buffer of CSI” by the CSI_ACQ module, which can complete the integration of corresponding samples meanwhile.

With the complex multiplication of the corresponding sample points completed by the FDE_CORE module, the frequency domain equalization is achieved.

Meanwhile, with the subsequent IFFT_256 module controlled by the FDE_CORE module, the sample points in the frequency domain after the equilibration are restored to the time domain and stored in the symbol buffer of SIG domain and the time buffer of DATA domain, respectively.

The simulation results of the channel equilibrium based on the ModelSim platform are shown in Fig. 10.

Fig. 10
figure 10

The simulation results of channel equilibrium. The simulation results of channel equilibrium. Frequency-domain equilibrium is performed to offset the effects of channels on the received signals. And the MMSE equilibrium algorithm is applied as the frequency-domain equilibrium

DataInRe and DataInIm are the real part and imaginary part of the input data, respectively. DataInEnable is the enable signal of input data. DataOutRe and DataOutIm are the real part and imaginary part of output data, respectively.

2.8 RS decoding

The design procedures of the RS decoder are as follows:

  1. 1.

    The adjoint polynomial s(x) of RS codes is calculated from the receiving codes.

  2. 2.

    The error position polynomial a(x) and error value polynomial δ(x) are solved by an adjoint polynomial.

  3. 3.

    The error position can be acquired by using the Chien searching method to calculate the roots of error location polynomials.

  4. 4.

    The error magnitude corresponding to each error location can be obtained from the error value polynomial by using the Fomey algorithm, namely C(x) = R(x) − E(x).

  5. 5.

    After decoding, the adjoint formula of the codeword is calculated again, and the adjoint formula is determined by detecting whether the adjoint formula is zero or not.

According to the above procedures, RS decoder should include four parts: the adjoint polynomial calculation module, the key equation solving module, the money search module, and the Fomey algorithm module [18].

Specific procedures of RS decoding design are as follows:

1. Solving the adjoint polynomial of RS decoding. The parameters of RS (255,191) are as follows:

Encoding length: n = 255

Information bit length: k = 191

Parity bit length: 64

Error correcting capability: t = 32

Primitive polynomial:

$$ p(x)={x}^8+{x}^4+{x}^3+{x}^2+{x}^1+1. $$
(25)

The generating polynomial of RS (255,191) is as follows:

$$ g(x)=\left(x-{a}^0\right)\left(x-{a}^1\right)\left(x-{a}^2\right)\Lambda \left(x-{a}^{15}\right). $$
(26)

The RS is solved by using a, a2, a3, … , a32, in which R(x) = r0 + r1x + r2x2 +  … rn − 1a(n − 1). The 32 adjoint expressions of RS (255,191) codes are acquired, namely s1, s2, s3, … , s32.

$$ s(x)=\sum \limits_{i=1}^{2t}{s}_i{x}^{i-1},{s}_i=R\left({a}^i\right),\left(1\le i\le 2t\right){s}_i=R\left({a}^i\right) $$
(27)

2. Solving the error position polynomial. Firstly, the error location polynomial δ(x) is obtained, then the error location polynomial and the error value polynomial are obtained. The error location polynomial δ(x) can be defined as:

$$ \delta (x)=\left(1-{\theta}_1x\right)\left(1-{\theta}_2x\right)\Lambda \left(1-{\theta}_tx\right). $$
(28)

The error location is θ1. … θt. The right part of the expansion equation is simplified as follows:

$$ \delta (x)=1+\left({\theta}_1+{\theta}_2+\Lambda +{\theta}_t\right)x+\left({\theta}_1{\theta}_2+{\theta}_1{\theta}_3+\Lambda +{\theta}_{t-1}{\theta}_t\right){x}^2+\Lambda +{\theta}_1{\theta}_2\Lambda +{\theta}_1\Big){x}^t. $$
(29)

The error location polynomial is acquired:

$$ \delta (x)=1+{\delta}_1x+{\delta}_1{x}^2+\Lambda +{\delta}_1{x}^t. $$
(30)

3. Solving the error position. The error location of receiving polynomial R(x) = r0 + r1x + Λ + rn − 2xn − 2 + rn − 1xn − 1 is acquired according to the root of δ1x.

4. Ascertaining the error pattern E(x) and the polynomial of c(x). The error value polynomial is defined as follows: ω(x) = S(x)δ(x), which is simplified as follows:

$$ \omega (x)={s}_1x+\left({s}_2+{\delta}_1{s}_1\right){x}^2+\Lambda +\left({s}_t+{\delta}_1{s}_{t-1}+\Lambda +{\delta}_{t-1}{s}_1\right){x}^t+\left({s}_{t+1}+{\delta}_t{s}_1+\Lambda +{\delta}_1{s}_1\right){x}^{t+1}+\Lambda . $$
(31)

The following equations can be verified.

$$ {s}_{t=1}+{\delta}_1{s}_t+\Lambda +{\delta}_t{s}_1=0 $$
$$ {s}_{t+2}+{\delta}_1{s}_t+\Lambda +{\delta}_t{s}_2=0 $$
$$ {s}_{2t}+{\delta}_1{s}_{2t+1}+\Lambda +{\delta}_t{s}_t=0 $$
(32)

The error value polynomial ω(x) = ω1x + ω2x2 + ωtxt can be obtained if ω1 = s1, ω2 = s2 + δ1s1, Λ, ωt = st + δ1st − 1 + Λδt − 1s1. The error pattern \( E(x)=\sum \limits_{i=1}^t{Y}_i{x}_i^{ti} \) can be obtained by \( {Y}_j=\frac{-{x}_j\omega \left({x}_j^{-1}\right)}{\delta \left({x}_j^{-1}\right)} \). Here, xj is the root of the Chien searching method. The final actual code C(x) is obtained with E(x) and the receiving code R(x) superposed.

5. Calculating the adjoint formula of the codeword again. The decoding result is determined by detecting whether the adjoint formula is zero or not.

The RS decoding is implemented on FPGA. The simulation results are shown in Figs. 11, 12, and 13.

Fig. 11
figure 11

The simulation diagram 1 of the RS decoder. The output data of the decoders. The decoding results are shown

Fig. 12
figure 12

The simulation diagram 2 of the RS decoder. The output data of the decoders. The output of RS encoding is used as the input of RS decoding data

Fig. 13
figure 13

The simulation diagram 3 of the RS decoder. The output data of the decoders. The output data of RS decoding is the input of RS encoding. And the RS encoding is correct

As is shown in Figs. 11 and 12, the output of RS encoding is used as the input of RS decoding data. The input is as follows: (1, 2, 3, …, 190, 191, 204, 5, 85, 10, 239, 109, 76, 117, 180, 235, 220, 44, 210, 158, 235, 68, 138, 211, 46, 185, 196, 249, 194, 92, 219, 237, 254, 229, 151, 239, 246, 19, 26, 219, 66, 100, 210, 157, 6, 208, 187, 169, 68, 168, 78, 28, 34, 163, 42, 134, 149, 43, 0, 88, 70, 90, 93, 129, 173, 131, 235, 192, 66, 34). If the output data of RS decoding is the input of RS encoding, the output is correct. Namely, the output is (1, 2, 3, …, 190, 191). As is shown in Fig. 13, the RS decoding decodes the encoded data. The RS encoding is correct.

2.9 16QAM demodulation module

RS decoding is followed by the 16QAM demodulation. With the orthogonal coherent demodulation method applied, the signal is judged, detected, and converted in series and parallel, and the final output is generated.

The expressions of demodulated I branch and Q branch are shown in Eq. (33).

$$ \left\{\begin{array}{c}{I}_{\mathrm{branch}}={S}_{\mathrm{QAM}}\cos at=\frac{1}{2}{X}_k+\frac{1}{2}{X}_k\cos 2 at+\frac{1}{2}{Y}_k\sin 2 at\\ {}{Q}_{\mathrm{branch}}={S}_{\mathrm{QAM}}\sin at=\frac{1}{2}{Y}_k+\frac{1}{2}{Y}_k\cos 2 at+\frac{1}{2}{X}_k\sin 2 at\end{array}\right. $$
(33)

With \( \frac{1}{2}{X}_k\cos 2 at+\frac{1}{2}{Y}_k\sin 2 at \), \( \frac{1}{2}{Y}_k\cos 2 at+\frac{1}{2}{X}_k\sin 2 at \), \( \frac{1}{2}{X}_k \), and \( \frac{1}{2}{Y}_k \) filtered by the low pass filter, the output of 16QAM demodulation is obtained. The expression is as follows:

$$ \left\{\begin{array}{c}{I}_{\mathrm{branch}}=\frac{1}{2}{X}_k\\ {}{Q}_{\mathrm{branch}}=\frac{1}{2}{Y}_k\end{array}\right. $$
(34)

The constellation of the 16QAM modulation is shown in Fig. 15, and its mapping output value is d = (I + jQ) × KMOD, where \( {K}_{\mathrm{MOD}}=1/\sqrt{10} \). The constellation of the 16QAM modulation is shown in Fig. 14.

Fig. 14
figure 14

The constellation of the 16QAM modulation. The I-way component and Q-way component correspond to b0˴b1 and b2˴b3 in the code elements b0˴b1˴b2˴b3, respectively

The I-way component and Q-way component correspond to b0˴b1 and b2˴b3 in the code elements b0˴b1˴b2˴b3, respectively. With the decision thresholds set as −2 × KMOD, 0 and 2 × KMOD, respectively, the I and Q can be demodulated now.

3 Experiment results and discussion

With the AD9361 used as the RF module, ZC706 applied as the digital baseband processing module of SOC, and ZC706 utilized as the ARM+FPGA framework, the hardware platform of the software radio system is built. The physical connection between AD9361 and ZC706 is shown in Fig. 15. The AD9361 board card and the ZYNQ ZC706 development board are connected by FMC. A spectrum analyzer is used as the tester of the transmitting and receiving terminals during the system test. The accuracy of the system test is evaluated by observing the frequency spectra.

Fig. 15
figure 15

The physical connection between AD9361 and ZC706. The AD9361 board card and the ZYNQ ZC706 development board are connected by FMC

Joint testing is performed for the designed software radio receiver, which is based on the hardware platform of AD9361. The test framework of the receiving terminal is shown in Fig. 16. The transmitting central frequency, transmit gain, and bandwidth are 1.435 GHz, 15 dB, and 20 MHz, respectively. AD9361 is connected to ZYNQ via FMC, and ZYNQ is connected to the spectrum analyzer via JTAG. The final results are displayed through the spectrum analyzer. The detailed procedure can be described as follows: signals are received, signals are inputted into AD9361 via the antenna, and these input signals are sent into the digital baseband processing module to complete the processing after amplification, mixing, filtering, and A/D conversion based on AD9361.

Fig. 16
figure 16

The test framework of the receiving terminal. The test framework of the receiving terminal. Joint testing is performed for the designed software radio receiver, which is based on the hardware platform of AD9361

AD9361 is set as the working modes of 1R1T, LVDS, and TDD. The ADC frequency is set as 13 MHz, and the local frequency is set as 1.435 GHz, which can be displayed through the spectrum analyzer. The frequency spectra at the receiving terminal are shown in Fig. 17.

Fig. 17
figure 17

The frequency spectra at the receiving terminal. AD9361 is set as the working modes of 1R1T, LVDS, and TDD. The ADC frequency is set as 13 MHz, and the local frequency is set as 1.435GHz

Joint testing is also performed for the transmitting signals and the receiver, with the transmitting and receiving frequency spectra examined, which are shown in Fig. 18.

Fig. 18
figure 18

The transmitting and receiving frequency spectra. Joint testing is also performed for the transmitting signals and the receiver, with the transmitting and receiving frequency spectra examined

As shown in Fig. 16, the transmitting frequency spectrum is located in the upper position, while the receiver frequency spectrum is located in the lower position. The overlapping of the frequency spectra of the transmitting signals and receiver indicates the consistency of parameters between the transmitting and receiving signals. Therefore, transmitting signals are received accurately.

In this study, a joint experiment of RF module and digital baseband processing module is carried out. The experiment is carried out by two modules combined with a signal source and a spectrum analyzer. But there is no video display part and signal compression part, which can be added to the system to promote the applications in our future research.

4 Conclusions

An AD9361-based software radio system was designed by using AD9361 as the hardware platform. The receiving function is realized, with the modules for group detection, frame synchronization, channel estimation, and frequency-domain equilibrium designed. Finally, the results of the software radio receiver were optimized and verified. The major conclusions from this study are as follows:

  1. 1.

    The single-carrier frequency domain equilibrium is applied on the digital baseband physical layer, which is optimized on the basis of the SC-FDE communication protocol. Then, the receiving function on the basis of the software radio receiver is realized by using the optimized communication protocol. The system can effectively resist the frequency-selective fading of channels, thus achieving high-rate and large-capacity communication transmission.

  2. 2.

    Peak to average power ratio and the sensitivity to the phase noise are decreased by the MMSE equilibrium algorithm, thus enhancing the resistance against multipath interference.

The AD9361-based software radio receiver presented in this study has a reasonable structure, and its performance indexes are satisfactory. The proposed system can effectively increase the communication speed and capacity, remarkably ameliorate the reduction of signal quality caused by multipath fading, and excellently offset the poor universality and expansibility of traditional radio receivers. The results of this study can serve as a useful reference in the development of next-generation universal software radio receivers.