Keywords

1 Introduction

In recent years, with the application of LEO satellite constellation and various micro satellites, LEO satellite communication has been widely used [1]. However, compared with geostationary satellites, the high-speed motion of LEO satellite brings large Doppler frequency offset [2]. For example, when the symbol rate is more than 10 kbps, the Doppler frequency offset is as high as tens of kHz, which is far beyond the symbol rate, so it is difficult to capture the signal. This leads to a very bad communication environment for low-speed satellite signals. The low-speed FDMA signal of the geostationary orbit (GEO) is usually captured in a frequency sweep mode, and then the frequency offset is estimated through the pilot frequency [3]. However, the frequency offset estimation range of this method is half of the pilot rate, and the sweep step is related to the symbol rate and the length of the capture frame header, which results in a longer sweep time when the symbol rate is low [4]. This paper proposes a fast capture algorithm, which realizes the fast capture of the signal by means of frequency estimation and search on the frame header at different sampling rates. MATLAB simulation verifies that the algorithm can work normally when the signal noise ratio (SNR) is 3dB and the frequency offset range is 4 times the symbol rate.

2 Principle

This algorithm is mainly used for the fast acquisition of low symbol rate FDMA signals under large frequency offset. This algorithm estimates the frequency offset exceeding the symbol rate by performing frequency when the signal sampling rate is 8 times, then estimates the remaining frequency offset when the signal sampling rate is 1 times, and outputs the frame header position to achieve frame capture. The main process of this algorithm is shown in Fig. 1.

Fig. 1.
figure 1

The algorithm flow chart

The basic principles of frequency estimation are as follows.

Assuming that S(t) is the signal to enter Analog Devices (AD), then the S(t) can be expressed as

$$ S({\text{t}}){\text{ = d(t)e}}^{{j(\omega_{0} + f_{0} )t + \theta_{0} }} + n(t) $$
(1)

In Eq. (1), \(\omega_{0}\) is the carrier frequency; \(f_{0}\) is the frequency offset; \(\theta_{0}\) is the Signal phase; \(n(t)\) is Gaussian white noise; \(d_{t}\) represents the transmitted data; Within one frame

$$ {\text{d(t)}} = \left\{ \begin{gathered} Pn_{i} (t) + j \cdot Pn_{q} (t)\qquad{ 0} \le {\text{t}} \le {\text{64T}}_{s} \hfill \\ d_{i} (t) + j \cdot d_{q} (t)\quad\,\,\,{\text{ 64T}}_{s} {\text{ < t}} \le m{\text{T}}_{s} \hfill \\ \end{gathered} \right. $$
(2)

Ts is the symbol period, m is the number of symbols per frame. The format of the transmitted data frame is that the first 64 data is a fixed pseudo-random sequence, and the following is the data to transmit.

The signal S(n) sampled by AD can be expressed as

$$ \begin{aligned} S({\text{n}}) & = \sum\limits_{n = 0}^{n = N} {\delta (nT_{c} ) \cdot \left[ {{\text{d(t)}} \cdot {\text{e}}^{{j(\omega_{0} + f_{0} )t + \theta_{0} }} + n(t)} \right]} \\ & = \,\left\{ \begin{gathered} \sum\limits_{n = 0}^{{{{n = 64*T_{s} } \mathord{\left/ {\vphantom {{n = 64*T_{s} } {T_{c} }}} \right. \kern-\nulldelimiterspace} {T_{c} }}}} {\delta (nT_{c} ) \cdot \left[ {(Pn_{i} (t) + j \cdot Pn_{q} (t)) * {\text{e}}^{{j(\omega_{0} + f_{0} )t + \theta_{0} }} + n(t)} \right]} \, \hfill \\ \sum\limits_{{{{n = 64*T_{s} } \mathord{\left/ {\vphantom {{n = 64*T_{s} } {T_{c} }}} \right. \kern-\nulldelimiterspace} {T_{c} }} + 1}}^{{{{n = mT_{s} } \mathord{\left/ {\vphantom {{n = mT_{s} } {T_{c} }}} \right. \kern-\nulldelimiterspace} {T_{c} }}}} {\delta (nT_{c} ) \cdot \left[ {(d_{i} (t) + j \cdot d_{q} (t)) * {\text{e}}^{{j(\omega_{0} + f_{0} )t + \theta_{0} }} + n(t)} \right]} \hfill \\ \end{gathered} \right. \\ \end{aligned} $$
(3)

In Eq. (2), \(T_{c}\) is the sampling period and \({{T_{s} } \mathord{\left/ {\vphantom {{T_{s} } {T_{c} }}} \right. \kern-\nulldelimiterspace} {T_{c} }}\) is an integer; N is the number of sampling points. Assuming that the signal entering ad is a baseband signal, then the sampled signal is S(n).

$$ S({\text{n}}){ = }\left\{ \begin{gathered} \sum\limits_{n = 0}^{{{{n = 64*T_{s} } \mathord{\left/ {\vphantom {{n = 64*T_{s} } {T_{c} }}} \right. \kern-\nulldelimiterspace} {T_{c} }}}} {\delta (nT_{c} ) \cdot \left[ {(Pn_{i} (t) + j \cdot Pn_{q} (t)) * {\text{e}}^{{jf_{0} t + \theta_{0} }} + n(t)} \right]} \, \hfill \\ \sum\limits_{{{{n = 64*T_{s} } \mathord{\left/ {\vphantom {{n = 64*T_{s} } {T_{c} }}} \right. \kern-\nulldelimiterspace} {T_{c} }} + 1}}^{{{{n = mT_{s} } \mathord{\left/ {\vphantom {{n = mT_{s} } {T_{c} }}} \right. \kern-\nulldelimiterspace} {T_{c} }}}} {\delta (nT_{c} ) \cdot \left[ {(d_{i} (t) + j \cdot d_{q} (t)) * {\text{e}}^{{jf_{0} t + \theta_{0} }} + n(t)} \right]} \hfill \\ \end{gathered} \right. $$
(4)

\(PN({\text{n}})\) is the local sequence generated by the PN sequence generator.

$$ PN({\text{n}}){ = }\sum\limits_{n = 0}^{{{{n = 64T_{s} } \mathord{\left/ {\vphantom {{n = 64T_{s} } {T_{c} }}} \right. \kern-\nulldelimiterspace} {T_{c} }}}} {\delta (nT_{c} ) \cdot \left[ {Pn_{i} (t) + j \cdot Pn_{q} (t)} \right]} $$
(5)

\(S_{1} (p)\) is the result of the conjugate multiplication of \(S({\text{n}})\) and \(PN({\text{n}})\).

$$ S_{1} (p) = \sum\limits_{p = 0}^{{p = \left( {m - 64} \right) \cdot {{T_{s} } \mathord{\left/ {\vphantom {{T_{s} } {T_{c} }}} \right. \kern-\nulldelimiterspace} {T_{c} }}}} {\left( {\sum\limits_{n = p}^{{n = (64{{T_{s} } \mathord{\left/ {\vphantom {{T_{s} } {T_{c} ) + p}}} \right. \kern-\nulldelimiterspace} {T_{c} ) + p}}}} {S(n) \cdot PN(n)} } \right)} $$
(6)

When p is 0, that is, when the local code and the random sequence in the selected signal are exactly aligned, the S1 can be expressed as

$$ \begin{aligned} S_{1} & = \sum\limits_{n = 0}^{{{{64*T_{s} } \mathord{\left/ {\vphantom {{64*T_{s} } {T_{c} }}} \right. \kern-\nulldelimiterspace} {T_{c} }}}} {\delta (nT_{c} ) \cdot \left\{ {\left[ {Pn_{i} (t) + j \cdot Pn_{q} (t)} \right] \cdot {\text{e}}^{{jf_{0} t + \theta_{0} }} + n(t)} \right\}} \cdot PN(n) \\ & = \sum\limits_{n = 0}^{{{{64*T_{s} } \mathord{\left/ {\vphantom {{64*T_{s} } {T_{c} }}} \right. \kern-\nulldelimiterspace} {T_{c} }}}} {\delta (nT_{c} ) \cdot \left\{ {\left[ {Pn_{i} (t) + j \cdot Pn_{q} (t)} \right] \cdot {\text{e}}^{{jf_{0} t + \theta_{0} }} + n(t)} \right\}} \cdot \left[ {Pn_{i} (t) - j \cdot Pn_{q} (t)} \right] \\ & = \, \sum\limits_{n = 0}^{{{{64*T_{s} } \mathord{\left/ {\vphantom {{64*T_{s} } {T_{c} }}} \right. \kern-\nulldelimiterspace} {T_{c} }}}} {2\delta (nT_{c} )} \left\{ {\left[ {1 - j \cdot Pn_{i} (t)Pn_{q} (t)} \right]} \right\} \cdot {\text{e}}^{{jf_{0} t + \theta_{0} }} + n(t) \cdot \left[ {Pn_{i} (t) - j \cdot Pn_{q} (t)} \right] \\ & = \sum\limits_{n = 0}^{{{{64*T_{s} } \mathord{\left/ {\vphantom {{64*T_{s} } {T_{c} }}} \right. \kern-\nulldelimiterspace} {T_{c} }}}} 2 \left\{ {\left[ {1 - j \cdot Pn_{i} (nT_{c} )Pn_{q} (nT_{c} )} \right]} \right\} \cdot {\text{e}}^{{jnf_{0} T_{c} + \theta_{0} }} + n(nT_{c} ) \\ \end{aligned} $$
(7)

The \({{64T_{s} } \mathord{\left/ {\vphantom {{64T_{s} } {T_{c} }}} \right. \kern-\nulldelimiterspace} {T_{c} }}\) points fast Fourier transform is \(S_{1}\) [5]. Then \(S_{1}\) can be expressed as

$$ \begin{aligned} S_{1} (k) & = \sum\limits_{n = 0}^{N - 1} {S_{1} {\text{e}}^{{{\raise0.7ex\hbox{${ - i2\pi kn}$} \!\mathord{\left/ {\vphantom {{ - i2\pi kn} N}}\right.\kern-\nulldelimiterspace} \!\lower0.7ex\hbox{$N$}}}} } \\ & = \sum\limits_{n = 0}^{N - 1} {\sum\limits_{m = 0}^{{{{64*T_{s} } \mathord{\left/ {\vphantom {{64*T_{s} } {T_{c} }}} \right. \kern-\nulldelimiterspace} {T_{c} }}}} 2 \left\{ {\left[ {1 - j \cdot Pn_{i} (mT_{c} )Pn_{q} (mT_{c} )} \right]} \right\} \cdot {\text{e}}^{{jmf_{0} T_{c} + \theta_{0} }} \cdot {\text{e}}^{{{\raise0.7ex\hbox{${ - i2\pi kn}$} \!\mathord{\left/ {\vphantom {{ - i2\pi kn} N}}\right.\kern-\nulldelimiterspace} \!\lower0.7ex\hbox{$N$}}}} } \\ \end{aligned} $$
(8)

When \(\sum\limits_{m = 0}^{{{{64*T_{s} } \mathord{\left/ {\vphantom {{64*T_{s} } {T_{c} }}} \right. \kern-\nulldelimiterspace} {T_{c} }}}} {Pn_{i} (mT_{c} )Pn_{q} (mT_{c} )} \approx 0\), we can get

$$ S_{1} (k){ = }\sum\limits_{m = 0}^{{{{64*T_{s} } \mathord{\left/ {\vphantom {{64*T_{s} } {T_{c} }}} \right. \kern-\nulldelimiterspace} {T_{c} }}}} {{4}\pi \cdot e^{\theta } \cdot \delta {\text{(k }}\,-\,mf_{0} T_{c} {)}} $$
(9)

When \(k = mf_{0} T_{c}\), we can get \(\max (S_{1} (k)){ = 4}\pi e^{\theta }\). The frequency offset value in the signal can be calculated according to the position of the maximum value. Because of the high-speed movement of the platform where the transmitter is located, there is a Doppler shift in the received signal. Assuming that the range of frequency offset is \(\left[ { - f_{\max } ,f_{\max } } \right]\); Doppler rate of change is \(a\); Doppler model is cosine model; we can get

$$ f(t) = f_{\max } \cdot \cos (\omega t) $$
(10)

Derivative of \(f(t)\) is \(f^{^{\prime}} (t) = f_{\max } \cdot \omega \sin (\omega t)\). When \(t = 0\), the change rate reaches the maximum.

$$ a = f_{\max } \cdot \omega $$
(11)

So we can get

$$ f(t) = f_{\max } \cdot \cos (\frac{at}{{f_{\max } }}) $$
(12)

The frequency offset of \({{64T_{s} } \mathord{\left/ {\vphantom {{64T_{s} } {T_{c} }}} \right. \kern-\nulldelimiterspace} {T_{c} }}\) signal sampling points is

$$ \begin{aligned} f(n) & = \sum\limits_{n = 0}^{{{{64*T_{s} } \mathord{\left/ {\vphantom {{64*T_{s} } {T_{c} }}} \right. \kern-\nulldelimiterspace} {T_{c} }}}} {f(t) \cdot \delta (nT_{c} )} \\ & = \, \sum\limits_{n = 0}^{{{{64*T_{s} } \mathord{\left/ {\vphantom {{64*T_{s} } {T_{c} }}} \right. \kern-\nulldelimiterspace} {T_{c} }}}} {f_{\max } \cos (\frac{at}{{f_{\max } }}) \cdot \delta (nT_{c} )} \\ \end{aligned} $$
(13)

When \(a = 0\), the frequency offset of the intercepted signal is a fixed value. There is only one larger value in \(S_{1} (k)\), and the remaining values are very small. When \(a \ne 0\), the frequency component of the intercepted signal is not single, and there are many larger values of \(S_{1} (k)\). Define \(\lambda\)

$$ \lambda (m) = \left\{ \begin{aligned} & 10 * \log_{10} (\frac{{S_{m} (p) + S_{m} (p + 1) + S_{m} ({{64*T_{s} } \mathord{\left/ {\vphantom {{64*T_{s} } {T_{c} }}} \right. \kern-\nulldelimiterspace} {T_{c} }})}}{{\left[ {\sum\limits_{n = 1}^{{{{64*T_{s} } \mathord{\left/ {\vphantom {{64*T_{s} } {T_{c} }}} \right. \kern-\nulldelimiterspace} {T_{c} }}}} {S_{m} (n)} } \right] - S_{m} (1) - S_{m} (2) - S_{m} ({{64*T_{s} } \mathord{\left/ {\vphantom {{64*T_{s} } {T_{c} }}} \right. \kern-\nulldelimiterspace} {T_{c} }})}}){\text{ p = 1}} \\ & 10 * \log_{10} (\frac{{S_{m} (p) + S_{m} (p - 1) + S_{m} (p + 1)}}{{\left[ {\sum\limits_{n = 0}^{{{{64*T_{s} } \mathord{\left/ {\vphantom {{64*T_{s} } {T_{c} }}} \right. \kern-\nulldelimiterspace} {T_{c} }}}} {S_{m} (n)} } \right] - S_{m} (p) - S_{m} (p - 1) - S_{m} (p + 1)}}){\text{ 1 < p < }}{{64T_{s} } \mathord{\left/ {\vphantom {{64T_{s} } {T_{c} }}} \right. \kern-\nulldelimiterspace} {T_{c} }} \\ & 10 * \log_{10} (\frac{{S_{m} (1) + S_{m} (p - 1) + S_{m} (p)}}{{\left[ {\sum\limits_{n = 1}^{{{{64*T_{s} } \mathord{\left/ {\vphantom {{64*T_{s} } {T_{c} }}} \right. \kern-\nulldelimiterspace} {T_{c} }}}} {S_{m} (n)} } \right] - S_{m} (1) - S_{m} (p - 1) - S_{m} (p)}}){\text{ p = }}{{64T_{s} } \mathord{\left/ {\vphantom {{64T_{s} } {T_{c} }}} \right. \kern-\nulldelimiterspace} {T_{c} }} \\ \end{aligned} \right. $$
(14)

In Eq. (13), \(m\) is the initial position of the intercepted signal; \(S_{m} (n)\) is the result of \(S_{1} (k)\) when the initial position of the intercepted signal is \(m\); \(p\) is the position of the maximum value in \(S_{m} (n)\). Define the detection is successful when \(\lambda \ge 15\). When \(T_{c} = T_{s}\), the frequency resolution of the Fourier transform is \(f_{s}\). Representative frequency range is \(\left[ { - {{f_{s} } \mathord{\left/ {\vphantom {{f_{s} } 2}} \right. \kern-\nulldelimiterspace} 2},{{f_{s} } \mathord{\left/ {\vphantom {{f_{s} } 2}} \right. \kern-\nulldelimiterspace} 2}} \right]\). We can get \(f_{0} = {{\left( {p - 32} \right)f_{s} } \mathord{\left/ {\vphantom {{\left( {p - 32} \right)f_{s} } {128}}} \right. \kern-\nulldelimiterspace} {128}}\). The error of frequency offset estimation is \({{f_{s} } \mathord{\left/ {\vphantom {{f_{s} } {128}}} \right. \kern-\nulldelimiterspace} {128}}\). When \(T_{c} = 8T_{s}\), the frequency resolution of the Fourier transform is \(8f_{s}\). Representative frequency range is \(\left[ { - 4f_{s} ,4f_{s} } \right]\). We can get \(f_{0} = {{\left( {n - 256} \right)f_{s} } \mathord{\left/ {\vphantom {{\left( {n - 256} \right)f_{s} } {128}}} \right. \kern-\nulldelimiterspace} {128}}\).

3 Simulation

In this simulation, the rate of symbols is 3.29Ksys and the frequency offset is 5 kHz. The framer in the signal is 64 bit PN sequence and the length of FFT used in the simulation is 512.

Fig. 2.
figure 2

S(k) simulation result at 8 times sampling

Figure 2 is the result of S(k) at 8 times sampling. Through the Fig. 2 we can see that S(k) is very big at some points. Thus points’ position represent the framer’s position and the frequency offset.

Fig. 3.
figure 3

S(k) cross-sectional view on the x-axis

Fig. 4.
figure 4

S(k) cross-sectional view on the y-axis

Figure 3 and Fig. 4 are cross-sectional views of the capture results on the x-axis and y-axis at 8 times sampling. As shown in Fig. 3, the peak is the capture position, that is, the synchronization position of the signal. Figure 4 shows the position of the peak in the result of an FFT, which is p in Eq. 14. The position of this point represents the frequency offset. From the figure, it can be seen that the peak position is 98. So we can get the estimated value of the frequency offset is 5.037 kHz.

Fig. 5.
figure 5

Capture results at 1 time sampling

Figure 5 shows the capture result of 1x sampling, and the captured position is the frame synchronization position. As shown in the figure, the calculation result at the 53rd sample point is significantly larger than other positions, which means that this point is a synchronous position.

Fig. 6.
figure 6

Capture results when the SNR is 3 dB

Fig. 7.
figure 7

Acquisition success rate at different SNR

Figure 6 shows the capture result when the signal-to-noise ratio is 3dB. The frequency offset can be estimated from the 8x sampling capture result, and the precise synchronization position can be captured when 1x sampling. Figure 7 shows the capture success rate at different SNR. At each SNR, 1000 acquisition simulations are carried out, and finally calculate the acquisition success rate.