# Gaussian-Distributed Spread-Spectrum for Covert Communications
## 5 BER Performance
### Uncoded BER Performance  
In this section we develop a semi-numerical calculation of the BER performance for the uncoded GDSS system and compare it with the simulated results. The BER performance can be analysed from the I or Q component. Assuming Gray coding is used, the two components are equivalent to two independent BPSK GDSS schemes (Figure 11). The BER performance of the QPSK GDSS is identical to the BPSK GDSS in terms of energy per bit to noise power spectral density ratio (\(E_{b}/N_{0}\)) or 3 dB worse in terms of SNR. Our objective is to determine the probability density function (PDF) of the decision variable \(z\), which is the result of the de-spreading process using a binary spreading sequence (rather than a Gaussian sequence). Here, \(z\) is the sum of \(N\) noisy chips during a bit period  
\[z=\sum_{i=1}^{N}r_{i} \tag{6}\]  
where \(r_{i}=s_{i}+n_{i}\) is a received chip, \(s_{i}\) and \(n_{i}\) are members of the signal sequence \(s=(s_{1},s_{2},\cdots,s_{N})\) and noise sequence \(n=(n_{1},n_{2},\cdots,n_{N})\), respectively. The BER is the probability the decision variable becoming negative due to noise disturbance  
\[\text{BER}=\int_{-\infty}^{0}p_{z}(z)dz \tag{7}\]  
Figure 11: Component BPSK GDSS scatters of the QPSK GDSS signal. In order to find \(p_{z}(z)\), we start at one chip's PDF. The signal chip \(s_{i}\) follows a half-normal distribution [42; 43]  
\[s_{i}\sim p_{s_{i}}(x)= \begin{cases}\frac{\sqrt{2}}{\sigma_{x}\sqrt{\pi}}\exp \left(\frac{-x^{2}}{2\sigma_{x}^{2}}\right),&x\geq 0,\\ 0,&x<0\end{cases}  \tag{8}\]  
The corresponding noise \(n_{i}\) follows a Gaussian distribution  
\[n_{i}\sim p_{n_{i}}(x)=\frac{1}{\sigma_{n}\sqrt{2\pi}}\exp\left(\frac{-x^{2}} {2\sigma_{n}^{2}}\right) \tag{9}\]  
Since \(s_{i}\) and \(n_{i}\) are mutually independent, the PDF of the sum \(r_{i}\) is the convolution of PDF's of the summands  
\[r_{i}\sim p_{r_{i}}(x)=p_{s_{i}}(x)*p_{n_{i}}(x) \tag{10}\]  
where \(*\) denotes a convolution. Using Mathematica, we derive the PDF of one noisy chip  
\[p_{r_{i}}(x)=\frac{\exp\left(\frac{-x^{2}}{2\left(\sigma_{x}^{2}+\sigma_{x}^{ 2}\right)}\right)\left(1+\text{erf}\left(\frac{\sigma_{x}x}{\sigma_{n}\sqrt{2 \left(\sigma_{x}^{2}+\sigma_{x}^{2}\right)}}\right)\right)}{\sqrt{2\pi( \sigma_{x}^{2}+\sigma_{n}^{2})}} \tag{11}\]  
It can be expressed as a function of SNR. For QPSK GDSS, the SNR in dB is  
\[\xi=10\log_{10}\left(\frac{\sigma_{s}^{2}}{\sigma_{n}^{2}}\right) \tag{12}\]  
For BER calculations we can let \(\sigma_{s}^{2}=1\) without loss of generality. We have  
\[p_{r_{i}}(x)=\frac{\exp\left(\frac{-x^{2}}{1+10^{-5/10}}\right)\left(1+\text{ erf}\left(\frac{x10^{5/20}}{\sqrt{1+10^{-5/10}}}\right)\right)}{\sqrt{\pi(1+10^{-5/10} )}} \tag{13}\]  
If we can find the characteristic function of \(p_{r_{i}}(x)\) then \(p_{z}(z)\) is the inverse Fourier transform of the \(N\)th power of the characteristic function. Regrettably, we are unable to obtain an analytical expression for it. An alternative approach is to use self-convolution. As \(z\) is the sum of \(N\) independent \(r_{i}\), its PDF is the \(N-1\) self-convolutions  
\[p_{z}(z)=\underbrace{p_{r_{i}}(x)*p_{r_{i}}(x)*p_{r_{i}}(x)*\cdots*p_{r_{i}}( x)}_{N} \tag{14}\]  
where \({}^{\star}\) denotes a convolution. Once again, we were unable to derive an analytical solution and had to resort to numerical convolution techniques. To avoid overflow issues when dealing with large values of \(N\), we created a normalized function  
\[y_{1}(x)=p_{r_{i}}(x)\Delta_{x} \tag{15}\]  
so that \(\sum_{x}y_{1}(x)=1\), where \(\Delta_{x}\) is the increment of the \(x\) vector. For the sum of \(N\) received chips, the PDF is proportional to the \(N-1\) self numerical convolutions (also denoted by \(*\) )  
\[y_{N}(x)=\underbrace{y_{1}(x)*y_{1}(x)+\cdots*y_{1}(x)}_{N}=\overbrace{*}^{N -1}y_{1}(x) \tag{16}\]  
Performing \(N-1\) numerical convolutions using brute force computation is both expensive and unnecessary for large values of \(N\). Instead, a faster algorithm can be implemented, as illustrated below.