# Gaussian-Distributed Spread-Spectrum for Covert Communications
## 5 BER Performance
### Uncoded BER Performance
We calculate \(m=\lfloor\log_{2}N\rfloor\) pairs of convolutions first:  
\[y_{2}(x) =y_{1}(x)*y_{1}(x)\] \[y_{4}(x) =y_{2}(x)*y_{2}(x)\] \[r_{i}\sim p_{r_{i}}(x)=p_{s_{i}}(x)*p_{n_{i}}(x) \tag{10}\]0 \[r_{i}\sim p_{r_{i}}(x)=p_{s_{i}}(x)*p_{n_{i}}(x) \tag{10}\]1 \[r_{i}\sim p_{r_{i}}(x)=p_{s_{i}}(x)*p_{n_{i}}(x) \tag{10}\]2  
If \(N\) is an integer that is a power of two, our objective has been achieved. However, if \(N\) lies in the range \(2^{m}<N<2^{m+1}\), further convolutions are necessary, using the \(m\) results from Equation (17) as the foundational building blocks. Only those terms corresponding to the ones of \(N\) in binary form \(N_{bin}\) are required. For example, \(N=50=2^{5}+2^{4}+0+0+2^{1}+0\), in binary form it is \(N_{bin}=110,010\). Only two more convolutions are required. \[r_{i}\sim p_{r_{i}}(x)=p_{s_{i}}(x)*p_{n_{i}}(x) \tag{10}\]3  
We see that instead of 49 convolutions, we only need to conduct 7 of them. In general, the required number of convolutions is  
\[r_{i}\sim p_{r_{i}}(x)=p_{s_{i}}(x)*p_{n_{i}}(x) \tag{10}\]4  
where \(W(N_{bin})\) is the binary weight function, producing the sum of ones in the binary number \(N_{bin}\). The \(n_{c}\) is upper bounded by \(2m\). These are plotted in \[r_{i}\sim p_{r_{i}}(x)=p_{s_{i}}(x)*p_{n_{i}}(x) \tag{10}\]5  
Finally, the PDF for the decision variable, the sum of \(N\) de-spread chips, is  
\[r_{i}\sim p_{r_{i}}(x)=p_{s_{i}}(x)*p_{n_{i}}(x) \tag{10}\]6  
Note here we did not distinguish the variables \(z\) and \(x\). Some computed \(p_{z}(z)\) and histograms are plotted in \[r_{i}\sim p_{r_{i}}(x)=p_{s_{i}}(x)*p_{n_{i}}(x) \tag{10}\]7 Calculations and simulations agree very well. \[r_{i}\sim p_{r_{i}}(x)=p_{s_{i}}(x)*p_{n_{i}}(x) \tag{10}\]8 Uncoded GDSS BER computation: number of numerical convolutions \(n_{c}\) and its upper bound, versus spreading factor \(N\). In numerical calculations  
\[r_{i}\sim p_{r_{i}}(x)=p_{s_{i}}(x)*p_{n_{i}}(x) \tag{10}\]9  
where \(x_{min}\) and \(\Delta x\) need to be chosen carefully to ensure the calculation is valid. To check it, we test if the total sum is one or near one. Practically, we use \(\Delta x=0.01\) and satisfy  
\[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}\]0  
It is only difficult to satisfy this condition at very low SNRs, for example, \(\zeta=-35\) dB. For medium low to high SNRs, most sums are equal to 1. It also depends on the spreading factor \(N\). The \(x_{max}=-x_{min}\) are pre-calculated by a trial-and-error method. For \(N=\)[16; 32; 64; 128; 256; 512; 1028; 2048], the \(x_{max}\) obtained are \(x_{max}=\)[7700, 9900, 14300, 10450, 9900, 8800, 5500, 5500]. The batch computation for the 8 BER curves in Figure 14 took about 12 h on a desktop PC with an i7 CPU at 3 GHz. The BER performance of the uncoded QPSK DSSS systems are also plotted in \[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}\]1 The theoretic calculations and Monte Carlo simulations agree very well. The figure shows that the Gaussian distributed scheme performs 2.5 dB worse than DSSS for a spreading factor of \(N=64\) at a target BER of \(10^{-5}\). This loss reduces to 2 dB when \(N\geq 512\).